[IGSTK-Developers] Registration error computation
Luis Ibanez
luis.ibanez at kitware.com
Wed Dec 7 11:26:09 EST 2005
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
>
>
More information about the IGSTK-Developers
mailing list