From SlicerWiki
Jump to: navigation, search
Home < Modules:MeshContourSegmentation-Documentation-3.6

Return to Slicer 3.6 Documentation

Mesh Contour Segmentation


Surface Normal Curvature
Initial Points From User
Converged Contour on Surface

General Information

Module Type & Category

Type: CLI

Category: Segmentation

Authors, Collaborators & Contact

  • Peter Karasev (Author): Georgia Tech
  • Karol Chudy (Author): Georgia Tech
  • Allen Tannenbaum (Collaborator): Georgia Tech
  • Contact: Peter Karasev,

Module Description

This module is a tool to generate closed contours on a surface in 3D. The contour is initialized with a set of points, and subsequently 'evolves' according to some geometric criterion of the underlying surface (e.g. Surface Normal, mean curvature, second fundamental form, etc) and the embedded curve (e.g. geodesic & normal curvatures, etc ).

The implementation uses a version of Sparse Field Level Sets (Whitaker et al 1998) modified for a mesh where there is an arbitrary number of vertex neighbors.

While the motivating problem is segmentation of Sulci & Gyri on the cortical surface, the technique is also applicable to analysis of other anatomic structures (e.g. bones and fractures thereof).


Use Cases, Examples

1. Compute & Display surface mean curvature, when noise in the mesh precludes the ITK function of similar purpose from producing good result:

Surface Curvature

2. Mark and Display segment of the surface in virtual colonoscopy, e.g. to mark a tumor location

Region Selection


  • Load the scene in the below data set. You will see 6 fiducial points as initializers. Select the module from Modules -> Segmentation -> MeshContourSegmentation. Create a new output model, and apply. It will take a few minutes, due to geometry computation across the entire large mesh.

Quick Tour of Features and Use

A list panels in the interface, their features, what they mean, and how to use them. For instance:

  • Input panel:
  • Input Model: PolyData for input
  • Contour Points: Fiducial List to input (Must be "Selected" in Fiducials Module)
  • Output Model: The PolyData into which to put the result
  • Evolution Iterations: Number of Levelset Iterations
  • Mesh Smoothing Iterations: Number of times to pre-smooth the mesh for better geometry computation
  • Curvature Averaging Iterations: Number of times to average computed mean curvature and gradient, to make evolution smoother
  • Adjacency Tree Levels: How deep of a neighborhood lookup to build. If the mesh is very fine and practically 'flat' everywhere, this must increase. Exponentially slows things down as it is raised (Suggestion: make the mesh as coarse as practical so it can be set to 1 or 0)
  • Right Handed Mesh: whether the normal vector needs a negative sign or not.
User Interface


Notes from the Developer(s)

- Give it some seed points for initialization.

- Seed points do *NOT* need to be 'in order', but of course the closer they are to the expected final result, the better.

- The region being marked as initial should be convex.

- The initial contour is formed like this: connect all seed points to eachother, and fill the convex hull. The boundary of this convex fill is the initial contour.

- Slow part of the computation: forming adjacency tree for curvature computation. The parameter "adjacency levels" says how many levels to branch out from each vertex when fitting paraboloid. These neighbors are stored, because they are needed when computing the curve geometry during levelset evolution.

- Output: MeanCurvature is scaled to [-256,256] and displayed everywhere. The ActiveContourVertices array gives the location of segmented region on the mesh.


Other modules or packages that are required for this module's use:

-Only VTK & STL


On the Dashboard, these tests verify that the module is working on various platforms:

Known bugs

Links to known bugs in the Slicer3 bug tracker

Usability issues

Follow this link to the Slicer3 bug tracker. Please select the usability issue category when browsing or contributing.

Source code & documentation

Links to the module's source code:

Source code:

Several Key Points:

Doxygen documentation:

More Information


This work was supported in part by grants from NSF, AFOSR, ARO, as well as by a grant from NIH (NAC P41 RR-13218) through Brigham and Women’s Hospital. An NSF Fellowship supported part of the work.


P.A. Karasev, J.G. Malcolm, M. Niethammer, R. Kikinis, A. Tannenbaum. User-Driven 3D Mesh Region Targeting. To appear in SPIE Medical Imaging 2010.