Difference between revisions of "Projects:RegistrationImprovement"
Line 11: | Line 11: | ||
*Optimizer: [http://www.itk.org/Doxygen/html/classitk_1_1OnePlusOneEvolutionaryOptimizer.html OnePlusOne Evolutionary Optimizer] followed by [http://www.itk.org/Doxygen/html/classitk_1_1FRPROptimizer.html FRPR] in fletcher reeves mode | *Optimizer: [http://www.itk.org/Doxygen/html/classitk_1_1OnePlusOneEvolutionaryOptimizer.html OnePlusOne Evolutionary Optimizer] followed by [http://www.itk.org/Doxygen/html/classitk_1_1FRPROptimizer.html FRPR] in fletcher reeves mode | ||
*Transform Types: Rigid transform [http://www.itk.org/Doxygen/html/classitk_1_1VersorRigid3DTransform.html VersorRigid3DTransform], Affine transform [http://www.itk.org/Doxygen/html/classitk_1_1AffineTransform.html AffineTransform], B-spline transform [http://www.itk.org/Doxygen/html/classitk_1_1BSplineDeformableTransform.html BSplineDeformableTransform] | *Transform Types: Rigid transform [http://www.itk.org/Doxygen/html/classitk_1_1VersorRigid3DTransform.html VersorRigid3DTransform], Affine transform [http://www.itk.org/Doxygen/html/classitk_1_1AffineTransform.html AffineTransform], B-spline transform [http://www.itk.org/Doxygen/html/classitk_1_1BSplineDeformableTransform.html BSplineDeformableTransform] | ||
+ | *Initialization types, details on landmark-based initialization | ||
A user should typically one of the Pipeline methods (PipelineRigid, PipelineAffine, PipelineBspline) as these will run Initalization -> Rigid -> Affine -> Bspline to the specified level. These are run in order to convergence or maximum # of iterations. Within each pipeline step there is a two stage optimization. First the evolution optmizer is run to stochastically chose a starting location for optimization. After this the FRPR optimizer is used. Currently multi-resolution optimization is only used in the bspline level. | A user should typically one of the Pipeline methods (PipelineRigid, PipelineAffine, PipelineBspline) as these will run Initalization -> Rigid -> Affine -> Bspline to the specified level. These are run in order to convergence or maximum # of iterations. Within each pipeline step there is a two stage optimization. First the evolution optmizer is run to stochastically chose a starting location for optimization. After this the FRPR optimizer is used. Currently multi-resolution optimization is only used in the bspline level. |
Revision as of 18:38, 18 September 2009
Home < Projects:RegistrationImprovementContents
Registration Improvements
This page will describe registration improvements made within Slicer3 to improve the usability and robustness of registration algorithms so they may be used in an interactive clinical setting.
Key Contributors
- Kitware: Casey Goodlett with consultation from Will Schroeder and Stephen Aylward
- BWH: Ron Kikinis, Dominik Meier, Andriy Fedorov
RegisterImages Algorithm
- ITK Metrics used: MattesMutualInformation
- Optimizer: OnePlusOne Evolutionary Optimizer followed by FRPR in fletcher reeves mode
- Transform Types: Rigid transform VersorRigid3DTransform, Affine transform AffineTransform, B-spline transform BSplineDeformableTransform
- Initialization types, details on landmark-based initialization
A user should typically one of the Pipeline methods (PipelineRigid, PipelineAffine, PipelineBspline) as these will run Initalization -> Rigid -> Affine -> Bspline to the specified level. These are run in order to convergence or maximum # of iterations. Within each pipeline step there is a two stage optimization. First the evolution optmizer is run to stochastically chose a starting location for optimization. After this the FRPR optimizer is used. Currently multi-resolution optimization is only used in the bspline level.
Improvement Ideas
- Use multi-resolution at all stages
- The prestage to affine maybe should be similarity not rigid (based on assumption that its hard to optimize rotation without scale change).
- Learn from FSL flirt to make an extensive test of a grid of possible rotations to get a good initialization for rotations.
- Ability to specify masks that are used to limit were samples are drawn (this should ultimately be both a label image or a user drawn box)
Timeline of contributions
September 11, 2009
Merge two new modules that present a simplified view of RegisterImages into Slicer3 to show up in Modules Menu hierarchy Menu hierarchy screenshot
September 9, 2009
Sync default parameters between GUI and command line version of RegisterImages
August 21, 2009
August 18, 2009
- Link landmark initalization with fiducials framework in Slicer3
- Link transform save and load with TransformIO in Slicer3
Links
- Project describing improvements to multi-threading of ITK Metrics and initial version of RegisterImages ITK_Registration_Optimization
- Initial Project Meeting