Releases: InsightSoftwareConsortium/ITK
ITK 5.4 Release Candidate 4: ALL THE DICOMs
We are happy to announce the Insight Toolkit (ITK) 5.4 Release Candidate 4 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
🔦 Highlights
The Insight Toolkit (ITK) has further enhanced its DICOM capabilities in the latest release, building on over 25 years of extensive clinical usage and application. DICOM (Digital Imaging and Communications in Medicine) is a valuable standard handling, storing, printing, and transmitting information in medical imaging. It includes a wide range of medical data types and allows for various imaging modalities and workflow information, posing significant challenges due to its extensive support for diverse medical content and variations in vendor implementations and adherence to the standard.
This release introduces expanded support for additional modality features and crucial spatial metadata for Secondary Capture images. ITK significantly improves the way medical imaging data is processed and interpreted and ensures robust support for diverse DICOM applications.
The impact of spatial metadata handling on the NLM Visible Human cryomacrotome anatomic secondary capture images, available in the NIH Imaging Data Commons, when visualized in 3D Slicer. Left: before ITK v5.4rc04, Right: after. Screenshots courtesy Steve Pieper.
The development of ITK’s DICOM support is a testament to a robust community-driven effort involving ITK developers, maintainers from DICOM library projects such as GDCM and DCMTK, and curators of the DICOM standard. This release includes collaborative contributions from notable community members including Mikhail Isakov, Jon Haitz Legarreta Gorroño, Sean McBride, Martin Hoßbach, Mathieu Malaterre, Michael Onken, Steve Pieper, Andras Lasso, David Clunie, and Andrey Fedorov.
This release candidate also expands on our support for elegant, performant, modern C++. For example, specializations of std::tuple_size
and std::tuple_element
for itk::ImageRegion
in order to support C++17 structured bindings enable compile-time optimized statements to provide a multidimensional region's index and size:
auto [index, size] = image.GetRequestedRegion();
For more information on ITK 5.4's modern C++ support, see the Release Candidate 1 release notes.
Moreover, this release candidate extends the toolkit's sustainability and Python support through Stable ABI Python wheels. This is made possible by upgrades to SWIG and scikit-build-core, the modern Python packaging standard evolution of scikit-build classic. Python 3.11 wheels will be recognized by pip
and work with Python 3.11, 3.12, 3.13, 3.14, etc. While we also provide cross-platform wheels for Python 3.8-3.10, we can only use the Stable ABI with Python 3.11 because it is required for itk
's NumPy support.
ITK Remote Modules now also have GitHub Action-driven mac ARM / Apple Silicon Python wheel generation support. While a Remote Module setup.py file is still supported in ITK 5.4, migration to a scikit-build-core pyproject.toml file is encouraged. One important advantage is the generation of Stable ABI wheels for Python 3.11+. To migrate to scikit-build-core, use this pyproject.toml template and remove the setup.py file.
ITK 5.4 contains many additional improvements; highlights can be found below along with a more detailed changelog. For a summary of changes that continue our sustainability evolution with Web3 testing data, see the 5.4 Release Candidate 2 release notes.
💾 Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
✨ Features
Python
- Wrapping for
itk.PhasedArray3DSpecialCoordinatesImage
- Better support for multi-component images in
image_from_vtk_image
itk.imread
supports aseries_uid
kwarg for DICOM series selection- TBB version updated to latest stable version, disabled on Intel macOS
- Python binaries for 3.8-3.11 across platforms
- Python 3.11 uses the Stable ABI -- works with Python 3.11+
- Python 3.7 is no longer supported
- Apple Silicon Remote Module GitHub Action wheels
- Updated to the latest version of scikit-build-core
- Import time improvements with
torch
C++
- C++17 is now required
- Many style improvements for modern C++ and consistency
- GCC 13 support
- Name mangling prefix for third party libraries is configurable
- Update mangled 3rd-parties to use
MANGLE_PREFIX
CMake variable - Many improvements to code coverage
- Enhanced NRRD and Nifti metadata support
- CMake
OPTIONAL_COMPONENTS
support - Apply cmake-format for a consistent CMake style
get()
member function toitk::SmartPointer
itk::Size::CalculateProductOfElements()
, to compute number of pixelsDeref(T *)
, to ease dereferencing a pointer safelyitk::ShapedImageNeighborhoodRange
support C-array of offsets (by C++17)- Add
itk::Copy(const T & original)
, which simply returns a copy - Make
itk::ImageRegion
trivially copyable, remove inheritance (FUTURE)
Performance
- Use index/point transforms without bounds checking
- Improved SSE2 detection
- Many improvements to how locks are handled
- Major
itk::SpatialObject
performance improvements
Documentation
- New GitHub Action to check spelling
- Doxygen formatting cleanup
- Doxygen spelling fixes
- Doxygen Insight Journal links are consistent
- Many Doxygen improvements to the content
- Software Guide updated for style modernization
- Change the Insight Journal handle links to insight-journal links
- Replace
itkTypeMacro
withitkOverrideGetNameOfClassMacro
Remote module updates
New modules:
- FastBilateral - A Fast Approximation to the Bilateral Filter for ITK. Insight Journal article.
Updated modules:
- BSplineGradient
- BoneMorphometry
- Cleaver
- Cuberille,
- CudaCommon
- FPFH
- GenericLabelInterpolator
- HASI
- HigherOrderAccurateGradient
- IOMeshSTL
- IOMeshSWC
- IOScanco
- LabelErodeDilate
- MeshToPolyData
- MinimalPathExtraction
- Montage
- MorphologicalContourInterpolation
- ParabolicMorphology
- RANSAC
- RLEImage
- RTK
- Shape
- SimpleITKFilters
- SplitComponents
- [Strain](http...
ITK 5.4 Release Candidate 2: Web3 Testing Data
We are happy to announce the Insight Toolkit (ITK) 5.4 Release Candidate 2 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
🔦 Highlights
ITK 5.4 marks a significant feature update aimed at bolstering the project's long-term sustainability. Specifically, this release harnesses the power of Web3 technology to enhance the process of contributing new data for collaborators, streamline software release management for quicker and more efficient rollouts, and facilitate decentralized, cost-efficient, and redundant data storage for extended distribution purposes.
Since every local Git repository contains a copy of the entire project history, it is important to avoid adding large binary files directly to the repository. Large binary files added and removed throughout a project's history will cause the repository to become bloated, take up too much disk space, require excessive time and bandwidth to download, etc.
A solution to this problem which has been adopted by ITK is to store binary files, such as images, in a separate location outside the Git repository, then download the files at build time with CMake.
A "content link" file contains an identifying cryptographic hash or Content Identifier (CID). The content link is stored in the Git repository at the path where the file would exist, but with a .cid
extension appended to the file name. CMake will find these content link files at build time, download them from a list of server resources, and create symlinks or copies of the original files at the corresponding location in the build tree.
The CID is a self-describing hash following the multiformats standard created by the InterPlanetary Filesystem (IPFS) community. A file with a CID for its filename is content-verifiable. Locating files according to their CID makes content-addressed, as opposed to location-addressed, data exchange possible. This practice is the foundation of the decentralized web, also known as the dWeb or Web3. By adopting Web3, we gain:
- Permissionless data uploads
- Robust, redundant storage
- Local and peer-to-peer storage
- Scalability
- Sustainability
Contributors to ITK can upload their data through a simple web app, (alt web3 link) that utilizes a free CID pinning service, web3.storage.
Data used in the ITK Git repository is periodically tracked in a dedicated Datalad repository, the ITKData DataLad repository. DataLad is a free and open source, Git-based distributed data management system that keeps track of data, ensures reproducibility, and supports collaboration. Versioned testing data trees can be browsed in a natural, nested directory / file layout, either via DataLad or IPFS's UnixFS storage.
The tracked data is stored across redundant locations so it can be retrieved from any of the following:
- Local IPFS nodes
- Peer IPFS nodes
- web3.storage
- pinata.cloud
- Kitware's IPFS Server
- ITKTestingData GitHub Pages CDN
- Kitware's Apache HTTP Server
- Local testing data cache
- Archive tarballs from GitHub Releases
Testing data workflow. Testing or example data is uploaded to IPFS via the content-link-upload.itk.org web app. This pins the data on multiple servers across the globe. At release time, the data is also pinned on multiple servers in the USA and France and community pinners. At release time, the data is also stored in the DataLad Git repository, served on an Apache HTTP server, and served on the GitHub Pages CDN. At test time an ITK build can pull the data from a local cache, archive tarball, the Apache HTTP server, GitHub Pages CDN, or multiple IPFS HTTP gateways.
For more information, see our testing data documentation.
ITK 5.4 contains many additional improvements; highlights can be found below along with a more detailed changelog. For a summary of changes that continues our modern C++ evolution see our 5.4 Release Candidate 1 release notes.
💾 Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
✨ Features
Python
- Wrapping for
itk.PhasedArray3DSpecialCoordinatesImage
- Better support for multi-component images in
image_from_vtk_image
itk.imread
supports aseries_uid
kwarg for DICOM series selection- TBB version updated to latest stable version, disabled on Intel macOS
- Python binaries for 3.7-3.11 across platforms
- This will be the last release with Python 3.7 suppport
- Remote module GitHub action updated, Python 3.7 is not supported in Remote module builds
- Updated to the latest version of scikit-build
C++
- C++17 is now required
- Many style improvements for modern C++ and consistency
- GCC 13 support
- Name mangling prefix for third party libraries is configurable
- Update mangled 3rd-parties to use
MANGLE_PREFIX
CMake variable - Many improvements to code coverage
- Enhanced NRRD and Nifti metadata support
- Apply cmake-format for a consistent CMake style
Performance
- Use index/point transforms without bounds checking
- Improved SSE2 detection
- Many improvements to how locks are handled
Documentation
- New GitHub Action to check spelling
- Doxygen formatting cleanup
- Doxygen spelling fixes
- Doxygen Insight Journal links are consistent
- Many Doxygen improvements to the content
- Software Guide updated for style modernization
- Change the Insight Journal handle links to insight-journal links
- Replace
itkTypeMacro
withitkOverrideGetNameOfClassMacro
Remote module updates
Updated modules:
- BSplineGradient
- BoneMorphometry
- Cleaver
- Cuberille,
- CudaCommon
- FPFH
- GenericLabelInterpolator
- HASI
- HigherOrderAccurateGradient
- IOMeshSTL
- IOMeshSWC
- IOScanco
- LabelErodeDilate
- MeshToPolyData
- MinimalPathExtraction
- Montage
- MorphologicalContourInterpolation
- ParabolicMorphology
- RANSAC
- RLEImage
- RTK
- Shape
- SimpleITKFilters
- SplitComponents
- [Strain](https://github.com/KitwareMedical...
ITK 5.4 Release Candidate 1: C++17
We are happy to announce the Insight Toolkit (ITK) 5.4 Release Candidate 1 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
🔦 Highlights
ITK 5.4 is a feature release that continues our modern C++ evolution by requiring C++17. The toolkit progresses in performance with a simple and elegant style and syntax. Through hundreds of changes in this release, we advance in readability and maintainability for the library and client code, often facilitated by improvements in the C++ standards.
Community contributions through Remote extension Modules are a valuable source of innovation in ITK, and updates to 30 modules in this release are no exception. A few examples of the Remote Modules updated include: BoneMorphometry, Cleaver, GenericLabelInterpolator, IOScanco, LabelErodeDilate, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, ParabolicMorphology, RANSAC, ReconstructionToolkit (RTK), TextureFeatures, TubeTK, Ultrasound, VkFFTBackend, and WebAssemblyInterface. New modules can quickly be created with a cookiecutter and cross-platform testing for high quality development and Python package generation is supported by a reusable GitHub Action. For more information, see Chapter 9 of the ITK Software Guide.
Highlights from the ITKElastix Remote Module presentation at SciPy 2023, the Annual Scientific Computing with Python Conference. Konstantinos Ntatsis, Niels Dekker, Viktor van der Valk, Tom Birdsong, Dženan Zukić, Stefan Klein, Marius Staring, & Matthew McCormick. (2023). itk-elastix: Medical image registration in Python [SciPy 2023 Poster]. Zenodo. https://doi.org/10.5281/zenodo.8136801.
💾 Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
✨ Features
Python
itk.imread
supports aseries_uid
kwarg for DICOM series selection- TBB version updated to latest stable version, disabled on Intel macOS
- Python binaries for 3.7-3.11 across platforms
- This will be the last release with Python 3.7 suppport
- Remote module GitHub action updated, Python 3.7 is not supported in Remote module builds
- Updated to the latest version of scikit-build
C++
- C++17 is now required
- Many style improvements for modern C++
- GCC 13 support
- Name mangling prefix for third party libraries is configurable
- Many improvements to code coverage
- Improved SSE2 detection
- Enhanced NRRD and Nifti metadata support
Documentation
- Doxygen formatting cleanup
- Doxygen spelling fixes
- Doxygen Insight Journal links are consistent
- Software Guide updated for style modernization
Remote module updates
Updated modules:
- BSplineGradient
- BoneMorphometry
- Cleaver
- Cuberille,
- CudaCommon
- FPFH
- GenericLabelInterpolator
- HASI
- HigherOrderAccurateGradient
- IOMeshSTL
- IOMeshSWC
- IOScanco
- LabelErodeDilate
- MeshToPolyData
- MinimalPathExtraction
- Montage
- MorphologicalContourInterpolation
- ParabolicMorphology
- RANSAC
- RLEImage
- RTK
- Shape
- SimpleITKFilters
- SplitComponents
- Strain
- TextureFeatures
- Thickness3D
- TubeTK
- Ultrasound
- VkFFTBackend
- WebAssemblyInterface
Third party library updates
- eigen
- gdcm
- googletest
- kwsys
- nifti
- vxl
- zlib-ng
🙏 Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 42 authors who contributed since v5.3.0, we would like to specially recognize the new contributors:
huangjxbq, Sankhesh Jhaveri, adrinkwater, FabioLolix, Vaibhaw, Ningfei Li, Max Aehle, Noah Egnatis, Federico Zivolo, Patrick Linnane, LAURENDEAU Matthieu, Shreeraj Jadhav, Shengpeng YU, Fernando Bordignon, and Andras Lasso.
🗣️ What's Next
Our next release candidate will include improvements based on experiences with 5.4 RC 1. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
ITK Changes Since v5.3.0
Andras Lasso (1):
Bug Fixes
- Fix read/write of displacement field in NIFTI file format (d007ee8e78)
Bradley Lowekamp (20):
Enhancements
- Add VectorImage support to MaskNegateImageFilter (e3a1a598c8)
- Set ITK_TEST_OUTPUT_DIR with module path (7d50786353)
- Use generator/lambda ITK filter for pixel computation (0624dad082)
- Restore integer support for laplacian sharpening (6a5060be54)
Platform Fixes
- Supress warning in MSVC for non-float complex (3a9c76273e)
- fix linkage for MINCTransformIO (97f003cb91)
- Supress warning in MSVC for non-float complex (a7a3e5dfe0)
- Address HasNumericTraits failure for Vector pixel type. (c9fc138886)
- address missing enum error (dbc9c9112f)
- QualifiedIterator follow rule of zero (df6aa66e40)
Bug Fixes
- Set GTest discovery timeout to 120 (050bab52f2)
- Restore setting TargetPoints after ReachMode ([bb0f6e8](https://github.com/InsightSoftwareC...
ITK 5.3.0: 3D Slicer Python Packages
ITK 5.3.0 Release Notes
We are exceedingly pleased to announce the Insight Toolkit (ITK) 5.3.0 is available for download! 🎉 🎅 🎁 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration in a spatially-oriented architecture.
🔦 Highlights
ITK 5.3 is a feature release that
- accelerates performance
- provides new segmentation, shape analysis, and registration algorithms
- improves documentation
- adds Python-driven distributed computing support
- adds 3D Slicer Python package support
- and many more improvements
ITK 5.3.0 highlights itk
Python package support in 3D Slicer. Binary macOS, Linux, and Windows itk-*
Python packages can be installed directly into Slicer's Python runtime using standard Slicer mechanisms. Python packages from the main repository can be installed along with wheels built from Remote Modules. Slicer module development is supported by itk
's Python compatibility with NumPy and compatibility with VTK.
Alignment of primate skulls with SlicerMorph through ITK and ITK remote module Python packages. Registration of the skulls facilicates shape-based quantification of the morphological characteristics of specimens and related species.
ITK 5.3.0 also includes Python dictionary conversions functions, itk.dict_from_image
, itk.image_from_dict
, itk.dict_from_mesh
, itk.mesh_from_dict
, and itk.dict_from_transform
, itk.transform_from_dict
. Additional remote modules were contributed to support point set registration, ITKFPFH computes feature points that could be used to obtain salient points while performing registration of two point clouds, and ITKRANSAC performs feature-based point cloud registration with the Random Sample Consensus (RANSAC) algorithm. A new GitHub Action was created to faciliate testing, packaging, and maintenance of remote modules. The Action includes recent developments to support the creation of 3.11 Python packages, ARM and GPGPU-capable Python packages.
💾 Download
Python Packages
Install ITK Python packages with:
pip install --upgrade itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
✨ Features
Python
- Python packages now include oneTBB support for improved performance
- Following CPython's deprecation schedule, Python 3.6 is no longer supported
- Python packages added for Python 3.10, 3.11
- Initial Python wrapping is available for the Video modules
TransformToDisplacementField
is now available in Python- Pythonic IO functions
itk.imread
understandspathlib.Path
's - New
repr
foritk.Matrix
np.asarray
works onitk.Matrix
DCMTKImageIO
wrapping addressedGradientDifferenceImageToImageMetric
wrappedSynImageRegistrationMethod
,BSplineSynImageRegistrationMethod
wrappedConjugateGradientLineSearchOptimizerv4
wrapped- Wrap
ImageRegistrationMethodv4
foritk.Mesh
- Wrap
PointSetToPointSetMetric
,PointSetToPointSetRegistrationMethod
- Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4
- Nearly all registration v4 classes are now wrapped
VectorImage
input forDisplacementFieldTransform
- Python wrapping for spatial orientation functionality
- PyImageFilter wrapped for additional types, supports pipeline functionality
- NumPy array interfaces for
itk.PointSet
,itk.Mesh
- manylinux_2_28 and manylinux2014 wheels are provided
- Dask support for
itk.Image
,itk.PointSet
,itk.Mesh
,itk.Transform
- Linux x86_x64 binary Python packages are available for older and newer C++ standard libraries ABI's
- Wrap
itk.PointsLocator
MetaDataObject
wrapping foritk.Matrix
- Python dictionary conversion functions:
itk.dict_from_image
,itk.image_from_dict
,itk.dict_from_mesh
,itk.mesh_from_dict
,itk.dict_from_transform
,itk.transform_from_dict
.
C++
- C++14 is now required
- The minimum CMake version required is now 3.16.3
- New functions:
MakePoint
,MakeVector
,MakeIndex
,MakeSize
. - Targets in Visual Studio and other IDE's are now organize hierachically by ITK Group and Module
- Most of
itk::mpl
meta-programming functions replaced by C++14 equivalents - Performance accelerations for b-spline interpolation, Mattes mutual information metric computation
- Improved modern C++ adoption, e.g. additional adoption of
constexpr
,auto
itk::ReadMesh
,itk::WriteMesh
simple reader functions available, similar toitk::ReadImage
,itk::WriteImage
- FFT backends are now registered through the object factory mechanism
- Add
cbegin()
andcend()
member functions toIndex
,Offset
,Size
- Add
itk::MakeFilled<TContainer>(value)
itk::ConvertNumberToString<TValue>(val)
convenience functionitk::bit_cast<TDestination>(source)
functionitk::PolyLineCell
InputSpaceName
andOutputSpaceName
support foritk::Transform
qfac
,qt_xyz
added to Nifti metadataLZW
compression support- Support requested output region in FFT filters
- New
itkBooleanMacro
for boolean ivar - Improved support for large Nifti files
- Mimic C++20
std::make_unique_for_overwrite
for dynamic arrays - Add DataObject::UpdateSource() alternative to GetSource()->Update()
- Support
itk::Similarity3DTransform
initk::LandmarkBasedTransformInitializer
- Many code coverage improvements
New filters
itk::TransformGeometryImageFilter
: applies a rigid transform to anImage
's metadata.- 1D FFT classes
- Interface classes for forward, inverse transformations
- Vnl implementations
- FFTW implementations
itk::TriangleMeshCurvatureCalculator
- Gaussian curvature calculator foritk::Mesh
FFTDiscreteGaussianImageFilter
-- discrete gaussian filters via FFTs
Remote module updates
New remote modules:
- HASI: High-Throughput Applications for Skeletal Imaging
- ITKGrowCut: segments a 3D image from user-provided foreground and background seeds
- ITKMeshToPolyData: Convert an ITK Mesh to a simple data structure compatible with vtkPolyData
- ITKCudaCommon: Framework for processing images with CUDA
- itk-wasm WebAssemblyInterface: Build WebAssembly processing pipelines to native executables and support ITK WebAssembly file formats
- ITKCleaver: Multimaterial tetrahedral meshing.
- ITKIOMeshSWC: Read meshes from SWC files, a format for representing neuron morphology.
- ITKFPFH: Compute feature points that could be used to obtain salient points while performing registration of two point clouds.
- ITKRANSAC: Feature-based point cloud registration with the Random Sample Consensus (RANSAC) algorithm.
Updated remote modules: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, [BioCell](https://github.com/I...
ITK 5.3 Release Candidate 4: Distributed Computing
We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 4 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.3 is a feature release that accelerates performance, provides new segmentation and shape analysis algorithms, improves documentation, adds distributed computing support, among many more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes. For more information about new segmentation and shape analysis algorithms, see the 5.3 RC 2 Release Notes. For more information about documentation improvements, see the 5.3 RC 3 Release Notes.
ITK 5.3 RC 4 highlights distributed computing support with Dask. Dask is a Python library that makes scaling analysis easy through simple programming on a laptop that can then be deployed to HPC or cloud computing resources. In ITK 5.3 RC 4, Dask support applied in medical imaging, bioimaging, and material science, is robust (caveat: import itk
should be called in Dask worker functions). Furthermore, support was expanded from NumPy array views on itk.Image
's to full metadata-preserving distributed computing with itk.Image
, itk.Mesh
, itk.PointSet
, and itk.Transform
. With ITK's Dask support, batch processing a cohort of thousands of medical images or processing biomicroscopy, histopathology, or geospatial images with trillions of pixels is now a matter of minutes instead of weeks.
ITK 5.3 RC 4 also includes advancements in Python interface file (.pyi
) support and new remote modules to build WebAssembly processing pipelines to native executables and support ITK WebAssembly file formats, perform multimaterial tetrahedral meshing from segmentations, and read meshes from SWC files, a format for representing neuron morphology.
Knee MRI mapping of cartilage thickness in osteoarthritis that leverages ITK's Dask support for distributed processing of large patient cohorts over the preprocessing, segmentation, registration, and post-processing steps of the analysis pipeline.
Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Features
Python
- Python packages now include oneTBB support for improved performance
- Following CPython's deprecation schedule Python 3.6 is no longer supported
- Python packages added for Python 3.10
- Initial Python wrapping is available for the Video modules
TransformToDisplacementField
is now available in Python- Pythonic IO functions
itk.imread
understandspathlib.Path
's - New
repr
foritk.Matrix
np.asarray
works onitk.Matrix
DCMTKImageIO
wrapping addressedGradientDifferenceImageToImageMetric
wrappedSynImageRegistrationMethod
,BSplineSynImageRegistrationMethod
wrappedConjugateGradientLineSearchOptimizerv4
wrapped- Wrap
ImageRegistrationMethodv4
foritk.Mesh
- Wrap
PointSetToPointSetMetric
,PointSetToPointSetRegistrationMethod
- Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4
- Nearly all registration v4 classes are now wrapped
VectorImage
input forDisplacementFieldTransform
- Python wrapping for spatial orientation functionality
- PyImageFilter wrapped for additional types, supports pipeline functionality
- NumPy array interfaces for
itk.PointSet
,itk.Mesh
- manylinux_2_28 and manylinux2014 wheels are provided
- Dask support for
itk.Image
,itk.PointSet
,itk.Mesh
,itk.Transform
C++
- C++14 is now required
- The minimum CMake version required is now 3.16.3
- New functions:
MakePoint
,MakeVector
,MakeIndex
,MakeSize
. - Targets in Visual Studio and other IDE's are now organize hierachically by ITK Group and Module
- Most of
itk::mpl
meta-programming functions replaced by C++14 equivalents - Performance accelerations for b-spline interpolation, Mattes mutual information metric computation
- Improved modern C++ adoption, e.g. additional adoption of
constexpr
,auto
itk::ReadMesh
,itk::WriteMesh
simple reader functions available, similar toitk::ReadImage
,itk::WriteImage
- FFT backends are now registered through the object factory mechanism
cbegin()
andcend()
member functions toIndex
,Offset
,Size
- Add
itk::MakeFilled<TContainer>(value)
itk::ConvertNumberToString<TValue>(val)
convenience functionitk::bit_cast<TDestination>(source)
functionitk::PolyLineCell
InputSpaceName
andOutputSpaceName
support foritk::Transform
qfac
,qt_xyz
added to Nifti metadataLZW
compression support- Support requested output region in FFT filters
- Many code coverage improvements
New filters
itk::TransformGeometryImageFilter
: applies a rigid transform to anImage
's metadata.- 1D FFT classes
- Interface classes for forward, inverse transformations
- Vnl implementations
- FFTW implementations
itk::TriangleMeshCurvatureCalculator
- Gaussian curvature calculator foritk::Mesh
FFTDiscreteGaussianImageFilter
-- discrete gaussian filters via FFTs
Remote module updates
New remote modules:
- HASI: High-Throughput Applications for Skeletal Imaging
- ITKGrowCut: segments a 3D image from user-provided foreground and background seeds
- ITKMeshToPolyData: Convert an ITK Mesh to a simple data structure compatible with vtkPolyData
- ITKCudaCommon: Framework for processing images with CUDA
- itk-wasm WebAssemblyInterface: Build WebAssembly processing pipelines to native executables and support ITK WebAssembly file formats
- ITKCleaver: Multimaterial tetrahedral meshing.
- ITKIOMeshSWC: Read meshes from SWC files, a format for representing neuron morphology.
Updated modules: AdaptiveDenoising, AnisotropicDiffusionLBR, BSplineGradient, BoneEnhancement, BoneMorphometry, Cuberille, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOScanco, IsotropicWavelets, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, RTK, SimpleITKFilters, SkullStrip, SplitComponents, Strain, TextureFeatures, Thickness3D, TotalVariation, TubeTK, and Ultrasound.
Third party library updates
- dcmtk
- eigen
- expat
- fftw
- gdcm
- googletest
- hdf5
- kwsys
- kwiml
- minc
- metaio
- niftilib
- vxl
- zlib migrated to zlib-ng
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 76 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:
Michael Kuczynski, Tim Evain, Tomoyuki SADAKANE, Mario Emmenlauer, Andreas Gravgaard Andersen, Ebrahim Ebrahim, josempozo, Wenqi Li, Genevieve Buckley, Oleksandr Zavalistyi, Jose Tascon, Pranjal Sahu, ambrozicc1, Vagrant Ca scadian, MrTzschr, Philip Cook, Tihomir Heidelberg, Jason Rudy, Kian Weimer, z0gSh1u, Darren Thompson, Darren, Jose M Pozo, Paul Elliott, Gabriele Belotti, Rafael Palomar, Fernando Hueso-González, Mark Asselin, mrhardisty, Laryssa Abdala, Roland Bruggmann, Natalie Johnston, and ferdymercury.
What's Next
This is the last release candidate before the 5.3.0 release. Please try out the current release ...
ITK 5.3 Release Candidate 3: Documentation
ITK 5.3 Release Candidate 3 Release Notes
We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 3 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.3 is a feature release that accelerates performance, provides new segmentation and shape analysis algorithms, improves documentation, among many more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes. For more information about new segmentation and shape analysis algorithms, see the 5.3 RC 2 Release Notes.
ITK 5.3 RC 3 highlights documentation improvements. The ITK Software Guide has been updated for ITK's modern C++ improvements. The guide now also includes a helpful primer for debugging native Python extension modules across platforms. The PDF's remain available for free download (links below), and an updated hardcopy can be purchased from Amazon. ITK's Sphinx Examples were updated to the latest ITK and Sphinx. Join us for a hackathon to work on the examples on Friday, May 20th. Doxygen API documentation now uses MathJax and SVG, and Doxygen HTML archives are significantly smaller.
ITK 5.3 RC 3 also includes FFT backend registration through the object factory, Python wrapping for more registration methods, metrics, and registration of point sets, and new remote modules to facilitate rendering of meshes and ITK filtering with CUDA. And, there any many more improvements and fixes detailed in the log below.
In addition to the PDF's below, the ITK Software Guide for ITK 5.3 is available in hard copy form on Amazon. Book 1, Book 2.
Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Features
Python
- Python packages now include oneTBB support for improved performance.
- Following CPython's deprecation schedule Python 3.6 is no longer supported.
- Python packages added for Python 3.10
- Initial Python wrapping is available for the Video modules.
TransformToDisplacementField
is now available in Python.- Pythonic IO functions
itk.imread
understandspathlib.Path
's - New
repr
foritk.Matrix
np.asarray
works onitk.Matrix
DCMTKImageIO
wrapping addressedGradientDifferenceImageToImageMetric
wrappedSynImageRegistrationMethod
,BSplineSynImageRegistrationMethod
wrappedConjugateGradientLineSearchOptimizerv4
wrapped- Wrap
ImageRegistrationMethodv4
foritk.Mesh
- Wrap
PointSetToPointSetMetric
,PointSetToPointSetRegistrationMethod
- Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4
C++
- C++14 is now required.
- The minimum CMake version required is now 3.16.3.
- New functions:
MakePoint
,MakeVector
,MakeIndex
,MakeSize
. - Targets in Visual Studio and other IDE's are now organize hierachically by ITK Group and Module
- Most of
itk::mpl
meta-programming functions replaced by C++14 equivalents - Performance accelerations for b-spline interpolation, Mattes mutual information metric computation
- Improved modern C++ adoption, e.g. additional adoption of
constexpr
,auto
itk::ReadMesh
,itk::WriteMesh
simple reader functions available, similar toitk::ReadImage
,itk::WriteImage
- FFT backends are now registered through the object factory mechanism
New filters
itk::TransformGeometryImageFilter
: applies a rigid transform to anImage
's metadata.- 1D FFT classes
- Interface classes for forward, inverse transformations
- Vnl implementations
- FFTW implementations
itk::TriangleMeshCurvatureCalculator
- Gaussian curvature calculator foritk::Mesh
Remote module updates
New remote modules:
- HASI: High-Throughput Applications for Skeletal Imaging
- ITKGrowCut: segments a 3D image from user-provided foreground and background seeds
- ITKMeshToPolyData: Convert an ITK Mesh to a simple data structure compatible with vtkPolyData
- ITKCudaCommon: Framework for processing images with CUDA
Updated modules: AdaptiveDenoising, AnisotropicDiffusionLBR, BSplineGradient, BoneEnhancement, BoneMorphometry, Cuberille, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOScanco, IsotropicWavelets, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, RTK, SimpleITKFilters, SkullStrip, SplitComponents, Strain, TextureFeatures, Thickness3D, TotalVariation, TubeTK, and Ultrasound.
Third party library updates
- eigen
- expat
- fftw
- gdcm
- googletest
- hdf5
- kwsys
- kwiml
- minc
- metaio
- niftilib
- vxl
- zlib migrated to zlib-ng
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 59 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:
Michael Kuczynski, Tim Evain, Tomoyuki SADAKANE, Mario Emmenlauer, Andreas Gravgaard Andersen, Ebrahim Ebrahim, josempozo, Wenqi Li, Genevieve Buckley, Oleksandr Zavalistyi, Jose Tascon, Pranjal Sahu, ambrozicc1, Vagrant Cascadian, MrTzschr, Philip Cook, Tihomir Heidelberg, Jason Rudy, Kian Weimer, z0gSh1u, Darren Thompson, Darren, and Jose M Pozo.
What's Next
We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidate will provide an opportunity to test contributions for packaging, distributed computation, and GPU acceleration. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
ITK Changes Since v5.3rc02
Bradley Lowekamp (20):
Enhancements
- Add valgrind suppression file for Ubuntu 20.04 (af5dc21f77)
- Remove LBFGS2's pimpl member (2f60979bbb)
- CircleCI use large resource class (2cded6cf83)
- Update SimpleITKFilters remote module (fd67bcc443)
- Doxygen use svg and mathjax (a3a87b7b06)
- remove rendering datetime with Doxygen into HTML footer (510392c6ac)
- Move factory registration code to separate file (ab07c12492)
- Add factory names as optional argument (52c7d7479f)
- Use ITK_<factory_name>_FACTORY_REGISTER_MANAGER (099b5621c8)
Platform Fixes
- Update suppress for KWSYS change (e723f6df36)
- Fix bit shift overflow warning (0501e417e2)
- Fix sign comparison to unsigned warning (b6246315ca)
- fix WorkUnitInfo shadow warning (68c607ed54)
Bug Fixes
- fix uninitiali...
ITK 5.3 Release Candidate 2: Grow Cuts
ITK 5.3 Release Candidate 2 Release Notes
We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 2 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.3 is a feature release that accelerates performance, provides new segmentation and shape analysis algorithms, and makes over 200 more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes.
ITK 5.3 RC 2 highlights a new remote module, ITKGrowCut, which segments a 3D image from user-provided seeds. This method was popularized by 3D Slicer and was improved for inclusion in Seg3D with support from the National Institute of General Medical Sciences (NIGMS) of the National Institutes of Health (NIH) under grant numbers P41 GM103545 and R24 GM136986. This module can also be scripted in Python through a package installed with:
pip install itk-growcut
Results produced by ITKGrowCut module.
Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Features
Python
- Python packages now include oneTBB support for improved performance.
- Following CPython's deprecation schedule Python 3.6 is no longer supported.
- Python packages added for Python 3.10
- Initial Python wrapping is available for the Video modules.
TransformToDisplacementField
is now available in Python.- Pythonic IO functions
itk.imread
understandspathlib.Path
's - New
repr
foritk.Matrix
np.asarray
works onitk.Matrix
DCMTKImageIO
wrapping addressed
C++
- C++14 is now required.
- The minimum CMake version required is now 3.16.3.
- New functions:
MakePoint
,MakeVector
,MakeIndex
,MakeSize
. - Targets in Visual Studio and other IDE's are now organize hierachically by ITK Group and Module
- Most of
itk::mpl
meta-programming functions replaced by C++14 equivalents - Performance accelerations for b-spline interpolation, Mattes mutual information metric computation
- Improved modern C++ adoption, e.g. additional adoption of
constexpr
,auto
New filters
itk::TransformGeometryImageFilter
: applies a rigid transform to anImage
's metadata.- 1D FFT classes
- Interface classes for forward, inverse transformations, half-hermetian transformations
- Vnl implementations
- FFTW implementations
Remote module updates
New remote modules:
- HASI: High-Throughput Applications for Skeletal Imaging
- ITKGrowCut: segments a 3D image from user-provided foreground and background seeds
Updated modules: AdaptiveDenoising, AnisotropicDiffusionLBR, BSplineGradient, BoneEnhancement, BoneMorphometry, Cuberille, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOScanco, IsotropicWavelets, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, RTK, SimpleITKFilters, SkullStrip, SplitComponents, Strain, TextureFeatures, Thickness3D, TotalVariation, TubeTK, and Ultrasound.
Third party library updates
- expat
- fftw
- gdcm
- googletest
- hdf5
- kwsys
- metaio
- niftilib
- vxl
- zlib migrated to zlib-ng
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 41 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:
Pranjal Sahu, Darren Thompson, Tomoyuki SADAKANE, Oleksandr Zavalistyi, Jose Tascon, Kian Weimer, Michael Kuczynski, Ebrahim Ebrahim, Philip Cook, ambrozicc1, Jason Rudy, josempozo, Andreas Gravgaard Andersen, and Hastings Greer.
What's Next
We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidate(s) will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
ITK Changes Since v5.3rc01
Aaron Bray (1):
Enhancements
- Create an IDE folder structure (#2791) (569f96529e)
Andreas Gravgaard Andersen (4):
Enhancements
- Update expat files (9e337d3a23)
- Update expat CMake config (95ab3c2a3d)
- Update exported symbols for expat (ea54bc77d7)
- re-apply ITK symbol export definitions (0e9afe968a)
Brad King (3):
Enhancements
- Update to newer third-party update script (28bf772844)
- Convert MetaIO import script to use update-third-party.bash (b59cfe70d3)
- Update to newer third-party update script (19155f3996)
Bradley Lowekamp (6):
Enhancements
- Refactor TransformGeometryImageFilter pipeline i/o (2de73abe37)
- Use InPlaceImageFilter for base class, run in-place by default (4379b75c2a)
- Support generic linear Transform (978bc5b9f5)
Bug Fixes
- Use GenerateOutputInformation and pipeline isolation (374940a1c6)
- Fix ImageRegionSplitters with zero sized image (63f4ab7dd8)
- Install ITKInitializeCXXStandard.cmake (98f0f5c5ed)
Bryn Lloyd (2):
Bug Fixes
- pythonic itk should understand pathlib.Path (051ad61e26)
- failing test - only pythonic api knows PathLike paths (0178cf01af)
Dženan Zukić (14):
Enhancements
- use std::enable_if instead of itk::mpl::EnableIf (6b58ee8fce)
- deprecate itk::EnableIf and the header which implements it (9f3a6243bf)
- replace instances of mpl::IsSame by std::is_same (c28930c90f)
- deprecate itk::IsSame and the header which implements it (342845e644)
- replace itkStaticAssert by STL's static_assert (cd43985eba)
- fully cover the logical test cases in MetaProgrammingLibraryTest (dcd7dfd469)
- replace usage of IsBaseOf by std::is_base_of (e90519eeed)
- deprecate mpl::IsBaseOf and the header which implements it (d458298bdd)
- Deprecated mpl::IsConvertible and the header which implements it (2f29c8d2d0)
- switch to zlib-ng official repository (dcaecbe147)
Platform Fixes
- remove a workaround for a bug in Visual Studio 2015 (2f732c0f05)
- fix VS2017 compile error in itkFEMElementStd.h (182d302823)
Style Changes
- nifti_installed_targets message is gray instead of default red ([83a51e2](https://github.com/In...
ITK 5.3 Release Candidate 1: Performance
We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 1 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.3 is a feature release that accelerates performance, provides new segmentation and shape analysis algorithms, and makes over 200 more improvements.
Release Candidate 1 highlights performance improvements. For deformable image registration, b-spline sampling was improved by ~30%. Multi-threading in Python was improved by adding Threading Building Blocks (oneTBB) to the cross-platform binaries, which improves multi-threaded parallelism by ~5-10%. Compression time with zlib, used by common medical imaging file formats like NIFTI, NRRD, or MetaImage, was dramatically reduced through migration to zlib-ng.
name | description | zlib duration [ms] | zlib C.Ratio | zlib-ng duration [ms] | zlib-ng C.Ratio | zlib-ng Speed-up | zlib-ng C. Ratio improvement |
---|---|---|---|---|---|---|---|
wbPET.mha | whole body PET | 672 | 9.7% | 661 | 9.3% | 2% | 4% |
mra.nrrd | MR angiography | 1300 | 49.0% | 1097 | 49.1% | 19% | 0% |
CBCT.nrrd | ConeBeam CT | 11281 | 42.5% | 9486 | 41.3% | 19% | 3% |
input.nii | brain MRI | 4818 | 57.6% | 3353 | 57.4% | 44% | 0% |
scan7.mha | mouse ultrasound | 5939 | 45.4% | 4694 | 46.2% | 27% | -2% |
TBR5_clinpet.nii | label map | 782 | 0.5% | 91 | 0.5% | 759% | -2% |
WhiteMatter.nii | label map | 185 | 5.6% | 76 | 5.8% | 143% | -4% |
Average | 145% | 0% |
Comparison of image compression with traditional zlib
library and the new zlib-ng
replacement introduced with ITK 5.3 using the default compression level.
Download
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Features
Python
- Python packages now include oneTBB support for improved performance.
- Following CPython's deprecation schedule Python 3.6 is no longer supported.
- Initial Python wrapping is available for the Video modules.
TransformToDisplacementField
is now available in Python.
C++
- C++14 is now required.
- The minimum CMake version required is now 3.16.3.
- New functions:
MakePoint
,MakeVector
,MakeIndex
,MakeSize
.
New filter
itk::TransformGeometryImageFilter
: applies a rigid transform to anImage
's metadata.
Remote module updates
New remote modules:
- HASI: High-Throughput Applications for Skeletal Imaging
- ITKGrowCut: segments a 3D image from user-provided foreground and background seeds
Updated modules: AdaptiveDenoising, AnisotropicDiffusionLBR, BSplineGradient, BoneEnhancement, BoneMorphometry, Cuberille, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOScanco, IsotropicWavelets, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, RTK, SimpleITKFilters, SkullStrip, SplitComponents, Strain, TextureFeatures, Thickness3D, TotalVariation, TubeTK, and Ultrasound.
Third party library updates
- gdcm
- niftilib
- zlib migrated to zlib-ng
- hdf5
- kwsys
- metaio
- googletest
- vxl
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 32 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:
Pranjal Sahu, Darren Thompson, Tomoyuki SADAKANE, Oleksandr Zavalistyi, Jose Tascon, Kian Weimer, Michael Kuczynski, Ebrahim Ebrahim, and Philip Cook.
What's Next
We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidates will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
ITK Changes Since v5.2.0
Brad T. Moore (1):
Bug Fixes
- fixed reference leak when SWIG passing tuples or lists (95ee15a07e)
Bradley Lowekamp (12):
Enhancements
- Add additional testing for zero sized label object (bc95f51d9f)
- StatisticsLabelMapFilter use improve integer histogram (daa2a20f4b)
- Rename ResampleInPlaceImage to TransformGeometryImageFilter (9827449b4b)
Platform Fixes
- Address braces around initializer warning. (dae904e3d9)
- Use C99 int types over libtiff's (f98f6a8920)
Bug Fixes
- Register ComposeScaleSkewVersor3DTransform transform (8c7784d183)
- Fix SpatialOrientationAdapter::FromDirectionCosines (8801247049)
- Add tests demonstration current behavior of histogram based median (c6da8be54c)
- Fix StatisticsLabelMap median for even number of pixels (208d7e32d7)
- Fix HDF5 installation with cmake targets (4ecd711eab)
- Propagate usage of HDF5 find_package NO_MODULE arg to install (f83a0ba9f4)
- Add tests demonstration current behavior of histogram based median (55d0fdfafa)
- Fix StatisticsLabelMap median for even number of pixels (3abace1991)
- Correct stop condition description (362dd4c7cf)
Dave Chen (1):
Enhancements
- add support for direction in VTK image (80bcb13d9b)
Dženan Zukić (50):
Enhancements
- Add ResampleInPlaceImageFilter (53f8473c2d)
- Update style and use the test of ResampleInPlaceImageFilter (e08395a7c0)
- Add Transform::ApplyToImageMetadata method (510586750a)
- Add support for long long pixel types to ImageDuplicator wrapping (18ae7502f0)
- update remote modules using the maintenance script (c6f4685638)
- Python wrapping reads VLV pixel type correctly (231ecb7d3d)
- add HASI remote module (2798c2a85f)
- Add GrowCut remote module (22524c5f71)
- Remove WriteCompilerDetectionHeader ([d3e1...
ITK 5.2.1
ITK 5.2.1 Release Notes
We are happy to announce the Insight Toolkit (ITK) 5.2.1! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
Python Packages
Install ITK Python packages with:
pip install --upgrade itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
ITK 5.2.1 is a patch release that makes improvements to issues found in the 5.2.0 release. For more details on ITK 5.2, see the ITK 5.2.0 Release Notes.
This release addresses various issues like improved combination of itk
's native thread pool with Python's multiprocessing
module in contexts like MONAI and Dask. Other improvements include more robust label map statistic computation, expanded Python support for additional datatypes, fixes for tube spatial objects when processing with the TubeTK module, support for GCC 11, and compatibility with the C++20 and C++23 standards. A detailed list can be found in the changelog below.
What's Next
Join us in the creation of advanced, open source scientific image analysis tools. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
The first release candidate for ITK 5.3, the next feature release, is anticipated in September.
Enjoy ITK!
ITK Changes Since v5.2.0
Bradley Lowekamp (7):
Enhancements
- StatisticsLabelMapFilter use improve integer histogram (daa2a20f4b)
- Add additional testing for zero sized label object (1fba0db29b)
Bug Fixes
- Register ComposeScaleSkewVersor3DTransform transform (8c7784d183)
- Add tests demonstration current behavior of histogram based median (55d0fdfafa)
- Fix StatisticsLabelMap median for even number of pixels (3abace1991)
- Fix HDF5 installation with cmake targets (4ecd711eab)
- Propagate usage of HDF5 find_package NO_MODULE arg to install (f83a0ba9f4)
Dženan Zukić (9):
Enhancements
- fix Python multi-processing hang on unix (2370517505)
- Python wrapping reads VLV pixel type correctly (4ae3749a61)
- Add support for long long pixel types to ImageDuplicator wrapping (278ac68e40)
Platform Fixes
- Update KWStyle to fix compile warnings on Ubuntu 20.04 (32501b4230)
- Restore generation of static runtime library on MSVC (dbb34f96cc)
- Update KWStyle's version to avoid compile errors with C++23 (3d85fafc77)
- use WRAP_ITK_SCALAR instead of WRAP_ITK_REAL in mesh filters (68944d52d7)
Bug Fixes
- add support for long long pixel types in PyBuffer (ae7079c4fd)
Miscellaneous Changes
- Revert "COMP: Use CMake 3.18.4 in macOS CI builds" (07176983ed)
GDCM Upstream (1):
Miscellaneous Changes
- GDCM 2021-06-07 (4404b770) (47e97596b9)
Lee Newberg (3):
Enhancements
- Propagate StatisticsLabelMapFilter's default NumberOfBins (509751d5f5)
- Wrap itkAdaptiveHistogramEqualizationImageFilter for Python. (974c63db99)
Bug Fixes
- Ellipsis is not iterable (ca0690069a)
Matt McCormick (16):
Enhancements
- Update CastXML source builds to v0.4.3, LLVM 11.1.0 (67fdd3067e)
- Add CastXML binary for macOS arm64 (fde7fa6ce8)
- Add Linux arm64 CastXML binaries (42aa3be3e4)
- Bump the ITK CMake version to 5.1.0 (9f3fc5dd12)
- Content link synchronization for ITK 5.2.1 (8be208ee1f)
Platform Fixes
- Backport CastXML arm64 Eigen support (a3996fe99a)
- Do not add IPO to Python wrapping if not supported (3d2e898400)
- Only use np.float128 when available (1237a57a3d)
- Make floating point exceptions a no-op with MUSL, Linux, ARMv8 (0afa3f06a1)
- Use numpy==1.20.3 for CI testing (b667ce4d25)
- Use mallinfo2 when available (f540091c6a)
- Add missing template export macro to SLICImageFilter (c3e40927f8)
Bug Fixes
- Add vnl_vector_from_array to extras all (3f8b14be54)
- Do not create global multiprocessing RLock (cfdb5023a8)
- Support double colons in Changelog commit summary (62804d09e9)
Style Changes
- Apply black to AuthorsChangesSince.py script (7504f6e45c)
Niels Dekker (1):
Bug Fixes
Similarity3DTransform::SetScale
should recomputem_Offset
(dd893faf8a)
Pablo Hernandez-Cerdan (1):
Enhancements
- Increase hook-max-size for next GDCM update (f913c0b6ed)
Stephen R. Aylward (5):
Enhancements
- Updated SpatialObject wrapping to support CONST_POINTER (28cb8507fd)
Platform Fixes
- Update SpatialObjects to correct const-ness (903f7c152e)
Bug Fixes
- SpatialObject writes object color (3bf34f6cc5)
- TubeSpatialObject missing CopyInformation (3060a6d1e5)
- TubeSpatialObject didn't preserver Artery flag (2c3d27c9ee)
Thompson, Darren (IM&T, Clayton) (2):
Platform Fixes
- Removed constructor template parameters from the VNL library (f27ab3f91f)
- Removed constructor template parameters from itkSmapsFileParser (4c320b1d49)
Tom Birdsong (1):
Enhancements
- Add
float
wrappings for itkSymmetricSecondRankTensor (5378dae447)
VXL Maintainers (1):
Miscellaneous Changes...
ITK 5.2.0
ITK 5.2.0 Release Notes
We are happy to announce the release of Insight Toolkit (ITK) 5.2.0! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.2 is a feature release that improves and extends interfaces to deep learning, artificial intelligence (AI) libraries, with an emphasis on Project MONAI, the Medical Open Network for AI. ITK 5.2 feature highlights include functional filter support for PyTorch tensors, Python dictionary interfaces to itk.Image
metadata, NumPy-based pixel indexing, 4D Python image support, and improved multi-component image support.
Changes from Release Candidate 3 include an updated Python Quick Start Guide and many improvements to the ITK Sphinx Examples.
Experimental pip-installable Python packages are available for ARMv8 on macOS for the Apple M1 Silicon processor, and Linux, also known as aarch64. For a scientific computing environment on these platforms, we recommend mini-forge.
The pip-installable Python packages work with conda across all platforms. We are working to add native conda-forge packages in a future release.
All Pythonic, functional filter interfaces have type annotations with common, standard types along with numpy.typing.ArrayLike
and itk.support.types.ImageLike
.
Many other improvements were made since RC 3 based on community feedback. A full list can be found in the Changelog below.
Downloads
Python Packages
Install ITK Python packages with:
pip install --upgrade itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Features
MONAI-compatible itk.Image
metadata dict and NumPy-indexing pixel set/get Python interfaces.
print(image['0008|0008'])
image['origin'] = [4.0, 2.0, 2.0]
or a dictionary can be retrieved with:
meta_dict = dict(image)
For example:
In [3]: dict(image)
Out[3]:
{'0008|0005': 'ISO IR 100',
'0008|0008': 'ORIGINAL\\PRIMARY\\AXIAL',
'0008|0016': '1.2.840.10008.5.1.4.1.1.2',
'0008|0018': '1.3.12.2.1107.5.8.99.484849.834848.79844848.2001082217554549',
'0008|0020': '20010822',
For non-string keys, they are passed to the NumPy array view so array views can be set and get with NumPy indexing syntax, e.g.
In [6]: image[0,:2,4] = [5,5]
In [7]: image[0,:4,4:6]
Out[7]:
NDArrayITKBase([[ 5, -997],
[ 5, -1003],
[ -993, -999],
[ -996, -994]], dtype=int16)
Provides a Python dictionary interface to image metadata, keys are
MetaDataDictionary
entries along with 'origin', 'spacing', and
*'direction' keys. The latter reverse their order to be consistent with
the NumPy array index order resulting from array views of the image.
The itk.xarray_from_image
and itk.image_from_xarray
functions gained support for transfer of itk
MetaDataDictionary
and xarray
attrs
along with support for ordering xarray
DataArray
dims
.
Pythonic enhancements
Improved Xarray support was added in the functional filter support for NumPy ndarray
-like images, i.e. a numpy.ndarray
, Dask Array or xarray.DataArray
s.
itk.Image
now provides an astype()
method for casting to a NumPy dtype
or itk
pixel type.
In addition to single files or an image stack in a Python list, a directory can be passed to itk.imread
containing a DICOM series. A spatially ordered 3D image will be obtained.
The conversion functions, itk.vtk_image_from_image()
and itk.image_from_vtk_image()
are directly available for working with VTK.
We now generate .pyi
Python interface files, providing better feedback in integrated development environments (IDE)'s like PyCharm.
Python code was modernized for Python 3.6, including some typehints. We now use the black
Python style.
An itk.set_nthreads()
convenience function is available to set the default number of threads. Support is now available for use in the Python multiprocessing
module.
In addition to itk.imread
, itk.imwrite
, itk.meshread
, itk.meshwrite
, spatial transformation IO functions are available, itk.transformread
, itk.transformwrite
.
To provide an itk.ImageIOBase
derived object to read a specific file format, itk.imread
and itk.imwrite
gained support for the imageio
keyword argument.
Python package layout improvements
Python support module organization has been organized into the itk.support.*
package.
Python development was added for multi-config CMake generators, e.g. Visual Studio or multi-config Ninja, with the limitation that it only works with the most recently built configuration. When developing ITK Python wrapping or ITK remote modules, copy the WrapITK.pth
build tree file to your virtual environment or conda environment site-packages
to experiment with the wrapping.
Python package advances
Improved VectorImage
and multi-component image support is available in the ITK Python packages.
NumPy is now a required package dependency.
Python packages are now built with interprodedural optimizations (IPO). Linux Python packages are built with the manylinux2014
toolchain.
Binary Python packages are available for ARM on macOS and Linux.
Python packages are available for Python 3.6 to 3.9. Following CPython deprecation schedule, this is the last release to support Python 3.6.
C++ interface improvements
A new itk::FunctionCommand
class is available, an itk::Command
subclass that calls std::function
objects or lambda functions.
New itk::ReadImage
, itk::WriteImage
convenience functions are available for reading and writing image files with minimal code.
An itk::Image
now supports operator==
and operator!=
.
A new itk::TernaryGeneratorImageFilter
class is now available.
Third party library updates
Updates were made for the third party libraries:
- GDCM
- HDF5
- double-conversion
- pygccxml
- castxml
- swig
- VXL
- KWIML
- KWSys
- MetaIO
- cuFFTW
Remote Module Updates
We added a new adaptive denoising remote module.
Many remote modules were updated: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, and VariationalRegistration.
Their updates are included in the detailed changelog below.
Support for cross-platform C++ testing, Python package generation, and PyPI deployment with GitHub Actions was added to almost all remote modules.
Test coverage and bug fixes
A multitude of test code coverage improvements were made -- our code coverage is now 90.09% with 127,103 lines tested.
Many more bug fixes and improvements have been made. For details, see the changelog below.
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 63 authors who contributed since v5.1.0, we would like to specially recognize the new contributors:
Horea Christian, Baptiste Depalle, David Thompson, Pierre Wargnier, Darren Thompson, Sebastien Brousmiche, Alexander Burchardt, Marco Nolden, Michael Kuczynski, MrTzschr, Bernhard M. Wiedemann, Charles Garraud, Lee Newberg, Bryn Lloyd, Gregory Lee, justbennet, Kenji Tsumura, Zhiyuan Liu, Jonathan Daniel, Moritz Schaar, Atri Bhattacharya, Mon-ius, Michael Jackson, Tom Birdsong, Alex Domingo, Laurent Malka, Kris Thielemans, Andreas Huber, and Melvin Robinson.
And the new con...