[Insight-users] Parameter scales for registration

Joël Schaerer joel.schaerer at gmail.com
Tue Apr 2 09:18:08 EDT 2013


Hi all,

Certain registration transforms have parameters with very different 
ranges of acceptable values. If uncorrected, this leads to serious 
problems with simple optimizers such as ITK's regular step gradient 
optimizer. Fortunately, ITK provides a parameter scale scheme to cope 
with this problem.

Currently, this scheme is implemented by multiplying components of the 
parameter gradient by the parameter scales. The gradient vector is then 
uniformly scaled so that its norm is equal to the current step size.

The problem with this is that it would make more sense to make larger 
steps in the directions along which the metric varies slowly (eg. the 
translations in the affine transform).

My solution so far is to re-use the scale parameters to re-scale the 
resulting vector in the StepAlongGradient method of the 
itkRegularStepGradientOptimizer class:

   for ( unsigned int j = 0; j < spaceDimension; j++ )
     {
     newPosition[j] = currentPosition[j] + transformedGradient[j] * 
factor / scales[j];
     }

I've made a little graph to explain the situation: 
http://i.imgur.com/DE6xqQ5.png

Does this sound reasonable? I have good results on the particular 
(unfortunately confidential) transform I am currently using. However if 
there is interest I could test the effect on affine registration.

Joel

PS: I've looked briefly at the v4 optimizers. There is now a way to set 
the scales automatically, but the way they are used doesn't seem to have 
changed.


More information about the Insight-users mailing list