Difference between revisions of "ITK/About"

From KitwarePublic
< ITK
Jump to navigationJump to search
m (moved ITK About to ITK/About: Naming convention.)
Line 3: Line 3:
The Insight Toolkit (ITK) is an open-source software toolkit for performing registration and segmentation. ''Segmentation'' is the process of identifying and classifying data found in a digitally sampled representation. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. ''Registration'' is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both.
The Insight Toolkit (ITK) is an open-source software toolkit for performing registration and segmentation. ''Segmentation'' is the process of identifying and classifying data found in a digitally sampled representation. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. ''Registration'' is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both.


ITK is implemented in C++. ITK is cross-platform, using the [http://www.cmake.org/ CMake] build environment to manage the compilation process. In addition, an automated wrapping process generates interfaces between C++ and interpreted programming languages such as [http://www.tcl.tk/ Tcl], [http://java.sun.com/ Java], and [http://www.python.org/ Python] (using [http://www.cableswig.org/ CableSwig]). This enables developers to create software using a variety of programming languages. ITK's C++ implementation style is referred to as [http://en.wikipedia.org/wiki/Generic_programming generic programming] (i.e., using templated code). Such C++ templating means that the code is highly efficient, and that many software problems are discovered at compile-time, rather than at run-time during program execution.
ITK is implemented in C++. ITK is cross-platform, using the [http://www.cmake.org/ CMake] build environment to manage the compilation process. In addition, an automated wrapping process generates interfaces between C++ and interpreted programming languages such as [http://java.sun.com/ Java] and [http://www.python.org/ Python]. This enables developers to create software using a variety of programming languages. ITK's C++ implementation style is referred to as [http://en.wikipedia.org/wiki/Generic_programming generic programming] (i.e., using templated code). Such C++ templating means that the code is highly efficient, and that many software problems are discovered at compile-time, rather than at run-time during program execution.


Because ITK is an open-source project, developers from around the world can use, debug, maintain, and extend the software. ITK uses a model of software development referred to as [http://www.extremeprogramming.org/ extreme programming]. ''Extreme programming'' collapses the usual software creation methodology into a simultaneous and iterative process of design-implement-test-release. The key features of extreme programming are communication and testing. Communication among the members of the ITK community is what helps manage the rapid evolution of the software. Testing is what keeps the software stable. In ITK, an extensive testing process (using [http://public.kitware.com/Dart/HTML/Index.shtml Dart]) is in place that measures the quality on a daily basis. The [http://public.kitware.com/dashboard.php?name=itk ITK Testing Dashboard] is posted continuously reflecting the quality of the software.
Because ITK is an open-source project, developers from around the world can use, debug, maintain, and extend the software. ITK uses a model of software development referred to as [http://www.extremeprogramming.org/ extreme programming]. ''Extreme programming'' collapses the usual software creation methodology into a simultaneous and iterative process of design-implement-test-release. The key features of extreme programming are communication and testing. Communication among the members of the ITK community is what helps manage the rapid evolution of the software. Testing is what keeps the software stable. In ITK, an extensive testing process (using [http://www.cdash.orgc CDash]) is in place that measures the quality on a daily basis. The [http://public.kitware.com/dashboard.php?name=itk ITK Testing Dashboard] is posted continuously reflecting the quality of the software.


== The History of ITK ==
== The History of ITK ==

Revision as of 17:03, 11 February 2012

About the Insight Toolkit

The Insight Toolkit (ITK) is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in a digitally sampled representation. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both.

ITK is implemented in C++. ITK is cross-platform, using the CMake build environment to manage the compilation process. In addition, an automated wrapping process generates interfaces between C++ and interpreted programming languages such as Java and Python. This enables developers to create software using a variety of programming languages. ITK's C++ implementation style is referred to as generic programming (i.e., using templated code). Such C++ templating means that the code is highly efficient, and that many software problems are discovered at compile-time, rather than at run-time during program execution.

Because ITK is an open-source project, developers from around the world can use, debug, maintain, and extend the software. ITK uses a model of software development referred to as extreme programming. Extreme programming collapses the usual software creation methodology into a simultaneous and iterative process of design-implement-test-release. The key features of extreme programming are communication and testing. Communication among the members of the ITK community is what helps manage the rapid evolution of the software. Testing is what keeps the software stable. In ITK, an extensive testing process (using CDash) is in place that measures the quality on a daily basis. The ITK Testing Dashboard is posted continuously reflecting the quality of the software.

The History of ITK

In 1999 the US National Library of Medicine of the National Institutes of Health awarded a three-year contract to develop an open-source registration and segmentation toolkit, which eventually came to be known as the Insight Toolkit (ITK). ITK's NLM Project Manager was Dr. Terry Yoo, who coordinated the six prime contractors who made up the Insight Software Consortium. These consortium members included the three commercial partners GE Research, Kitware Inc., and MathSoft (the company name is now Insightful); and the three academic partners University of North Carolina (UNC), University of Tennessee (UT), and University of Pennsylvania (UPenn). The Principle Investigators for these partners were, respectively, Bill Lorensen with Jim Miller at GE Research, Will Schroeder at Kitware, Vikram Chalana at Insightful, Stephen Aylward with Luis Ibanez at UNC (Luis is now at Kitware), Ross Whitaker with Josh Cates at UT (both now at Utah), and Dimitri Metaxas at UPenn (now at Rutgers). In addition, several subcontractors rounded out the consortium including Peter Raitu at Brigham & Women's Hospital, Celina Imielinska and Pat Molholt at Columbia University, Jim Gee at UPenn's Grasp Lab, and George Stetten at University of Pittsburgh.

ITK Developers

The best way to determine the names of developers is to view the CVS source code repository logs. Most of the early developers are listed in the following, however, many developers beyond those listed here will participate in the development of ITK as the code grows and becomes publicly accessible.

Some of the early developers include:

  • Elsa Angelini - Columbia, segmentation algorithms
  • Brian Avants - UPenn; FEM classes, registration algorithms
  • Stephen Aylward - UNC; architecture, algorithms
  • Dan Blezek - GE CRD; testing infrastructure
  • Josh Cates - Utah; imaging and segmentation classes and filters
  • Ting Chen - UPenn, segmentation algorithms
  • Jeffrey Duda - UPenn; FEM classes, registration algorithms
  • James Gee - UPenn; FEM architecture, registration algorithms
  • Bill Hoffman - Kitware; CMake (build process); vxl/vnl numerics; infrastructure (smart pointers, object factories, callback mechanism)
  • Paul Hughett - UPenn; quality, algorithms
  • Luis Ibanez - UNC (now Kitware); imaging classes and filters
  • Celina Imielinska - Columbia, segmentation algorithms
  • Yinpeng Jin - Columbia, segmentation algorithms
  • Brad King - Kitware; Mesh class, autowrapping of C++ code
  • Bill Lorensen - GE CRD; testing, requirements, architecture
  • Ken Martin - Kitware; Build process, architecture, infrastructure
  • Dimitris Metaxas - UPenn, segmentation algorithms
  • Jim Miller - GE CRD; Image classes, iterators, pipeline update mechanism
  • Lydia Ng - Mathsoft (now Insightful); Image filters, clustering/segementation algorithms
  • Aljaz Noe - UPenn; FEM classes
  • Sayan Pathak – MathSoft (now Insightful); image clustering/segementation algorithms
  • Will Schroeder - Kitware; architecture, Mesh classes, documentation, algorithms, core classes
  • Marcelo Siqueira - UPenn; FEM classes
  • George Stetton - Pittsburgh; image filters, algorithms
  • Tessa Sundaram - UPenn; FEM classes, registration algorithms
  • Jayaram Udupa - Upenn, segmentation algorithms
  • Ross Whitaker - Utah; architecture, algorithms
  • Ying Zhuge - UPenn, segmentation algorithms



ITK: [Welcome | Site Map]