[Insight-users] Levenberg-Marquardt and intensity based image registration

Luis Ibanez luis.ibanez at kitware.com
Mon Feb 21 19:24:30 EST 2011


Hi Alex


On Fri, Feb 11, 2011 at 10:15 AM, Alex Taylor <Alex.Taylor at mathworks.com> wrote:
> Hello,
>
> In A Pyramid Approach to Subpixel Registration Based on Intensity (Thevenaz, UE Ruttimann, Unser) http://www.ncbi.nlm.nih.gov/pubmed/18267377, they recommend using a pyramid based approach with a modified version of Levenberg-Marquardt with a sum of square differences objective function.
>
> This makes me think I should use Levenberg-Marquardt with my intensity-based image registration tasks in ITK.
>


The Levenberg-Marquardt optimizer is a multi-valued optimizer.
(as you pointed out below).


So, in order to make a good use of it you would have to write an
image intensity metric that produces multiple values as output.


> The SetOptimizer methods of the itkImageRegistrationMethod and in itkMultiResolutionImageRegistrationMethod classes enforce that the specified optimizer is a itk::SingleValuedNonLinearOptimizer<http://www.itk.org/Doxygen/html/classitk_1_1SingleValuedNonLinearOptimizer.html>. The only implementation of Levenberg-Marquardt in ITK is an itk::MultipleValuedNonLinearOptimizer<http://www.itk.org/Doxygen/html/classitk_1_1MultipleValuedNonLinearOptimizer.html>.
>


Indeed...


> Why is it that the itkImageRegistrationMethod isn't built to easily support the use of Levenberg-Marquardt?


Because it is rare to use a multi-valued image metric for
doing registration.


Is there an easy way to implement Levenberg-Marquardt least squares
registration in ITK?
>


In the case of SSD, you will have to write a modified metric
that potentially will be returning a vector of values whose
size is equal to the number of pixels in the image; or, if you
are picking a sample of pixels, then it will be equal to the
number of pixels in the sample.

This is not too difficult, but still requires that you write a
modified ITK image metric.


Note that then, you can modify the itkImageRegistrationMethod
(copy / paste / rename the file into another one and make
minimal changes to make this possible)  It should take just
a couple of hours to do so , and then you could share the
new class with the ITK community by posting it as a paper
to the Insight Journal


                 http://www.insight-journal.org


> Futhermore, I'm noticing that a lot of the ITK examples use itk::RegularStepGradientDescentOptimizer<http://www.itk.org/Doxygen/html/classitk_1_1RegularStepGradientDescentOptimizer.html>. Is this generally a good choice when solving optimization based registration problems with SSD objective functions? If so, is there literature to support this?
>


This optimizer is a simple one to use.
It has few parameters and its behavior is relatively intuitive.

You could in principle use any of the other optimizers as well.

There is really no "best" optimizer for performing registration.


The wise thing to do is to use an optimizer that you are
familiar with, so that you can easily figure out how to
set up its parameters, and in particular, you can recognize
when any of the optimizer parameters needs to be refined.


   Regards,


      Luis



----------------------------
>
> Thanks,
>
> Alex Taylor
>
>
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>


More information about the Insight-users mailing list