Modules:VMTKLevelSetSegmentation

From Slicer Wiki
Jump to: navigation, search
Home < Modules:VMTKLevelSetSegmentation

Return to Slicer 3.4 Documentation

Gallery of New Features


Module Name

VMTKLevelSetSegmentation

Main GUI
Vessels of an arm segmented
A cerebral aneurysm segmented
A coronary tree segmented

General Information

Module Type & Category

Type: Interactive Scripted Module

Category: Segmentation, Extension

Authors, Collaborators & Contact

  • Author: Daniel Haehn, University of Heidelberg
  • Supervisor: Luca Antiga, Mario Negri Institute
  • Contact: Daniel Haehn, haehn@bwh.harvard.edu

Module Description

A flow chart of the level-set segmentation process

This module provides the level-set segmentation process of the Vascular Modeling Toolkit (http://www.vmtk.org) in 3D Slicer. The process targets manual segmentation of tubular and blob-like structures.

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

  • 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 VMTKLevelSetSegmentation 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 The Vascular Modeling Toolkit.

Examples, Use Cases & Tutorials

  • Note use cases for which this module is especially appropriate, and/or link to examples.
  • Link to examples of the module's use
  • Link to any existing tutorials

Quick Tour of Features and Use

List all the panels in your interface, their features, what they mean, and how to use them. For instance:

  • Input panel:
  • Parameters panel:
  • Output panel:
  • Viewing panel:

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
Class diagram showing the sub-classes of the initialization methods
Class diagram showing the sub-classes of the evolution methods

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

Flow chart showing the VTK/VMTK pipeline of the Colliding Fronts algorithm
Flow chart showing the VTK/VMTK pipeline of the Fast Marching algorithm

The class SlicerVMTKLevelSetGUI derives from ScriptedModuleGUI and saves the current user interface state to its own MRML node. The MRML nodes of the used volume and model data are additionally attached. This allows different instances of the level set segmentation module to be run at the same time. The actual calls to the VMTK libraries are only performed in the class SlicerVMTKLevelSetLogic. Several general supporting functions, like handling interaction within 3D Slicer, converting coordinates, undoing and the merging of volumes are outsourced in the class SlicerVMTKLevelSetGUIHelper.

Not only does every initialization and evolution method of the level set segmentation module use its own GUI and widgets but it also provides individual user interaction within 3D Slicer. Separate classes derived from the interface SlicerVMTKAdvancedPageSkeleton were created for each method in order to ensure the possibility of maintenance and extension. The calls to the required methods like UpdateGUI() or UpdateMRML() get forwarded to each individual sub-­class to support the modular design and enable code encapsulation.

Additional information and documentation concerning the VMTKLevelSetSegmentation module can be found in this student research project write-up.

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.