ITK 4.12 Release Candidate 1 is ready for testing!

On behalf of the Insight Toolkit community, we are proud to announce that ITK 4.12 release candidate 1 has been tagged and is available for testing! Please take this opportunity to test the new features in the release candidate.

To obtain the source code, use the links:


Morphological watershed segmentation of a CT head slice. From “The watershed transform in ITK – discussion and new developments”, Richard Beare and Gaëtan Lehmann. The Insight Journal. These contributions have been moved into the ITKWatersheds module in the 4.12 release.


A few selected highlights for this release:

– Strain remote module added to ITK. Strain quantifies local deformation of a solid body. In medical imaging, it can be used to quantify growth or atrophy of tissue. The module contains filters to compute a strain tensor image from a displacement field image or a general spatial transform. In both cases, infinitesimal, Green-Lagrangian, or Eulerian-Almansi strain can be generated.

– Many improvements in ITK Python wrapping: convenient functions to read and write images, better integration in Jupyter Notebook, new filters wrapped, build support for Microsoft Visual C++ Compiler for Python 2.7

– Better compilation support for Microsoft Visual Studio 2017, Clang 4, GCC7

– Filters moved out of Review modules: Morphological Watersheds, and itkHessianToObjectnessMeasureImageFilter

– Improvement of palette image support for PNG TIFF and BMP: The user can now choose whether or not to expand the palette image to true color.

– Performance improvements for some ITK filters: itkHistogram (increase speed), itkImagePCAShapeModelEstimator (decrease memory usage).


Please test the release candidate and share your experiences on the mailing list, issue tracker, and Gerrit Code Review.


An Experimental build, which demonstrates how the test suite performs on your local build system, can be submitted to the dashboard [2] with:

Visual Studio builds must also add “-C Release” to the ctest command.


Notify the mailing list if there are any unexpected failures.  Testing your own applications against the RC is also appreciated.


Congratulations to the 23 contributors to this release. We would especially like to recognize the new contributors: Sam Horvath, Shusil Dangi, Ben Boeckel, Yann Le Poul, Jean-Baptiste Vimort, and Samuel Gerber.


The 4.12.0 final release is scheduled for May 24th.


New Features

* Wrapping Improvements

– Enable BridgeNumPy by default with Python wrapping

– Build support for Microsoft Visual C++ Compiler for Python 2.7

– BridgeNumpy integrates new pairs of functions. GetArrayViewFromImage() and GetImageViewFromArray() return views on the source object given as a parameter to the function. Memory is shared among input and output objects and the source object still manages pixel buffer memory. The existing functions GetArrayFromImage() and GetImageFromArray() perform a deep copy of the source object.

– Similar NumPy bridge functions have been created for VNL matrices and VNL vectors.

– Convenience functions imread() and imwrite() have been added to the Python itk namespace. These functions facilitate respectively reading and writing images using ITK without having to specify the input or output image component type. The naming of these functions follows the convention used in several other Python project such as scikit-learn and scipy.

– Better integration in Jupyter Notebook: addressed tab completion bug for IPython >= 5.0.0, replaced underscore with ‘x’ to name attributes that start with a digit to show attributes when trying to autocomplete in IPython.

– Wrap itkN4BiasFieldCorrectionImageFilter, NormalVariateGenerator, and PathToImageFilter.

– Allows calling ImageFileWriter in Python with an ITK filter as input image argument.

– Build Python wrapping with hidden visibility


* New Remote Modules

– Strain: Filters to estimate a strain tensor field from a displacement field or a spatial transformation (


* Core Improvements

– Enable hidden visibility property with NIFTI and GIFTI static libraries

– Fix clearing build tree error

– Add examples and doc build flag support for external modules

– Support for recent Clang in FreeBSD

– Improved support for Visual Studio 2017

– Prefer std::atomic over compiler specific implementation


* Filtering Improvements

– Add OrientedBoudingBox attributes to ShapeLabelMap

– Prefer std::atomic over compiler specific implementation

– Skip generating export headers if module does not contain a target

– Introduce ITK_WRAP_PYTHON_LEGACY to exclude older Python package layout

– Move morphological watersheds out of ITKReview

– Add SetReferenceImage to GenerateImageSource

– Reduce memory usage of itkImagePCAShapeModelEstimator

– Improvement of itkHistogram in order to make it faster

– Better compatibility with OpenCVImageBridge


* IO Improvements

– Improvement of palette image support for PNG, TIFF and BMP


* Documentation Improvements

– Updates to the Software Guide, Doxygen, Wiki and Sphinx Examples


* Remote Module Updates

– BridgeNumPy updated to latest upstream (04.28.2017)


* Third Party Library Updates

– Update SWIG version to 3.0.12

– Update PCRE version to 8.40

– MetaIO updated to latest upstream (04.08.2017)

– KWSys updated to latest upstream (04.20.2017)

– KWIML updated to latest upstream (02.27.2017)

– VNL updated to latest upstream (02.01.2017)


* Improved Code Coverage — we are at 85.7%

– Jon Haitz-Legarreta’s extensive code coverage improvements


* *Lots* of important bug fixes


* And much more! See details in the log below.


Changes from v4.11.0 to v4.12rc01


Questions or comments are always welcome!