Current Behavior
A single call to register_images reflects a single registration stage with the following map/reduce approach:
- Subdivide fixed image into subimage tasks
- In each task, fetch fixed and moving subimages, then register them together
- Reduce registration results into a single descriptive transform
Note that one call to register_images reflects distributed registration for a single set of input parameters, such as the fixed image resolution, moving image resolution, and initial transform. A subimage registration may perform registration with multiple successive transforms. For instance, ITKElastix could register a set of rigid -> affine -> deformable transforms between two subimages in a single distributed registration stage.
It can be tedious to set up multiple registration stages with multiple calls to register_images. We should explore how the interface may be streamlined to improve the user experience without sacrificing the granularity of the present itk-dreg interface.
Proposed resolution
- Create a new submodule
itk_dreg.multistage
- Define a multistage registration configuration object or schema that provides parameters for each
register_images call:
- The fixed image source (with what resolution)
- The moving image source (with what resolution)
- The registration method to use
- The reduction method to use
- Overlap factors
- Chunk size
- Define a
register_multistage method that receives a registration configuration and successively calls register_images. On each call, provide a new itk.CompositeTransform initial transform that composes the ordered transform results of previous stages.
- Add unit tests and create an example notebook demonstrating the streamlined interface.
Current Behavior
A single call to
register_imagesreflects a single registration stage with the following map/reduce approach:Note that one call to
register_imagesreflects distributed registration for a single set of input parameters, such as the fixed image resolution, moving image resolution, and initial transform. A subimage registration may perform registration with multiple successive transforms. For instance, ITKElastix could register a set of rigid -> affine -> deformable transforms between two subimages in a single distributed registration stage.It can be tedious to set up multiple registration stages with multiple calls to
register_images. We should explore how the interface may be streamlined to improve the user experience without sacrificing the granularity of the presentitk-dreginterface.Proposed resolution
itk_dreg.multistageregister_imagescall:register_multistagemethod that receives a registration configuration and successively callsregister_images. On each call, provide a newitk.CompositeTransforminitial transform that composes the ordered transform results of previous stages.