[Insight-users] MultiResMIRegistration application

Luis Ibanez luis.ibanez at kitware.com
Thu Sep 30 11:20:22 EDT 2004


Hi José

I'm afraid that you are misinterpreting the source code of this
application.

The QuaternionRigidTransform involves both a Quaternion
for rotations and a Vector for translations.
http://www.itk.org/Insight/Doxygen/html/classitk_1_1QuaternionRigidTransform.html


When the registration results are returned in the form of an
AffineTransform, the affine transform is initialized using
the rotation matrix from the quaternion and the Offset that
represents the Translation:


MIMRegistratior.txx: lines 165-173:

> ::GetAffineTransform()
> {
>   m_Transform->SetParameters( m_Registration->GetLastTransformParameters() );
>   
>   m_AffineTransform->SetMatrix( m_Transform->GetRotationMatrix() );
>   m_AffineTransform->SetOffset( m_Transform->GetOffset() );
> 
>   return m_AffineTransform;
> }
> 
> 


As you can see, both the rotation matrix *and* the offset are
taken from the Quaternion transform that was computed during
the registration process.

This application computes the 6 degrees of freedom of the Rigid
transform using the optimization process in the ITK registration
framework. You can easily verify this by looking at the source
code of the itk::QuaternionRigidTransformGradientDescentOptimizer

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

     That's the beauty of Open Source   :-)



Please let us know if you have further questions,


    Thanks



       Luis


------------------------
José Ángel Tavira wrote:

> Hi everyone,
>  
> I have a question about the 'MultiResMIRegistration' application 
> provided by the Insight Applications software.
>  
>  This application uses the ITK registration framework with the following 
> combination of components:
> 
>         - MutualInformationImageToImageMetric
>         - QuaternionRigidTransform
>         - QuaternionRigidTransformGradientDescentOptimizer
>         - LinearInterpolateImageFunction
>  
>  
> I've noticed that the result returned after the registration process is 
> an affine matrix 'M * x + O', where:
>  
>                    a)  'M' is a 3x3 rotation matrix representing the 3 
> rotation freedom degrees.
>                         They are calculated using the mutual information 
> and multiresolution registrator component;
>  
>                    b)  'O' is simply an offset, representing the 3 
> translation freedom degrees,
>                         BUT IT IS NOT CALCULATED BY THE MUTUAL 
> INFORMATION MULTIRESOLUTION REGISTRATOR,
>                         because this offset is computed by the 
> preprocessor component, before calling the registrator.
>  
>  
> All of this leads to a great problem if we want to registrate 2 images, 
> where the size of their fields of view are different (eg., a MR coronal 
> image showing a brain slice and a second coronal image (CT) showing a 
> brain slice and part of the neck).
>  
>  
> IS THERE ANY OTHER MUTUAL INFORMATION REGISTRATION APPLICATION THAT 
> CALCULATES THE 6 FREEDOM DEGREES USING THE REGISTRATOR COMPONENT?
>  
>  
>  
>  
>  
> Thank you very much for your attention.
>  
>  
> José Ángel Tavira Rodríguez de Liébana
> jat at navimetric.com <mailto:jat at navimetric.com>
>  
>  
>  
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users






More information about the Insight-users mailing list