[IGSTK-Developers] Solved registration problem mentioned in last	TCon by inverting regtransform
    Matt Turek 
    matt.turek at kitware.com
       
    Tue Jan 22 17:34:12 EST 2008
    
    
  
Torleif,
I'm glad you found a way to make your registration problem work.
I have a suggestion, though, that might be a little "cleaner". I'd set 
up the coordinate systems like this:
                                       image
                                          ^
                                          |
                        -----------------------
Identity -->      |                                 |    <----- Landmark 
Registration Transform.
                     view                         tracker
                                                          ^
                                                          |     <----- 
Identity
                                                          |
                                                 tracker tool
Here are a few reasons for my suggestion:
    1. The Landmark3DRegistration computes the transform from the 
tracker to the image. This is why you needed to use the inverse before. 
Andinet updated Landmark3DRegistration to make the get transform method 
names more explicit. Hopefully the direction of the transform will now 
be clear.
    2. In our current implementation, the tracker tool's transform is 
being managed by the tracker. The tracker tool is attached to the 
tracker's coordinate system during  
trackerTool->RequestAttachToTracker(). This behavior is slightly 
different if there is a reference tool. In the case of a specified 
reference tool, the reference tool is the parent of the other tracker 
tools. A tracker tool should only be a child of the tracker or another 
tracker tool.
Matt
Torleif Sandnes wrote:
> Hello.
>
> I have found a solution to the problem I had with landmarkregistration:
>
> I set up the scenegraph with the image, tracker, trackertool and view 
> like this:
>
> image->RequestSetTransformAndParent(identity, tracker.GetPointer())
> ...
> trackerTool->RequestSetTransformAndParent(identity, image);
> pointerSpatialObject->RequestSetTransformAndParent(transform, 
> trackerTool.GetPointer());
>
> view->RequestSetTransformAndParent(identity, image);
> ...
>
>                tracker
>                 /
>                / <--- Landmark Registration Transform goes here
>               /
>            image
>             /  \
>            /    \
>           /      \
>    trackertool   view
>
> After registration:
> image->RequestSetTransformAndParent(registrationTransform, tracker);
>
> This resulted in a registration that moved the pointer rep further 
> away from the volumerendering, so
> I tried to inverse the registration transform I got from 
> igstk::Landmark3DRegistrationTransform:
>
> image->RequestSetTransformAndParent(registrationTransform.GetInverse(), 
> tracker);
>
> This resulted in a registration that works.
>
> Regards,
> Torleif_______________________________________________
> IGSTK-Developers mailing list
> IGSTK-Developers at public.kitware.com
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
-- 
Matt Turek, Ph.D.
R&D Engineer
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x142
email: Matt.Turek at kitware.com
    
    
More information about the IGSTK-Developers
mailing list