ANTsPy icon indicating copy to clipboard operation
ANTsPy copied to clipboard

unable to reproduce transform with ANTsTransform.apply_to_image

Open rueberger opened this issue 3 years ago • 2 comments

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:

Screen Shot 2022-04-14 at 2 40 46 PM

rueberger avatar Apr 14 '22 21:04 rueberger

of note: the boundary of the discontinuity in the left image is at 200 in physical coordinates

rueberger avatar Apr 14 '22 23:04 rueberger

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.

rueberger avatar Apr 14 '22 23:04 rueberger