Changes of elastix 4.0 compared to elastix 3.9
- We added an implementation of Mattes mutual information that uses much less memory, because we do not store the 3D matrix of pdf derivatives anymore. The gain relative to the old implementation depends on the number of parameters of the transformation. It can save about 800 MB of memory for about 200,000 parameters. It also comes with a gain in speed:
By default it is switched off for now, for backwards compatibility. You can switch it on by:
- For a few parameters (500 - 1,500) the old implementation is somewhat faster: 10 - 15%.
- For a little more parameters (5,000) it is about even.
- For a lot of parameters (30,000 - 200,000) the new implementation is much faster: 100 - 600%.
- Reduced the maximum memory footprint of
elastix, by releasing data at some places, whenever it is not required anymore.
- Major speedup and cleanup of the code that generates the deformation field with
transformix. The code is now placed in an external class: the TransformToDeformationFieldSource. This class implements a multi-threaded filter, and uses a trick similar to the resampler to further speed up computation for linear transforms.
- Minor updates of the documentation (typos, tab2space, layout).
- -fPIC is not required anymore to build elastix, since we changed to one executable in
- Added an option
RequiredRatioOfValidSamples for the metrics, which determines how many valid samples have to be drawn at least. It defaults to 0.25.
- Direction cosines are now at least stored.
- For the mutual information metric, the image extrema define the range of the joint histogram. Previously, these extrema were computed over the entire image, now it is done only over the mask. This way, the joint histogram bins are used more efficiently.
- We implemented bounding box support for several samplers. This way, sampling the image is slightly faster.
New classes and/or methods:
- Fixed some small bugs.
- Fixed some crashes with the RandomSamplerSparseMask, FullSampler and GridSampler
- Fixed an error which occurred when omitting nonmandatory components in the parameter file, such as the ImageSampler.
- In the constructor some member variables were redeclared, instead of just initialized. This was reported by Aviv Hurvitz. He got the "Too many samples map outside moving image" error, but only when the parameter file was outside the current working directory.