k-Wave Toolbox


Frangi's 3D vessel filter.


I_out = vesselFilter(I_in, grid_spacing, scales)
I_out = vesselFilter(I_in, grid_spacing, scales, ...)


vesselFilter filters a 3D image using Frangi's vessel filtering algorithm [1-3]. The algorithm works by calculating the Hessian matrix (containing second order gradients) at each image voxel. The eigenvalues of this matrix are then ordered and used to classify whether the voxel is part of a vessel. The algorithm is performed over multiple scales by convolving the input image with a Gaussian of the given input scales. The final output is taken as the maximum of the vessel filtered image across all scales.

An example of applying the vessel filter to a photoacoustic image of blood filled tubes is given below [3].

[1] A. F. Frangi, W. J. Niessen, K. L. Vincken, M. A. Viergever (1998) "Multiscale vessel enhancement filtering," MICCAI, pp. 130-137.
[2] R. Manniesing, M.A. Viergever, W.J. Niessen (2006) "Vessel enhancing diffusion: A scale space representation of vessel structures," Med. Image Anal. 10, pp. 815-25.
[3] T. Oruganti, J. Laufer, B. E. Treeby (2013) "Vessel filtering of photoacoustic images," Proc. of SPIE, vol. 8581, p. 85811W-1.


I_in 3D image data to filter
grid_spacing [dx, dy, dz] in [m]
scales array of scales to use [m]

Optional Inputs

Optional 'string', value pairs that may be used to modify the default computational settings.

Input Valid Settings Default Description
'alpha' (numeric scalar) 0.5 Value of sensitivity parameter for metric that distinguishes between plate-like and other structures (vessel-like or ball-like).
'beta' (numeric scalar) 0.5 Value of sensitivity parameter for metric that distinguishes between ball-like and other structures (vessel-like or plate-like).
'c' (numeric scalar) 1 Value used to scale the sensitivity parameter for the noise metric (the sensitivity parameter itself is calculated automatically based on the magnitudes of the eigenvalues).
'gamma' (numeric scalar) 0 Normalisation factor for scale-space derivatives.
'DisplayUpdates' (Boolean scalar) true Boolean controlling whether command line updates are displayed.
'Plot' (Boolean scalar) false Boolean controlling whether a maximum intensity projection of the vessel filtered image at each scale is displayed.
'ColorMap' (MATLAB colormap) flipud(gray) Colour map to use if 'Plot' is set to true.


I_out vessel filtered image

See Also

interpftn, smooth