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

Bradley Lowekamp blowekamp at mail.nih.gov
Tue Nov 23 11:21:02 EST 2010


On Nov 23, 2010, at 10:54 AM, Luis Ibanez wrote:

> 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 appreciated that description. But I could not find it in the scale-space literature. Do you have a reference? I don't understand how this description would apply to the derivatives. 

I began this post by questioning if my scale space normalization was the same as what's in ITK, and asking to understand what is in ITK. 


The "natural coordinates" or "dimensionless spatial units" used in the scale-space literature is very well defined and explained in the literature. I assumed that is what ITK was trying to achieve. The goal of this normalization is that the peaks of derivative have the same value regardless of scale of the "blob" or feature. The current implementation in ITK does not achieve this.

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


My "n" refers to the order of the derivative not the dimension. This will perform exactly what is required for N-Dimensions of separated n-order derivatives.


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


We are talking about different Ns.

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

I am still looking for a definition of how ITK is correct. My changes are correct according to the scale-space  "natural coordinates"  theory and I have written test which verify the scale invariant features of this space.


> 
>  
> 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   :-)


This has already been done to the Hessian filter, so our definitions and implementations of "ScaleSpaceNormalization" has already diverged.

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

========================================================
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/495614fc/attachment.htm>


More information about the Insight-developers mailing list