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 itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums and Signatures
- InsightToolkit-5.4.0.tar.gz.asc
- InsightToolkit-5.4.0.zip.asc
- InsightData-5.4.0.tar.gz.asc
- InsightData-5.4.0.zip.asc
- MD5SUMS
- SHA512SUMS
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
- Add
dict_from_polyline
,polyline_from_dict
- Add
bufferedRegion
todict_from_image
representation - 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_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) itk::VTKPolyDataMeshIO
support 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
ImageMask
to a specific pixel value
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
- 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
- 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
- dcmtk
- eigen
- gdcm
- googletest
- kwsys
- minc
- meta-io
- nifti
- pygccxml
- vxl
- zlib-ng
Congratulations
Congratulations and thank you to everyone who contributed to this release.
Of the 60 authors who contributed since v5.3.0, we would like to specially recognize the new contributors:
Andrei Sandor, Nicklas Larsson, huangjxbq, Sankhesh Jhaveri, adrinkwater, FabioLolix, Vaibhaw, Ningfei Li, Max Aehle, Noah Egnatis, Federico Zivolo, Patrick Linnane, Shreeraj Jadhav, Shengpeng YU, Fernando Bordignon, Andras Lasso, Bernhard Froehler, Thomas BAUDIER, Matthieu LAURENDEAU, Fabian Wenzel, Mikhail Polkovnikov, Pritam Rungta, Florian de Gaulejac, Ramon Emiliani, Martin Hoßbach, Sadhana Ravikumar, and Gabriel Chartrand.
We extend our gratitude to all the ITK community members who have contributed to this release through code submissions, bug reports, and insightful discussions online.
What’s Next
ITK 5.4.0 represents a transformative milestone in our documentation journey. The finalization of 5.4.0 was delayed due to dependency issues in the example documentation’s infrastructure. While these are addressed, we’ll continue to refine the 5.4 series through patch releases. We’re excited to eventually migrate the examples to a similar robust foundation in future innovations.
Looking ahead, we’re thrilled to announce that ITK 6, our next major release, will showcase a substantial array of modernizations. The community has been hard at work implementing significant improvements that will elevate development with and on the toolkit. Watch for upcoming alpha and beta releases of ITK 6, which will run parallel to our 5.4 maintenance efforts.
This dual-track approach ensures both stability for current users and innovation for those ready to explore new features. Stay tuned for announcements about ITK 6’s preview releases, which will demonstrate the exciting evolution of the Insight Toolkit.
Enjoy ITK!