Releases: InsightSoftwareConsortium/ITK
ITK 6.0 Beta 1
We are excited to announce the first beta release of ITK 6.0! This major version update marks a significant leap forward in the toolkit's evolution, focusing on code modernization, cleanup, and enhanced performance. As a beta release, we encourage the community to test and provide feedback as we finalize this next generation of ITK.🚀 ✨ 🎉
This release, comprised of 1,115 changes, transitions the toolkit to require C++17, enabling the use of modern C++ features for more elegant, readable, and performant code. Extensive cleanup has been performed, including the removal of APIs deprecated in version 5 and the end of support for ITKv4 compatibility.
🔦 Highlights
Visible Human rendering with NiiVue. ITK 6 includes a new remote module, ITKIOMeshMZ3, that provides C++ and Python support for the MZ3 mesh format used by NiiVue.
- C++ Modernization:
- C++17 is now required for building ITK, enabling modern language features
- Extensive code cleanup replacing legacy macros with
constexpr, use of[[nodiscard]]andstd::string_views, and contemporary C++ idioms for safer, clearer, and faster code paths - Updated third-party libraries including libtiff, HDF5, OpenJPEG, libjpeg-turbo, Nifti, libpng, GDCM, and DCMTK
- Improved thread safety and performance optimizations
- ITKv4 compatibility has been removed, and content from the Deprecated module has been purged, resulting in a cleaner, more modern API
- Platform Support Updates:
- Enhanced Apple Silicon (ARM64) macOS support with optimized build configurations
- Intel macOS support maintained but deprecation started (see #5326 and #5369)
- Updated CI/CD infrastructure with GitHub Actions and Azure Pipelines improvements
- Pixi package manager integration for streamlined development workflows
- New Features and Enhancements:
- New
AnatomicalOrientationclass for robust anatomical coordinate system handling - Enhanced JPEG2000 support with High Throughput JPEG2000 (HTJ2K) for
.jphfiles - Updated DCMTK integration with additional modules enabled
- New
- Code Quality Improvements:
- Migrated to clang-format 19.1.7 for consistent code style
- Removed deprecated code including VNL Netlib rpoly files and legacy macros
- Enhanced GoogleTest integration and expanded test coverage
- Large-scale style and readability improvements remove dead code paths, replace trivial functions with defaults, adopt raw string literals where helpful
- Normalized Doxygen groups and added citations for better documentation
- Remote Modules:
- Updated 70 remote modules including
WebAssemblyInterface,Montage,CudaCommonandMorphologicalContourInterpolation - New modules:
ITKIOMeshMZ3for MZ3 mesh format support
- Updated 70 remote modules including
💾 Download
Python Packages
Install ITK Python packages with:
pip install --pre --upgrade itkNote: Use --pre flag to install beta releases.
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
📖 Migration Guide
For detailed guidance on migrating existing code to ITK 6.0, please consult the ITK 6 Migration Guide. Key changes include:
- C++17 compiler requirement
- Deprecated macro replacements
- Updated third-party library APIs
- Platform-specific considerations for macOS
🙏 Acknowledgments
Thank you to the 72 recent contributors and 41 new contributors who made ITK 6.0 Beta 1 possible, including:
agarcia, albert-github, Alex Ciobanu, Alexy Pellegrini, Andras Lasso, Andrei Sandor, Antoine Robert, Ariouz, Aurélien Coussat, Axel Garcia, Brad King, Bradley Lowekamp, Bernhard Froehler, Chris Markiewicz, Colin Taylor, Csaba Pinter, Cyril Mory, Darren Thompson, Dave Chen, David Allemang, Dženan Zukić, Ebrahim Ebrahim, ebald19, Erica Baldesarra, Gabriel A. Devenyi, Gabriele Belotti, Hans Johnson, Idris TATACHAK, Jackson Hardee, Jakub Klinkovský, James Butler, Jannis Dickmann, Jean-Christophe Fillion-Robin, Jon Haitz Legarreta Gorroño, Kai Pastor, ken avolic, Ken Goettler, Krupal J S Bhat, Kurt McKee, L OH, Laurent Chauvin, Lee Newberg, ljm898, Lucas Gandel, luzpaz, Matt McCormick, Matthieu Chourrout, Michael Onken, Mihail Isakov, nbehrnd, Nick Tustison, Niels Dekker, npt-1707, Pablo Hernandez-Cerdan, Paolo Zaffino, Paul Elliott, Philip Cook, Piyush Aggarwal, ruanwenfeng, Sadhana Ravikumar, Sanjay Ananthanarayan, Sean McBride, Shelly Belsky, Shreeraj Jadhav, Simon Rit, Stephen Aylward, Steve Robbins, Tom Birdsong, Vladimir S. FONOV, Vivek Mehta, WangWeiLin-MV, Ziv Yaniv and the entire ITK community for their code contributions, testing, documentation efforts, and invaluable feedback.
🗣️ What's Next
ITK 6.0 Final Release
Following community testing and feedback on Beta 1, we will address reported issues and prepare for the next ITK 6.0 beta.
ITK 5.4 Long-Term Support
ITK 5.4 will continue to receive maintenance updates as a long-term support (LTS) release, providing:
- Critical security patches
- Bug fixes for production environments
- Full support for Intel macOS
- Backward compatibility for existing applications
Community Feedback
Please test ITK 6.0 Beta 1 in your workflows and report issues on GitHub or the ITK Discourse forum.
Enjoy ITK!
ITK 5.4.4
We are pleased to announce the release of ITK 5.4.4, a maintenance update delivering critical improvements while maintaining API stability. This is latest maintenance update for this cross-platform, open-source toolkit supporting N-dimensional scientific image analysis with spatially-aware algorithms. 🎉 🍻 🥳
🔦 Highlights
- Bug Fixes:
- Fixed GDCM JPEG2000 structure cleanup to prevent crashes on malformed files
- Corrected TIFFImageIO reuse behavior
- Documentation:
- Updated documentation on Doxygen shared groups
- Spelling corrections in the ITK Software Guide
- Platform Support:
- Added GraalPy compatibility
- Improved NumPy dtype handling for Python interoperability
- Following CPython's deprecation schedule, ITK now provides packages for Python 3.9 or later.
- Remote Modules:
- Updated
Montage,MorphologicalContourInterpolationandWebAssemblyInterfacemodules
- Updated
💾 Download
Python Packages
Install ITK Python packages with:
pip install itkGuide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
🙏 Acknowledgments
Thank you to contributors Albert, Ariouz, Bradley Lowekamp, Dženan Zukić, Hans Johnson, Jakub Klinkovský, Matthew McCormick, Mihail Isakov, Tom Birdsong, and the ITK community for their code, testing, and documentation efforts.
🗣️ What's Next
ITK 6.0 Beta 1 Preparation
The community is finalizing ITK 6.0 Beta 1, featuring:
- Architectural upgrades for contemporary C++ development
- Enhanced template metaprogramming capabilities
- Code modernization for improved readability and maintainability
5.4 Maintenance Commitment
We remain dedicated to supporting current users through:
- Regular security and regression patches
- Critical bug resolution
- Platform compatibility updates
Enjoy ITK!
ITK Changes Since v5.4.3
Ariouz (1):
Enhancements
- Add Graalpy Support (2aaa346313)
Bradley Lowekamp (3):
Enhancements
- Add test for bug related reusing TIFFImageIO (f18535d50d)
Bug Fixes
- GDCM destroy JPEG2000 structures on error (95a64b8890)
- Fix reusing TIFFImageIO (231163bc50)
Dženan Zukić (2):
Enhancements
- Update Montage remote module mostly to fix warnings (6511d8f615)
- Update MorphologicalContourInterpolation module to fix warnings (8abb11e885)
Hans Johnson (2):
Platform Fixes
- Improve path management for python package install (bd779399a1)
Bug Fixes
- Python version mis-match during build and test (d1867dd78f)
Jakub Klinkovský (1):
Platform Fixes
- Include needed cstdint header (9c87ac96d1)
Matthew McCormick (7):
Enhancements
- Update WebAssemblyInterface remote to 2025-05-28 (37202e7ad9)
- Bump ITK version to 5.4.4 (f98d5fac5e)
Documentation Updates
- Add ITK 5.4.3 release notes (03256a58a0)
- Update download page links for ITK 5.4.3 (b366d5e1d9)
Platform Fixes
- Update Linux CI images to ubuntu-22.04 (89ed425e0f)
- Update Azure CI ExternalDataVersion to 5.4.3 (31085ff8cb)
- Identify numpy bool attr as bool instead of bool8 (55a3a6f18f)
Mihail Isakov (1):
Bug Fixes
- fix GDCM crash due to malformed file (1a241567d8)
Tom Birdsong (1):
Bug Fixes
- Use NumPy dtypes for type mapping (bfe0e80d98)
ITK Software Guide Changes Since v5.4.3
Matthew McCormick (1):
Enhancements
- Bump ITK to v5.4.4 (4a1b625)
albert-github (2):
Documentation Updates
- Spelling corrections (5849c78)
- Grouping shared documentation (5ea45e3)
- Fix PDF file properties in Book 2 (b46a83f)
Remote Module Changes Since v5.4.3
Montage:
Dženan Zukić (4):
Enhancements
- Support nearest neighbor interpolator for montaging label maps (d71031e)
Platform Fixes
- Get ITK_USE_FLOAT_SPACE_PRECISION=ON to compile again (3f92cee)
- Fix MacOS Python packages (9da9118)
- Use correct and consistent version numbers for all ITK components (df0acae)
Hans Johnson (7):
Enhancements
- Update to support the clang-format-linter CI (dffbbf5)
- Use latest actions, do not pin to latest version (2bcebff)
- Use tag v5.4.2 for the build packages tags (07ff68f)
- Update pyproject.toml for ITK 5.4.2 (1a079c4)
Style Changes
- Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassMacro (4d35307)
- CoordRepType -> CoordinateType code readability (b81b523)
- Update to match clang-format-19 from ITK (38ffd5a)
Matt McCormick (1):
Enhancements
- Upgrade CI for ITK 5.4.0 (9027e04)
MorphologicalContourInterpolation:
Hans Johnson (4):
Enhancements
- Update to support the clang-format-linter CI (41e2c99)
Platform Fixes
- Use modern macro for name of class (eb91db4)
Style Changes
Jon Haitz Legarreta Gorroño (2):
Enhancements
- Remove unused variable and commented code block ([e0267a9](https://github.com/KitwareMe...
ITK 5.4.3
We are pleased to announce the release of ITK 5.4.3, the latest maintenance update for this cross-platform, open-source toolkit supporting N-dimensional scientific image analysis with spatially-aware algorithms. 🎉 🍻 🥳 This patch release addresses several key issues identified since ITK 5.4.2 while maintaining API stability.
🔦 Highlights
As a maintenance update following 5.4.2, version 5.4.3 incorporates critical improvements including:
- Bug Fixes: Resolved issues affecting the default number of threads, particularly in multi-threaded image processing pipelines where thread limits were not respected, and corrected the b-spline size calculation for closed parametric dimensions, ensuring accurate interpolation in applications such as 3D image registration and deformation modeling.
- License Fixes: Removed unused VNL Netlib rpoly files to ensure compliance with our Apache 2.0 licensing requirements.
- Software Guide Updates: Spelling corrections for the ITK Software Guide.
- Doxygen Documentation: Updated Doxygen documentation to reflect the latest changes and improvements in ITK, including links to the ReadTheDocs site.
- Remote Module Updates: Improvements to the
LabelErodeDilateandMeshToPolyDataremote modules, including bug fixes and enhancements.
A full list of changes can be found in the changelog below.
🔢 Versioning Note
For comprehensive details on ITK 5.4.0, please review the ITK 5.4.0 Release Notes.
💾 Download
Python Packages
Install ITK Python packages with:
pip install itkGuide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
🙏 Congratulations
Congratulations and thank you to everyone who contributed to this release.
🗣️ What's Next
ITK 6 Preparation
The development community is currently focused on delivering ITK 6, a major modernization release featuring:
- Architectural upgrades for contemporary C++ development
- Enhanced template metaprogramming capabilities
- Streamlined build system configurations
Early access builds (alpha/beta releases) will become available during ongoing 5.4.x maintenance, enabling parallel evaluation of new features while maintaining production stability.
5.4 Maintenance Commitment
We remain dedicated to supporting current users through:
- Regular security and regression patches
- Critical bug resolution
- Platform compatibility updates
Enjoy ITK!
ITK Changes Since v5.4.2
Bradley Lowekamp (2):
Enhancements
- Use get_schedaffin to determine number of threads (50ab3e0f6e)
Bug Fixes
- Update LabelErodeDilate remote module (ea1ee3a961)
Dženan Zukić (1):
Documentation Updates
- Remove duplicate new author name (Matthieu LAURENDEAU) (6d82d2bd8f)
Matthew McCormick (10):
Enhancements
- Bump ITK version to 5.4.3 (0913f2a962)
Documentation Updates
- Update maintenance branch for 5.4 series (146bc6de06)
- Point to RTD Doxygen documentation, ITKDoxygen Docker build (8ba1cfc8f2)
- Update Doxygen class links to use ReadTheDocs (d3189c245e)
- Update versioned Doxygen links to point to ReadTheDocs (ce4fa184e8)
- ITK 5.4.0 release notes (f2852f6ee9)
- Add ITK 5.4.2 release notes (f817e2f775)
Platform Fixes
- Bump MeshToPolyData Remote Module to 2024-03-14 main (7366509c1c)
Bug Fixes
- Remove VNL Netlib rpoly files (6894a1715c)
- Clamp GlobalDefault threads with GlobalMaximum with initialization (7e485eac71)
Simon Rit (1):
Bug Fixes
- Remove check on WrapITK.pth existence in itk_python_add_test (71d5cce482)
Nick Tustison (1):
Bug Fixes
- Incorrect size for closed parametric dimension. (0dd02ac9f1)
ITK Software Guide Changes Since v5.4.2
Matthew McCormick (1):
Enhancements
- Bump ITK to v5.4.3 (0db3df8)
albert-github (1):
Documentation Updates
- Spelling corrections (5849c78)
Remote Module Changes Since v5.4.2
LabelErodeDilate:
Bradley Lowekamp (4):
Bug Fixes
- Addressed memory leak of progress object (05a0a1c)
- Address uninitialized value (921aaab)
- Fix Valgrind defect with uninitialized array in doOneDimensionErode (b9567df)
Miscellaneous Changes
- Update CI infrastructure to use 5.4.2 infrastructure (c9f9037)
Hans Johnson (4):
Enhancements
Style Changes
- Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassMacro (6a892cd)
- Update to match clang-format-19 from ITK (32e7773)
Jon Haitz Legarreta Gorroño (12):
Enhancements
- Transition project configuration to
pyproject.toml(8197f14) - Initialize all arrays in
LabelSetUtils.hfile (108b0ba)
Platform Fixes
- Bump to minimum CMake 3.16.3 (f247673)
Style Changes
- Conform to ITK style guidelines in local variable naming (61c7a93)
- Do no use
m_to start function parameter names (c347f23) - Use medial capitals for variable naming in C++ code (518fab1)
- Use
ITK_TRY_EXPECT_NO_EXCEPTIONmacro in tests ([5f37494](https://github.co...
ITK 5.4.2
We are pleased to announce the release of ITK 5.4.2, the latest maintenance update for this cross-platform, open-source toolkit supporting N-dimensional scientific image analysis with spatially-aware algorithms. 🎉 🍻 🥳 This patch release addresses several key issues identified since ITK 5.4.0 while maintaining API stability.
🔦 Highlights
As a maintenance update following 5.4.0, version 5.4.2 incorporates critical improvements including:
- Enhanced Label Map Handling: Improved unique label map filter behavior for segmentation workflows
- Modern Library Support: Updated compatibility with recent libtiff versions
- Large Data Optimization: Expanded
VectorImagesupport for high-dimensional datasets - Performance Improvements: Fixed thread-based parallelism in SLIC filter implementations
- Cross-Platform Enhancements: Build system updates and compiler compatibility fixes
A full list of changes can be found in the changelog below.
🔢 Versioning Note
This release follows 5.4.0 directly, as the intermediate 5.4.1 patch was reserved for an urgent hotfix that required immediate distribution prior to full release documentation.
For comprehensive details on ITK 5.4.0, please review the ITK 5.4.0 Release Notes.
💾 Download
Python Packages
Install ITK Python packages with:
pip install itkGuide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
🙏 Congratulations
Congratulations and thank you to everyone who contributed to this release.
🗣️ What's Next
ITK 6 Preparation
The development community is currently focused on delivering ITK 6, a major modernization release featuring:
- Architectural upgrades for contemporary C++ development
- Enhanced template metaprogramming capabilities
- Streamlined build system configurations
Early access builds (alpha/beta releases) will become available during ongoing 5.4.x maintenance, enabling parallel evaluation of new features while maintaining production stability.
5.4 Maintenance Commitment
We remain dedicated to supporting current users through:
- Regular security and regression patches
- Critical bug resolution
- Platform compatibility updates
Enjoy ITK!
ITK Changes Since v5.4.0
Andras Lasso (1):
Enhancements
- Backport libtiff fix of not displaying warning for unknown tags (15e47178d6)
Brad King (1):
Platform Fixes
- itktiff: Suppress C99 inline only on MSVC from VS 2013 and below (6025654de3)
Bradley Lowekamp (11):
Enhancements
- A GTest for LabelUniqueLabelMapFilter (47eec5a2a2)
- Download x86 clangformat on Darwin arm64 (ee6bc26281)
- remove repetitive monochorme1 warning (80a172e8c2)
Documentation Updates
- Correct Documentation for PadImageFilter::SizeGreatestPrimeFactor (276a52a5c0)
Bug Fixes
- Check output of StatisticsUniqueLabelMapFilterTest1 (8f32d71c8a)
- Address bugs in unique label map filters (00bfdb80e7)
- Remove dilation output in test (790af9eba0)
- Address race condition in SLIC filter (bbf9f17a40)
- Enable system TIFF with modern TIFF and cmake (7b83336a7e)
- Remove SpatialObjectProperty's writable string methods from SWIG (efe773f555)
- Fix 32-bit truncation on VectorImage Accessors (ee63f5eba3)
Dženan Zukić (1):
Platform Fixes
- Get ITK_USE_FLOAT_SPACE_PRECISION=ON to compile again (e816336468)
Hans Johnson (1):
Platform Fixes
- macOS-11 Azure CI environment EOL (e5de32ad02)
Matt McCormick (25):
Enhancements
- Initial pixi configuration (e2eef2d73d)
- Add Pixi dev environment (5037e7447c)
- Add Pixi GitHub Actions Configuration (bb705e50eb)
- Add Pixi python-exe and python-exe-debug tasks (73841d0a89)
- Python dispatch on the first RequiredInputName (8185e10aab)
- Add Pixi osx-64 configuration (84a8386daa)
- Add Intel Mac to Pixi GitHub Action tests (7d759f2e4e)
- Add Pixi mac ARM configuration (0306e8e654)
- Add ARM Mac to Pixi GitHub Action tests (78a6cb7ca4)
- Bump ITK version to 5.4.2 (898def6451)
Documentation Updates
- Update .zenodo (a890386f7d)
- Improve itk_hdf5_mangle.h.in instructions (c595d0b26b)
- Document development with Pixi (1b75686e2c)
- Updates for release testing data uploads (9a3a8d2961)
Platform Fixes
- Set CastXML flag based on CMAKE_CXX_STANDARD (9ebd1d6ff9)
- Remove unused setuptools upgrade in Linux builds (2734a97318)
- Bump ITKTotalVariation remote module (da08898f21)
- Use .clang-format from release-5.4 branch (6d3e550ba6)
Bug Fixes
- Move InputSpaceName, OutputSpaceName from Transform to TransformBase (107e3ad040)
- Update HDF5 name mangled symbols (be7d38694c)
- Fix pixi caching of Python Debug builds (0967a50721)
- GenerateImageSource sets Size from ReferenceImage (c54f1b1a2b)
Style Changes
- clang-format fixes to itkSLICImageFilter.hxx (d8614fa2c4)
- clang-format updates to itkGridImageSourceTest2.cxx (a54a6455e3)
Mihail Isakov (1):
Bug Fixes
- Fix ExposeMetaData<std::vector> im MetaImageIO (087a1c4fb0)
Niels Dekker (3):
Enhancements
- Add nested CoordinateTy...
ITK 5.4.0: ReadTheDocs Documentation
We are happy to announce the Insight Toolkit (ITK) 5.4.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
We're excited to announce a transformation of ITK's documentation ecosystem in version 5.4.0. The documentation infrastructure has been modernized to provide a more accessible, maintainable, and user-friendly experience.
New Markdown-Based Documentation
Our documentation has undergone a complete migration from the traditional landing page and wiki to a modern, Markdown-based system hosted on ReadTheDocs. Experience our enhanced documentation at https://docs.itk.org.
ITK's new Markdown-based documentation, editable on GitHub and hosted on ReadTheDocs.
Enhanced API Documentation
The Doxygen documentation has been seamlessly integrated into ReadTheDocs, offering several key advantages:
- Global CDN-powered access for fast, responsive performance worldwide
- Complete archive of all previous API versions
- Improved navigation and usability
ITK's Doxygen documentation, hosted on ReadTheDocs, provides easy access to all previous versions.
Unified Search Experience
Leveraging ReadTheDocs' subprojects architecture, we've implemented a powerful unified search system that:
- Searches across all documentation sources simultaneously
- Delivers fast, relevant results
- Provides advanced search capabilities
- Improves discovery of related content
ITK's unified search across documentation sources, hosted on ReadTheDocs.
These improvements represent our commitment to providing the best possible documentation experience for the ITK community. The new system not only enhances accessibility but also sets the foundation for future documentation innovations.
Elegant, Performance-optimized, Modern C++
This release candidate expands 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 multidimenional 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.
Python 3.11 and Stable ABI Wheels
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.
Remote Module Enhancements
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.
DICOM and Web3 Testing Data
For a summary of changes that continue our sustainability evolution with Web3 testing data, see the 5.4 Release Candidate 2 release notes. For a summary of DICOM improvements, including expanded support for additional modality features and crucial spatial metadata for Secondary Capture images, see the 5.4 Release Candidate 4 release notes.
💾 Download
Python Packages
Install ITK Python packages with:
pip install itkGuide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
✨ Features
Python
- Wrapping for
itk.PhasedArray3DSpecialCoordinatesImage - Better support for multi-component images in
image_from_vtk_image itk.imreadsupports aseries_uidkwarg 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 - Add
dict_from_polyline,polyline_from_dict - Add
bufferedRegiontodict_from_imagerepresentation - Support passing a single transform to
transformwrite
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_PREFIXCMake variable - Many improvements to code coverage
- Enhanced NRRD and Nifti metadata support
- CMake
OPTIONAL_COMPONENTSsupport - Apply cmake-format for a consistent CMake style
get()member function toitk::SmartPointeritk::Size::CalculateProductOfElements(), to compute number of pixelsDeref(T *), to ease dereferencing a pointer safelyitk::ShapedImageNeighborhoodRangesupport C-array of offsets (by C++17)- Add
itk::Copy(const T & original), which simply returns a copy - Make
itk::ImageRegiontrivially copyable, remove inheritance (FUTURE) itk::VTKPolyDataMeshIOsupport for reading VTK 5.1 format- Add
ITK_DEFAULT_COPY_AND_MOVE(TypeName)macro definition - Replace
(const std::string)casts with C++17std::string_view - Replace SetSize/Index calls in tests with
region{ index, size } - Optionally limit an
ImageMaskto a specific pixel value
Performance
- Use index/point transforms without bounds checking
- Improved SSE2 detection
- Many improvements to how locks are handled
- Major
itk::SpatialObjectperformance 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
itkTypeMacrowithitkOverrideGetNameOfClassMacro - Cryptographic signatures are provided for release sources
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](https://github.com/InsightSoftwareConsortium/ITKGenericLa...
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 itkGuide 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.imreadsupports aseries_uidkwarg 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_PREFIXCMake variable - Many improvements to code coverage
- Enhanced NRRD and Nifti metadata support
- CMake
OPTIONAL_COMPONENTSsupport - Apply cmake-format for a consistent CMake style
get()member function toitk::SmartPointeritk::Size::CalculateProductOfElements(), to compute number of pixelsDeref(T *), to ease dereferencing a pointer safelyitk::ShapedImageNeighborhoodRangesupport C-array of offsets (by C++17)- Add
itk::Copy(const T & original), which simply returns a copy - Make
itk::ImageRegiontrivially copyable, remove inheritance (FUTURE)
Performance
- Use index/point transforms without bounds checking
- Improved SSE2 detection
- Many improvements to how locks are handled
- Major
itk::SpatialObjectperformance 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
itkTypeMacrowithitkOverrideGetNameOfClassMacro
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 itkGuide 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.imreadsupports aseries_uidkwarg 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_PREFIXCMake 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
itkTypeMacrowithitkOverrideGetNameOfClassMacro
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 itkGuide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
✨ Features
Python
itk.imreadsupports aseries_uidkwarg 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 itkGuide 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
TransformToDisplacementFieldis now available in Python- Pythonic IO functions
itk.imreadunderstandspathlib.Path's - New
reprforitk.Matrix np.asarrayworks onitk.MatrixDCMTKImageIOwrapping addressedGradientDifferenceImageToImageMetricwrappedSynImageRegistrationMethod,BSplineSynImageRegistrationMethodwrappedConjugateGradientLineSearchOptimizerv4wrapped- Wrap
ImageRegistrationMethodv4foritk.Mesh - Wrap
PointSetToPointSetMetric,PointSetToPointSetRegistrationMethod - Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4 - Nearly all registration v4 classes are now wrapped
VectorImageinput 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 MetaDataObjectwrapping 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::mplmeta-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::WriteMeshsimple 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::PolyLineCellInputSpaceNameandOutputSpaceNamesupport foritk::Transformqfac,qt_xyzadded to Nifti metadataLZWcompression support- Support requested output region in FFT filters
- New
itkBooleanMacrofor boolean ivar - Improved support for large Nifti files
- Mimic C++20
std::make_unique_for_overwritefor dynamic arrays - Add DataObject::UpdateSource() alternative to GetSource()->Update()
- Support
itk::Similarity3DTransforminitk::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::MeshFFTDiscreteGaussianImageFilter-- 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
TransformToDisplacementFieldis now available in Python- Pythonic IO functions
itk.imreadunderstandspathlib.Path's - New
reprforitk.Matrix np.asarrayworks onitk.MatrixDCMTKImageIOwrapping addressedGradientDifferenceImageToImageMetricwrappedSynImageRegistrationMethod,BSplineSynImageRegistrationMethodwrappedConjugateGradientLineSearchOptimizerv4wrapped- Wrap
ImageRegistrationMethodv4foritk.Mesh - Wrap
PointSetToPointSetMetric,PointSetToPointSetRegistrationMethod - Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4 - Nearly all registration v4 classes are now wrapped
VectorImageinput 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::mplmeta-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::WriteMeshsimple 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::PolyLineCellInputSpaceNameandOutputSpaceNamesupport foritk::Transformqfac,qt_xyzadded to Nifti metadataLZWcompression 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::MeshFFTDiscreteGaussianImageFilter-- 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 ...










