[vtkusers] odd vtkImageData interpolation behavior

David Feng dfeng at cs.unc.edu
Thu Jun 19 10:31:55 EDT 2008


I was indeed missing something. 

I thought that VTK was using cell-centered data, which means that each 
voxel contains a single data point at its center.  In fact VTK puts a 
data point at every vertex of the voxel.  This means that there is one 
fewer voxel in each dimension than there are data points, so the cell 
indexing was in fact correct. 

I still don't know why my XZ image is not interpolating correctly, though.

David

David Feng wrote:
> I noticed some odd behavior when interpolating a vtkImageData object.  
> Rather than make a 2D image and rotate it to the XZ plane, I made it a 
> 3D image with dimensions (x,1,y).  When I call FindCell simply using 
> the world-space pixel coordinates, the interpolated values were not 
> what I expected.  Taking a closer look at the function, I noticed the 
> following:
>
> return loc[2] * (dims[0]-1)*(dims[1]-1) +
>          loc[1] * (dims[0]-1) + loc[0];
>
> ...where loc is the interpolated image-space pixel coordinate and dims 
> are the dimensions of the image.  The return value is supposed to the 
> 1D array index within the image.  With this formula, a pixel location 
> of (0,0,5) and (0,0,0) have the same 1D index for an image such as 
> mine (XZ instead of XY, with dimensions (x,1,y)).   I haven't looked 
> more closely, but indexing into a 3D should actually look like this, 
> if I'm not mistaken:
>
> return loc[2] * dims[0] * dims[1] +
>          loc[1] * dims[0] + loc[0];
>
> I'm not sure why the dimensions are being decremented in the original 
> code.  It would seem to make the indexing off by several pixels for 
> each row and slice.  When I made the change, I started getting the 
> values I expected.  A simple way to test this is to use a 
> vtkProbeFilter to probe an XZ image using itself as the input sample 
> points -- without the change, my input is different from my output, 
> which should not be the case.   Am I missing something?
>
> Thanks,
> David
>
>
>





More information about the vtkusers mailing list