Modules:VMTKEasyLevelSetSegmentation

From Slicer Wiki
Revision as of 01:56, 17 August 2009 by Haehn (talk | contribs)
Jump to: navigation, search
Home < Modules:VMTKEasyLevelSetSegmentation

Return to Slicer 3.4 Documentation

Gallery of New Features


Module Name

VMTKEasyLevelSetSegmentation

Main GUI
A cerebral aneurysm segmented
A coronary tree segmented
Bronchi of the left lung segmented (the leakage to the surrounding tissue has to be fixed..)

General Information

Module Type & Category

Type: Scripted Module

Category: Segmentation, Extension

Authors, Collaborators & Contact

  • Author: Daniel Haehn, University of Heidelberg
  • Acknowledgments: Luca Antiga, Mario Negri Institute; Steve Pieper, Isomics Inc.
  • Contact: Daniel Haehn, haehn@bwh.harvard.edu

Module Description

This module provides level-set segmentation in 3D Slicer using selected methods of the level-set segmentation process of the Vascular Modeling Toolkit (http://www.vmtk.org). The module targets easy-to-use manual segmentation of tubular and blob-like structures. The methods provided by this module are Fast Marching Upwind Gradient Initialization and Geodesic Active Contours Evolution.

Segmentation using level sets consists of an initialization and an evolution step. The initialization step involves the description of a starting model within a region of interest. In the evolution step this initial deformable model then gets inflated to match the contours of the targeted volume.

This work is part of the NA-MIC VMTK Collaboration.

Official project page: http://www.vmtk.org/Main/VmtkIn3DSlicer

Usage

Installation

This module depends on the VmtkSlicerModule: see this page for installation notes.

The VMTKEasyLevelSetSegmentation module can be installed as a 3D Slicer Extension or manually.

  • Installation as a 3D Slicer Extension

Inside the 3D Slicer extension system, the module is called VMTKEasyLevelSetSegmentation.

  • Manual Installation

1. To get the latest source code, perform the following SVN checkout command:

svn checkout https://www.nitrc.org/svn/slicervmtklvlst

2. A directory named VMTKEasyLevelSetSegmentation is downloaded.

3. Copy this directory to Slicer3-build/lib/Slicer3/Modules/ of your local Slicer installation.


When the module was successfully installed, it is available within 3D Slicer's module selector inside the category Vascular Modeling Toolkit.

Examples, Use Cases & Tutorials

The following screencasts/tutorials show different Use Cases of the VMTKEasyLevelSetSegmentation module.

  • Use Case #1: Branch-by-Branch Segmentation of vessels in an arm using Colliding Fronts
Watch the video..
A screencast showing the segmentation of vessels in an arm by using the Colliding Fronts algorithm for branch-by-branch segmentation. 3D seeding is used to place fiducials and the Undo function during the level-set segmentation process is explained as well. Watch the video here.
  • Use Case #2: Extraction of a Coronary Tree inside a cardiac blood-pool MRI by using only one fiducial point and Fast Marching
Watch the video..
This screencast shows the extraction of a coronary tree inside a cardiac blood-pool MRI by using a combination of the VMTKVesselEnhancement and the VMTKLevelSetSegmentation modules. Only one fiducial point is used as a source point for the Fast Marching algorithm. Watch the video here.
  • Use Case #3: Segmentation of a Cerebral Aneurysm and its connecting vessels using Colliding Fronts and Fast Marching
Watch the video..
The segmentation of a cerebral aneurysm and its connecting vessels is shown in this screencast. The VMTKVesselEnhancement module is used as a pre-processing step and the segmentation of the connecting vessels is performed on the vessel enhanced image with the Colliding Fronts algorithm. The segmentation of the actual aneurysm is performed on the original image. How to switch between these images during the initialization stage easily is explained as well. Watch the video here.

Quick Tour of Features and Use

The VMTKEasyLevelSetSegmentation has four panels.

  • Main module panel

VMTKEasyLevelSetSegmentationParameters.png

Parameter presets exist for different use-cases. These get loaded from the MRML file presets.xml inside the module directory.

The current parameters are stored to the MRML node of the module and therefore it is possible to work with different parameter sets.

  • I/O panel

VMTKEasyLevelSetSegmentationInputOutput.png

The input volume and the output volumes for the initialization and evolution stage can be selected using this panel.

The output volume of the initialization stage is used as an input for the evolution stage.

Fiducial lists can be configured as source and target seeds. If the selected fiducial lists are equal, target seeds will be ignored. This is useful for the segmentation of vessel trees.

  • Initialization panel

VMTKEasyLevelSetSegmentationInitialization.png

The threshold slider is used as a parameter for the Fast Marching Upwind Gradient Image Filter and updates the slice viewers during change for visualization.

  • Evolution panel

VMTKEasyLevelSetSegmentationEvolution.png

Different scales are available to configure the inflation of the initial level-set. Is is possible to adjust the importance of inflation, curvature shape and attraction to the gradient ridges.

The number of iterations defines how many steps of evolution are performed.


The module supports the 3D Slicer built-in Undo function.

All generated binary volumes and used fiducials are saved as MRML nodes in the current MRML scene. Therefore these can be exported or saved.

Development

Dependencies

This module depends on the VMTK libraries which are provided in the VmtkSlicerModule. Therefore the VmtkSlicerModule has to be installed before the VMTKLevelSetSegmentation module can be used.

Known bugs & Usability issues

Follow this link to the VMTK in 3D Slicer bug tracker.

Source code & documentation

Class diagram showing the separation of GUI and logic
Flow chart showing the VTK/VMTK pipeline of the Fast Marching algorithm
Flow chart showing the VTK/VMTK pipeline of the Geodesic Active Contours algorithm

VMTKEasyLevelSetSegmentation is a Python Scripted Module. It follows the conventions of the Model View Controller pattern of slicer modules. This implies the separation of logic and GUI.

The class VMTKEasyLevelSetSegmentationGUI derives from ScriptedModuleGUI and saves the current parameters to its own MRML node. The actual calls to the VMTK libraries as well as the Marching Cubes or Volume Rendering methods are performed in the class VMTKEasyLevelSetSegmentationLogic. Several general supporting functions are outsourced in the class VMTKEasyLevelSetSegmentationHelper.

The complete source code is available at a NITRC SVN repository.

More Information

Acknowledgment

This work was funded by a grant of the Thomas­-Gessmann Foundation part of the Founder Federation for German Science.

References

  • Piccinelli M, Veneziani A, Steinman DA, Remuzzi A, Antiga L (2009) A framework for geometric analysis of vascular structures: applications to cerebral aneurysms. IEEE Trans Med Imaging. In press.
  • Antiga L, Piccinelli M, Botti L, Ene-Iordache B, Remuzzi A and Steinman DA. An image-based modeling framework for patient-specific computational hemodynamics. Medical and Biological Engineering and Computing, 46: 1097-1112, Nov 2008.