[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