[vtkusers] Bounds computation of vtkImageData
Timothee Evain
tevain at telecom-paristech.fr
Tue Jan 31 09:54:12 EST 2017
Ok, that's a bit clearer for me now.
I'm trying to retrieve last voxels indexes of displayed images, through picking world points and the ComputeStructuredCoordinates method.
Unfortunately, since the computed continuous index is rounded down, it never returns the last index before going out of bound.
I will go with my own function for conversion.
Many thanks for the help David!
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 15:13:21
Objet: Re: [vtkusers] Bounds computation of vtkImageData
If you use vtkCellPicker, then positions beyond the bounds will not be
picked. If you use vtkPropPicker, the pick will be based on what is drawn
on the screen, and by default the vtkImageActor and vtkImageSliceMapper
only draw the image out to its bounds (but this can be changed by setting
the "Border" property of the mapper, which causes the border region to be
drawn).
- David
On Tue, Jan 31, 2017 at 6:38 AM, Timothee Evain <tevain at telecom-paristech.fr
> wrote:
> 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