[Insight-users] Re: GetJacobian in some transforms

Luis Ibanez luis.ibanez@kitware.com
Wed May 12 15:38:41 EDT 2004


Hi Marius,

The VersorRigid3DTransform has a Center included.

This center is not part of the parameter array
passed to the optimizer, but it is used during
the rotation computation.

The center of rotation is extremely important,
specially if you are doing image registration.

If you want to avoid Versors, you could use the
Euler3DTransform which is a rigid 3D transform
where rotation are specified as angles around the
x,y,z axis.

http://www.itk.org/Insight/Doxygen/html/classitk_1_1Euler3DTransform.html


I would advice you to do yourself a favor and
overcome your fear for Versors. They are the
correct representation of rotations in 3D space.
Versors are your friends, they are here to help.
Euler angles are just a second best. Versors are
the right tool for this job. You could use a
screwdriver as a hammer but that usually
produces very painful results...


Please read the tutorials on Quaternions in:

http://www.itk.org/cgi-bin/cvsweb.cgi/InsightDocuments/Developer/General/QuaternionsI.pdf?cvsroot=Insight
http://www.itk.org/cgi-bin/cvsweb.cgi/InsightDocuments/Developer/General/QuaternionsII.pdf?cvsroot=Insight



   Regards,


     Luis


----------------------
Marius Staring wrote:

> Hi Luis,
> 
> I see. I thought I could also use these classes if I did not wanted to 
> use for example a CenteredTransform. So I suppose I better use 
> CenteredRigid2DTransform (with maybe center set to 0).
> 
> Since we are mailing now anyway: I am looking for a 3D version of 
> CenteredRigid2DTransform: a CenteredRigid3DTransform. And I like to 
> avoid versors or quaternions. Is that going to be implemented soon?
> 
> Thanks for the quick response.
> 
> Marius
> 
> At 09:49 12/05/04, you wrote:
> 
>> Hi Marius,
>>
>> Rigid2DTransform and Rigid3DTransform cannot have Jacobians
>> because they are base classes for particular parameterizations
>> of these transforms.  You will find the Jacobians implemented
>> in their derived classes.
>>
>> http://www.itk.org/Insight/Doxygen/html/classitk_1_1Rigid2DTransform.html
>>
>> http://www.itk.org/Insight/Doxygen/html/classitk_1_1Rigid3DTransform.html
>>
>> The Jacobian is computed as the derivatives of the mapped point
>> with respect to the transform parameters. Given that there are
>> many different ways of parameterizing a rigid transform, those
>> Jacobians can only be computed once a particular set of parameters
>> has been selected.  For example, rotation can be represented with
>> Euler angles or with Versors.
>>
>> Please don't use the Rigid3DTransform or Rigid2DTransform, use one
>> of their derived classes.
>>
>>
>>
>>   Regards,
>>
>>
>>     Luis
>>
>>
>> ----------------------
>> Marius Staring wrote:
>>
>>> Hi Luis Ibanez,
>>> I am using ITK 1.6 for image registration purposes.
>>> I noticed that the GetJacobian() function in some of the transform 
>>> classes has not been implemented. See for example Rigid2DTransform 
>>> and Rigid3DTransform.
>>> Is that going to be implemented soon?
>>> With kind regards,
>>>
>>> Marius Staring
>>> Image Science Institute
>>> University Medical Center Utrecht, room F01.703
>>> Phone: +31 (0)30 250 8562       Fax: +31 (0)30 258 1098
>>> email: 
>>> <mailto:marius@isi.uu.nl>marius<mailto:marius@isi.uu.nl>@isi.uu.nl 
>>> website: http://www.isi.uu.nl/People/Marius/
>>
>>
>>
> 
> 






More information about the Insight-users mailing list