[IGSTK-Developers] Follow up: an igstkReferenceCalibration class?
David Gobbi
dgobbi at atamai.com
Wed Nov 30 17:23:14 EST 2005
Hui Zhang wrote:
> 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?
It looks like we should adopt a naming convention that includes "Tool"
as part of the name, to make it clear that the transform is to be used
as a ToolCalibrationTransform:
igstkPivotToolCalibration, igstkReferenceToolCalibration
> 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).
I'm not sure what you mean by a 5D or 6D reference point, since a
"point" is always 3D. Some of the scientific literature, especially in
computer graphics, uses the term "pose" to describe the position and
orientation of an object together. When you say a 5D or 6D point, do
you mean a 5D or 6D position/orientation transform returned by the
tracker?
> 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.
This sounds good.
> 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.
I think that I follow what you're talking about here. Tools like
needles really are only 5D, so only a 5D calibration is necessary for
these tools. We don't need a 6D calibration: the third orientation
angle is arbitrary. This also implies that the spatial objects for
these tools must be radially symmetric, e.g. cylindrical.
- David
> 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