Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
What is elastix
elastix is a software 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), optimization methods (for example gradient descent), interpolation methods (nearest neighbor, 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 available as a command line program, but also via a library interface. 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 optimized 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, optimizers, 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