Difference between revisions of "Projects:RegistrationImprovement"

From NAMIC Wiki
Jump to: navigation, search
Line 34: Line 34:
 
== September 9, 2009 ==
 
== September 9, 2009 ==
 
Sync default parameters between GUI and command line version of RegisterImages
 
Sync default parameters between GUI and command line version of RegisterImages
 
= Registration Documentation =
 
  
 
== August 21, 2009 ==
 
== August 21, 2009 ==
Line 47: Line 45:
 
*Project describing improvements to multi-threading of ITK Metrics and initial version of RegisterImages [[ITK_Registration_Optimization]]
 
*Project describing improvements to multi-threading of ITK Metrics and initial version of RegisterImages [[ITK_Registration_Optimization]]
 
*[[Events:Registration_Summit_August_2009 | Initial Project Meeting ]]
 
*[[Events:Registration_Summit_August_2009 | Initial Project Meeting ]]
 +
 +
= Registration Documentation =
 +
Currently I envision 3 classes of documentation support:
 +
#Reference Manual, discussing each feature/parameter/button in detail. Preferred formats:  Slicer Wiki, maybe PDF
 +
#User Manuals, discussing the main functionality from a case-point of view
 +
#Background Tutorials
 +
#Training Video Tutorials
 +
 +
An example of the features/character of a video tutorial is here:

Revision as of 21:45, 29 September 2009

Home < Projects:RegistrationImprovement

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

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
    • Both multi-resolution and the sequence of calls with increasing DOF could be implemented as a single recursive scheme. The caller provides an array of DOF and a matching array of resolution levels, which is processed by recursive calls with the first/last element taken from the list. A simulation Matlab program and example is here: Projects:RegistrationImprovement:RecursiveScheme
    • The GUI can list the many combination as a single list of checkboxes for increasing DOF. The full list would be 3,6,7,9,12,b . The checked boxes provide the input string for the recursive call. Media:DOFHierarchy_GUI.jpg‎
  • 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 22, 2009

Committed ability to use a label image to act as a mask for drawing samples for image match calculation.

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

Initial Project Meeting

August 18, 2009

  • Link landmark initalization with fiducials framework in Slicer3
  • Link transform save and load with TransformIO in Slicer3

Links

Registration Documentation

Currently I envision 3 classes of documentation support:

  1. Reference Manual, discussing each feature/parameter/button in detail. Preferred formats: Slicer Wiki, maybe PDF
  2. User Manuals, discussing the main functionality from a case-point of view
  3. Background Tutorials
  4. Training Video Tutorials

An example of the features/character of a video tutorial is here: