go home Home | About | FAQ | wiki | Download | News | Legal stuff | Documentation

About elastix

What is elastix?

elastix is a program that registers (matches/aligns) images. The authors use it in their research on the registration of medical image data, but it may be used for any type of images.

It supports many registration methods, composed of various transform models (rigid, affine, nonrigid), similarity measures (for example mutual information), optimisation methods (for example gradient descent), interpolation methods (nearest neighbour, linear, cubic), and multi-resolution schemes. Components can easily be plugged in, to allow the user to configure his/her own registration methods.

elastix is a command line driven program. Most configuration settings are defined in a parameter file. This makes it possible to use scripts that run registrations with varying parameters, on large databases of images, fully automatically. In this way the effect of each parameter can be thoroughly investigated and different methods can be compared systematically. Since 2015 we have bindings available in popular scripting languages, so as to offer user-friendly access to many popular image registration algorithms. This is available via SimpleElastix, making elastix available in languages like C++, Python, Java, R, Ruby, Octave, C#, and Lua.

The program is aimed at research environments. For most applications a nice graphical user interface will be desired, and optimised parameter settings for the specific application. Note that the authors are not responsible for any damage caused by bugs in the program. The program is under constant development, so if you want to use it in an application make sure to test it very carefully. See the legal stuff.

elastix is used by more and more researchers.


Large parts of the code in elastix are based on the Insight Segmentation and Registration Toolkit (ITK). This open source C++ library defines a framework in which almost every registration method can be incorporated. elastix is a kind of "wrapper" around the ITK-components. It makes sure that the right parameters are set at the right moment, and takes care of saving results. Like the ITK, elastix also uses CMake to manage the compilation process. Furthermore, some ITK-style components have been written that add registration techniques not implemented in the ITK.

The modular structure of ITK has been adopted. The elastix source code is structured according to the components one can distinguish in a registration framework, such as metrics, optimisers, transform models, and interpolators. The components make themselves known to the elastix-core, which takes care of initiating the components and connecting them in the correct way. Each component knows itself which parameters it needs to read from the parameter file and what to show on the screen and/or save to disk. This implies that if new components are added, the core of elastix is unchanged. Thus, new ITK-components can be easily incorporated in elastix.

elastix usage

To get started with elastix you can do the following:

  • Check out the example of usage:
    TARnot available
    The linux file can be decompressed using "tar -xjf".
  • Check out the manual. It will tell you about the technique of image registration and informs about the structure and use of elastix. Chapter 5 gives some general advice on how to tune the registration for a specific application.
  • A list of parameters that can be specified in the parameter file can be found here.
  • Also check out the parameter file database at the wiki: click here. There you can find a growing list of parameter files that were successfully applied in applications of elastix-users. Maybe you can find a problem similar to your own!

Useful links

Google groups forumhttps://groups.google.com/forum/#!forum/elastix-imageregistration
Wiki (old)http://elastix.bigr.nl/wiki/index.php/Main_Page
Wiki (new)https://github.com/SuperElastix/elastix/wiki
svn repository (deprecated)https://svn.bigr.nl/elastix/trunkpublic/
github repository (official)https://github.com/SuperElastix/elastix
C++ classes overviewhttp://elastix.isi.uu.nl/doxygen/classes.html

elastix repository statistics

Just for fun, we generated a movie of the commit activities in the elastix svn repository from 6 September 2004 until 20 October 2009. The movie was generated using Code Swarm and can be downloaded from:

high resolution(12.123 kB)codeswarm_elastix.avi
low resolution(5.762 kB)codeswarm_elastix_divx.avi

The ohloh project provides some more statistics.

elastix in the literature

Search for literature that mentions elastix:
Google Scholar
last modified: 13-02-2018 | Copyright 2004 - 2018 © by Stefan Klein & Marius Staring | elastix logo