Extraction of 3D tubular structures in a volume using eigen analysis

This application illustrates the use of the data processing pipeline. In particular it shows how easy is to create complex processes by plugging basic ITK components together. It also shows how to communicate between the ITK layer and a Graphic User Interface (GUI) layer.

The images below illustrate the whole process. At left, we have the input data set. We use an aneurysm dataset, a magnetic resonance angiogram of the vasculature of a patient's head. Shown below is a slice of the aneurysm dataset and the MIP of the final output. The points in red are the MIP of the extracted curves. This is overlayed over an MIP of the dataset.

A convenient way to see the hessian as an image is to look at the laplacian of the image. The laplacian of the input image is trace of the hessian. Below are the laplacian.

The Eigen values of the hessian give intuition into the structure of local intensity variations and shape. For discrimination of bright line structures against a dark background, lambda_2 and lambda_3 must be nearly equal and negative and lambda_1 must be close to 0 [2]. Below are the three Eigen value images.

To give the user some freedom in controlling the parameters (for instance how equal is "nearly equal", how negative is "negative". How much is "close to 0" etc..), we plot the eigen values in parametric space and give the user the freedom to choose points in parametric space. Below is a plot of the parametric space. The parametric space is visualized as a point cloud with each point having co-ordinates (lambda_1, lambda_2, lambda_3). The "Red" axis on the figure on the left below is +lambda_1. The other two axes are lambda_2 and lambda3. The points to be filtered out are ones satisfying the criteria above. Lambda_2 nearly equal to Lambda_3 is equivalent to having a frustum with "Angle Z = 45 degrees". Aperture X and Aperture Y control how much Lambda_2 should be equal to Lambda_3 and how much Lambda_1 is constrained to be close to 0. The top plane and the bottom planes of the frustum define how far in parametric space we are willing to go. If we approach too close to the origin, we begin to get affected by noise. The parametric space and the frustum-filtered parametric space are shown below. The points in the filtered parametric space were mapped onto their corresponding points in image space to obtain the curve points shown above. Frustum controls: (Left mouse button to rotate, Ctrl, left mouse to zoom).

The ITK filters used to compute these images are the following:

**Go to next application.**

What is the Purpose of this Application?

The purpose of this application is to extract the points that are located near the medial line of tubular structures in a 3D volume. The images below illustrate the whole process. At left, we have the input data set. We use an aneurysm dataset, a magnetic resonance angiogram of the vasculature of a patient's head. Shown below is a slice of the aneurysm dataset and the MIP of the final output. The points in red are the MIP of the extracted curves. This is overlayed over an MIP of the dataset.

Input Image |
MIP of Detected Curves |

About the GUI

The figure below shows the user interface of this example. It shows buttons for each one of the ITK components used in the extraction process. Blue lines show the flow of image data through the pipeline. The GUI toolkit FLTK http://www.fltk.org is used in this example. GUI using FLTK |

Algorithm Details

Line structures can be differentiated from other structures by studying the Eigen values of the hessian of a 3D volume [1]. The hessian is a 3x3 matrix [2] composed of second order derivatives of the image. A convenient way to see the hessian as an image is to look at the laplacian of the image. The laplacian of the input image is trace of the hessian. Below are the laplacian.

Laplacian |

The Eigen values of the hessian give intuition into the structure of local intensity variations and shape. For discrimination of bright line structures against a dark background, lambda_2 and lambda_3 must be nearly equal and negative and lambda_1 must be close to 0 [2]. Below are the three Eigen value images.

Eigen values |

To give the user some freedom in controlling the parameters (for instance how equal is "nearly equal", how negative is "negative". How much is "close to 0" etc..), we plot the eigen values in parametric space and give the user the freedom to choose points in parametric space. Below is a plot of the parametric space. The parametric space is visualized as a point cloud with each point having co-ordinates (lambda_1, lambda_2, lambda_3). The "Red" axis on the figure on the left below is +lambda_1. The other two axes are lambda_2 and lambda3. The points to be filtered out are ones satisfying the criteria above. Lambda_2 nearly equal to Lambda_3 is equivalent to having a frustum with "Angle Z = 45 degrees". Aperture X and Aperture Y control how much Lambda_2 should be equal to Lambda_3 and how much Lambda_1 is constrained to be close to 0. The top plane and the bottom planes of the frustum define how far in parametric space we are willing to go. If we approach too close to the origin, we begin to get affected by noise. The parametric space and the frustum-filtered parametric space are shown below. The points in the filtered parametric space were mapped onto their corresponding points in image space to obtain the curve points shown above. Frustum controls: (Left mouse button to rotate, Ctrl, left mouse to zoom).

Parametric Space |

The ITK filters used to compute these images are the following:

- itk::HessianRecursiveGaussianImageFilter
- itk::SymmetricEigenAnalysisImageFilter
- itk::ImageToParametricSpaceFilter This filter converts three itk::Images into an itk::PointSet representing the population of points in the parametric space.
- itk::FrustumSpatialFunction This spatial function allows to test if particular points are inside or outside a particular region of space. It is used here to select the itk::Points lying inside the green pyramidal region shown in the previous figure. The selected points are the ones located along the center of tubular structures in the 3D image.
- itk::InteriorExteriorMeshFilter This filter is used in conjunction with the itk::FrustumSpatialFunction in order to filter the whole population of points in the itk::PointSet that are inside the acceptance region (green pyramid).
- itk::ParametricSpaceToImageSpaceMeshFilter This filter is used to map the selected parametric points back into image space. This mapping allows to display the highlighted red points on the final output image.
- itk::PointSetToImageFilter This is used to overlay points mapped back into image space over the original image to see which points are detected as curves.

Other Relevant Applications that do Similar Things

A variety of image enhancement techniques may be applied for detection of curves.
- See Curves2DExtraction. This application is more apt for vessel extraction from angiography images.

- A GUI based interface that allows you to specify seed points and uses region growing to achieve extraction of vessels is shown in the following figure. You will find this in InsightDocuments/Courseware/Training/VesselExtraction.avi. To check out InsightDocuments

cvs -d:pserver:anonymous@www.itk.org/cvsroot/Insight login

(password: insight)

cvs -d:pserver:anonymous@www.itk.org/cvsroot/Insight co InsightDocuments

- InsightApplications/DuctExtractor To get InsightApplications, see [3]. The application takes a 3D volume, computes the laplacian, followed by connected threshold segmentation with seed points. To run the application:
- Load the 3D volume
- Specify the number of iterations for smoothing ( curvature flow )
- Generate the Laplacian. Here it is important to enter the approximate duct diameter (in physical units, This will be variance applied to the laplacian filter.). By selecting a large enough value, you can discard smaller vessels.
- Select seed points in the "Input image" along ducts you wish to segment
- Choose an upper threshold . The threshold is chosen for the laplacian image. You can choose one by using the GUI to play with the window level settings of the laplacian and choosing the value on the lower bar that gives you a nearly binary image ( black duct against a bright background on the laplacian image )
- Apply region growing (this uses connected threshold to segment the duct)