InsightSoftwareConsortium / InsightSoftwareConsortium/itk-dreg
Streamline multistage registration setup
- Dominant language
- Python
- Stars
- 6
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
## Current Behavior
A single call to `register_images` reflects a single registration stage with the following map/reduce approach:
1. Subdivide fixed image into subimage tasks
2. In each task, fetch fixed and moving subimages, then register them together
3. 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
1. Create a new submodule `itk_dreg.multistage`
2. 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
3. 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.
4. Add unit tests and create an example notebook demonstrating the streamlined interface.
Contributor guide
Assessment
This issue has not been assessed yet.