[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