unable to reproduce transform with ANTsTransform.apply_to_image
not sure if I'm missing something or if there is a bug here
# f: image with shape (200, 200, 200)
# aff: nonzero affine
w = ants.transform_from_displacement_field(
ants.from_numpy(
np.ones(200, 200, 200, 3) * 25,
has_components=True,
)
)
m1 = w.apply_to_image(aff.invert().apply_to_image(f, reference=f), reference=f)
m2 = ants.apply_transforms(f,f, transformlist=["/path/to/w.nii.gz", "/path/to/aff.mat"],)
result:
of note: the boundary of the discontinuity in the left image is at 200 in physical coordinates
I was able to substantially reproduce apply_transforms by setting the warp metadata to match f, as is the case for warps returned by ants.registration. This was not the case for the previous example.
Notable, the affine transform couldn't be inverted for the method to work: w.apply_to_image(aff.apply_to_image(f, reference=f), reference=f)
Furthermore, the resulting images were not identical up to float tolerance. The mean square error was 4e-4, the maximum absolute difference was 0.02. Images were normalized to [0, 1], both methods used linear interpolation.