Insight Segmentation and Registration Toolkit

Last updated
Insight Segmentation and Registration Toolkit
Developer(s) Insight Software Consortium
Initial release31 July 2001;21 years ago (2001-07-31)
Stable release
5.2.1 [1] / 17 August 2021;14 months ago (17 August 2021)
Repository
Written in C, C++, Fortran, Python [2]
Operating system Cross-platform
Type Development library
License Apache 2.0 [3]
Website www.itk.org

ITK is a cross-platform, open-source application development framework widely used for the development of image segmentation and image registration programs. 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 an MRI scan in order to combine the information contained in both.

Contents

ITK was developed with funding from the National Library of Medicine (U.S.) as an open resource of algorithms for analyzing the images of the Visible Human Project. ITK stands for The Insight Segmentation and Registration Toolkit. The toolkit provides leading-edge segmentation and registration algorithms in two, three, and more dimensions. ITK uses the CMake build environment to manage the configuration process. The software is implemented in C++ and it is wrapped for Python. An offshoot of the ITK project providing a simplified interface to ITK in eight programming languages, SimpleITK, is also under active development.

Introduction

Origins

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 Corporate R&D, 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 Principal Investigators for these partners were, respectively, Bill Lorensen at GE CRD, Will Schroeder at Kitware, Vikram Chalana at Insightful, Stephen Aylward with Luis Ibáñez at UNC (both of whom subsequently moved to Kitware), Ross Whitaker with Josh Cates at UT (both now at Utah), and Dimitris Metaxas at UPenn (Dimitris Metaxas is now at Rutgers University). In addition, several subcontractors rounded out the consortium including Peter Ratiu 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.

Technical details

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 an 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 other programming languages such as Java and Python. This enables developers to create software using a variety of programming languages. ITK's implementation employs the technique of generic programming through the use of C++ templates.

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.

Developers and contributors

The Insight Toolkit was initially developed by six principal organizations

and three subcontractors

After its inception the software continued growing with contributions from other institutions including

Funding

The funding for the project is from the National Library of Medicine at the National Institutes of Health. NLM in turn was supported by member institutions of NIH (see sponsors).

The goals for the project include the following:

The source code of the Insight Toolkit is distributed under an Apache 2.0 License (as approved by the Open Source Initiative)

The philosophy of Open Source of the Insight Toolkit was extended to support open science, in particular by providing open access to publications in the domain of Medical Image Processing. These publications are made freely available through the Insight Journal

Community participation

