[Insight-developers] RecursiveGaussianImageFilter
Gunnar Farnebäck
gunnar at bwh.harvard.edu
Mon Jul 19 12:44:55 EDT 2004
This is in reply to
http://www.itk.org/pipermail/insight-users/2004-February/006692.html
about the fact that the recursive Gaussian derivatives don't have zero
DC response.
> The bad news:
>
> We still have to figure out why ...
> and... how to fix it.
>
>
> My guess is that this effect is related to the
> fact that this filter is not just doing derivatives
> but smoothing followed by derivatives.
That seems unlikely to me. In fact you can simplify the demonstration
of the problem by using an input image of constant intensity. With
Image dimension: 2
Type: double
Constant input intensity: A
Either choice of filter direction
Order: FirstOrder
NormalizeAcrossScale: false
Sigma: s
I get an output image with constant value 0.00087767 * A / (s * s).
The question still remains why this is significantly different from 0.
Although I'm not very familiar with recursive filters, I'm sort of
suspicious about the following lines from the SetUp() method of
itkRecursiveGaussianImageFilter.txx,
case FirstOrder: // equivalent to convolution with
// the first derivative of a gaussian
{
m_A0 = static_cast<RealType>( -0.6472 );
m_A1 = static_cast<RealType>( -4.5310 );
m_B0 = static_cast<RealType>( 1.5270 );
m_B1 = static_cast<RealType>( 1.5160 );
m_C0 = static_cast<RealType>( 0.6494 );
m_C1 = static_cast<RealType>( 0.9557 );
m_W0 = static_cast<RealType>( 0.6719 );
m_W1 = static_cast<RealType>( 2.0720 );
These numbers look like they may be truncated approximations of some
other values. If that is the case I have three questions:
1. Why is this implementation using so few digits?
2. Has the truncation been made in a way which takes, e.g., the
resulting DC response into account?
3. Where do the numbers come from in the first place?
/Gunnar
More information about the Insight-developers
mailing list