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.

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 Extracted curves
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.

Graphical User Interface
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.

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
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).

Eigen Values
Parametric Space

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

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:
    1. Load the 3D volume
    2. Specify the number of iterations for smoothing ( curvature flow )
    3. 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.
    4. Select seed points in the "Input image" along ducts you wish to segment
    5. 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 )
    6. Apply region growing (this uses connected threshold to segment the duct)
The DuctExtractor application has been written to segment bright ducts against a darker background. So the threshold here is an upper threshold for the Connected Threshold algorithm. You could easily modify the application to specify a lower threshold if you have dark ducts against a bright background.

Go to next application.