[Insight-users] Base question on derivative filters

Luis Ibanez luis.ibanez at kitware.com
Wed Sep 9 10:36:04 EDT 2009


Hi Alex,

The RecursiveGaussianImageFilter  "approximates" convolution,
but it doesn't "perform" convolution.

This filter implements an IIR filter.
For details, please see:

"Fast Algorithms for Low-Level Vision"
R.Deriche in IEEE-PAMI Vol.12, No.1, January 1990, pp 78-87,

"Recursively Implementing The Gaussian and Its Derivatives",
R. Deriche,
INRIA, 1993, ftp://ftp.inria.fr/INRIA/tech-reports/RR/RR-1893.ps.gz


Note that "convolution" by itself doesn't really
set units, *unless* you take unit conversion into
account in the computation of the convolution
kernel coefficients.


Using the power of Open Source, things will be
a  lot clearer if you look at the internals of the code.  :-)


For example, look at lines 56-69 of
Insight/Code/BasicFilters/itkDiscreteGaussianImageFilter.txx

Which actually performs a convolution with a truncated
approximation of the Gaussian kernel.

Note the use of the "m_UseImageSpacing" variable.

On the other hand, look at the

itkRecursiveSeparableImageFilter which is the parent
class of the itkRecursiveGaussianImageFilter. In particular
look at lines 264-267 of itkRecursiveSeparableImageFilter.txx:

  const typename InputImageType::SpacingType & pixelSize
    = inputImage->GetSpacing();

  this->SetUp( pixelSize[m_Direction] );

and their effect on
lines 79-256 in itkRecursiveGaussianImageFilter.txx




  Regards,


      Luis


-----------------------------------------------------------------------------------------------------------------------
On Wed, Sep 9, 2009 at 10:22 AM, Oleksandr Dzyubak <adzyubak at gmail.com>wrote:

>
> Maybe I am misreading the description.
>
> From the Class description:
>
> RecursiveGaussianImageFilter <
> http://www.itk.org/Doxygen/html/classitk_1_1RecursiveGaussianImageFilter.html>
> is the base class for recursive filters that approximate convolution with
> the Gaussian kernel.
>
> In this case, wouldn't the units from the RecursiveGaussian filter match
> those you would have
> from the convolution?
>
> Alex
>
> Luis Ibanez wrote:
>
>> The RecursiveGaussian filter doesn't use convolution.
>>
>> The value of sigma is set in physical coordinates.
>>
>> The output pixel values will have units of :
>>
>>       input intensity values /  physical coordinates
>>
>>    *IF* you use the FirstOrder setting.
>>
>> Note that there are also ZeroOrder and SecondOrder
>> settings.
>>
>> In which case the intensity units of the output will be:
>>
>> ZeroOrder:      input intensity units
>>
>> Second Order :  input intensity units / (physical units)^2
>>
>>
>>
>>    Regards,
>>
>>
>>         Luis
>>
>>
>>
>>
>> -------------------------------------------------------------------------------
>> On Wed, Sep 9, 2009 at 9:51 AM, Oleksandr Dzyubak <adzyubak at gmail.com<mailto:
>> adzyubak at gmail.com>> wrote:
>>
>>    Don't you change the units while convolving with the Gaussian?
>>
>>    Alex
>>
>>    Kishore Mosaliganti wrote:
>>
>>        The resulting units are in world coordinates. You will not
>>        need to divide by spacing. The sigma is also in world coordinates.
>>
>>        Kishore
>>
>>        On Tue, Sep 8, 2009 at 11:49 AM, Gomez Herrero, Alberto
>>        <alberto.gomez-herrero at philips.com
>>        <mailto:alberto.gomez-herrero at philips.com>
>>        <mailto:alberto.gomez-herrero at philips.com
>>        <mailto:alberto.gomez-herrero at philips.com>>> wrote:
>>
>>           Hello all,
>>
>>                     this is a question regarding derivative filters in
>> general
>>        and the
>>           RecursiveGaussianImageFilter  in particular.
>>
>>                     When we compute, say, the first order derivative of,
>> say, a 2D
>>            image “ I“ we get two images of the same size, “Ix”, and
>>        “Iy”. My
>>           question is,  the resulting value (i.e. the Ix and Iy gray
>>        levels)
>>           is expressed in what units?, I mean, if the gradient is
>>        defined as
>>           increment_of_gray_level /
>>           increment_of_distance_in_world_coordinates, everything is
>>        ok; but
>>           if this filter works as a simple pixelwise convolution
>>        mask, then
>>           the gradient is in increment_of_gray_level /
>>        increment_of_pixels.
>>           In that case, I need to divide by the spacing to get the
>>        right units.
>>
>>                     I guess this is a very basic question, but I really
>> need to
>>        make
>>           sure that this filters work as the first definition. I
>>        can’t find
>>           it in the code, I only know that the sigma for the
>>        smoothing is in
>>           world coordinates though…
>>
>>                     Anyone can clarify this please?
>>
>>                     Thanks,
>>
>>                     Alberto
>>
>>
>>
>> ------------------------------------------------------------------------
>>           The information contained in this message may be
>>        confidential and
>>           legally protected under applicable law. The message is intended
>>           solely for the addressee(s). If you are not the intended
>>           recipient, you are hereby notified that any use, forwarding,
>>           dissemination, or reproduction of this message is strictly
>>           prohibited and may be unlawful. If you are not the intended
>>           recipient, please contact the sender by return e-mail and
>>        destroy
>>           all copies of the original message.
>>
>>           _____________________________________
>>           Powered by www.kitware.com <http://www.kitware.com>
>>        <http://www.kitware.com>
>>
>>
>>           Visit other Kitware open-source projects at
>>           http://www.kitware.com/opensource/opensource.html
>>
>>           Please keep messages on-topic and check the ITK FAQ at:
>>           http://www.itk.org/Wiki/ITK_FAQ
>>
>>           Follow this link to subscribe/unsubscribe:
>>           http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>>  ------------------------------------------------------------------------
>>
>>
>>
>>        _____________________________________
>>        Powered by www.kitware.com <http://www.kitware.com>
>>
>>        Visit other Kitware open-source projects at
>>        http://www.kitware.com/opensource/opensource.html
>>
>>        Please keep messages on-topic and check the ITK FAQ at:
>>        http://www.itk.org/Wiki/ITK_FAQ
>>
>>        Follow this link to subscribe/unsubscribe:
>>        http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>    _____________________________________
>>    Powered by www.kitware.com <http://www.kitware.com>
>>
>>    Visit other Kitware open-source projects at
>>    http://www.kitware.com/opensource/opensource.html
>>
>>    Please keep messages on-topic and check the ITK FAQ at:
>>    http://www.itk.org/Wiki/ITK_FAQ
>>
>>    Follow this link to subscribe/unsubscribe:
>>    http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090909/0e285f20/attachment.htm>


More information about the Insight-users mailing list