[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