[Insight-users] Some questions about Geodesic Active Contours

Luis Ibanez luis . ibanez at kitware . com
Thu, 27 Nov 2003 20:44:43 -0500


Hi Ivan,

It is good to know that the level set filter is
working for your liver segmentation from MRI.

About your questions:

1)

  a)You are right, the shape of the initial level
    set in this case is totally dependent on the
    location of the seed points and the time used
    for thresholding the time-crossing map.  The
    process of the  FastMarching filter is equivalent
    to a distance map to the seed points.

  b)In the pipeline described in the software guide
    the fast marching filter is used simply as a
    way of computing a distance function from the
    seed points. For doing this, no speed image is
    provided to the FastMarching filter, we just
    setup its SpeedParameters to 1.0.

    You could have used the DanielssonDistanceMap
    for the same purpose, or simply use a group of
    spatial objects (ellipsoid spatial objects) in
    order to generate the equivalent circles around
    the seed points.

  c) The selection of seed points *is critical*.
     Probably the safest way to do this is to break
     the processing in two stages. (We do this in
     the VolView plugins).  First to tune the parameters
     of the FastMarching stage until you get some shape
     that is close to the anatomical structure to be segmented.

     Once you get this shape, you proceed then to use it
     as input for the GAC.  In this way you will be able
     to tune rapidly the entire process.

  d) Yes, you could use another level set for initializing
     the GAC. Our choice of the fast marching filter as
     a mechanism for initializing the GAC is simply one
     among many other possible options.  As you said, in
     the case of the Liver you could use any other source
     for the initial shape.  Good options are

     - an eroded version of a liver segmented from another
       subject

     - Use the FastMarching in its full mode, that is, not
       only as a distance transform, but actually feeding it
       the speed image. In that way, the initial level set
       will actually stop (or slow down) at the edges of the
       anatomical structure.

     - You could also use something like the ThresholdSegmentation
       level set image filter in order to generate an initial
       level set.


2) About the feature image

    a) Yeap, the feature image is what the level set filter
       actually sees. It is critical to get a high quality
       feature image if you expect to get reasonable results
       from the level set methods.

       As you already said, the weights for curvature, propagation
       and advection will also play a role in shaping the zero set.
       But the fact of the matter is that no combination of these
       parameters can compensate for a bad feature image.  Conversely,
       a good feature image will produce reasonable level sets even
       if you provide bad combinations of the weights for curvature,
       propagation and advection.

       The rule of thumb is that your feature image should almost
       look like a fuzzy segmentation of the anatomical structure
       that you are looking for.

    b) The different between propagation and advection is that advection
       is guided by a vector field that points to the edges of the
       anatomical structure to be segmented. The propagation is simply
       equivalent to an inflation term that pushes the zero set in the
       direction orthogonal to the surface, it is in some way a "dumb"
       force. Advection is a more "informative" force, since it carries
       information about the shape of the object.

    c) The curvature term will smooth the surface of the zero set.
       if the curvature weight is too low with respect to the propagation
       and advection terms then the zero-set will tend to expand and
       will try to enter every small protrusion of the anatomical
       structure. This will make the zero-set prone to leaking in regions
       of small contrast.  Using a high curvature weight will prevent the
       level set from attempting to enter in small details,.. a large
       enough curvature may induce contractions of the zero-set.

       Visualization plays a fundamental role on the good use of the
       level set methods.  You may get ideas of nice visualization
       options form the demo applications:  SNAP and
       ThresholdSegmentationLevelSetGui both available in the
       InsightApplications checkout.  They show the level set as it is
       evolving. This permits to tune parameters without having to wait
       until the end of the execution of the level set method.


