[Insight-users] Re: problem with threshold level set parameters

Luis Ibanez luis.ibanez at kitware.com
Mon Jan 15 16:26:46 EST 2007


Hi Lorenzo,

I assume that you are referring to the example described
in the ITK Software Guide

    http://www.itk.org/ItkSoftwareGuide.pdf

As illustrated in figure 9.24 in pdf-page 588.


If so, please note that the seed points are used by the
FastMarching filter in order to provide an initial level
set as input to the ThresholdSegmentationLevelSetFilter.


----

About your question (1):

You can indeed modify the values of the initial seeds.
One way of understanding these values is, as you pointed
out, to consider where the FastMarching front is going
to reach the zero value. If a seed has value -K then the
Fast marching crossing map will have a zero value at a
distance "K" from the seed point.

Therefore, the value that you want to put in the seed
is the negative of the distance that you want to reach
from the seed point. It will help you a lot to take the
output of the Fastmarching filter, threshold it at zero,
and write it out to an image file.

By changind the values of the seed points you will see
how far the front of the fast marcing goes.  The larger
negative values you put in the seeds the larger will be
the mask passed as initial level set to the Threshold
segmentation level set filter.

Note that if the FastMarcing filter has been set to use
the image spacing, then these seed values are to be
measured in millimeters (or whatever unit you use to
express the image spacing).


About your question (2):

The lower and upper threshold values that you pass to
the ThresholdSegmentationLevelSet filter are related to
the input image, *not* to the input level set.

Note that the ThresholdSegmentationLevelSet filter has
two different image inputs (as shown in the ITK Software
Guide in pdf-page 589):

a) thresholdSegmentation->SetInput( fastMarching->GetOutput() );
b) thresholdSegmentation->SetFeatureImage( reader->GetOutput() );

The SetFeature() image is the actual image that you want to segment,
while the SetInput() image is the initial level set, which
should be a rough segmentation of the structure that you want.


The values that you pass should be based on the intensity
range of the object that you want to segment. For example,
if you were segmenting a liver out of a CT scan, you should
use values around the typical Hunsfield values found in liver:

    http://www.itk.org/Wiki/ITK_Hounsfield_Units

which are 40 to 60.

Therefore you could set the lower threshold to 35 and
the upper threshold to 65.

Then with the FastMarching filter, you should strive for
creating a mask that close the the shape of the liver.



    Regards,


       Luis


========================
Lorenzo Cesario wrote:
> Hi, i have a trouble about setting two parameters in threshold level set.
> 1) how can i choose parameter InitialDistance for seed point? i understand
> that this point is inside the distance map surface so in itk segmentation
> example it has negative value and iso-surface has zero distance (the
> contour). But how can i choose one value instead of another? for example...i
> can set seed value at -500, or -100 or -1000, what can help me to make a
> choice instead of another?
> 
> 2) How can i set LowerThreshold of the binary thresholder? UpperThreshold is
> zero because it represents the contour, but all the value in object have
> negative value. Why in example of itk lower is -1000?
> tks
> 
> 
> 
> 


More information about the Insight-users mailing list