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

Changes of elastix 4.4 compared to elastix 4.3


  • elastix 4.4 builds with ITK 3.20.
  • The manual was updated with information for potential developers: chapter 7. We added a short introduction on how to create new elastix components. In addition, Chapter 6 about advanced topics was extended.
  • It is now possible to add your own directory of components when compiling elastix. Notice the CMake option ELASTIX_USER_COMPONENT_DIRS. Direct it to your local directory of additional components and elastix will incorporate it in its build!
  • Modifications to the B-spline transform (by Coert Metz).
    Two new options have been added:
    1. The order of the B-splines can now be set using:
      (BSplineTransformSplineOrder [order])
      Possible values for [order] are: 1 (linear), 2 (quadratic) and 3 (cubic / default). This is especially useful to speed up 4D registration by setting a smaller order (e.g. 2).
    2. A cyclic version of the B-spline transform has been added. In this transform, the B-spline polynomials wrap around in the last dimension of the image. This is especially useful for time-series data which have a cyclic nature (such as ECG-gated CTA). You can enable this option with:
      (UseCyclicTransform "true")
      The default value is "false". For more details see the paper by Coert Metz et al.:
      C.T. Metz, S. Klein, M. Schaap, T. van Walsum and W.J. Niessen, "Nonrigid registration of dynamic medical imaging data using nD+t B-splines and a groupwise optimization approach", Medical Image Analysis, in press.
  • Smoothing pyramid values of 0.0 are now really appreciated by skipping the smoothing for these values. In previous versions of elastix a work-around was implemented in which these directions were smoothed with a very small kernel value (by Coert Metz / Stefan Klein).
  • Performance enhancement for the spatial derivatives by skipping empty matrices.
  • For automatic transform initialization the mode "Origins" was added. In this third mode, the vector from the origin of the fixed image to the origin of the moving image is passed as the initial translation t and the geometrical center of the moving image, translated by -t, is used as the initial center of rotation of the transform.
  • Better integration of Mevislab dicom/tiff IO. There is no need anymore to manually modify the ITK tree: just build the ITK against system libraries with libtiff version 3.8.2 or higher and GDCM version 2.0.12 or higher. Then select the ELASTIX_USE_MEVISDICOMTIFF option in CMake.
  • Anonymous svn access to the current trunk for everyone! To have the latest and greatest of elastix, and early access to bugfixes. Simply do
    svn co --username elastixguest --password elastixguest https://svn.bigr.nl/elastix/trunkpublic <mylocalpathtoelastix>
    The trunk may be unstable though! Release versions (starting from version 4.4) can also be retrieved:
    svn co --username elastixguest --password elastixguest https://svn.bigr.nl/elastix/tagspublic/elastix_04_4 <mylocalpathtoelastix>
    Here, 04_4 is the version number.
  • elastix is now packaged using CPack. Have you seen the nice nsis installer at the download page ?
  • Grouping of the components in IDE's like Visual Studio. Requires CMake 2.8.3.
  • Feature request by Gert Wollny: We adopted the conventional directory structure in Linux. Executables are now in the <install>/bin folder and libraries in the <install>/lib folder. On Windows, both executables and libraries are installed in the <install> folder, as it used to be.

New classes and/or methods:

  • Superfast resampling for a B-spline transformation! We added CUDA code for transforming and interpolating an image on the GPU. The transformation and interpolation are currently limited to a single third-order B-spline transform (no composition of transforms) in combination with a third-order B-spline interpolator. Select
    (Resampler "CUDAResampler")
    in your parameters file to enable this functionality. Currently, this only works if you have a single B-spline transformation. Concatenations of multiple transformations are not supported yet.
  • elastix now supports 4D registration (by Coert Metz)! This development was part of the recently published paper by Coert Metz et al.:
    C.T. Metz, S. Klein, M. Schaap, T. van Walsum and W.J. Niessen, "Nonrigid registration of dynamic medical imaging data using nD+t B-splines and a groupwise optimization approach", Medical Image Analysis, in press.
    The parameter files and scripts used for the paper are available in the parameter database on the wiki. elastix is now completely compiled with support for 4D images (Fixed/MovingInternalImagePixelType "short", to save memory). The following components are new, and meant for motion estimation in time series (nD+time data):
    • BSplineStackTransform: a new transform which maintains a separate (dimension - 1 ) B-spline transform for every sub image determined by the last dimension. For example: for a 3D image, a 2D B-spline transform will be maintained for every z-index. This is useful to perform groupwise registration approaches on nD images (such as a concatenation of (n-1)D patient images), without taking into account smoothness along the last dimension of the image.
      (Transform "BSplineStackTransform")
    • VarianceOverLastDimensionMetric: a new metric which computes the variance of intensities of spatially corresponding voxel locations over time. Useful for dynamic image alignment.
      (Metric "VarianceOverLastDimensionMetric")
    • ReducedDimensionBSplineInterpolator: BSpline interpolator which only interpolates along the D-1 dimensions of the image.
      (Interpolator "ReducedDimensionBSplineInterpolator")
  • Added the command line option "-jacmat all" to transformix, which computes the full spatial Jacobian matrix of the coordinate transformation, at each voxel in the fixed image.
  • We removed the obsolete MattesMutualInformationImageToImageMetricWithRigidityPenalty. Use the new TransformRigidityPenalty instead, which can be used with any similarity metric.


  • Fixed a bug in the computation of the derivative of the metric: CorrespondingPointsEuclideanDistancePointMetric. Reported over the elastix mailing list by Floris Berendsen. Thanks!
  • Fixed a bug related to the reported runtime of elastix A fix was contributed by Steve M. Robbins over the elastix mailing list. Thanks!
  • Fixed some compiler warnings.
  • Fixed some small bugs
last modified: 17-06-2011 | Copyright 2004 - 2018 © by Stefan Klein & Marius Staring | elastix logo