[Insight-users] RE: VersorRigid3DTransform & Optimization

Luis Ibanez luis.ibanez at kitware.com
Fri, 09 Jan 2004 14:49:13 -0500


Hi Radhika,

It seems that you forgot to attach the optimization
results to your previous message.


Could you please resend ?



---


In any case,
about your questions:


1) Using multi resolution is always good.
    It increases robustness and speeds up
    the registration process.

    You will find multi-resolution examples
    in the SoftwareGuide

    http://www.itk.org/ItkSoftwareGuide.pdf

    Section 8.6, pdf-page 281.


2) There is not a direct way to set a tolerance
    for the Metric value in the optimizer. However
    you can easily implement this in the Observer
    of the Optimizer. Simply check for the metric
    value on the Execute() method of the Command/
    Observer and if it matches your stopping
    criteria you invoke

       optimizer->StopOptimization()

     Otherwise you could use the GradientMagnitudeTolerance
     which is a stopping criterion based on the magnitude
     of the gradient. Therefore indicating how flat is
     the metric value in the current position. In theory,
     the gradient will tend to be zero when you are in
     critical point (minimum/maximum/saddle) of the metric.

     Please look at the documentation of the RegularStep
     GradientDescentOptimizer.
http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepGradientDescentBaseOptimizer.html


3)  The step length stopping criteria is based on the
     fact that each time the value of the metric increases
     the step length is divided by two and its direction
     is reversed.  If the optimizer enters a valley this
     process may lead convergence at the bottom of the valley.
     What you specify with MinimumStepLength is how much you
     care about precision.

     In other words, if you set the minimum step length to
     0.001 you are saying that you are satisfied with a
     rotation precision of +- 0.01 radians which is about
     0.57 degrees.  If you are too exigent on the precision,
     e.g. 10-7 radians, the optimizer will take a long time
     to converge until its oscillations are smaller than this
     value.  So you basically have a trade-off between
     precision and optimization time.





Thanks


    Luis


-------------------------------
Radhika Sivaramakrishna wrote:

> Hi Luis,
> 
> I decided to start with an initial rotation of 9 degrees (my real 
> rotation is 10 degrees) and I was trying to study what parameters to use 
> to recover this. I am attaching part of the results at each iteration.
> 
> I used the following:
> 
> Maximum step length = 0.1
> Minimum step length = 0.01
> 
> I find the metric comes down to a low value of about 37 and then starts 
> climbing again. Looking at these results, would you recommend
> 
> 1) going to a smaller max step length
>           OR
> 2) Using a hierarchical multiresolution approach.
> 
> I also have another question:
> 
> Is there a way to set a minimum value of metric to go down to? How is 
> this related to the parameter MinimumStepLength?
> 
> Thanks
> Radhika
> 
>  
>