[Insight-users] Question about itk::LinearInterpolateImageFunction
Zachary Pincus
zpincus at stanford.edu
Thu Jan 27 18:55:06 EST 2005
Hello,
I'm not sure that I understand your question. What do you specifically
mean when you say that the interpolation "seems to have little effect
on the volume"?
As to your question of increasing the region of support for an
interpolation function:
Linear interpolation, by definition, finds the value of a pixel at a
given point by "blending" the values of the the nearest pixels to that
point along each dimension. The amount of "blending" is proportional to
how near each pixel is to the query point. So in one dimension, the
value of the query point is uniquely determined by the value of the
first pixel to the left of the query point and the first pixel to the
right. In two dimensions, the value of the query point is determined by
the values of the nearest pixel to the left, right, above and below. In
three dimensions, the value is determined by the values of the 6
nearest pixels along the coordinate axes. As such, there is no notion
of "extending the support" for linear interpolation.
If you want to use an interpolation function that has larger support
(e.g. consults pixels farther away from the query point, or not along
the coordinate axes) you would need to look at the BSpline
interpolation function or the WindowedSinc interpolation function. The
BSpline function can fit higher-order curves to the pixel intensities
(higher-order than the lines that are fit by linear interpolation).
This is a highly-truncated discussion of BSpline interpolation, so
you'll need to look up some references to use this filter to the best
potential.
The WindowedSinc interpolator method comes from sampling theory and is
an approximation to the "provably optimal" interpolation, in terms of
reducing aliasing. It uses an explicit convolution of a truncated sinc
function over the image, centered at the query point. You can set the
radius of the sinc and the truncation (windowing). This is the most
computationally intensive way to interpolate an image, but can be
useful if you are getting too many aliasing artifacts with other more
approximate methods. It's worth reading a bit on sampling theory to
understand interpolation tradeoffs, if the interpolation is
sufficiently critical for a given application to require the use of an
analytical sinc function.
Zach Pincus
Department of Biochemistry and Program in Biomedical Informatics
Stanford University School of Medicine
On Jan 27, 2005, at 3:03 PM, Robert Maroon wrote:
> Hi everyone,
>
> I have been trying to use the
> itk::LinearInterpolateImageFunction to interpolate
> values in an unsigned char image volume that has large
> homogeneous regions but it seems to have little effect
> on the volume. I am wondering if there is a way to set
> a distance range for the voxels that should have an
> effect on the point being evaluated by
> LinearInterpolateImageFunction::EvaluateAtContinuousIndex
> in order to get a better range of interpolated
> values. All the examples only show the interpolators
> being set up and then being passed to a registration
> function so I have not been able to find an example
> that might deal with this issue.
>
> Thanks!
>
> Robert
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
More information about the Insight-users
mailing list