As you may have appreciated by now, the level set methods are extremly
powerful but also require some tunning in order to get the best out of
them.  Developing the heuristics for this tunning is an effort in which
we all should be involved since it requires a significant amount of
experimentation.  We have talked on several occasions of the need for
a sort of "recipies" for methods *and parameters* that have proved to
be useful for particular anatomical applications.  We have also
considered the option of creating an ITK journal in which this type
of recipies would be appropriate for publication. They are after all
the "real" solutions to "real" problems that could be made available
to the community for avoiding to reinvent the wheel over an over again.


All that to say that, if you find a nice combination of ITK methods
that works for segmenting liver structures from MRI images, we will
be happy to put it in the repository under the Examples section and
feature it in the next edition of the SoftwareGuide. We anticipate the
this second edition would have more medical specific applications listed
by organ, image modality and medical application.


Regards,


   Luis


-------------------
Ivan Macia wrote:

> Dear ITK users:
> 
> I have successfully implemented the Geodesic Active Contours pipeline and
> the Watershed segmentation for segmenting liver structures in MRI images.
> Both have been proven to work (thanks Joshua and Luis for the advice).
> 
> Now im trying to understand how the GAC filter works and try adjust the
> parameters in the GAC pipeline. I´m using exactly the pipeline that appears
> in the ITK Software Guide, but changing the Gradient Magnitude Gaussian for
> a Gradient Magnitude (this has given better results for me) with a number of
> about 20 iterations in the Curvature Anisotropic Diffusion filter.
> 
> As I understand, the GAC filter requires 2 inputs:
> 
> 1) An initial level-set:
> 
> As the GAC solves an initial-value problem for the differential equation of
> the level-set, is it necessary to provide a level-set for t = 0, which
> evolves following the equation. This can be the output of any other level
> set method or for example a Fast Marching Filter. Here I understand that the
> role of the Fast Marching is creating an initial level-set. My question
> regarding this are the following:
> 	a) The initial level-set as the output of the Fast Marching would have a
> shape depending on the selected seed points and the time chosen as parameter
> but this is only my guess.
> 	b) What is the difference between the standard Fast Marching and the way it
> is used here?
> 	c) To which extent the chosen seed points for the Fast Marching affect the
> final result of the GAC? If by error I select a seed point outside the
> region would the final result be wrong? And if the boundaries of the zero
> level-set resulting from the Fast Marching where outside the region to
> segment would the result be wrong? I imagine this is controlled by the
> distance parameter of the Fast Marching but I don´t know if it´s critical.
> 	d) In my case i have to segment the liver which has a quite complicated
> shape. Would be better to use another initial level-set that would give
> better results?
> 
> 2) A Feature Image.
> As I understand this Feature Image affects both, the Propagation and the
> Advection terms in the differential equation. In one of the answers of Luis
> I read that the vector map A(x) of the advection term is computed over the
> Feature Image as the inverted Gradient Recursive Gaussian of this image. My
> questions here:
> 	a) I guess that here the Feature Image (here output of the Sigmoid) is very
> important, as it is the one that really gives the information about the
> shape of the object but to which extent? Of course I guess that that also
> depends on the weights of alpha, beta and gamma.
> 	b) What is the diference between the Propagation and Advection terms in the
> way they act? I think that both make the region grow. Is that right?
> 	c) Finally there is the Curvature Term. I guess this is only for smoothing
> the result depending on the curvature of the boundaries. If I´m not wrong
> this can make the region to grow and shrink. Am I?
> 
> Seems like a lot of questions but I would really appreciate some information
> / advice on all or some of these questions.
> 
> Thank you very much in advance for your help
> 
> Ivan
> 
> __________________________________
> Ivan Macia
> Ing. Industrial
> Ing. Automatica y Electronica Ind.
> VICOMTech - Visual Interaction and
> Communication Technologies Center
> Paseo Mikeletegi 57
> 20009 San Sebastian
> Spain
> Tel: +34 943 30 92 30
> Fax: +34 943 30 93 93
> e-mail: imacia at vicomtech . es
> http://www . vicomtech . es
> 
> *** member of INI-GraphicsNet ****
> http://www . inigraphics . net
> __________________________________
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>