Welcome to elastix: a toolbox for rigid and nonrigid registration of images.
elastix is open source software, based on the well-known Insight Segmentation and Registration Toolkit (ITK). The software consists of a collection of algorithms that are commonly used to perform (medical) image registration: the task of finding a spatial transformation, mapping one image (the fixed image) to another (the moving image), by optimizing relevant image similarity metrics. The modular design of elastix allows the user to quickly configure, test, and compare different registration methods for a specific application. A command-line interface enables automated processing of large numbers of data sets, by means of scripting. Nowadays elastix is accompanied by ITKElastix making it available in Python (on Pypi) and by SimpleElastix, making it available in languages like C++, Python, Java, R, Ruby, C# and Lua. A docker image of the latest elastix build is available as well on dockerhub. Several plugins exist for those who wish to use the functionality of elastix in a graphical user interface, among others a napari and a 3Dslicer plugin.
The lead developers of elastix are Stefan Klein and Marius Staring. This software was initially developed at the Image Sciences Institute, under supervision of Josien P.W. Pluim. Today, many have contributed to elastix.
If you use this software anywhere we would appreciate if you cite the following articles:
- S. Klein, M. Staring, K. Murphy, M.A. Viergever, J.P.W. Pluim, "elastix: a toolbox for intensity based medical image registration," IEEE Transactions on Medical Imaging, vol. 29, no. 1, pp. 196 - 205, January 2010. download doi
- D.P. Shamonin, E.E. Bron, B.P.F. Lelieveldt, M. Smits, S. Klein and M. Staring, "Fast Parallel Image Registration on CPU and GPU for Diagnostic Classification of Alzheimer’s Disease", Frontiers in Neuroinformatics, vol. 7, no. 50, pp. 1-15, January 2014. download doi
Specific components of elastix are made by many; The relevant citation can be found here.
More information, including an extensive manual and model zoo, can be found on the wiki
Interactive tutorials are available in Jupyter notebooks.
You can also subscribe to the mailing list for questions. Information on contributing to elastix can be found here.
This is a fork of elastix in which we explore the application of hybrid evolutionary algorithms to deformable image registration for a Master's thesis at the TU Delft. We implement RV-GOMEA in elastix with support for partial evaluations. Additionally, we implement a hybrid local search operator and add specific constraints for the B-spline transformation model. An analytic version of the bending energy when using B-splines is also integrated.
Make sure that these dependencies are installed and can be found by CMake, see this guide for more information.
Then the project can be configured and built as follows:
# Create build directory.
mkdir build && cd build
# Configure the build.
cmake -DCMAKE_BUILD_TYPE:STRING={BUILD_TYPE} ../
# Build the project.
cmake --build .
We use a superbuild to build all the dependencies not included in the requirements. The superbuild requires a build type (e.g. Debug, Release) to be set during configuration, which can be specified with -DCMAKE_BUILD_TYPE:STRING={BUILD_TYPE}. It is not necessary but advisable to use the Ninja generator for CMake. If installed, it can be specified during the configure step with -G Ninja.
Due to a harcoding of the build directory in CMake/SuperBuild.cmake, the build directory has to be in the root of the project and named "build". If a different build directory is desired, you would have to change the hardcoded path in this file. Subdirectories can be used, e.g., build/Release or build/Debug.