This package contains tools for CUDA-accelerated non-rigid registration.
The registration code uses gradient descent to create a set of functions that transform one image to another.
The symmetric algorithm uses the determinant of the Jacobian matrix to impose mathematical symmetry on the process. Additionally, both images are transformed to some image in between the two, providing numerical symmetry as well. In unison these properties mean that the algorithm will produce the same registration even if the order of the images is switched.
For more information on symmetric non-rigid registration, see "Symmetric Non-rigid Registration: A Geometric Theory and Some Numerical Techniques" by Tagare et al., JMIV, 2009.
The vanilla algorithm transforms one image to another with no symmetry constraints.
All registration code interfaces with included CUDA kernels to accelerate the process. The CUDA code has been tested on a Tesla M2090 card with CUDA 4.X and compute capability 2.X. It should work on cards with compute capability 1.3 as well but has not been tested.
Also included is code to generate synthetic data that can be used to test the registration functions.