ANTs: Rigid registration error with anisotropic voxels

In https://github.com/timholy/antsbug I’ve prepared two registration problems (see the run.sh script). For the first, the two images differ by a rotation. For the second, I’ve simulated the effect of anisotropic sampling by reducing the resolution along the second axis by a factor of 2. The *.nrrd files encode this change in scale via their space directions field.

If ANTs were invariant to changes in scale, you would expect the result to be nearly identical for the two. That’s not what happens—the registration works well only for the one with isotropic resolution:

fixed moving
fixed0 moving0

And the results: overlay0

but after reducing the horizontal resolution by a factor of 2 we get

overlay1

I’m sure it’s obvious, but just in case: it’s worth noting that the definition of “rigid” has to compensate for the scale change, namely that you have to alter your rotation matrix R with inv(S)*R*S where S is the anisotropic scale-transform.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 18 (10 by maintainers)

Most upvoted comments

re: julia - that sounds nice. i’ve been thinking about that. this might interest you as it shows some of the broader capabilities:

https://github.com/ANTsX/ANTsPy/tree/master/tutorials

regarding antsr installation, this is usually the procedure i use:

  • install cmake >= 3.11 in the environment
for x in ITKR ANTsRCore ANTsR ;   do   
     git clone $x 
     R CMD INSTALL $x 
done

or see

https://github.com/ANTsX/ANTsRNet/blob/master/.travis.yml

for another way