Changes of elastix 4.5 compared to elastix 4.4
elastix 4.5 builds with ITK 3.20.
- We updated the documentation with information about the parameters
MovingImageDerivativeScales, AutomaticTransformInitializationMethod, and the direction of the transformation (from fixed to moving image).
- We updated to latest version of MevisDicomTiffImageIO, provided by Rashindra Manniesing. This version also reads 4D images. It appeared that Mevis dicom can only handle direction cosines that form a right hand coordinate system. Also the spacing and origin of the fourth dimension cannot be stored in this format. So, we just have to accept this. Rashindra added documentation and modified the test, so that it will pass from now on. Select the
ELASTIX_USE_MEVISDICOMTIFF option in CMake in orde to build
elastix with Mevis dicom tiff support.
- It is now possible to specify for what image types
elastix is compiled for at CMake generation time. It is not hard-coded anymore.
elastix is now nightly tested on a public dashboard! See http://my.cdash.org/index.php?project=elastix. The following systems currently contribute a build each night: Windows XP, 32 bit, VS2008; Windows 7, 64 bit, VS2008; Windows 7, 64 bit, VS2010; Linux, 64 bit, gcc 4.4.3; Linux, 64 bit, gcc 4.1.2; MacOSX, 64 bit, gcc 4.2.1. In addition a dynamic memory analysis is performed nightly on linux. You can contribute builds for your own favorite system, if you want better support for that platform.
- We added a new CMake option:
USE_ALL_COMPONENTS. This turns on all components with one convenient click. CMake saves the user-settings of the USE_vars, such that they are not lost when accidently turning
USE_ALL_COMPONENTS on and off.
- We added several performance enhancements for the thin plate spline transform:
In addition we improved TPS testing.
- QR decomposition for matrix inversion is much (x10) faster then SVD
- Huge speedup for Jacobian computation, using the facts that LMatrixInverse is sparse, has a specific shape, and is symmetric.
- Cached decomposition of LMatrix, beneficial when SetParameters() is called (every registration iteration).
- The full spatial Jacobian matrix could not be written in nifti format (because it thinks it cannot write matrices). We implemented a hack that makes all IO libs (except for mhd) think that it is a vector image with vectors of length dim x dim. Then, the nifti reader does exactly what you want.
- We added an option to set the random seed used for drawing samples from the fixed image. You can use it by adding the following line to your parameter file:
- We added an option to set the zeta SigmoidScaleFactor in the ASGD optimizer.
- The ReducedBSplineInterpolator now also supports B-spline orders larger than 1. Fixed by Coert Metz.
- We removed some deprecated code regarding the reading of transform parameters. This parameter cannot be specified anymore with
// par1 par2 ... parN, but only as usual with
(TransformParameters par1 par2 ... parN).
- It is now easier to include elastix code in your own program. The
dox/externalproject directory gives an example how.
New classes and/or methods:
elastix now supports 2D-3D registration (by Martijn van der Bom)! This development was part of his PhD work, see:
I.M.J. van der Bom, "2D-3D Image Registration in Diagnostic and Interventional X-ray Imaging", Utrecht University, The Netherlands, December 2010. link
I.M.J. van der Bom, S. Klein, M. Staring, R. Homan, L.W. Bartels, J.P.W. Pluim, "Evaluation of optimization methods for intensity-based 2D-3D registration in X-ray guided interventions", in: SPIE Medical Imaging: Image Processing, SPIE Press, vol. 7962, pp. 796223-1 - 796223-15, 2011. link
The parameter files and scripts used for the paper are available in the parameter database on the wiki.
As a result of this work, the following components are new:
- GradientDifference: a popular metric in the 2D-3D registration literature. It is based on the difference between vertical and horizontal image gradients, weighted by the variance of the
gradient intensities [See Penney et al, doi: 10.1109/42.730403]. The current implementation is derived from the
ITK version and only allows 2D-3D registration problems.
- NormalizedGradientCorrelation: a metric, based on the correlation between normalized image gradients [See Penney et al, doi: 10.1109/42.730403].
The current implementation only allows 2D-3D registration problems.
- PatternIntensity: another popular 2D-3D registration metric, that quantifies the amount of structure that remains with a certain radius within the difference image between
moving and fixed [See Weese et al, doi: 10.1109/4233.681173]. The current implementation only allows 2D-3D registration problems.
- RayCastInterpolator:a new interpolator, which provides the projection of 3D images. Implementation is a copy of the
ITK version with slight changes for compatibility.
- RayCastResampleInterpolator: a new resample interpolator, which provides the projection of 3D images. Implementation is a copy of the
ITK version with slight changes for compatibility.
- Powell: well-known derivative-free optimizer that minimizes a cost function by performing an exact line search optimization. This optimizer is a copy of the
ITK version and may be used for nD-nD registration problems.
- Simplex: well-known derivative-free optimizer that minimizes a cost function by comparing the function values at the vertices of a polytope, called a simplex.
This optimizer is a copy of the
Amoeba optimizer and may be used for nD-nD registration problems.
- Combining transforms defaults to "Compose" now also for
- The ReducedDimensionBSplineInterpolator was not recognized correctly causing the derivate computation to employ finite differencess. Next to possibly getting different results, this caused a large increase in memory usage. Fixed by Coert Metz.
- The win32 and linux64 release binaries are no longer built by default with Mevislab DicomTiff support, to avoid different behaviour between platforms. It is still possible to enable support for this image format if you compile
- Fixed some compiler warnings.
- Fixed some small bugs