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
To get started with
elastix you can do the following:
- Check out the example of usage:
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!
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:
The ohloh project provides some more statistics.
Search for literature that mentions elastix:
elastix in the literature