[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