Vessels, σ ∈ (0, 4]
Vessels, σ ∈ (0, 40]
Blobs, σ ∈ (1, 10]
Blobs, σ ∈ (5, 35]
Detecting Filaments and Blobs in Astronomical Data
In this project, I adapted image-processing methods originally developed for detecting blood vessels and other structures in medical scans to analyze radio-astronomy data from molecular clouds.
The data formed a position–position–velocity cube: two axes represented location across the sky, while the third represented radial velocity inferred from Doppler-shifted spectral emission. It was therefore “3D” computationally, although the third axis described motion rather than physical depth.
I used transparent volume rendering to explore overlapping emission within the cube, then applied multiscale Frangi vesselness and blobness filters to identify elongated, filament-like structures and compact concentrations of emission.
Put simply, σ determines how broadly the data are blurred before the algorithm examines their shape. Smaller σ values preserve narrow details but are more sensitive to noise. Larger σ values smooth over fine detail and allow the filter to detect broader structures.
After smoothing the data, the algorithm calculates a Hessian matrix at every voxel. The Hessian contains the second derivatives of the data, which describe how the intensity curves and changes in different directions. Its eigenvalues are then used to estimate the direction, shape, and characteristic scale of the local structure.
The basic process is:
Original data → smoothing at scale σ → Hessian of second derivatives → eigenvalues → vesselness or blobness response
More formally, the Gaussian-smoothed data are:
L(x, y, v; σ) = Gσ ∗ I(x, y, v)
where:
I(x, y, v) = the original data cube
Gσ = a Gaussian smoothing kernel with scale σ
L(x, y, v; σ) = the smoothed data cube
The Hessian at scale σ is:
Hσ(x, y, v) =
⎡ ∂²L/∂x² ∂²L/∂x∂y ∂²L/∂x∂v ⎤
⎢ ∂²L/∂y∂x ∂²L/∂y² ∂²L/∂y∂v ⎥
⎣ ∂²L/∂v∂x ∂²L/∂v∂y ∂²L/∂v² ⎦
In a scale-normalized implementation:
H̃σ = σ²Hσ
This normalization allows responses calculated at different σ values to be compared more fairly.
The Hessian is decomposed into its eigenvalues and eigenvectors:
H̃σeᵢ = λᵢeᵢ
with the eigenvalues ordered:
|λ₁| ≤ |λ₂| ≤ |λ₃|
The eigenvectors indicate the principal directions of the local structure, while the relative sizes of the eigenvalues describe its shape.
A filament or vessel-like structure has relatively little curvature along its length and stronger curvature across its width:
|λ₁| ≈ 0
|λ₁| ≪ |λ₂|
|λ₂| ≈ |λ₃|
A compact, blob-like structure has strong and approximately similar curvature in all three directions:
|λ₁| ≈ |λ₂| ≈ |λ₃|
The videos below show how the detected structures change as the range of σ values increases. Smaller scales emphasize narrow filaments and fine details. Larger scales increasingly favor broad, spatially coherent structures.
For a multiscale vesselness filter, the final output can be taken as the strongest response produced across the tested scales:
V(x, y, v) = max Vσ(x, y, v), for σ ∈ (0, 4]
In other words: σ controls the size of the neighborhood the algorithm considers, the Hessian describes how the data curve within that neighborhood, and the Hessian’s eigenvalues help distinguish elongated filaments from compact blobs.