[vtkusers] Bounds computation of vtkImageData

Timothee Evain tevain at telecom-paristech.fr
Tue Jan 31 08:38:44 EST 2017


Oh right, thanks for remembering me that!
Does that mean that, if image is displayed, a pick on border of data could return an out-of-bound position value ?

Tim

----- Mail original -----
De: "David Gobbi" <david.gobbi at gmail.com>
À: "Timothee Evain" <tevain at telecom-paristech.fr>
Cc: "VTK Users" <vtkusers at vtk.org>
Envoyé: Mardi 31 Janvier 2017 14:16:57
Objet: Re: [vtkusers] Bounds computation of vtkImageData

Hi Tim,

The bounds go from the center of the first voxel to the center of the last
voxel.  So the code in vtkImageData.cxx is correct.

 - David

On Tue, Jan 31, 2017 at 4:14 AM, Timothee Evain <tevain at telecom-paristech.fr
> wrote:

> Hello everyone,
>
> It may be more a dev issue, but I think there is a small mistake in the
> ComputeBounds() method of vtkImageData
> When computing upper bounds, code read (line 781 of vtkImageData.cxx):
>
> this->Bounds[1] = origin[0] + (extent[1-swapXBounds] * spacing[0]);
> this->Bounds[3] = origin[1] + (extent[3-swapYBounds] * spacing[1]);
> this->Bounds[5] = origin[2] + (extent[5-swapZBounds] * spacing[2]);
>
> Since the upper extent is meant to be the index of the last inside point,
> this leads to upper bounds excluding the upper fringe of data in each
> direction.
> So I guess this part should read something like:
>
> this->Bounds[1] = origin[0] + ( (extent[1-swapXBounds] + 1) * spacing[0]);
> this->Bounds[3] = origin[1] + ( (extent[3-swapYBounds] + 1) * spacing[1]);
> this->Bounds[5] = origin[2] + ( (extent[5-swapZBounds] + 1) * spacing[2]);
>
> Am I mistaken ?
>
> Tim
>


More information about the vtkusers mailing list