[Insight-users] RecursiveGaussianImageFilter problems
Luis Ibanez
luis.ibanez@kitware.com
Tue, 07 May 2002 11:38:51 -0400
HI Bjorn,
Could you give us more details on the way you are using the
RecursiveGaussianImagefilter ?
When using the SeconOrder setup correctly it should give you
zero values on constant intensity regions. It should also give
you zero crossing values at edges, that is, it will produce
positive values at one side of the edge and negative values
at the other side.
When you use this filter for obtaining a Laplacian in 3D, it
has to be used six times. Two for smoothing (ZeroOrder) along
two of the dimensions and one more to compute Second Derivative
(SecondOrder) along the third dimension.
The figure below illustrate who the pipeline should look for
the Laplacian of a 3D Image. In this figure each S()
represents one Filter. The integer is the order (0=smoothing)
1=FirstOrder=FirstDerivative, 2=SecondOrder=SecondDerivative.
The first row on the figure computes the Second derivative
along Z, the second row computes the Second derivative along
Y and the third row computes the Second derivative along X.
Note that is is not enough to just apply S(2,x) for obtaining
a Second derivative along X. The two other dimension have to
be smoothed as well.
The final "Sum" filter will give you a Laplacian.
This structure is expensive in memory but very efficient at
run time. You may want to try also the itkLaplacianImageFilter
http://www.itk.org/Insight/Doxygen/html/classitk_1_1LaplacianImageFilter.html
Which will also compute a Laplacian but using finite diferences.
Depending on the noise level in your image, the itkLaplacianImageFilter
could be a better solution. If the noise happens to be too high,
smoothing with the RecursiveGaussian filters would be prefereable.
| S(0,x) |-->| S(0,y) |-->| S(2,z) |------+
|
| S(0,x) |-->| S(0,z) |-->| S(2,y) |--->|SUM|+---> = Laplacian
|
| S(0,y) |-->| S(0,z) |-->| S(2,x) |------+
(please try to use fixed size fonts to see this diagram :-)
The images in your URL look like a normal Laplacian.
How are you scaling the image for visualization ?
Are the gray areas in the border associated with the
zero value ?
Edges seems to have the common positive/negative
aspect of Laplacians.
When you say "high intensity values around the edges"
do you mean that you want positive and negative values
around the maximum of the gradient, or rather you want
only positive values with the maximum being at the
position of the edge ?
Could you please take a look at the images of the
GaussianFilter example:
http://www.itk.org/HTML/GaussianFilter.htm
and tell us which one of the images shown in there
is the one that you would like to have a potential
image. It looks like you want the GradientMagnitude
instead of the Laplacian...
Thanks
Luis
=============================================
Bjorn Hanch Sollie wrote:
> My biggest problem is that the RecursiveGaussianImageFilter doesn't
> produce intensity values close to zero in regions with constant
> intensity and high intensity values around the edges, which is what I
> need for the potentialimage in the fastmarching filter. Rescaling the
> intensity range doesn't solve this. I also need the solution to work
> across several data sets, so simply choosing an intensity value as a
> zero-level based on the output from the RecursiveGaussianImageFilter,
> and then rescaling intensity with respect to this isn't a good
> solution either. There's also the problem of the edges having both
> much higher and lower intensity than the constant regions (the picture
> at the URL below demonstrates the problems).
>
> I need something with the same edge-enhancing qualities as the
> RecursiveGaussianImageFilter, just different intensity-wise. Are
> there any other possible solutions in ITK I might try before I follow
> Stephen's suggestion about modifying the GradientMagnitudeImageFilter?
>
> (I converted all the pictures on my homepage to JPG, so they should
> work better now.)
>
> <URL:http://www.pvv.org/~edge.html>
>
> -Bjorn
>