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

Jim Miller millerjv at ge.com
Fri Nov 19 11:07:44 EST 2010


Brad, 

Thanks for digging through this.  I would hazard a guess that for the N-dimensional version, someone took a "stab" at what the proper normalization should be. Like you, I usually refer to Tony Lindeberg as the reference.  If you have worked through the pencil and paper, then I am satisfied.  I would like to give the opportunity for Luis and Luca to chime in.

Jim

On Nov 19, 2010, at 10:44 AM, Bradley Lowekamp wrote:

> Jim,
> 
> The bug report I reference below is the one I believe you are referring too:
> http://public.kitware.com/Bug/view.php?id=10599
> git show 49e7362fc295033e5e6594b1325a5c7997d9bb95 -- Code/BasicFilters/itkHessianRecursiveGaussianImageFilter.txx
> 
> The solution just fixed the Hessian filters so that each second order derivative were scaled by t ( sigma^2) not sigma^3. However, this solution just fixed this one filter, and was incomplete because I have also discovered that the Recursive filter incorrectly applies scaling by the pixel spacing also.
> 
> I have placed my proposed solution in my github account:
> https://github.com/blowekamp/ITK/commit/f455508a90d6ac6bd2b5e6b08d1b5e7f13f56a60
> 
> 
> This would make the current code in the Laplacian, Gradient, Gradient magnitude filters correct for normalized scale-space analysis ( and the original code of the Hessian filter ). These are the algorithms which analyze different level of scale-scale to find local extrema.
> 
> I spent much of yesterday pushing a pencil computing theoretical values of a Laplacian of a Gaussian convolved  with a Gaussian blob over the general n-Dimensions. And with these corrections everything lined up correctly and was happy. That is the value of maximal, was maintained with changing of the size of the blob, and changing of the image spacing, i.e. it was correctly normalized across scale. I intent to create a 1-D example that verifies these solution, as my current test depends on my blob detector.
> 
> This is the normalization I am constantly seeing in the literature. I very much would like to know if there is any reasoning for the current normalization, because I can't find it myself.
> 
> Brad
> 
> 
> On Nov 19, 2010, at 9:16 AM, Jim Miller wrote:
> 
>> Luca, 
>> 
>> Is this the same bug you mentioned to me in Rotterdam?  You had patched something related to scale space and Hessian calculations shortly after our discussion.
>> 
>> Jim
>> 
>> 
>> On Nov 17, 2010, at 11:19 AM, Bradley Lowekamp 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?
>>> 
>>> 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 ).
>>> 
>>> 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.
>>> 
>>> 2) Hack the set of Recursive Gaussian Filter to perform the correct scaling for their specific operation and not use RecursiveGaissianImageFilter::NormalizeAcrossScale.
>>> 
>>> 
>>> 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
>>> 
>>> 
>> 
>> Jim Miller
>> Senior Scientist
>> GE Research 
>> Interventional and Therapy
>> 
>> GE imagination at work
>> 
> 
> ========================================================
> Bradley Lowekamp  
> Lockheed Martin Contractor for
> Office of High Performance Computing and Communications
> National Library of Medicine 
> blowekamp at mail.nih.gov
> 
> 

Jim Miller
Senior Scientist
GE Research 
Interventional and Therapy

GE imagination at work

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20101119/eef0608d/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3108 bytes
Desc: not available
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20101119/eef0608d/attachment.bin>


More information about the Insight-developers mailing list