[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
>