-
Notifications
You must be signed in to change notification settings - Fork 2
Description
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_imagescall:
- 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_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. - Add unit tests and create an example notebook demonstrating the streamlined interface.