InsightSoftwareConsortium / InsightSoftwareConsortium/itk-dreg

Streamline multistage registration setup

Open
#22 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.