[Insight-users] Rigid3DTransform

Luis Ibanez luis.ibanez at kitware.com
Wed, 11 Feb 2004 08:15:19 -0500


Hi SriValli,

Ridig3DTransform is rather an abstract class.
It simply factorizes the functionalities of
several classes that parameterize the transform
space in differen ways.


Please use any of its derived classes:

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


- Euler3DTransform
- QuaternionRigidTransform
- VersorRigid3DTransform
- VersorTransform



Probably the best adapted for rigid 3D registration
is VersorRigid3DTransform.
http://www.itk.org/Insight/Doxygen/html/classitk_1_1VersorRigid3DTransform.html

Note that this transform *must* be used in conjunction with
the optimizer,
http://www.itk.org/Insight/Doxygen/html/classitk_1_1VersorRigid3DTransformOptimizer.html
because Versors *do not* form a vector space

Along the same lines, the transform
http://www.itk.org/Insight/Doxygen/html/classitk_1_1QuaternionRigidTransform.html
must be used along with the optimizer
http://www.itk.org/Insight/Doxygen/html/classitk_1_1QuaternionRigidTransformGradientDescentOptimizer.html


The critical parameters in a 3D registration process are:


- Learning rate (if you use GradientDescent optimizer)
- StepLength    (if you use RegularStepGradientDescent optimizer)


- Translation scale : which defines the ratio between rotations and
                       translation during optimization.



Regards,


     Luis



------------------------
valli gummadi wrote:

>  Hi Mr.Luis,
>            I tried registration using CenteredRigid2dTransform class and achieved results. I Used centeredAffineTransform for 3d Registration.
> My doubt is Can I use the Rigid3dTransform class for 3D Registration.
> Because, When i used this class , I am gettign runtime error at 
> transform->GetParameters().
> 
> Code Snippet:
> 
> typedef itk::Rigid3DTransform<double> TransformType;
> TransformType::Pointer	transform	= TransformType::New();
> short NoofParams;
> NoofParams = transform->GetNumberOfParameters();itk::Array<double> Params( NoofParams );
> Params.Fill( 0 );
> transform->SetIdentity();
> Params = transform->GetParameters();
> 
> Another problem is:
> In ITK, Many parameters are available for registration to tune to get teh desired output. But, I am always get confusion which parameters to tune to get better output based on the image properties. In ITKSoftware Guide.pdf,I found a statement "Both images have unit-spacing and are shown in
> Figure 8.17. In order to accelerate convergence it is convenient to use a larger step length".
> This statement is quite helpful to set max step length.
> Can you please explain how to set remaining parameters based on the image.
> This will be more help ful for me to tune my registration so that i can register any set of images just by changing params.
> 
> Thank you,
> Regards,
> SriValli.
>