[Insight-users] Re: registration non-convergence

Luis Ibanez luis . ibanez at kitware . com
Mon, 21 Jul 2003 15:18:28 -0400


Hi Carolyn,

Thanks for posting the full trace of the registration.

After plotting your data with GNUPlot is became apparent that
your steplength is much lower than the image resolution.

Unless I'm missing something, your max step length is 1/5 of
the pixel spacing, while the min step length is 1/278 of the
pixel spacing.

In general you would like to rather have something like

    max step length =  10 X pixel spacing
    min step lenght = 1/2 X pixel spacing


The max step length is the step that the optimizer will use
for starting the optimization. Usually you want to move fast,
so a relatively long step is desirable.  Note that this is
also limited by the expected translation you are trying to
resolve. You don't want the initial step to be comparable
to the miss-registration since you may easily go into other
secondary minima in the metric cost function.

For example, if you estimate that the miss registration is
on the order of 100xPixelSpacing (e.g. 100 pixels), then
you may want to start with a max step length of
20 x PixelSpacing.

Note that any sub-pixel precision registration is strongly
dependent of the quality of the interpolator you are using.
For  linear interpolation it may not be worth to go below
1/2 pixel size, specially is the transform is a pure
translation.


It is true though that the optimizer should work at
any pixel step, my guess is that something is failing in
the computation of the metric derivatives at the sub-pixel
levels. A primary suspect is that the derivative computation
is not interpolating at the same degree of detail as the
metric value. The derivative is not computed here as simply
the finite difference between two metric values, it is computed
as the product of the image gradient and the transform jacobian.
The metric derivative may be flat at subpixel levels, while
the metric value has actual intermediate values. Since the
gradient descent algorithm is following the direction of the
metric derivative, the optimizer keep going along the constant
direction of the derivative, ignoring the fact that local minima
of the metric value have been already found. You could easily
verify this hypotesis by adding print outs in the metric
Derivative computation.

In any case, the registration method is not intended to
be used at the small sub-pixel range.

---

Could you please try your registration using a longer
step length ?

I would suggest, the following:

max step length = 10  X .000278 = 0.00278
min step length = 1/2 X .000278 = 0.000139


Please let us know what you find,


   Thanks


     Luis



----------------------------
Carolyn Johnston wrote:
> Hi Luis and everyone,
> 
> I'm appending the entire output from the run I posted snippets of on 
> Friday.
> 
> Here are the parameters I used:
> 
> maxSteplength: .0000556
> minStepLength: .000001
> 
> The pixel spacing is: .000278 physical units so you can see I drove the 
> initial steplength way
> down to try to stabilize the registration's behavior.
> It may well be that there is something I am misunderstanding about the 
> steplengths.
> 
> Oh... finally, the optimizer is regular step gradient descent, the 
> metric is meansquares.
> The stepsize doesn't seem to be dropping near the metric minimum as it 
> ought to.
> 
> :) Carolyn
>