[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