The final release of ITK 4.0 took place on December 20th 2011. This new release of ITK is the outcome of 18 months of refactoring efforts, generously sponsored by the National Library of Medicine (NLM), with funds provided by the American Recovery and Reinvestment Act (ARRA).
The main features of this new release include:
A general code cleanup of the toolkit took place, based on focusing on supporting modern C++ compilers and removing code intended for obsolete ones.
The source tree of the toolkit was restructured into modules with limited dependencies among them. The main goals of the modularization are:
A simplified layer, SimpleITK, was built on top of ITK. This layer facilitates the use of ITK in rapid prototyping, education and interpreted languages. The main features of SimpleITK are:
The new registration framework was contributed by the PICSL Laboratory of the University of Pennsylvania. The new image framework, largely based on the features of the ANTS tool developed at PICSL, provides better support for
A new Level Sets framework was contributed by the Megason Lab at Harvard Medical School. The main features of the new framework are
The Finite Elements Methods framework was refactored by a group at the University of Iowa. This refactoring made the FEM framework more consistent with the rest of the toolkit. It also made possible to deploy a fully functional FEM infrastructure that can be used to solve actual mechanical and modeling problems. The code changes included: removal of incompatible smart pointers, improved encapsulation, removed IO functionalities from filters, added SpatialObject support for FEM, added IO support for FEM elements. These changes were accompanied by corresponding modifications in the FEM Deformable Registration framework.
Support for DICOM files was improved in the toolkit. In particular
The Statistics Framework that was refactored around 2007, has now been made the official framework. The main changes include
Many changes where across the toolkit to take advantage of modern C++ features.
The Software Development process for ITK was modernized by:
The Insight Journal was also adapted to take advantage of these new software tools. In particular, it is now possible to submit contributions to the Insight Journal by pointing to existing Git repositories in which the code contribution is continuously being developed. Several features were added for encouraging participation. In particular, support for quick comments and quick rating.
Doxygen documentation generation has been improved, including documentation of groups and modules, wiki example links, and diagrams. An important addition is the support for Crowd-sourcing fixes from the community by enabling them to edit the doxygen web pages directly, and from such edits create Gerrit patches that are directly submitted to developers for review and subsequent merge in to the code base.
Wrapping of the toolkit was improved at two different, but related levels. On one hand WrapITK was embraced as the standard method for wrapping the toolkit to be used from languages such as Python and Java. On the other hand, the SimpleITK layer, wrapped via SWIG, provided an alternative offering for using ITK from many languages.
The infrastructure to wrap ITK was updated to use WrapITK 3.0. Wrapping for Tcl was deprecated, and an effort wwas made on improving support for Python and Java.
Taking advantage of the fact that SimpleITK hid the C++ templates from its API, it is now very easy to use SWIG to wrap SimpleITK for many different languages. Current support is available for: Python, Tcl, Java, R and Lua.