Proposal for Revised Framework: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
No edit summary
Line 11: Line 11:
4.  itkCreateComposedTransformFilter --- figure out details later
4.  itkCreateComposedTransformFilter --- figure out details later


Hans:  in itkV4 we need to read/write composed mappings ....
Hans:  in itkV4 we need to read/write composed mappings with a standardized I/O for transformations.  


Then , pseudocode for a registration is:  
Then , pseudocode for a registration is:  

Revision as of 15:26, 14 September 2010

Let us suppose we want to perform a registration with the new framework.

There are a few key ingredients we need:

1. itkComposeTransform class , derived from itkTransform ( look at vtkGeneralTransform , functions as a pipeline i.e. if you change one transform then the composition is updated)

2. itkDeformationFieldTransform class , derived from itkTransform (add Trait IsInvertible , throw exception )

3. itkTransformImageFilter --- takes itkTransform as input

4. itkCreateComposedTransformFilter --- figure out details later

Hans: in itkV4 we need to read/write composed mappings with a standardized I/O for transformations.

Then , pseudocode for a registration is:

1. Set up a multi-resolution optimization over the TransformImageFilter

--- note that we can control the resolution of the TransformImageFilter output.

2. For each transform within itkComposeTransform

--- Optimize: the metric(s) associated with that transform for n iterations or convergence

3. go to next level

In the case of a symmetric registration, pseudocode :

1. Set up a multi-resolution optimization over the TransformImageFilter1 and TransformImageFilter2

--- we usually would set up these filter symmetrically i.e. both have (affine,deformation) maps within and we optimize each pair together

2. For each transform pair taken from ComposeTransform1 and ComposeTransform2

--- Optimize: the metric(s) associated with that transform for n iterations or convergence

3. go to next level

For the Optimize step:

for each transform within ComposeTransform :

--- compute the update to the transform given its associated metric(s)

--- the update may be one-sided (asymmetric) or two-sided (symmetric)

--- note: the metrics do not need access to the transform. they only access outputs of ComposeTransform objects.


Finally, note that this framework is general for other objects (Meshes) but, to support this, we may need generalized iterators (e.g. random iterator over meshes looks the same as random iterator over images).