[IGSTK-Developers] Follow up: an igstkReferenceCalibration class?

Hui Zhang zhang at isis.imac.georgetown.edu
Wed Nov 30 17:45:00 EST 2005


Hi, David,

5D or 6D 'point' means 5D or 6D position/orientation transform returned by 
the tracker, just as you mentioned.

Regards,
James
----- Original Message ----- 
From: "David Gobbi" <dgobbi at atamai.com>
To: "Hui Zhang" <zhang at isis.imac.georgetown.edu>
Cc: "Patrick Cheng" <cheng at isis.georgetown.edu>; "'IGSTK-developers'" 
<igstk-developers at public.kitware.com>
Sent: Wednesday, November 30, 2005 5:23 PM
Subject: Re: [IGSTK-Developers] Follow up: an igstkReferenceCalibration 
class?


> 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