# ITK 5.4.7 has been released! Expanded Image IO, Faster DTI, and Reliable Builds

**URL:** https://discourse.itk.org/t/itk-5-4-7-has-been-released-expanded-image-io-faster-dti-and-reliable-builds/7787
**Category:** Announcements
**Tags:** python, itk-releases
**Created:** [August 10, 2026, 7:07pm UTC](https://discourse.itk.org/t/itk-5-4-7-has-been-released-expanded-image-io-faster-dti-and-reliable-builds/7787 "2026-08-10T19:07:45Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)
#### Post date: [August 10, 2026, 7:07pm UTC](https://discourse.itk.org/t/itk-5-4-7-has-been-released-expanded-image-io-faster-dti-and-reliable-builds/7787/1 "2026-08-10T19:07:47Z")

</div>

We are pleased to announce the release of [ITK 5.4.7](https://docs.itk.org/en/latest/releases/5.4.7.html)!

ITK 5.4.7 is a maintenance release focused on image IO capabilities, computational performance, build reliability, and packaging resilience for this cross-platform, open-source toolkit supporting N-dimensional scientific image analysis with spatially-aware algorithms. Highlights include 5D NRRD support, 32-bit integer TIFF read and write support, and substantially faster diffusion tensor reconstruction. ITK Python packages now use the `Pool` thread backend by default instead of `TBB`, which is better tuned for most workloads. 🥳

## 🔦 Highlights

- Performance:
  - `DiffusionTensor3DReconstructionImageFilter` now computes its constant tensor-basis SVD once instead of once per voxel, replacing repeated decompositions with a matrix-vector product in the voxel loop.
  - ITK Python packages now default to the `Pool` thread backend. TBB support remains available, but Pool provides better performance for most workloads without workload-specific TBB tuning.

- Image IO:
  - NRRD IO can now read and write 5D datasets with multiple non-spatial axes, including time sequences of 3D vector, velocity, and color images.
  - TIFF IO now reads and writes signed and unsigned 32-bit integer images in both 2D and multi-page 3D files.
  - `ImageFileReader` now safely augments short spatial direction vectors when an IO backend exposes additional non-spatial dimensions.

- Build and Platform Support:
  - Single-precision-only FFTW builds are fixed across include paths, factory registration, 1D FFT tests, and double-only curvature registration.
  - Ccache-backed Pixi, GitHub Actions, Azure Pipelines, and macOS ARM workflows improve CI turnaround and cache management.
  - CastXML wrapping now handles extended `-march` and `-mtune` values containing `.`, `+`, and `-`, including ARM feature strings.
  - VXL configuration supports C17 and C23 when using CMake 3.21 or newer.

- Reliability:
  - System TIFF detection on MSVC now uses symbol detection instead of a type-size check, avoiding Windows crashes.
  - GDCM and DCMTK build integration was updated for modern target namespaces and output-directory handling, including a fix for reconfiguration attempts that wrote libraries to `/bin`.
  - SWIG and PCRE archives are available through direct-file IPFS CIDs and multiple content-addressed mirrors.

### ⚡ Faster Diffusion Tensor Reconstruction

`DiffusionTensor3DReconstructionImageFilter` previously constructed an SVD of the same constant tensor basis for every voxel. For a 256 × 256 × 256 diffusion-weighted image, that could mean roughly 16.7 million identical decompositions.

ITK 5.4.7 computes the pseudo-inverse once in `BeforeThreadedGenerateData()` and applies it as a matrix-vector product for each voxel. The reconstructed tensors are unchanged, while the inner loop no longer invokes the thread-unsafe Netlib `dsvdc` routine. A new test also covers the single-`VectorImage` input path and verifies that it agrees with the existing multi-image gradient path.

### 🐍 Python Wrapping Defaults to the Pool Thread Backend

The ITK Python wheel builds now set `ITK_DEFAULT_THREAD_BACKEND=Pool`. TBB remains enabled and can still be selected explicitly, but its performance can depend strongly on work-unit and workload tuning. Pool is better tuned for most ITK workloads and avoids performance regressions observed in registration pipelines such as [ITKElastix](https://github.com/InsightSoftwareConsortium/ITKElastix).

This default is also consistent with the `libitk` conda-forge build configuration. See the related [ITKElastix performance report](https://github.com/InsightSoftwareConsortium/ITKElastix/issues/391).

### 🧭 Richer N-D Image IO

NRRD IO now supports general 5D arrays with two or three spatial dimensions, scalar or vector pixels, and an optional list axis. Applications can use the new `UseNonListRangeAxisAsPixel` strategy so that a `list` axis, such as time, remains an image dimension while another non-spatial axis represents pixel components. Axis kinds, labels, and units are now preserved for spatial and non-spatial axes.

TIFF IO now handles `uint32` and `int32` pixels for reading and writing, including multi-page volumes. Round-trip tests exercise values beyond the 16-bit range and verify both on-disk component types and full-fidelity pixel values.

## 💾 Download

**Python Packages**

Install [ITK Python packages](https://docs.itk.org/en/latest/learn/python_quick_start.html) with:

```bash
pip install --upgrade itk

```

**Guide and Textbook**

- [InsightSoftwareGuide-Book1-5.4.7.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightSoftwareGuide-Book1-5.4.7.pdf)
- [InsightSoftwareGuide-Book2-5.4.7.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightSoftwareGuide-Book2-5.4.7.pdf)

**Library Sources**

- [InsightToolkit-5.4.7.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightToolkit-5.4.7.tar.gz)
- [InsightToolkit-5.4.7.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightToolkit-5.4.7.zip)

**Testing Data**

Unpack optional testing data in the same directory where the Library Source is unpacked.

- [InsightData-5.4.7.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightData-5.4.7.tar.gz)
- [InsightData-5.4.7.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightData-5.4.7.zip)

**Checksums and Signatures**

- [InsightToolkit-5.4.7.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightToolkit-5.4.7.tar.gz.asc)

- [InsightToolkit-5.4.7.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightToolkit-5.4.7.zip.asc)

- [InsightData-5.4.7.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightData-5.4.7.tar.gz.asc)

- [InsightData-5.4.7.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/InsightData-5.4.7.zip.asc)

- [MD5SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/MD5SUMS)

- [SHA512SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.7/SHA512SUMS)

### 🙏 Acknowledgments

Thank you to contributors Andras Lasso, Bradley Lowekamp, Csaba Pinter, Hans J. Johnson, James Butler, Matt McCormick, and the broader ITK community for their code, testing, review, and documentation efforts.

* * *

### 🗣 What’s Next

**ITK 6 Release Candidate**

Following the ITK 6 alpha and beta releases, the **ITK 6 release-candidate phase is coming**. ITK 6 advances the toolkit with:

- Architectural upgrades for contemporary C++ development
- Enhanced template metaprogramming capabilities
- Code modernization for improved readability and maintainability
- A modernized Python platform and wrapping foundation

 ![itk-monthly-commit-volume-posts-agents-md-small](https://discourse.itk.org/uploads/default/original/2X/3/3ae6ed825b9eb1ec80c5f0d69a01c28dd0602128.png)

_ITK repository commit activity since the adoption of agentic engineering practices, lead by Hans Johnson. Many improvements that lingered for years are coming in ITK 6._

**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.6

### Andras Lasso (1):

#### Bug Fixes

- Fix image file reader crash when axis direction vector is short ([767cef7022](https://github.com/InsightSoftwareConsortium/ITK/commit/767cef7022))

### Bradley Lowekamp (3):

#### Enhancements

- Conform GDCM to use modern `CMAKE_*_OUTPUT_DIRECTORY` variables ([606985ec77](https://github.com/InsightSoftwareConsortium/ITK/commit/606985ec77))

#### Bug Fixes

- Use `check_symbol_exists` for `TIFFFieldReadCount` detection ([811e72e41f](https://github.com/InsightSoftwareConsortium/ITK/commit/811e72e41f))
- Replace ambiguous `std::abs<double>` with `std::fabs` ([6bddd5386d](https://github.com/InsightSoftwareConsortium/ITK/commit/6bddd5386d))

### Csaba Pinter (1):

#### Enhancements

- Support 5D files in NRRD IO ([12203bc094](https://github.com/InsightSoftwareConsortium/ITK/commit/12203bc094))

### Hans J. Johnson (15):

#### Enhancements

- Add a single-image-path test for DTI tensor reconstruction ([ee656f3d61](https://github.com/InsightSoftwareConsortium/ITK/commit/ee656f3d61))

#### Performance

- Hoist constant tensor-basis SVD out of the per-voxel DTI loop ([ccee041e68](https://github.com/InsightSoftwareConsortium/ITK/commit/ccee041e68))
- Add ccache support and Pixi CI tasks to release-5.4 ([4fdb4e59f8](https://github.com/InsightSoftwareConsortium/ITK/commit/4fdb4e59f8))
- Use Pixi CI tasks and cache ccache in the release-5.4 Pixi workflow ([bd73d04548](https://github.com/InsightSoftwareConsortium/ITK/commit/bd73d04548))
- Add ccache caching to release-5.4 Azure Pipelines ([ee682ce034](https://github.com/InsightSoftwareConsortium/ITK/commit/ee682ce034))
- Add ccache caching to the release-5.4 macOS ARM workflow ([25dbd451e9](https://github.com/InsightSoftwareConsortium/ITK/commit/25dbd451e9))

#### Bug Fixes

- Allow `.`, `+`, and `-` in the `-march`/`-mtune` strip regex ([a6522f6244](https://github.com/InsightSoftwareConsortium/ITK/commit/a6522f6244))
- Set `FFTW_INCLUDE` from `FFTW3f_INCLUDE_DIRS` in FFTWF-only builds ([c8eb734e83](https://github.com/InsightSoftwareConsortium/ITK/commit/c8eb734e83))
- Register FFTW factories only for configured precisions ([07cab31ad4](https://github.com/InsightSoftwareConsortium/ITK/commit/07cab31ad4))
- Make 1D FFT tests build with single-precision FFTW ([b5a78a5046](https://github.com/InsightSoftwareConsortium/ITK/commit/b5a78a5046))
- Fix GDCM reconfiguration writing libraries to `/bin` ([aa722e4c7c](https://github.com/InsightSoftwareConsortium/ITK/commit/aa722e4c7c))

#### Platform Fixes

- Backport GitHub Actions cache-management workflows to release-5.4 ([8308c69de9](https://github.com/InsightSoftwareConsortium/ITK/commit/8308c69de9))
- Include `fftw3.h` directly in FFTW filter headers ([8f8610c2fe](https://github.com/InsightSoftwareConsortium/ITK/commit/8f8610c2fe))
- Restrict `CurvatureRegistrationFilter` to `ITK_USE_FFTWD` builds ([2477dcc8ef](https://github.com/InsightSoftwareConsortium/ITK/commit/2477dcc8ef))
- Drop legacy `EXECUTABLE_OUTPUT_PATH` and `LIBRARY_OUTPUT_PATH` use in GDCM ([4aec5d1399](https://github.com/InsightSoftwareConsortium/ITK/commit/4aec5d1399))

### James Butler (1):

#### Platform Fixes

- Update DCMTK targets for the new DCMTK namespace ([83a1c530ad](https://github.com/InsightSoftwareConsortium/ITK/commit/83a1c530ad))

### Matt McCormick (5):

#### Enhancements

- Serve SWIG and PCRE archives through direct-file IPFS CIDs ([fd2f212e31](https://github.com/InsightSoftwareConsortium/ITK/commit/fd2f212e31))
- Bump ITK version to 5.4.7 ([4c49df934c](https://github.com/InsightSoftwareConsortium/ITK/commit/4c49df934c))

#### Bug Fixes

- Support reading and writing 32-bit integer TIFF images ([1347b4eb85](https://github.com/InsightSoftwareConsortium/ITK/commit/1347b4eb85))

#### Platform Fixes

- Support C17 and C23 standards in VXL and remove an obsolete VCL iterator test ([1e04b653d9](https://github.com/InsightSoftwareConsortium/ITK/commit/1e04b653d9))

#### Style

- Format the SwigInterface `CMakeLists.txt` with gersemi ([e7c9b1ef5e](https://github.com/InsightSoftwareConsortium/ITK/commit/e7c9b1ef5e))

## ITK Python Package Changes

### Matt McCormick (1):

#### Performance

- Set the default thread backend to Pool while retaining TBB support ([4159ac5485](https://github.com/InsightSoftwareConsortium/ITKPythonPackage/commit/4159ac5485))
