ITK 5.0.0 has been released

We are happy to announce that Insight Toolkit (ITK) 5.0.0 has been released! ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

ITK 5.0.0 is a major release that features an incredible number of improvements: This includes major enhancements in the development process, major code refactoring, addition of important features, improvement of ITK Python wrapping, and more.

Python Packages

ITK Python packages can be installed by running:

or to install the conda package, run:

Software Guide

Library Sources

Testing Data

Unpack optional testing data in the same directory where the Library Source is unpacked.

Checksums

Montaging for microscopy imaging files with the new ITKMontage remote module: High-Performance, Open-Source
Microscopy Image Montaging. Matthew McCormick , Dženan Zukić , François Budin , Michael Jackson, Dennis Dimiduk , David Rowenhorst , Sean Donegan, and Michael Groeber.
WBIR 2018.

ITK on GitHub

An important step has been taken to faciliate participation of the community in the development of ITK: The official repository was moved to GitHub! This move includes ITK’s main repository, as well as many other ITK projects such as the ITKExamples, and many ITK remote modules. It is now very easy for anyone to participate in the development of the library. This has already been a success with many new authors getting involved and submitting patches through the GitHub pull-request mechanism. This change also includes moving the issue tracker to the GitHub issue tracker where any problem encountered with ITK should be reported. ITK’s GitHub migration was explained in more detail in ITK 5.0 Beta 3: GitHub. Finally, moving ITK to GitHub made it straightforward to use Microsoft Azure Pipeline Continuous Integration platform: Each pull-request is tested on all 3 major platforms (Windows, Linux, MacOS) and Python builds can be requested to ensure that a patch can be integrated.

C++11

Major C++ code refactoring brought dramatic improvements to ITK’s API and performance (see ITK 5.0 Alpha 1: Modern C++ for more details). ITK now uses the C++11 standard allowing the developers full access to its new powerful features such as range-based loops, constexpr, lambda expressions, and uniform initialization syntax. Using C++ 11 also removes the necessity of many ITK macros (e.g. ITK_NULLPTR, ITK_DELETED_FUNCTION) which have equivalents in the new standard. This also leads to changes in style to match the C++ 11 best practices. This includes replacing typedef calls with the using keyword to improve source code readability. ITK’s C++ code is easier to read, understand, and maintain!

Thread Pool

This new release of ITK also integrates big performance improvements thanks to the refactoring of the multithreading infrastructure with a thread pool available by default, and the possible usage of the Intel Threading Building Blocks (TBB) threading backend (see ITK 5.0 Alpha 2: Performance for benchmarks).

Spatial Objects

Additionally, a major upgrade of the ITK Spatial Object framework, which provides a representation of objects and the mechanism to specify their spatial relationship relative to other objects in a scene, was integrated in this new version of ITK. The new code improves consistency in the programming interface and simplifies implementation and usage (more details in ITK 5.0 Release Candidate 2: Spatial Object’s.

Ranges

ITK 5.0 has a new Experimental namespace. This namespace includes three range class templates, ShapedImageNeighborhoodRange, IndexRange, and ImageBufferRange, to iterate efficiently over a neighborhood of pixels, the indices of an image region, and the pixels of an image buffer, respectively. These ranges can be used in a C++11 range-base for-loop. Their begin() and end() can be passed directly to an std algorithm.

New Features

Other new features in this ITK release include new algorithms, better mesh support (see ITK 5.0 Release Candidate 1: Meshes), new global variable model using one singleton, and better streaming capabilities.

Third Party Libraries

Eigen, a C++ library for linear algebra, was integrated in ITK and gradual transition from VXL to Eigen for Linear algebra is planned. Many third party libraries were updated: VNL, DCMTK, GDCM, HDF5, KWSys, MetaIO, Zlib, GIFTI, nifti, pygccxml.

Remote Modules

Remote modules, which allow easy integration of new image processing algorithm in ITK, were updated and new Python packages compatible with this new release of ITK were created. Four new remote modules were also added to ITK: PhaseSymmetry, IOOpenSlide, Montage, and BSplineGradient (description of the modules in ITK 5.0 Beta 3: GitHub).

Python

Traditionally, ITK in Python had to be used through an object-oriented interface. In this new release, we have added a functional interface which is more Pythonic and should be more familiar to Python programmers. Examples on how to use this new procedural interface are available in ITK 5.0 Beta 1: Pythonic Interface.

Congratulations

Congratulations and thank you to everyone who contributed to this release. Of the 49 authors, we would like to specially recognize the new contributors, Isaiah Norton, maekclena, Rashad Kanavath, Bai Shi, Hui Xie, Martino Pilia, Ally Warner, pierre33, Chao Wu, Gregory C. Sharp, Bryce A Besler, Kwame Kutten, Mihail Isakov, Jerome Schmid, Roman Grothausmann, Alexis Girault, Gabriel A. Devenyi, Marian Klymov, Thomas Janvier, and Forrest Li.

Migration to ITKv5

The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse.

What’s Next

Join us in the creation of advanced, open source scientific image analysis tools. Get started with the ITK examples. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

We have a soft commitment to backwards compatibility to address any potential API or architectual issues until the next feature release. Stay tuned for upcoming announcements on ITK’s integration with modern web technologies and improved support for Remote Module development on GitHub.

Enjoy ITK!

Changes from 5.0 RC 2 to 5.0.0

Questions or comments are always welcome!

X