[Insight-users] Re: NMI registration

Luis Ibanez luis.ibanez at kitware.com
Tue Aug 10 12:45:16 EDT 2004



Hi Vineet,


Some lateral comments first:

A) The value of normalized mutual information is
    and *estimation*. The quality of this estimation
    will vary depending on the number of histogram
    bins and the number of sample points taken.


B) The choice of the Interpolator has a critical
    effect on the computation of the metric. What
    interpolator are you using ?


C) The optimizer is walking in a non-linear parametric
    space, there is no reason for expecting that the
    "return" trip will follow the same path of the jump
    that introduced a first misregistration step".

    Since you are starting at the maximum, the evaluation
    of the metric derivatives at this position will return
    a NULL vector. A gradient descent optimizer will therefore
    depart in an almost random direction.


D) You may want to try the OnePlusOne Evolutionary
    optimizer illustrated in the Examples

          Insight/Examples/Registration
                      ImageRegistration11.cxx
                      ImageRegistration14.cxx

     This optimizer does not requires derivatives of
     the Image Metric, and therefore it may behave
     closer to what you seem to be intuitively expecting.



Some basic questions:

1) What is the purpose of your test ?

2) What is the behavior that you were expecting from
    the optimizer ? To return to the original position
    in a single step ?

3) Once you succeed to make this self-registration
    work,  what will you have achieved ?



Starting with two identical images and an identity Transform
doesn't seems to be intended for evaluating any particular
behavior of a registration method. Optimization methods are
designed to get to extrema values, not to depart from them
and return rapidly.


Put in other words:

     There are so many *real* and *interesting* problems to
     solve out there, that it doesn't seem to be worth to
     invest time in fine tunning an artificially constructed
     registration problem that may not illustrate any useful
     behavior of a registration algorithm.




Please let us know if you have good reasons
for pursuing this tautological test.



    Thanks



       Luis



-----------------------
Vineet Kulkarni wrote:

> Hi Luis,
> Thanks for the reply. 
> I did reduce the max step and adjusted the scales. Well the problem is that 
> after the first iteration the metric value goes down from 2.0 to ~1.2 even 
> with max step as small as 0.05. But subsequent iterations change the value by 
> very small amounts(1.2563 to 1.2592 for eg). So it takes ages to recover what 
> was "lost" in just one step. Is there any way to avoid this? 
> Regards,
> Vineet
> 
>>===== Original Message From Luis Ibanez <luis.ibanez at kitware.com> =====
>>Hi Vineet,
>>
>>Well, if you start your optimization at the
>>optimal value, it is to expect that the
>>optimizer will take a tour around that value
>>and eventually come back.
>>
>>In that process, you will necesarily see
>>smaller values of the metric.
>>
>>If the optimizer is not comming back to the
>>original position, that means that your
>>step length is too large.
>>
>>
>>Please try smaller values for
>>
>> optimizer->SetMaximumStepLength( 0.5 );
>>
>>Note that the angular parameters are measured
>>in radians. A rotation of 0.5 radians is almost
>>30 degrees which is too large for the step of
>>an optimization method in the angle space.
>>
>>
>>BTW, you did not mention the values you are
>>using for the scaling parameters. Those are
>>also critical here.... Look at how much the
>>translation parameters are changing with
>>respect to the angular parameters. That will
>>give you an idea of whether you need to change
>>your parameter scaling or not.
>>
>>
>>  Regards,
>>
>>
>>     Luis
>>
>>
>>-----------------------
>>Vineet Kulkarni wrote:
>>
>>
>>>Hi Luis,
>>>I was running a registration program with the same image as moving and 
> 
> fixed
> 
>>>to test the module.
>>>I am using
>>>-Normalized Mutual Info as the metric
>>>-Regular Step Gradient Descent Optimizer
>>>-Euler 3d Transform
>>>
>>>    optimizer->SetMaximumStepLength( 0.5 );
>>>    optimizer->SetMinimumStepLength( 0.001 );
>>>    optimizer->SetNumberOfIterations( 100 );
>>>
>>>The transform is set to identity initially.
>>>The problem is that the metric value starts at 2.0 as it should but then it
>>>keeps on decreasing it. This happens with both MaximizeOn and MaximizeOff.
>>>Could you please suggest whats going wrong?
>>>Thanks,
>>>Regards,
>>>Vineet Kulkarni
>>>
>>>
> 
> 
> 






More information about the Insight-users mailing list