[Insight-users] GeodesicActiveContourImageFilter

Pui Yu Lau pyl111 at rogers.com
Thu Feb 8 00:41:02 EST 2007

Chris and Luis, thanks for the help. 

    I was also wondering how I can use the segmentation and extract the 
contour itself, and apply the contour to the original image and segment 
it again without it becoming the black and white due to the binary filter. 

    Another user earlier had asked how to extract the contour of an 
unstructured grid, and a reply was given to do these following steps:

GeometryFilter -> FeatureEdges -> PolyDataMapper
or simply
GeometryFilter -> ExtractEdges -> PolyDataMapper

    I was wondering if this technique can be applied for my use, or is 
there a better (morphological?) filter to do what I'd want.

- PY

Luis Ibanez wrote:

> Hi Pui,
> Please read carefully the description of this filter
> in the ITK Software Guide.
>   http://www.itk.org/ItkSoftwareGuide.pdf
> You seem to have missed many of the important feature
> of the example. It may be convenient for you to read
> the previous sections on Level Sets. In particular the
> section on the FastMarching filter and the ShapeDetection
> filter.
> The source code of the GeodesicActiveContour example
> is available at:
>      Insight/Code/Segmentation/
>        GeodesicActiveContourImageFilter.cxx
> In lines 319-320 you will find:
>   geodesicActiveContour->SetInput(  fastMarching->GetOutput() );
>   geodesicActiveContour->SetFeatureImage( sigmoid->GetOutput() );
> Where the SetInput() method is setting the initial level set
> to be used by the GeodesicActiveContour filter. This initial
> level set is computed in this particular case, as the output
> of a FastMarching image filter that is feed only with seed point.
> The fast marching filter in this case is simply producing a
> set of circles (or sphere) around the seed points.
> The SetFeatureImage() is connecting the image that is going
> to be used for computing the speed image. This feature image
> is computed as the sigmoid mapping of the gradient magnitude
> image.  The goal is to have an image that has low (dark) value
> in the edges where you want your level set to stop, and high
> (bright) values in the regions where you want the level set to
> propagate rapidly.
> The command line parameters passed to the example are described
> in lines 128-137:
>   if( argc < 10 )
>     {
>     std::cerr << "Missing Parameters " << std::endl;
>     std::cerr << "Usage: " << argv[0];
>     std::cerr << " inputImage  outputImage";
>     std::cerr << " seedX seedY InitialDistance";
>     std::cerr << " Sigma SigmoidAlpha SigmoidBeta";
>     std::cerr << " PropagationScaling"  << std::endl;
>     return 1;
>     }
>    a) Input image (the image to be segmented
>    b) Ouput image (segmentation resulting from the level set)
>    c) (x,y) index coordinates of the seed point for FastMarching
>    d) initial distance for fast marcing
>    e) Sigma for the smoothing of the gradient magnitude filter
>    f) Alpha and Beta parameters of the Sigmoid
>    g) Propagation scaling parameter for the Geodesic Active contour
> In general the initial level set image could be *any* rough
> segmentation of the object. You could produce such initial
> segmentation by a manual delineation, a quick region growing
> algorithm or a simple thresholding.
> It is quite common to implement two-stage segmentation methods
> where the first stage only produces a quick and dirty segmentation,
> that is then passed to a second stage where a level set method will
> fine tune the segmentatino. Note that level sets cannot perform
> magic on a poor initial segmentation. It is at least desirable for
> the initial segmentation to be close to the edges of the object
> to be segmented.
>      Regards,
>        Luis
> ==================
> Pui Yu Lau wrote:
>> Hi,
>>    I'm a new user to ITK, and I've been trying to learn to use some 
>> of the segmentation filters.  I've been looking at the Geodesic 
>> Active Contour method, and I am confused on how it actually works.  
>> Looking through the guide, it seems that it takes two initial image 
>> inputs, where the first one is the initial level set, and the second 
>> is the feature image.  However, when running the example of 
>> GeodesicActiveContourImageFilter, the images used were 
>> BrainProtonDensitySlice.png and 
>> GeodesicActiveContourImageFilterOutput.png, where the latter does not 
>> exist.  So, my question is, in this case, is the 
>> BrainProtonDensitySlice the feature image (input), while the 
>> GeodesicActiveContourImageFilterOutput is the initial level set 
>> (output)?  If not, what exactly is the initial level set image?
>> - PY
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users

More information about the Insight-users mailing list