Because ITK is an open-source system, anybody can make contributions to the project. A person interested in contributing to ITK can take the following actions

  1. Read the ITK Software Guide. (This book can be purchased from Kitware's store.)
  2. Read the instructions on how to contribute classes and algorithms to the Toolkit via submissions to the Insight Journal
  3. Obtain access to GitHub.
  4. Follow the Git contribution instructions.
  5. Join the ITK Discourse discussion. The community is open to everyone.

Anyone can submit a patch, and write access to the repository is not necessary to get a patch merged or retain authorship credit. For more information, see the ITK Bar Camp documentation on how to submit a patch.

ITK is copyrighted by the Insight Software Consortium, a non-profit alliance of organizations and individuals interested in supporting ITK. Starting with ITK version 3.6, the software is distributed under a BSD open-source license. It allows use for any purpose, with the possible exception of code found in the patented directory, and with proper recognition. The full terms of the copyright and the license are available at www.itk.org/ITK/project/license.html . Version 4.0 uses Apache 2.0 License.

The licensed was changed to Apache 2.0 with version 4.0 to adopt a modern license with patent protection provisions. From version 3.6 to 3.20, a simplified BSD license was used. Versions of ITK previous to ITK 3.6 were distributed under a modified BSD License. The main motivation for adopting a BSD license starting with ITK 3.6, was to have an OSI-approved license.

Technical Summary

The following sections summarize the technical features of the NLM's Insight ITK toolkit. Design Philosophy The following are key features of the toolkit design philosophy.

Architecture

The following are key features of the toolkit architecture.

Implementation philosophy

The following are key features of the toolkit implementation philosophy.

Build environment

ITK uses the CMake (cross-platform make) build environment. CMake is an operating system and compiler independent build process that produces native build files appropriate to the OS and compiler that it is run with. On Unix CMake produces makefiles and on Windows CMake generates projects and workspaces.

Testing environment

ITK supports an extensive testing environment. The code is tested daily (and even continuously) on many hardware/operating system/compiler combinations and the results are posted daily on the ITK testing dashboard. We use Dart to manage the testing process, and to post the results to the dashboard.

Background references: C++ patterns and generics

ITK uses many advanced design patterns and generic programming. You may find these references useful in understanding the design and syntax of Insight.

Examples

Gaussian-smoothed image gradient

#include"itkImage.h"intmain(){usingImageType=itk::Image<unsignedchar,3>;usingReaderType=itk::ImageFileReader<ImageType>;usingWriterType=itk::ImageFileWriter<ImageType>;usingFilterType=itk::GradientRecursiveGaussianImageFilter<ImageType,ImageType>;ReaderType::Pointerreader=ReaderType::New();WriterType::Pointerwriter=WriterType::New();reader->SetFileName("lungCT.dcm");writer->SetFileName("smoothedLung.hdr");FilterType::Pointerfilter=FilterType::New();filter->SetInput(reader->GetOutput());writer->SetInput(filter->GetOutput());filter->SetSigma(45.0);try{writer->Update();}catch(itk::ExceptionObject&excp){std::cerr<<excp<<std::endl;returnEXIT_FAILURE;}}

Region growing segmentation

#include"itkImage.h"intmain(){usingInputImageType=itk::Image<signedshort,3>;usingOutputImageType=itk::Image<unsignedchar,3>;usingReaderType=itk::ImageFileReader<InputImageType>;usingWriterType=itk::ImageFileWriter<OutputImageType>;usingFilterType=itk::ConnectedThresholdImageFilter<InputImageType,OutputImageType>;ReaderType::Pointerreader=ReaderType::New();WriterType::Pointerwriter=WriterType::New();reader->SetFileName("brain.dcm");writer->SetFileName("whiteMatter.hdr");FilterType::Pointerfilter=FilterType::New();filter->SetInput(reader->GetOutput());writer->SetInput(filter->GetOutput());filter->SetMultiplier(2.5);ImageType::IndexTypeseed;seed[0]=142;seed[1]=97;seed[2]=63;filter->AddSeed(seed);try{writer->Update();}catch(itk::ExceptionObject&excp){std::cerr<<excp<<std::endl;returnEXIT_FAILURE;}}

Additional information

Resources

A number of resources are available to learn more about ITK.

Applications

A great way to learn about ITK is to see how it is used. There are four places to find applications of ITK.

  1. The Insight/Examples/ source code examples distributed with ITK. The source code is available. In addition, it is heavily commented and works in combination with the ITK Software Guide.
  2. The separate InsightApplications checkout.
  3. The Applications web pages. These are extensive descriptions, with images and references, of the examples found in #1 above.
  4. The testing directories distributed with ITK are simple, mainly undocumented examples of how to use the code.

In 2004 ITK-SNAP (website) was developed from SNAP and became a popular free segmentation software using ITK and having a nice and simple user interface.

Data

See also

Contacts

Visit the ITK discussion forum for contacts and help from the community.

Related Research Articles

Java Platform, Standard Edition is a computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition (J2SE).

<span class="mw-page-title-main">FLTK</span>

Fast Light Toolkit is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

<span class="mw-page-title-main">VTK</span>

The Visualization Toolkit (VTK) is an open-source software system for 3D computer graphics, image processing and scientific visualization.

ITK may stand for:

<span class="mw-page-title-main">CMake</span> Cross-platform, compiler-independent build system generator

In software development, CMake is cross-platform free and open-source software for build automation, testing, packaging and installation of software by using a compiler-independent method. CMake is not a build system itself; it generates another system's build files. It supports directory hierarchies and applications that depend on multiple libraries. It is used in conjunction with native build environments such as Make, Qt Creator, Ninja, Android Studio, Apple's Xcode, and Microsoft Visual Studio. It has minimal dependencies, requiring only a C++ compiler on its own build system.

<span class="mw-page-title-main">ParaView</span> Scientific visualization software

ParaView is an open-source multiple-platform application for interactive, scientific visualization. It has a client–server architecture to facilitate remote visualization of datasets, and generates level of detail (LOD) models to maintain interactive frame rates for large datasets. It is an application built on top of the Visualization Toolkit (VTK) libraries. ParaView is an application designed for data parallelism on shared-memory or distributed-memory multicomputers and clusters. It can also be run as a single-computer application.

<span class="mw-page-title-main">Kitware</span>

Kitware, Inc. is a technology company headquartered in Clifton Park, New York. The company is involved in the research and development of open-source software in the fields of computer vision, medical imaging, visualization, 3D data publishing, and technical software development.

<span class="mw-page-title-main">ITK-SNAP</span> Medical imaging software

ITK-SNAP is an interactive software application that allows users to navigate three-dimensional medical images, manually delineate anatomical regions of interest, and perform automatic image segmentation. The software was designed with the audience of clinical and basic science researchers in mind, and emphasis has been placed on having a user-friendly interface and maintaining a limited feature set to prevent feature creep. ITK-SNAP is most frequently used to work with magnetic resonance imaging (MRI), cone-beam computed tomography (CBCT) and computed tomography (CT) data sets.

Qbs is a cross-platform free and open-source software for managing the build process of software. It was designed to support large, complex projects, written in any number of programming languages, primarily C/C++.

<span class="mw-page-title-main">3D Slicer</span> Image analysis and scientific visualization software

3D Slicer (Slicer) is a free and open source software package for image analysis and scientific visualization. Slicer is used in a variety of medical applications, including autism, multiple sclerosis, systemic lupus erythematosus, prostate cancer, lung cancer, breast cancer, schizophrenia, orthopedic biomechanics, COPD, cardiovascular disease and neurosurgery.

<span class="mw-page-title-main">IGSTK</span>

The Image-Guided Surgery Toolkit is a software package oriented to facilitate the development of image-guided surgery applications.

<span class="mw-page-title-main">Orfeo toolbox</span>

In computer science, Orfeo Toolbox (OTB) is a software library for processing images from Earth observation satellites.

<span class="mw-page-title-main">MeVisLab</span>

MeVisLab is a cross-platform application framework for medical image processing and scientific visualization. It includes advanced algorithms for image registration, segmentation, and quantitative morphological and functional image analysis. An IDE for graphical programming and rapid user interface prototyping is available.

<span class="mw-page-title-main">Point Cloud Library</span>

The Point Cloud Library (PCL) is an open-source library of algorithms for point cloud processing tasks and 3D geometry processing, such as occur in three-dimensional computer vision. The library contains algorithms for filtering, feature estimation, surface reconstruction, 3D registration, model fitting, object recognition, and segmentation. Each module is implemented as a smaller library that can be compiled separately. PCL has its own data format for storing point clouds - PCD, but also allows datasets to be loaded and saved in many other formats. It is written in C++ and released under the BSD license.

The following outline is provided as an overview of and topical guide to the Perl programming language:

<span class="mw-page-title-main">Ginkgo CADx</span> Medical imaging software and DICOM viewer

Ginkgo CADx is a multi platform DICOM viewer (*.dcm) and dicomizer. Ginkgo CADx is licensed under LGPL license, being an open source project with an Open core approach. The goal of Ginkgo CADx project is to develop an open source professional DICOM workstation.

<span class="mw-page-title-main">SimpleITK</span> Open-source interface for the ITK framework

SimpleITK is a simplified, open-source interface to the Insight Segmentation and Registration Toolkit (ITK). The SimpleITK image analysis library is available in multiple programming languages including C++, Python, R, Java, C#, Lua, Ruby and Tcl. Binary distributions are available for all three major operating systems.

VoTT is a free and open source electron app for image annotation and labeling developed by Microsoft. The software is written in the TypeScript programming language and used for building end to end object detection models from image and videos assets for computer vision algorithms.

References

  1. "Release 5.2.1". 17 August 2021. Retrieved 5 October 2022.
  2. "Insight Software Consortium / ITK - GitHub". GitHub . 2019-12-17.
  3. "Copyright and License".