Changes of elastix 4.8 compared to elastix 4.7

Enhancements:

elastix now supports OpenCL!
For resampling speedups of 50x-90x where measured on an NVidia Geforce GTX 780 (2013).
Details are given in the paper: Fast Parallel Image Registration on CPU and GPU for Diagnostic Classification of Alzheimer's Disease, see this link.
As a result, CUDA will be phased out from elastix in the next release. The OpenCL implementation in elastix is much more mature and supports much more use cases.

elastix is now distributed under the Apache 2.0 license!
This license is a more modern and clear equivalent of the previous BSD license. Copyright is now more clearly defined with the new copyright holder "UMC Utrecht and contributors", so that contributors keep all their rights. We have also started using Contributor License Agreements (CLA's), directly derived from the Apache 2.0 CLA. The Apache 2.0 license is just as permissive as you are used to, and is also OSI approved.

elastix 4.8 builds with ITK 4.7.2 and higher.
Consequently, elastix 4.8 does not compile anymore with earlier versions of ITK.

The source code had a minor reorganization and clean up: we added a tools and a src/CMake directory, and moved files to appropriate places. CMake files now use lower case everywhere, eol-style was used consistently, etc.

Direction cosines are now used by default. I.e. if you omit the parameter UseDirectionCosines from the parameter file, Elastix will from now on assume you meant to set it to "true", which is the recommended setting.

The AffineDTI transform was extended to also support 2D images.

Timings are now measured using the itk::TimeProbe; The elx::Timer class has been removed. Most timers report in more precision now.

New classes and/or methods:

Floris Berendsen contributed a new regularizing metric: the StatisticalShapePenalty metric.
The metric can be selected using:

(Metric <some metric> "StatisticalShapePenalty")

See this entry in the parameter file database to checkout its usage: http://elastix.bigr.nl/wiki/index.php/Par0024.
He published his work here under the title Free-form image registration regularized by a statistical shape model: application to organ segmentation in cervical MR.

Floris also created the MissingStructurePenalty and PolydataDummyPenalty cost functions.
These can be selected using:

Jihun Kim contributed a DistancePreservingRigidityPenalty term.
It can be selected using:

(Metric <some metric> "DistancePreservingRigidityPenalty")

The work was published here under the title Distance-preserving rigidity penalty on deformable image registration of multiple skeletal components in the neck.

Bugs:

The accelerated linear interpolator that was introduced in the previous elastix version did not handle edge cases very well, and sometimes crashed. The issue was reported by Marvin Albert.

The option UseRandomSampleRegion was ignored in a specific case. The bug was reported by Valerio Fortunati.

The option HowToCombineTransforms was always written as "Compose" in the TransformParameter file, even when it should be "Add". This bug was introduced in revision r3224, and reported by Floris Berendsen.