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

Changes of elastix 3.9 compared to elastix 3.8

Major changes:

  • elastix is now available under the BSD license. This imposes only a few restrictions on its use, and is less restrictive compared to prior distributions of elastix.
  • No more DLL's. The use of DLL's caused bugs related to static variables which are defined in each component separately. This caused bugs with the filter/pipeline mechanism of ITK. In practice it did not cause problems until we turned the ImageSamplers into "real components". Now we just use static libs. An additional advantage is that the size of the binaries is much smaller now.


  • Updated the documentation. We also wrote a manual.
  • Related to the new BSD license, we added copyright notices throughout the code. This should take care of the legal stuff.
  • elastix 3.9 compiles with ITK 3.6.
  • More consistent use of automatic scales estimation for transforms for which it makes sense.
  • Better default values at several places.
  • Added some checks to protect the user from making stupid mistakes.
  • ImageSamplers are now "real components", just like metrics are. No changes for the user.
  • transformix -ipp outputs the index now both in the fixed image domain and in the moving image domain (if the moving image is supplied using -in).

New classes and/or methods:

  • We made the specification of the B-spline grid and how to use multi-grid similar to the specification of the image pyramids. The functionality is now implemented in two classes, the itk::GridScheduleComputer and the itk::UpsampleBSplineParametersFilter. We deprecated the use of FinalGridSpacing. Use either
    (FinalGridSpacingInPhysicalUnits 20.0 20.0 20.0) or (FinalGridSpacingInVoxels 8.0 8.0 8.0)
    We also deprecated the use of UpsampleGridOption. Use
    (GridSpacingSchedule 4.0 2.0 1.0)
    instead. See the documentation for more details.
  • Added the option (CompressResultImage "true"). Works especially nice for binary images.
  • Added the function SetNumberOfSamples() to the ImageGridSampler. This function determines the grid spacing such that the desired number of samples is achieved approximately.
  • Added the BSplineInterpolatorFloat, which is the same as BSplineInterpolator, but with a reduced memory footprint.
  • Added the long overdue AdvancedNormalizedCorrelation metric, which takes advantages of the compact support of B-splines. So, it's much faster compared to previous releases of elastix if the transform is the BSplineDeformableTransform.
  • Added the possibility to retry the sampling process when the metric gives an exception about the valid number of samples. Currently implemented for the StandardGradientDescent optimiser only. Can be set by (MaximumNumberOfSamplingAttempts 10)

Removed classes and/or methods:

  • Removed obsolete MeanSquaresMetric, since the advanced version is available. Change in your parameter file:
    (Metric "MeanSquares") to (Metric "AdvancedMeanSquares")
  • Removed obsolete NormalizedCorrelation, since the advanced version is available. Change in your parameter file:
    (Metric "NormalizedCorrelation") to (Metric "AdvancedNormalizedCorrelation")
  • Removed obsolete MattesMutualInformation, since the advanced version is available. Change in your parameter file:
    (Metric "MattesMutualInformation") to (Metric "AdvancedMattesMutualInformation")
  • Removed DifferentialOverlap feature. This cleans up the code in a lot of places.


  • Fixed numerous small bugs.
  • With the new ITK 3.6 a function name changed. We had to update the call to this function in elastix. This means that elastix will no longer compile with versions of ITK older than 3.6.
  • transformix -ipp did not convert correctly from physical point to image index, due to the buggy itk::TransformPhysicalPointToIndex().
last modified: 03-11-2009 | Copyright 2004 - 2017 © by Stefan Klein & Marius Staring | elastix logo