[IGSTK-Developers] Follow up: an igstkReferenceCalibration class?
Hui Zhang
zhang at isis.imac.georgetown.edu
Wed Nov 30 16:08:40 EST 2005
Hi, all,
As we find that the igstkPivotCalibration can only give 3D translation in
the output transform, which is limited by the pivot routine, so should we
have a general igstkReferenceCalibration to get the 3D/5D/6D transform?
The idea of igstkReferenceCalibration class is to compute the reference
calibration transform from one or more object points (can be 3D/5D/6D) to
another refrence point ( can also be 3D/5D/6D).
The genreal diagram will be:
Input: Output:
object point->ref point
3D->3D 3D translation
3D->5D 3D translation
3D->6D 3D translation
2x3D->3D 3D translation
2x3D->5D 3D translation + 2D rotation
2x3D->6D 3D translation + 2D rotation
5D->3D 3D translation
5D->5D 3D translation + 2D rotation
5D->6D 3D translation + 2D rotation
6D->3D 3D translation
6D->5D 3D translation + 2D rotation
6D->6D 3D translation + 3D rotation
Some further conditions is: 2x3D = 5D, 3x3D = 6D, 2x5D = 6D, ...
So, in our tool calibration routine, we can get first 3D point from
igstkPivotCalibration, and then set second hip point as the input together,
2x3D->5D to get the 3D translation + 2D rotation. For example, in the
PivotCalibration, we get (x, y, z) from the tip, and then we can set (x, y,
z + 100) as the hip's translation. Those two points (x, y, z) (x, y, z +
100) will input to igstkReferenceCalibration to get the final
igstkTransform. In this case, the default reference point is (0, 0, 0). If
we input the run-time positions as input, such as T * (x, y, z)', T * (x, y,
z+100)', we also need input the reference point which build that T transform
to get the final calibration result.
There is a small problem with:
5D->5D 3D translation + 2D rotation
5D->6D 3D translation + 2D rotation
in those two cases, we get the same 5D output, but only in 6D reference we
can the correct referenced position, Needle is a specific shape, for we
assume it has a translation like (0, 0, z) so that it can eliminate the 6th
rotation error which will propogate along x and y axies.
Regards,
James
----- Original Message -----
From: "David Gobbi" <dgobbi at atamai.com>
To: "Patrick Cheng" <cheng at isis.georgetown.edu>
Cc: "'IGSTK-developers'" <igstk-developers at public.kitware.com>
Sent: Wednesday, November 30, 2005 2:38 PM
Subject: Re: [IGSTK-Developers] SpatialObject calibration transform
> Hi Patrick,
>
> Thanks for the summary. The reason that I would prefer to add the
> orientation as part of the tool calibration transform is that I think we
> should keep the number of coordinate transformations in IGSTK to a
> minimum.
>
> Each coordinate transformation is a possible source of error. Even worse,
> if two different transformations can be used to achieve the same result
> (e.g. a tool calibration transform and a spatial object calibration
> transform), then both transforms can have errors that cancel each other
> out. These sorts of errors can be very hard to debug.
>
> I think the best solution is if the ToolTipCalibration class has a method
> that allows you to specify the orientation of the tool that is being
> calibrated.
>
> - David
>
> Patrick Cheng wrote:
>
>> Hi everybody,
>>
>> What I was trying to say in the Tcon is:
>>
>> the cylinder object (longest axis) is align with Y axis in image space
>> (inherited from ITK by default). while the probe is aligned with the
>> tracker's X axis.
>>
>> So when we get the PatientTransform, which essentially align the image
>> space and tracker space together, but still the cylinder spatialobject
>> and the probe is not aligned correctly. We need first rotate our spatial
>> object to align with the probe, and then use the pivot calibration
>> transform to get the tip translation.
>>
>> This adjustment of the spatial object's coordinate system, can be done by
>> adding the rotational information to tool calibration transform. or we
>> can add it to a upper level transform when we construct a spatial object
>> group to model the probe.
>>
>> Patrick
>
>
> _______________________________________________
> IGSTK-Developers mailing list
> IGSTK-Developers at public.kitware.com
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
>
More information about the IGSTK-Developers
mailing list