[Insight-users] parameter scaling for registration

Luis Ibanez luis.ibanez at kitware.com
Sun Mar 26 16:08:46 EST 2006


Hi Ilker,

Your computation for the translation scaling scale seems to be correct.

Note that the value suggested in the ITK Software Guide is
just a guideline. You can (and should) change this value
depending on the particular characteristics of your registration
problem.

Note that this factor is compensating for the difference in numerical
range between the units used for measuring translation and the units
used measured for measuring rotation.  At the end, the purpose is to
bring them to a similar range.

This of course, relates not only to how big is your image, but also
to how much rotation and how much translation are you expecting to
need in order to register the two images.

When you change your scaling parameter from 1/555 to 1/1000 you are
telling the optimizer that you expect larger translations with respect
to the expected rotations. The result is that the optimizer will
take longer steps along translation than along rotation.

If you take this parameter to an extreme (e.g. 1/1e30) the result is
that the optimizer will neglect the rotations and almost exclusively
perform translations.


NOTE also that the comments above assume that you are passing this
factor in the appropriate locations of the parameter scaling array.

These array is parallel to the array of parameters of the transform.

For the case of the 3D Affine transform this array is composed in
the following way:

The array has 12 parameters. The first 9 elements of the array are
row-by-row the elements of the rotation matrix of the Affine Transform.
The last 3 parameters are the translation values of the Transform

You should expect to apply the same scaling parameter to all the
first 9 elements, and to apply the translationScaling parameter to
the last three elements of the array.

Note that in an Affine transform the matrix accounts for Rotation,
Scaling and Shearing, so your question about whether the first
parameters affect the rotation,... well.,... the answer is yes...
but... they also affect the geometrical scale factor of the transform
and its tendency for performing Shearing.

If you want to manage these effects independently, then you should
consider using the Transform:

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


About your last question, regarding, where are these parameter scales
applied; the answer is : in the Optimizers. What is done specifically
varies depending on the optimizer in question. In the case of the
RegularStepGradientDescent optimizers, for example, the scale parameters
are applied for dividing the gradient values before they are used
for computing the Optimizer next step.



Please let us know if you have further questions.


     Thanks



        Luis



------------------------------
ilker hacıhaliloğlu wrote:
> Hi All
> 
>  I am working with affine transform image egistration usin mattesmutual 
> information image metrci. I did read all the email in the mailing list 
> about tunning the parameters for registration. Especially the ones which 
> explain parameter scaling.
> 
> 
> If I have a 2D image  199*181 pixels and pixel spacing is 0.2084 
> mm.Which gives me 42mm*38mm ( this are ultrasound images ). So then my 
> translationscaling should be
> 1/(10*sqt(42^2+38^2)=1/550 ? is that correct? If yes what happens if I 
> use 1/1000? I think this will effect my allowed rotation and translations?
> 
> 
> 
>  double translationScale = 1.0 / 1000.0;
>   if( argc > 8 )
>     {
>     translationScale = atof( argv[8] );
>     }
> 
> 
>   // Software Guide : BeginCodeSnippet
>   typedef OptimizerType::ScalesType       OptimizerScalesType;
>   OptimizerScalesType optimizerScales( transform->GetNumberOfParameters() );
> 
> 
> 
>   optimizerScales[0] = 20; 
> ----------------------------------------------->is  this is for scaling? 
> what happenes if I take them 20 instead of 1 . ? Which was much better 
> for my registration results.
>   optimizerScales[1] =  20; 
> --------------------------------------------->  is this for rotation ?
>   optimizerScales[2] =20; 
> -------------------------------------------------> X coordinate for 
> rotation center?
>   optimizerScales[3] = 20; 
> ------------------------------------------------> Y coordinate of 
> roation center?
>   optimizerScales[4] =  translationScale;
>   optimizerScales[5] =  translationScale;
> 
> In order to scale the parameters of the registration are the 
> optimizerscales multiplied with them of devided? If this would be a 3D 
> registration then I should use 12 optimzierscales
> What would be the order for them scaling rotation translation?
> ------------------------------------------------------------------
> 
> '.....ich möchte mir eine ader öffnen, die mir die ewige freiheit 
> schaffte....'
> 
> --------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> 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