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_images
reflects a single registration stage with the following map/reduce approach: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 presentitk-dreg
interface.Proposed resolution
itk_dreg.multistage
register_images
call:register_multistage
method that receives a registration configuration and successively callsregister_images
. On each call, provide a newitk.CompositeTransform
initial transform that composes the ordered transform results of previous stages.