[Insight-users] Optimzers and metrics for point set to point set registration

Luis Ibanez luis.ibanez at kitware.com
Mon Aug 14 07:47:55 EDT 2006



Hi Harry


1) The reason why the PointSetToPointSetMetric uses the MultipleValued
    cost function is that in this way you are able to use the Levenberg
    Marquardt optimizer, that results in faster convergence.  You are
    right, that this choice also precludes the use of other optimizers.

    You may want to enjoy here the pleasures of Open Source and modify
    your local copy of the PointSetToPointSetMetric in order to use
    SingleValued cost functions.

    You can also create a second PointSetToPointSetMetric base class
    that uses SingleValued cost functions instead of MultipleValued ones.
    Then create your own PointSetToPointSetMetrics deriving from this new
    base class.

    At that point you will be able to use most of the others ITK
    optimizers, including the VersorRigid3DTransformOptimizer.


2) Please read the ITK Software Guide:

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

    In particular the the "Image Registration" Chapter. Please pay
    particular attention to the section on Transforms, and the section
    on Optimizers.

    You will find that the *only* reason why the Versor and Quaternion
    based transform have their own specific optimizers is that Versors,
    and Quaternions do not form Vector spaces. The rules for applying
    Gradient descent like operations are therefore different.
    In particular, Versor are not combined by adding component but by
    composition.

    The components of the AffineTransform and the SimilarityTransform,
    on the other hand, form a Vector space and therefore you can use
    any of the typical optimizers, that are not specific to a Transform.






   Regards,



       Luis



--------------------
Harry Hoellig wrote:
> Hi everyone,
> 
> I've got two questions and it would be great if someone could help...
> 
> 1.) I want to perform a point set to point set registration with the 
> VersorRigid3DTransform but the associated optimizer 
> VersorRigid3DTransformOptimizer uses a SingleValuedCostFunction as 
> metric while PointSetToPointSetMetric is a MultipleValuedCostFunction. 
> Among the SingleValuedCostFunctions there seems to be no metric which I 
> could use for a point set to point set registration. So, is there a way 
> to solve this problem in ITK or do I have to implement an own metric to 
> convert the PointSetToPointSetMetric into a SingleValuedCostFunction?
> 
> 2.) I also want to perform the registration with a similarity and an 
> affine transformation but I can't find any optimizers to use with these 
> transformations. I tried the LevenbergMarquardtOptimizer but it seems to 
> destroy the transformation matrix. So, which optimizers can I use?
> 
> Thanks in advance
> Harry
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 




More information about the Insight-users mailing list