[Insight-developers] GaussianFilter::NormalizeAcrossScale not good for scale space analysis

Luis Ibanez luis.ibanez at kitware.com
Tue Nov 23 10:54:01 EST 2010


Brad,

On Wed, Nov 17, 2010 at 11:19 AM, Bradley Lowekamp
<blowekamp at mail.nih.gov>wrote:

> Hello,
>
> I can not find that rational for the scaling factors applied to the
> gaussian filter when NormalizeAcrossScale is enabled:
>
> http://www.itk.org/Doxygen/html/classitk_1_1RecursiveGaussianImageFilter.html#a042f38140c124e1f4a9b0461ef720982
>
> Is there a reference for the logic and motivation for this scaling?
>
>

The explanation is indeed in the Doxygen comment:

"When this flag is ON the filter will be normalized in such a way that
larger sigmas will not result in the image fading away."
"When the flag is OFF the normalization will conserve contant the integral
of the image intensity. "

One way to arrive to it is to analyze what happens to an impulse signal
when it is processed by this filter at different sigma values.

When the flag is ON, the output will have always the same value at the
position of the impulse sigma.

When the flag is OFF, the output will fade for larger sigmas, due to
the redistribution of energy that the sigma blurring performs.



> I have been working on a multi-scale laplacian blob detector, so this
> scaling is critical for this to be working correctly. However for a 3D
> Laplacian, the normalization does not match any know rational I can find.
> Specifically for the 3D case the laplacian is normalized with sigma^3 not
> sigma^2. ( Side Note: standard scale space notation of L(*x*;t) where
> t=sigma^2, would indicate that the normalized laplacian = t(L_xx+L_yy+L_zz)
> )
>
>
> From my recent readings there is a "natural coordinates" or "dimensionless
> spatial units" which are frequently used for this analysis. The conclusion I
> reach from this analysis is that the correct scaling factor should be
> sigma^n where n is the order of the differentiating for the separated
> convolutions. ( Not the current constant sigma ).
>
>

Please not that the RecursiveGaussianFilter only
filter one dimension at a time.  For an N-D filtering,
you actually chain N of these filters (this is done
in the Smoothing, Laplacian and Hessian filters)

So, by applying the current normalization, (if only
one Sigma per dimension) you end up with a
Sigma^N normalization.




> This issue was also noticed with the Hessian filter:
> http://public.kitware.com/Bug/view.php?id=10599
>
> However the solution was filter specific:
> git show 49e7362fc295033e5e6594b1325a5c7997d9bb95 --
> Code/BasicFilters/itkHessianRecursiveGaussianImageFilter.txx
>
> I see two solutions:
>
> 1 ) Change RecursiveGaissianImageFilter to scale according to sigma^n. This
> is my preferred solution as I believe it's correct.
>
>
This will be incorrect,
given that this filter only applies filtering in one dimension at a time.



> 2) Hack the set of Recursive Gaussian Filter to perform the correct scaling
> for their specific operation and not use
> RecursiveGaissianImageFilter::NormalizeAcrossScale.
>
>
This one sounds like a call for future headaches   :-)


>
> Any thoughts on this issue?
>
> Brad
>
> BTW: I have been reading "Scale-Space Theory in Computer Vision" by Tony
> Lindeberg as my main reference.
>
> ========================================================
>
> Bradley Lowekamp
>
> Lockheed Martin Contractor for
>
> Office of High Performance Computing and Communications
>
> National Library of Medicine
>
> blowekamp at mail.nih.gov
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20101123/c2e02a49/attachment.htm>


More information about the Insight-developers mailing list