[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