[Insight-users] Re: Gradient Vector Flow Image Filter compile
error
Luis Ibanez
luis.ibanez at kitware.com
Thu Oct 21 11:23:51 EDT 2004
Hi Quan,
The purpose of the GradientVectorFlowImageFilter is to
smooth a vector field by computing the equivalent of
diffusion on the vector field.
This filter expect an image of vectors as input and
will produce an image of vectors (the same image type)
as output.
The typical use of this filter in deformable models
is to use the following pipeline:
A) ImageToBeSegmented
|
| [scalar image]
V
B) GradientMagnitudeFilter (edge detector)
|
| [scalar image]
V
C) GradientImageFilter (create vector field)
|
| [vector image]
V
D) GradientVectorFlowImageFilter (smooth vector field)
|
| [vector image]
V
A) is the input image to be segmented, where you
expect to have edges defining the borders of
anatomical structures.
B) Is edge detection, so its output can be seen
as an edge map.
C) Computes a vector field where the vectors
point to the local increading direction of
the edge map. In principle, this vector field
is such that by following the path of vectors
you will end up in the maximum of intensities
of the edge map.
D) Since (C) tends to be quite noisy, and it tends
the point to local directions that are not necesarily
the ones best suited for directing a model towards
the edges of structures (e.g. they cannot drive a
deformable model inside a narrow passage), it is
usually desirable to massage the vector field in
(C) with the filter (D).
The output of this pipeline is then used as the
source of "External Forces" for the deformable
model.
All this will be clearer if you play with some
synthetic examples and visualize the resulting
vector fields with ParaView. You can download
paraview for free from
http://www.paraview.org
Regards,
Luis
===========================================
Quan Chen wrote:
> Sorry, I just checked the example (I didn't be able to find it under
> example dir, it was under Testing dir). And I see the different way
> that this filter should be used. However I still have question.
>
> The testing example puts this way:
>
> typedef itk::GradientVectorFlowImageFilter<myGradientImageType,
> myGradientImageType>
> myGVFFilterType;
>
> typedef itk::GradientImageFilter<myImageType, double, double>
> myGFilterType;
>
> So it want the inputimage and outimage of the GradientVectorFlow the
> same format? However, the filter itself should expected a edge image,
> which is not gradient image itself. In the testing example, we have
>
> myGFilterType::Pointer gfilter = myGFilterType::New();
> myGVFFilterType::Pointer m_GVFFilter = myGVFFilterType::New();
>
> m_GVFFilter->SetInput(gfilter->GetOutput());
>
> Now the output of the gfilter (myGFilterType) should be myImageType,
> right? So the GVFFilter will doing some conversion? Why this filter
> is designed this way?
> _______________________________________________
> 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