1. Fast Marching segmentation module



This is an active contour 3D segmentation module.
Developed at the Georgia Institute of Technology, Biomedical Imaging Lab, for Slicer2 by Eric Pichon.
MICCAI 2003 paper Coming soon...


1a. Installation



  • First make sure that the module is not already installed.

    If the module is installed, it should appear as an Editor effect.

    If you cannot see it, you probably need to compile it first.

the module is installed...

[gte444x@sarah slicer2]$ cd Modules/vtkFastMarching/
[gte444x@sarah vtkFastMarching]$ mkdir builds
[gte444x@sarah vtkFastMarching]$ cd builds/
[gte444x@sarah builds]$ mkdir linux
[gte444x@sarah builds]$ cd linux
[gte444x@sarah linux]$ ccmake ../..

(note:  use the same name for the build directory and the Slicer Base build directory. For example, if you build Slicer in <slicer>/Base/builds/linux then they build the module in <slicer>/Modules/vtkFastMarching/builds/linux)

Answer CCMAKE's questions, at some point you should be able to "Press [g] to generate and exit".
Then, just do:

[gte444x@sarah linux]$ make

The compilation should succeed without any warnings. When starting Slicer again you should now see the module.

1b. Segmenting a volume

In this step-by-step example we will segment a cortex from an MRI data set. This is the same data.xml file found in the tutorial.tar.gz provided with the Slicer.

  • At this point the Editor panel should look like that:
the Fast Marching panel

  • Now we have to define some "seed points" inside the object you want to segment.

    This is done by creating Fiducials. Fiducials are created by moving the cursor to the desired location and pressing the 'p' key. To delete Fiducials, move the cursor over the desired location and press the 'd' key.

    Fore more information about Fiducials, see the Fiducials section of the User Guide.

   

Why seeds are important....

The seeds define an intensity and homogeneity range. This is then used to compute a speed function to move a surface. As more points come into the surface they are used to get a better estimate of the statistics. As the volume of the surface increases very rapidly, the initial contribution of the seeds is soon negligible, this means that
there is no really good way to correct a "bad start".

Rule of thumb: put as many seeds as possible, make sure that they are representative of the object you want to segment and that there is at least one in every hard-to-reach region.


  • Here we have defined seed points in all lobes of the two hemispheres.

    Note that in this case it is a good idea to put seeds inside the white and gray matter. Or else the statistics of the sole white
    matter for instance will be taken into account. [the algorithm
    is robust enough to give OK results even in that case, this is mostly an example].

setting the seeds

We are now ready to start segmenting !

Moving the slider completely to the left will only go back right before the last time you hit EXPAND. Therefore you should make sure that the segmentation has not leaked out of the object before you start another expansion.

Also, think about increasing the expansion amount when segmenting a large object (as in this example). You will obtain exactly the same segmentation with a lot less clicks...



Screenshot of the segmentation of the cortex