[IGSTK-Developers] Registration error computation

David Gobbi dgobbi at atamai.com
Wed Dec 7 11:26:53 EST 2005


Hi Luis,

In his first email to the list, Andinet spelled it out as 
ComputeTargetRegistrationError().
People were only using the shortened form for purposes of discussion, I 
guess because
everyone wants to spend less time typing email so they have more time to 
write code ;)

 - David


Luis Ibanez wrote:

>
>
> Andinet,
>
>
> Just a quick comment on the naming of methods:
>
> In our coding style, acronyms are not acceptable.
>
>
> A method such as
>
>                ComputeTRE()
>
> Should be spelled out as
>
>
>       ComputeTargetRegistrationError()
>
>
> The naming of methods is part of the documentation.
>
>
>
> Acronyoms should not be used either for variable
> names, or class names.
>
>
>
>
>     Luis
>
>
>
>
> ------------------
> David Gobbi wrote:
>
>> Hui Zhang wrote:
>>
>>> Hi, Andinet,
>>>
>>>>>
>>>> Thank you for your comments..
>>>>
>>>> I agree with you that ComputeFRE can be inserted  in 
>>>> igstkLandmarkRegistration class..In fact, we have already something 
>>>> similar ( ComputeRMSError()) . However, I am not sure if 
>>>> ComputeTRE() belongs to igstkTransform or igstkLandmarkRegistration 
>>>> class. ComputeTRE() needs target location information and that 
>>>> information is not available in and shouldn't be part of  
>>>> igstkTransform and igstkLandmarkRegistration class.  Plus, FLE 
>>>> depends on the fiducial type and that might not be readily 
>>>> available. In fact, the reason why I have decided to compute TRE in 
>>>> terms of FRE is b/c of the lack of information regarding FLE
>>>
>>>
>>>
>>>
>>> Approximate TRE  = EvaluateTRE( FREs(orFLEs), fixed points, moving 
>>> points); This function needs fixed points and moving points, so 
>>> probably should be in
>>> igstkLandmarkRegistration;
>>> Real TRE = ComputeTRE(transform, target point in space 1, same point 
>>> in space 2); The igstkTransform will give the information of 
>>> transform, and the other two point positions should be input by the 
>>> user.
>>> I am not sure whether the ComputeTRE function should be put in the 
>>> igstkLandmarkRegistration or in the igstkTransform, for those two 
>>> classes all have the transform needed to compute the result. I 
>>> talked with Ziv here at my lab., he suggested to put in the 
>>> igstkLandmarkRegistration for this TRE error is only for the 
>>> registration, and igstkTransform is a general transform and can be 
>>> used in some other places. For example, the calibration class use it 
>>> too. But in the calibration, TRE doesn't give any meaning.
>>> What I am thinking is, we may have several different registration 
>>> classes, all those registration class will need ComputeTRE function. 
>>> If this function is not implemented in the igstkTransform class, it 
>>> will be implemented in each registration class. I suggest to have a 
>>> general igstkRegistration class, and put igstkLandmarkRegistration, 
>>> later igstkICPRegistration as the derived class of it. So the 
>>> ComputeTRE function can be implemented in the general 
>>> igstkRegistration base class. Of course that igstkRegistration class 
>>> should have a member variable of igstkTransform as the general output.
>>
>>
>>
>> The TRE is only one example of an error that is associated with a 
>> coordinate transformation.
>>
>> The TRE is specifically the error associated with the coordinate 
>> transformation from image space to surgical space.  But other 
>> transforms in IGSTK have errors associated with them too.  
>> Calibration transforms have errors, in fact the tip calibration 
>> calculation provides an RMS value that can be used to get an error 
>> estimate on the tool tip position.  The tracker transforms have 
>> errors, too, and for magnetic tracking these errors can be greater 
>> than the TRE.
>>
>> For every transform, I think it would be nice if there was a method 
>> that computes the error associated with any coordinate point that is 
>> produced by applying that transform, i.e. there would be a 
>> ComputeErrorForPoint(x,y,z) method.  For the landmark transform, this 
>> method would produce the TRE for a given target point.  Implemennting 
>> this would require us to include some error parameters inside the 
>> igstkTransform objects.  We would also need to find the appropriate 
>> way of combining these error parameters when we concatenate transforms.
>>
>> The ideal situation is if every spatial object can compute the error 
>> associated with itself.  That error will be a result of the 
>> combination of the errors of all the transforms that have been 
>> concatenated to get the position and orientation of the spatial 
>> object, including the calibration transform, tracker transform, and 
>> registration transform.
>>
>> - David
>>
>>
>>>>
>>>> So, I am still not sure where to add ComputeTRE......
>>>>
>>>> -Andinet
>>>>
>>>>
>>>>
>>>>
>>>>> That is my option, wish it helps,
>>>>>
>>>>> James,
>>>>>
>>>>> Another related paper is :
>>>>>
>>>>> Predicting error in rigid-body point-based registration
>>>>> Fitzpatrick, J.M.; West, J.B.; Maurer, C.R., Jr.;
>>>>> Medical Imaging, IEEE Transactions on
>>>>> Volume 17,  Issue 5,  Oct. 1998 Page(s):694 - 702
>>>>>
>>>>>
>>>>> ----- Original Message ----- From: "Andinet Enquobahrie" 
>>>>> <andinet.enqu at kitware.com>
>>>>> To: "'IGSTK-developers'" <igstk-developers at public.kitware.com>
>>>>> Sent: Tuesday, December 06, 2005 4:35 PM
>>>>> Subject: [IGSTK-Developers] Registration error computation
>>>>>
>>>>>
>>>>>> Hi Folks,
>>>>>>
>>>>>> I would like to get your opinion on how to integrate a 
>>>>>> registration error computation scheme into igstk.   The goal is 
>>>>>> to determine the accuracy of a target registration using 
>>>>>> transform parameters computed by "igstkLandmarkRegistration". 
>>>>>> From West et al. paper,  target registration error  (TRE) is a 
>>>>>> function of  landmark registration error and the location of the 
>>>>>> target with respect to the landmarks (distance from the target to 
>>>>>> the three principal axis of the landmark configuration). 
>>>>>> Integration of this computation into igstk is a bit tricky since 
>>>>>> it is "target" and "target location" specific.
>>>>>>
>>>>>> To implement this computation in igstk, I see the need for the 
>>>>>> following
>>>>>>
>>>>>> 1) A member variable  to store landmark configuration information 
>>>>>> in "igstkTransform"  (This could probably be just a three by 
>>>>>> three matrix to encode the principal axis of the landmarks 
>>>>>> configuration)
>>>>>> 2) Set/Get methods in "igstkTransform" for  this new member 
>>>>>> variable.
>>>>>> 3) ComputeTargetRegistrationError()  method to compute the error. 
>>>>>> This method will use the location of the target and landmark 
>>>>>> configuration information to compute the registration error. The 
>>>>>> computed registration error could be stored in the "ErrorValue" 
>>>>>> igstkTransform member variable. However, I am not sure which 
>>>>>> class this method would perfectly fit in . Either in Tracker 
>>>>>> class where target transformation is reported to the spatial 
>>>>>> object or  in spatialobject class itself or in a new helper class...
>>>>>>
>>>>>> Any thoughts?
>>>>>>
>>>>>> Thank you
>>>>>>
>>>>>> -Andinet
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> IGSTK-Developers mailing list
>>>>>> IGSTK-Developers at public.kitware.com
>>>>>> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> IGSTK-Developers mailing list
>>> IGSTK-Developers at public.kitware.com
>>> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
>>>
>>
>> _______________________________________________
>> IGSTK-Developers mailing list
>> IGSTK-Developers at public.kitware.com
>> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
>>
>>
>
> _______________________________________________
> 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