ITK Release 4/Migration Plan/Release Notes/ITKv4 Final Release Notes
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:
- Apache 2.0 License
- Removal of Patented directory
- Code Modularization
- New simplified layer “SimpleITK”
- New registration framework
- New level set framework
- Refactored FEM framework
- New support for video processing
- Including bridges to OpenCV and VXL
- Updated support for DICOM based on GDCM 2.0
- Improved support for large images (above 4Gb)
- Improved support file formats commonly used in microscopy.
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:
- Facilitating the management of further growth of the toolkit
- Improving the software quality by facilitating local computation of quantitative measures of quality, such as code coverage.
- Facilitating the addition of modules from community contributions
- Better insulation from third party libraries
- Improved management of optional components
- Packaging and redistributions of subsection of the toolkit
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:
- C++ library
- Provides a simplified, easy-to-use, procedural interface without templates
- Is distributed under an open source Apache 2.0 License
- Binary distributions for Python and Java
- Removal of C++ Templates from the API
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
- Dense deformation fields (including a new transform that encapsulates a dense deformation field)
- Composite Transforms (grouping multiple transforms into a single one)
- Symmetric registration (where the Fixed and Moving images make unbiased contributions to the registration)
- Multi-Threaded metrics
- New Demons metric
- Point Set registration methods
- New Mutual Information metric
- Diffemorphic deformable registration
- Parameter estimation for transform parameter scaling
Level Sets Framework
A new Level Sets framework was contributed by the Megason Lab at Harvard Medical School. The main features of the new framework are
- Implicit level sets
- Flexible addition of level set Terms via a Term Container
- Support for large number of level sets running simultaneously
- Introduction of geometrical constraints
- Support for Dense Level Set Representation
- Support for Sparse Level Set Representation
- Whitaker Representation
- Shi Representation
- Malcolm Representation
- Region-based Level Sets
- Chan and Vese
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
- GDCM was upgraded to version 2.0
- Support to RT-Structs was added
The Statistics Framework that was refactored around 2007, has now been made the official framework. The main changes include
- Converting Calculators into Filters
- Samples are not DataObjects
- Better traits
- Better types, particularly for 64bits machines and large Samples
Many changes where across the toolkit to take advantage of modern C++ features.
- This involved also the elimination of further support for several old compilers, including: Borland 5.5, Visual Studio 6.0 and 7.0, Sun CC before version 5.9, SGI compilers, MetroWerks, GCC previous to 3.4, and the entire Cygwin platform.
- Support for 64 bits was improved across the toolkit, in particular for the Windows platform.
- The filename extensions of templated implementation files (.txx) was replaced with (.hxx) in order to be more consistent with standards of IDE tools.
The Software Development process for ITK was modernized by:
- Migrating from CVS to Git
- Adopting the code review tool Gerrit
- Developing a system, cdash@home, for distributed testing of patches
- Adopting a new process for dealing with data for testing
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.
The toolkit adopted the Apache 2.0 License in replacement for the BSD license. WrapITK has been integrated into the modularized tree for Python and Java bindings. A large team of developers collaborated in order to bring this release to fruition. The funded team is listed here: http://www.itk.org/Wiki/ITK_Release_4/The_Team. This is a historical event for the ITK community, we encourage you to give it a try and to share your impressions with us.
A general code cleanup of the toolkit also took place, focusing on supporting modern C++ compilers and removing code intended for obsolete ones. The ITK development process was also revamped for version 4 through migration to Git, adoption the code review tool Gerrit, and development of a new process for dealing with testing data.
The Insight Journal, ITK’s open-access journal for medical image processing and visualization, was also adapted to take advantage to the new tools provided in ITK 4.0. The toolkit adopted the Apache 2.0 License as a replacement for the BSD license. Wrap ITK has additionally been integrated into the modularized tree for Python and Java bindings. Doxygen documentation generation has been improved for groups and modules, wiki example links, diagrams, and a crowdsourcing tool for creating Gerrit patches from a web interface.
The release of ITK 4.0 marks a historical event for the ITK community. It was made possible by a large, collaborative team of developers who are fully listed on the ITK Wiki. The code swarm below shows all contributions to ITK 4.0