ITK Release 4/Migration Plan/Release Notes/ITKv4 Final Release Notes: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
 
(17 intermediate revisions by one other user not shown)
Line 7: Line 7:
The main features of this new release include:  
The main features of this new release include:  


* Apache 2.0 License
* Removal of Patented directory
* Code Modularization
* Code Modularization
* New simplified layer “SimpleITK”
* New simplified layer “SimpleITK”
Line 14: Line 16:
* New support for video processing
* New support for video processing
** Including bridges to OpenCV and VXL
** Including bridges to OpenCV and VXL
* Updated support for DICOM based on GDCM 2.0
* Updated support for DICOM based on GDCM 2.0 and DCMTK
* Improved support for large images (above 4Gb)
* Improved support for large images (above 4Gb)
* Improved support file formats commonly used in microscopy.
* Improved support file formats commonly used in microscopy.
* Improved wrapping support


A general code cleanup of the toolkit took place, based on focusing on supporting modern C++ compilers and removing code intended for obsolete ones.
A general code cleanup of the toolkit took place, based on focusing on supporting modern C++ compilers and removing code intended for obsolete ones.
== Modularization ==
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
* Wrapping of subsection of the toolkit
== Simple ITK ==
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
* Object-oriented
* 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


== Registration Framework ==
== Registration Framework ==
Line 32: Line 58:
* New Mutual Information metric
* New Mutual Information metric
* Diffemorphic deformable registration
* Diffemorphic deformable registration
* Parameter estimation for transform parameter scaling


== Level Sets Framework ==
== Level Sets Framework ==
Line 37: Line 64:
A new Level Sets framework was contributed by the Megason Lab at Harvard Medical School. The main features of the new framework are
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
 
== FEM Framework ==
 
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.
 
== DICOM ==
 
Support for DICOM files was improved in the toolkit. In particular
 
* GDCM was upgraded to version 2.0
* DCMTK support was added
* Support for RT-Structs was added
* Support for PACS was added
 
== Statistics Framework ==
 
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
 
== C++ Modernization ==
 
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.


= Infrastructure =
= Infrastructure =
Line 43: Line 110:
== Software Process ==
== Software Process ==


The '''Software Development''' process for ITK was modernized by:
The Software Development process for ITK was modernized by:


* Migrating from CVS to Git
* Migrating from CVS to Git
Line 52: Line 119:
== Insight Journal ==
== Insight Journal ==


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.
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 ==
== Doxygen Documentation ==


Doxygen documentation generation has been improved, including documentation of groups and modules, wiki example links, diagrams, and a crowd-sourcing tool to create Gerrit patches from the web interface.
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 ==
== Wrapping ==


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.
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.
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.


=== WrapITK ===


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 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.


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.
=== SimpleITK ===


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
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.

Latest revision as of 03:11, 24 December 2011

Overview

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).

Features

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 and DCMTK
  • Improved support for large images (above 4Gb)
  • Improved support file formats commonly used in microscopy.
  • Improved wrapping support

A general code cleanup of the toolkit took place, based on focusing on supporting modern C++ compilers and removing code intended for obsolete ones.

Modularization

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
  • Wrapping of subsection of the toolkit

Simple ITK

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
  • Object-oriented
  • 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

Registration Framework

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

FEM Framework

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.

DICOM

Support for DICOM files was improved in the toolkit. In particular

  • GDCM was upgraded to version 2.0
  • DCMTK support was added
  • Support for RT-Structs was added
  • Support for PACS was added

Statistics Framework

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

C++ Modernization

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.

Infrastructure

Software Process

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

Insight Journal

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

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

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.

WrapITK

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.

SimpleITK

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.