Mesh Contour Segmentation
Module Type & Category
Authors, Collaborators & Contact
- Peter Karasev (Author): Georgia Tech
- Karol Chudy (Author): Georgia Tech
- Allen Tannenbaum (Collaborator): Georgia Tech
- Contact: Peter Karasev, firstname.lastname@example.org
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:
2. Mark and Display segment of the surface in virtual colonoscopy, e.g. to mark a tumor location
- 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:
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:
Links to known bugs in the Slicer3 bug tracker
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:
Several Key Points:
- Entry Point from Slicer
- Computation of Initial Path from Un-Ordered Initial Points
- Adjacency Tree, Mean Curvature, Curvature Surface Gradient Computation
- Levelset Evolution Entry Point
- Levelset Evolution Core
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.