Skip to content

Streamline multistage registration setup #22

@tbirdso

Description

@tbirdso

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
  1. 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.
  2. Add unit tests and create an example notebook demonstrating the streamlined interface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions