[vtkusers] pixel data at world position
Mark Wyszomierski
markww at gmail.com
Wed Oct 5 15:39:27 EDT 2005
Hi Isabelle,
So my observer is a class, who has a member to my 'view' class, as well as
some storage for
the mapped point. Pseudo code looks like:
class vtkObserverLeftMouseDown : public vtkCommand {
public:
CMyView *m_pView;
double ptMapped[3];
};
Now to fill in some of the blanks, the actual function looks like:
void vtkObserverLeftMouseDown ::Execute(vtkObject *caller, unsigned long,
void*)
{
m_pView->Picker->Pick(m_pView->Interactor->GetEventPosition()[0],
m_pView->Interactor->GetEventPosition()[1],
0,
m_pView->Renderer);
m_pView->Picker->GetMapperPosition(ptMapped);
}
Once ptMapped is filled in for you, you can do the equation where you
divide by the
pixel spacing etc. The (int)(+ 0.5) is just a shortcut for rounding - it is
to make the
final determination about what pixel you're over. It is not related to my
origin. You'll
have to come up with a way to get your picker to the observer. Using a
pointer to
my view class worked for me.
Mark
On 10/5/05, Renaud Isabelle <renauisa at yahoo.fr> wrote:
>
> Hi Mark,
> Thanks for replying.
> I have already computed my world position by firing a picker from pixel
> coordinates. Sorry but I don't see or know what the mapper coordinates are.
> What is the difference and how this could help me to retrieve the index in
> my itkImage's buffer corresponding to my world position?
> BTW, what is your '+ 0.5'? I suppose this is the origin in x of your
> image, right?
> Isabelle
>
> *Mark Wyszomierski <markww at gmail.com>* a écrit :
>
> You can fire a pick event when the user clicks the mouse:
> Picker->Pick(eventpos[0], eventpos[1], 0, renderer);
> Then you can get the mapped position:
> Picker->GetMapperPosition(...);
> Then the final x,y locs of the original image I get by:
> originalX = (int)(ptMapped[0] / pixel_spacing_x + 0.5);
> // same for y.
> This always has given me the correct 'real' location.
> Mark
>
> On 10/5/05, Renaud Isabelle <renauisa at yahoo.fr> wrote:
> >
> > Hi all,
> > I have read an initial 3D image from a file with itkImageFileReader and
> > displayed with VTK through vtkImageData/vtkImageActor.
> > Now, since a known world position in 3D x,y,z, I would like to retrieve
> > the pixel value at this point of my image.
> > This seems to be a complex problem, because I don't want the pixel data
> > that is displayed at this position but the pixel data of the raw image, that
> > is no rescaled instead.
> > Is there some example where such a thing is done? Or any function?
> > Thanks,
> > Isabelle
> >
> > ------------------------------
> > *Appel audio GRATUIT partout dans le monde* avec le nouveau Yahoo!
> > Messenger
> > Téléchargez le ici !<http://us.rd.yahoo.com/messenger/mail_taglines/default/*http://fr.messenger.yahoo.com>
> >
> >
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
> >
> ------------------------------
> *Appel audio GRATUIT partout dans le monde* avec le nouveau Yahoo!
> Messenger
> Téléchargez le ici !<http://us.rd.yahoo.com/messenger/mail_taglines/default/*http://fr.messenger.yahoo.com>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20051005/c0550099/attachment.htm>
More information about the vtkusers
mailing list