Hello, I have hacked away to a working version of the ImageRegistationMethod in SimpleITK. This is the 4th SimpleITK registration interface attempted. This one seems about right to me. The branch/commit is available in my github account:
https://github.com/blowekamp/SimpleITK/tree/STRAW_ImageRegistrationMethod Note: this topic will continued to be hacked and rebased/amended/squashed etc.... Of particular interest is the interface to the method class which encapsulates the metric and optimizer while working with the existing sitk Transform facade: https://github.com/blowekamp/SimpleITK/blob/STRAW_ImageRegistrationMethod/Code/Registration/include/sitkImageRegistrationMethod.h I ported several ITK ImageRegistration examples to drive the implementation: https://github.com/blowekamp/SimpleITK/blob/STRAW_ImageRegistrationMethod/Examples/ImageRegistration1.py https://github.com/blowekamp/SimpleITK/blob/STRAW_ImageRegistrationMethod/Examples/ImageRegistration2.py https://github.com/blowekamp/SimpleITK/blob/STRAW_ImageRegistrationMethod/Examples/ImageRegistration15.py Also note I have found the scale dependent nature for ITK's RegularStepGradientDecent method un-usable and erratic. So I have use my version which possess sensible parameter scaling properties: https://github.com/blowekamp/SimpleITK/blob/STRAW_ImageRegistrationMethod/Code/Registration/include/itkScaledRegularStepGradientDescentOptimizer.h --------------- So what does this class support... --Transforms: sitkTranslation, sitkScale, sitkScaleLogarithmic, sitkEuler, sitkSimilarity, sitkQuaternionRigid, sitkVersor, sitkVersorRigid, sitkAffine, sitkComposite --Metrics: MeansSquares, NormalizedCorrelation, MeanReciprocalSquaredDifference MutualInformation, MatchCardinality, KullbackLeiblerCompareHistogram, MeanSquaresHistogram --Optimizers: RegularStepGradientDescent, GradientDescent, ConjugateGradient, OnePlusOneEvolutionary, Exhaustive, Amoeba, LBFS --Interpolators: sitkNearestNeighbor, sitkLinear, sitkBSpline, sitkGaussian, sitkLabelGaussian, sitkHammingWindowedSinc, sitkCosineWindowedSinc, sitkWelchWindowedSinc, sitkLanczosWindowedSinc, sitkBlackmanWindowedSinc So that is 4900 combinations.... Ever try a MatchCardinality metric with a LabelGaussian interpolator and a Amoeba optimizer? --------------- Things still todo and figure out: Callbacks and information/interface needed, BSpline transfroms. Sample masking from images. There is a lot that is going to need to be done for testing, and improved parameter checking, verifying defaults, and doing a different implementation of parameter management. But it is working, and enable easy exploration of registration in a way I have not been able to do before. --------------- I look forward to suggestions and comments. A long with information regarding the importance of features and things that are missing. Thanks, Brad _______________________________________________ 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://kitware.com/products/protraining.php 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-developers
