PIRT - Python Image Registration Toolkit.
Pirt is the "Python image registration toolkit". It is a library for
(elastic, i.e. non-regid) image registration of 2D and 3D images with
support for groupwise registration. It has support to constrain the
deformations to be "diffeomorphic", i.e. without folding or shearing, and
Pirt is written in pure Python and uses Numba for speed. It depends on
Numpy, Scipy, Numba. It has an optional dependency on Visvis for visualization,
and on pyelastix for the Elastix registration algorithm.
Pirt implements its own interpolation functions, which, incidentally,
are faster than the corresponding functions in scipy and scikit-image
(after Numba's JIT warmup).
Image registration itself requires several image processing techniques
and data types, which are also included in this package:
- pirt.gaussfun - function for Gaussian smoothing and
derivatives, image pyramid class
- pirt.interp - interpolation of 1D, 2D and 3D data (nearest, linear,
and various spline interpolants)
- pirt.splinegrid - defines a B-spline grid class (for data up to
three dimensions) and a class to describe a deformation grid
(consisting of a B-spline grid for each dimension)
- pirt.deform - defines classes to represent and compose deformations
- pirt.reg - the actual registration algorithms
Dependencies and installation
- visvis (optional)
pip install pirt
- or install from the hg repo
Status and licensing
Pirt should be considered alpha/beta status. The API may change. The
core parts are pretty well tested though!
Pirt is BSD licensed, see LICENSE.txt for more information.
Pirt was developed during my PhD. It more or less scratched my itch and
was not well tested. It was written in Cython. In 2017 the code has been
refactored to move to Numba, and many tests were added.