Insight Toolkit (ITK)
repository·main·Indexed 23 days ago
https://github.com/insightsoftwareconsortium/itkAn open-source, cross-platform library for N-dimensional scientific image processing, specializing in segmentation and registration tasks. The toolkit includes modules for adaptive denoising, anisotropic diffusion, B-Spline gradient approximation, iso-surface extraction via Cuberille, and edge-preserving smoothing with FastBilateralImageFilter. It provides specialized tools such as itk::MultipleImageIterator for multi-channel processing and itk::FixedPointInverseDisplacementFieldImageFilter for inverting deformation fields.
What's inside ITK
- OpenJPEG is an open-source JPEG 2000 codec written in C. It is officially recognized by ISO/IEC and ITU-T as a JPEG 2000 Reference Software. It is released under the BSD 2-clause "Simplified" License, allowing for use and modification in commercial applications provided the copyright is retained in the sources or binaries documentation.
Overview of gdcmjpeg (libjpeg subset)
mainThe
gdcmjpegdirectory contains a specialized subset of the Independent JPEG Group's (IJG)libjpegversion 6b. This subset is tailored for DICOM implementations and includes modifications to support various bit depths and lossless image reading.Key characteristics:
- Build System: The standard
libjpegbuild process is replaced with a CMake build process. - Exclusions: Standard executables like
cjpeganddjpegare not included. - Bit Depth Support: The distribution is modified to allow the generation of 8-bit, 12-bit, or 16-bit JPEG libraries.
- DICOM Compatibility: Includes patches (such as the 'well known' 12 bits Philips MRI DICOM patch) to handle specific JPEG compressions found in DICOM.
- Build System: The standard
Overview of Eigen3 in ITK
mainEigen is a C++ template library integrated into ITK that provides high-performance linear algebra capabilities, including matrices, vectors, numerical solvers, and related algorithms. It is used within the ITK ecosystem for advanced mathematical computations.Overview of OpenJPEG in ITK
mainITK includes a subset of the OpenJPEG project, which is an open-source JPEG 2000 codec written in C. This library is used to support the JPEG 2000 still-image compression standard.
Note that ITK only includes the necessary components to build
libopenjpeg. It does not include the full OpenJPEG distribution (such as the codec subdirectories) and uses a CMake-based build process instead of the standard OpenJPEG build process.Overview of ITKproxTV module
mainITKproxTV is a third-party ITK module that provides proxTV, a toolbox of fast total variation proximity operators. It is specifically designed to support the
TotalVariationmodule within ITK.Key characteristics:
- Automatic Build: The library source is not part of the ITK tree. It is automatically cloned and built from the InsightSoftwareConsortium proxTV fork during the ITK build process using
ExternalProject. - On-demand Configuration: The module is marked as
EXCLUDE_FROM_DEFAULT. It is only configured and built if a dependent module (such asTotalVariation) is enabled in your ITK configuration. - Version Pinning: The specific version used is managed via
proxTVGitTag.cmake.
- Automatic Build: The library source is not part of the ITK tree. It is automatically cloned and built from the InsightSoftwareConsortium proxTV fork during the ITK build process using
Overview of TextureFeatures module
mainThe
TextureFeaturesmodule provides N-dimensional textural feature image filters. These filters compute texture features over a sliding window for each voxel of an input image, generating per-feature output maps. These maps are designed for use in radiomics and computer-vision pipelines.Key capabilities include computing:
- First-order features
- Run-length features
- Co-occurrence (GLCM) features
Overview of The Insight Toolkit (ITK)
mainThe Insight Toolkit (ITK) is an open-source, cross-platform toolkit designed for N-dimensional scientific image processing, segmentation, and registration.
Key Capabilities
- Segmentation: Identifying and classifying data within a digitally sampled representation (e.g., images from CT or MRI scanners).
- Registration: Aligning data or developing correspondences between different datasets (e.g., aligning a CT scan with an MRI scan to combine information).
ITK uses an open governance model and is fiscally sponsored by NumFOCUS.
Overview of the ITK Eigen fork
mainThe ITK repository includes a specialized fork of the Eigen library. This fork is modified to allow Eigen to be embedded directly into the ITK source tree. The primary modifications include:
- Build System Integration: The CMake build system has been modified to integrate Eigen with ITK's module system.
- Symbol Mangling: A header is provided to facilitate the mangling of symbols. This ensures that Eigen's symbols live within an
itkeigennamespace, preventing symbol conflicts if other copies of the Eigen library are loaded within the same process.
Overview of CharLS (JPEG-LS implementation)
mainCharLS is an optimized implementation of the JPEG-LS standard (ISO-14495-1/ITU-T.87) designed for lossless and near-lossless image compression. It is characterized by low complexity (fast compression) and high compression ratios comparable to JPEG 2000. CharLS is intended to outperform other open-source and commercial JPEG-LS implementations in terms of speed.
Note: The version included in this directory is a subset of the CharLS 2.0.0 release, specifically containing only the
src/subdirectory and the originalCMakeLists.txt, with Windows-specific compilation files removed.Overview of PrincipalComponentsAnalysis module capabilities
mainThe
PrincipalComponentsAnalysismodule provides ITK filters for performing principal component analysis on several data types:- Scalar data
- Vector data
- Mesh-vertex data
The flagship implementation is
itk::VectorFieldPCA, which handles ensembles of vector fields on a common mesh.Overview of the Montage module
mainThe Montage module provides tools for mosaic-stitching and 3D reconstruction of large datasets from collections of partially-overlapping 2D slices. It is built around phase correlation image registration.
Core classes include:
itk::PhaseCorrelationImageRegistrationMethoditk::PhaseCorrelationOperatoritk::PhaseCorrelationOptimizeritk::TileMontageitk::TileMergeImageFilteritk::TileConfigurationitk::NMinimaMaximaImageCalculator
Overview of the pygccxml module in ITK
mainThe
pygccxmlmodule in ITK is a reduced distribution of thepygccxmlsource tree containing only the library source. It is a pure Python module and does not require compilation.Key usage details:
- Purpose: It is used by
WrapITKto build C++ wrappings. - Distribution: ITK ships its own version of
pygccxmlto avoid requiring users to install it as a system dependency. - Constraint: ITK does not currently allow the use of a system-installed
pygccxml; it relies exclusively on the version provided within this module.
- Purpose: It is used by