[Insight-users] Running the FastMarchingImageFilter.cxx example on 3D data

Guido H. Jajamovich gjajamo at gmail.com
Mon Jun 11 15:32:23 EDT 2012


Hi Francesco,

Let me add to Abayiz's answer, that you can find an heuristic to set
alpha and beta in Itk Software Guide, page 537:

"The SigmoidImageFilter class requires two parameters to define the
linear transformation to
be applied to the sigmoid argument. These parameters are passed using
the SetAlpha() and
SetBeta() methods. In the context of this example, the parameters are
used to intensify the
differences between regions of low and high values in the speed image.
In an ideal case, the
speed value should be 1.0 in the homogeneous regions of anatomical
structures and the value
should decay rapidly to 0.0 around the edges of structures. The
heuristic for finding the values
is the following. From the gradient magnitude image, let's call K1 the
minimum value along
the contour of the anatomical structure to be segmented. Then, let's
call K2 an average value of
the gradient magnitude in the middle of the structure. These two
values indicate the dynamic
range that we want to map to the interval [0 : 1] in the speed image.
We want the sigmoid to map
K1 to 0.0 and K2 to 1.0. Given that K1 is expected to be higher than
K2 and we want to map
those values to 0.0 and 1.0 respectively,we want to select a negative
value for alpha so that the
sigmoid function will also do an inverse intensity mapping. This
mapping will produce a speed
image such that the level set will march rapidly on the homogeneous
region and will definitely
stop on the contour. The suggested value for beta is (K1+K2)/2 while
the suggested value for
alpha is (K2-K1)/6, which must be a negative number. In our simple
example the values are
provided by the user from the command line arguments. The user can
estimate these values by
observing the gradient magnitude image."

Best,
Guido


On Mon, Jun 11, 2012 at 10:34 AM, Mr Francesco Grussu
<francesco.grussu at eecs.qmul.ac.uk> wrote:
> Abayiz, thank you very much for such practical and useful advice.
> My regards,
>
> --Francesco
>
>> Hi Francesco,
>>
>>
>> Fast marching computes the arrival time of a front at the points of a
>> discrete lattice. In your case, your input first will be smoothed by
>> "CurvatureAnisotropicDiffusionImageFilter", then its output will be given
>> to the "GradientMagnitudeRecursiveGaussianImageFilter" to calculate its
>> gradient. "Sigma" should be set to this filter (you can take a look at the
>> gradient calculation formula).
>>
>>
>> The output of this gradient filter is then given to the sigmoid filter to
>> calculate its linear transformation, which requires you to provide alpha
>> and beta. I usually set sigma=1.0, alpha=-2.0, beta=2.0 for my own case,
>> but you should get suitable value by practice. Then this sigmoid output
>> will be the input to your fast marching filter. The output of your fast
>> marching filter is then given to a binary thresholder to obtain final
>> binary output. You should set stopping and threshold values by yourself,
>> usually with not a large number, and stopping value is larger than
>> threshold value.
>>
>> Abayiz
>>
>>
>>
>>
>> ________________________________
>>  From: Mr Francesco Grussu <francesco.grussu at eecs.qmul.ac.uk>
>> To: insight-users at itk.org
>> Sent: Friday, June 8, 2012 7:02 PM
>> Subject: [Insight-users] Running the FastMarchingImageFilter.cxx example
>> on 3D data
>>
>> Dear all,
>> I am trying to run the FastMarchingImageFilter.cxx example from the ITK
>> Software Guide 2.4.0 ( http://www.itk.org/ITK/resources/software.html ) in
>> order to apply a Fast Marching Level Set Segmentation on my own data.
>>
>> My data are a stack of 260 512x512 2D slices stored in a .nrrd file coming
>> from a DICOM series. I have successfully modified the code of the
>> FastMarchingImageFilter.cxx example (which deals with a 2D image) in order
>> to handle 3D data...
>>
>> The grey level of the voxel are stored as floating point data and range
>> from about -1000 to just under +2000.
>>
>> I now the three coordinates of a suitable seed point, but I have no idea
>> about the other parameters (sigma, alfa, beta, Time Threshold, Stopping
>> Value as well as the parameters for the
>> CurvatureAnisotropicDiffusionImageFilter called int the example).
>>
>> Does anyone have even a rough idea about a suitable way to estimate good
>> values of that parameters before running the algorithm?
>>
>> Thanks a lot in advance,
>> my regards,
>>
>> Francesco
>>
>>
>>
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users_____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users


More information about the Insight-users mailing list