Is your feature request related to a problem? Please describe.
MONAI has strong support for applying transforms (Affine, Warp, DVF2DDF) and for training registration networks (GlobalNet/LocalNet/RegUNet + registration losses), but no way to directly compute a classical/instance-level registration for a single image pair although many DL applications require it as pre-processing step.
Getting this today means round-tripping through ANTsPy/SimpleITK/itk-elastix, which brings its own convention mismatches (LPS/RAS, physical vs. voxel space, center-of-rotation, composition order e.g #4281, #8467 — both since resolved, but illustrative of how easy this is to get subtly wrong). itk_torch_bridge helps with affine import/export but doesn't cover DDF import from an external tool.
Describe the solution you'd like
A Compose-compatible transform that parametrizes a deformation (affine, B-spline grid, or dense DDF) as a differentiable tensor and optimizes it directly against existing losses (LocalNormalizedCrossCorrelationLoss, GlobalMutualInformationLoss, BendingEnergyLoss) with a multi-resolution schedule, basically a GPU-native "instance optimization" step, not a full SyN reimplementation, and no ITK round-trip required.
Describe alternatives you've considered
We could more simply consider a thin, well-tested wrapper transform around known registration libraries such as ANTsPy/SimpleITK/itk-elastix that completes what itk_torch_bridge already started: convert fixed/moving MetaTensors to the external library's image type (largely doable today via metatensor_to_itk_image / ants.from_numpy), calling the classical optimizer, and converting the resulting DDF back into MONAI's convention correctly and with test coverage, so this isn't reinvented (and re-debugged) per project. So a different tool for a different job vs. the instance-optimization idea above which would require more validation, but would enable fully end-to-end training applications.
Additional context
Happy to help implement either. Wanted to check appetite/scope before starting a PR.
Is your feature request related to a problem? Please describe.
MONAI has strong support for applying transforms (
Affine,Warp,DVF2DDF) and for training registration networks (GlobalNet/LocalNet/RegUNet+ registration losses), but no way to directly compute a classical/instance-level registration for a single image pair although many DL applications require it as pre-processing step.Getting this today means round-tripping through ANTsPy/SimpleITK/itk-elastix, which brings its own convention mismatches (LPS/RAS, physical vs. voxel space, center-of-rotation, composition order e.g #4281, #8467 — both since resolved, but illustrative of how easy this is to get subtly wrong).
itk_torch_bridgehelps with affine import/export but doesn't cover DDF import from an external tool.Describe the solution you'd like
A
Compose-compatible transform that parametrizes a deformation (affine, B-spline grid, or dense DDF) as a differentiable tensor and optimizes it directly against existing losses (LocalNormalizedCrossCorrelationLoss,GlobalMutualInformationLoss,BendingEnergyLoss) with a multi-resolution schedule, basically a GPU-native "instance optimization" step, not a full SyN reimplementation, and no ITK round-trip required.Describe alternatives you've considered
We could more simply consider a thin, well-tested wrapper transform around known registration libraries such as ANTsPy/SimpleITK/itk-elastix that completes what
itk_torch_bridgealready started: convert fixed/moving MetaTensors to the external library's image type (largely doable today viametatensor_to_itk_image/ants.from_numpy), calling the classical optimizer, and converting the resulting DDF back into MONAI's convention correctly and with test coverage, so this isn't reinvented (and re-debugged) per project. So a different tool for a different job vs. the instance-optimization idea above which would require more validation, but would enable fully end-to-end training applications.Additional context
Happy to help implement either. Wanted to check appetite/scope before starting a PR.