algorithms for registering sequences of images
This package Includes a collection of algorithms for image registration. It is well-suited to registering movies obtained in the medical or neuroscience imaging domains, but can be applied to any image sequences requiring alignment.
The API is designed around algorithms that can be fit to data, all of which return a model that can be used to transform new data, in the style of scikit-learn. Built on numpy and scipy. Compatible with Python 2.7+ and 3.4+. Works well alongside thunder and supprts parallelization via spark, but can be used as a standalone package on local numpy arrays.
pip install thunder-registrationIn this example we create shifted copies of a reference image and then align them
# create shifted copies
from numpy import arange
from scipy.ndimage.interpolation import shift
reference = arange(9).reshape(3, 3)
deltas = [[1, 0], [0, 1]]
shifted = [shift(reference, delta, mode='wrap', order=0) for delta in deltas]
# perform registration
from registration import CrossCorr
register = CrossCorr()
model = register.fit(shifted, reference=reference)
# the estimated transformations should match the deltas we used
print(model.transformations)
>> {(0,): Displacement(delta=[1, 0]), (1,): Displacement(delta=[0, 1])}Import and construct an algorithm.
from registration import CrossCorr
algorithm = CrossCorr()Fit the algorithm to data to compute registration parameters and return a model
model = algorithm.fit(data, opts)The attribute model.transformations is a dictionary mapping image index to whatever transformation type was returned by the fitting. You can apply the estimated registration to the same or different data.
registered = model.transform(data)All algorithms have the following methods:
Fits the algorthm to the images, with optional arguments that will depend on the algorithm. The images can be a numpy ndarray or a thunder images object.
The result of fitting an algorithm to data is a model.
A model has the following properties and methods:
A dictionary mapping image index to the transformation returned by fitting.
Applies the estimated transformations to a new set of images. As with fitting, images can be a numpy ndarray or a thunder Images object.
The following algorithms are available:
Uses cross-correlation to estimate an integer n-dimensional displacement between all images and a reference.
axisspecify an axis to restrict estimates to e.g.axis=2to only estimate displacements in (0,1)imagescan be anumpyndarrayor athunderImagesobjectreferenceanndarrayreference image
Run tests with
py.testTests run locally with numpy by default, but the same tests can be run against a local spark installation using
py.test --engine=spark