This is a curated list of Python projects for non-rigid (i.e. elastic) image registration. Currently, there is not a single library that stands out as the way to do image registration. This is in part because image registration is hard and there is a large variety of methods which is perhaps difficult to collect in a single library. But this is also because there has not been a collaborative effort to make such a library.
This website is a small step in unifying efforts related to image registration in Python by providing a single place to list the current projects and their status. It should give users who need tools for registration problems a better idea of what library they could best use. Further, developers who want to implement new tools have a better idea of what’s already out there, and what other developers they might collaborate with.
If you know of a library/project that’s not listed here, or think that the information on this page is inaccurate, please help improve this site by making a contribution via the Github page.
Installation: available via conda.
PyElastix is a thin wrapper around the Elastix toolkit. Written in pure Python, so no compilation required.
Installation: pip or conda.
Installation: see instructions
nireg aims to be a dedicated pure-Python image registration package.
It is yet to be fully documented and made usable to dummy users.
ANTsPy is a Python library which wraps the C++ biomedical image processing library ANTs, which has registration capabilities. Some documentation is available, and it is yet to be fully documented.
SimpleElastix is an extension of SimpleITK that includes Elastix to offer more registration algorithms.
Installation: compilation is difficult, but there is an effort to put it on conda-forge.
PIRT is a framework for exposing a variety of elastic registration algorithms via a common API, including Demons, a diffeomorphic (i.e. geometrically correct) variety of Demons, and more. The algorithms were previously written in Cython, but are now implemented in Python, yet running at C-speed thanks to Numba, making installation easy. Not very actively maintained at the moment.
python-register is a package for image registration built on top of scipy and numpy.
Installation: needs compilation
The Silx toolkit includes a GPU-based SIFT registration algorithm.
Installation: needs compilation?
GeFolki (Geoscience Extended FlOw Lucas- Kanade Iterative) is a coregistration method that has been developped in the framework of the MEDUSA project, first for SAR/SAR co-registration, then for other cases of remote sensing image coregistration, including hetergeneous image co-registration (ex LIDAR/SAR, optics/SAR, hyperspectral/optics and so on). It is an adaptation of an optical flow method. The method is implemented in both Python and MATLAB.
Installation: Just download the repo. Examples on how to use the modules are given.