[Insight-users] Possible bug in itk::ShapeDetectionLevelSetFilter (or thereabouts)

Luis Ibanez luis.ibanez@kitware.com
Thu, 26 Sep 2002 21:12:13 -0400


Hi Jahn,

Thanks for your report,


In order to verify the behavior of this family of filters
a new Example application has been added.

You can find it under :

      Insight/Examples/FastMarchingLevelSet


This is basically a rewrite of the example in ShapeDetection.

The advantage is that a GUI has been added so the input
and output can be validated directly as you play with the
parameters.


The FastMarchingImageFilter behaves quite well under this
test, though as many other filters it requires some parameters
fine tunning.

The example can read MetaImages like the ones availabe
at the ftp site:


    ftp://public.kitware.com/pub/itk/Data/BrainWeb


Please follow the steps below to run the example:


1) Load an image by clicking on the "Load" button.

    (the values indicated are for the image that you
     can get from the ftp site brainweb165a10f17.mha)

2) Display the input image with the "Display" button
    use the slider at the right of the image viewer
    in order to get to the slice #98. (whre the ventricles
    are clearly visible)

3) With the left button click on a central pixel on the
    Ventricles (for example : (104,109,98) ) This pixel
    will be set as seed point. You can click on more seed
    points and cumulate a list of seeds, but for a first
    try is easier to follow one single seed.

4) Click on the "Gradient Magnitude"  button, that will
    trigger the computaion of the Magnitude of the input
    image gradient.  This is done with a Recursive filter
    that is equivalent to convolve first with a gaussian
    and then apply a derivative operator.

    The value of sigma = 1.2 is a good starting value for
    this image. (This value is critical and affect the
    behavior of the rest of the pipeline.

5) When the "Display" button connected to the output of
    the gradien magnitude filter turns green, click on it
    and the image viewer with the gradient magnitude will
    appear.

6) Click on the "Negative Exponential" button. It will
    compute the exp( - x ) of the gradient magnitude.
    This image will be used as the speed image for the
    FastMarching filter. The effect is that points with
    high gradients will have small speeds.  Here the
    value of sigma used for computing the gradient is
    a critical parameter.  A sigma too large will make
    the speed image too smooth and lacking of places
    with zero speed. That will result in the front
    propagating futher than expected.(e.g. leaks)

7) When the negative exponential filter is done, click
    on the "Time Crossing Map" button. This will trigger
    the execution of the FastMarching filter. Iterations
    will be displayed as feedback. (for this image the
    iterations will go upto ~710 and will take about 5
    minutes (on a Pentium 4 2GHz).

8) When the FastMarching filter is done, the Time
    crossing map will be displayed. you can click with
    the mouse on the image viewer in order to get an
    idea of the values corresponding to the contours of
    the Ventricles. A value of ~100 is good enough for
    the ventricles in this image.

9) Write this value in the "Upper" box on top of the
    Threshold image filter. Then click on the "Display"
    button at the output of this filter.

    This will display the result of thresholding the
    TimeCrossingMap at this value. The segmented region
    will correspond to the ventricle in which you selected
    the initial seed point.


Note that the larger the sigma of the Gaussian derivative,
the narrower will this contour be with respect to the
actual anatomical structure. This is due to the front
stopping earlier as a consecuence of lower speed that
results from the wider contours generated by the
gaussian filter.



Please let us know if you encounter any difficulties
running the example.


Thanks


    Luis