We are happy to announce the [Insight Toolkit (ITK)](https://itk.org) 5.3 Release Candidate 4 is available for testing! :tada: 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](https://github.com/InsightSoftwareConsortium/ITK/releases/tag/v5.3rc01). For more information about new segmentation and shape analysis algorithms, see [the 5.3 RC 2 Release Notes](https://github.com/InsightSoftwareConsortium/ITK/releases/tag/v5.3rc02). For more information about documentation improvements, see [the 5.3 RC 3 Release Notes](https://github.com/InsightSoftwareConsortium/ITK/releases/tag/v5.3rc03).
ITK 5.3 RC 4 highlights distributed computing support with Dask. [Dask](https://www.dask.org/) 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](https://www.youtube.com/watch?v=CMmoa8pP_eo), [bioimaging](https://blog.dask.org/2019/08/09/image-itk), and [material science](https://www.kitware.com/accelerating-volumetric-x-ray-microstructural-analytics-with-dask-itk-from-supercomputers-to-the-cloud/), 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](https://github.com/InsightSoftwareConsortium/itk-wasm), [perform multimaterial tetrahedral meshing from segmentations](https://github.com/SCIInstitute/ITKCleaver), and [read meshes from SWC files, a format for representing neuron morphology](https://github.com/InsightSoftwareConsortium/ITKIOMeshSWC).
![](https://i.imgur.com/Staejq8.png)
*[Knee MRI mapping of cartilage thickness in osteoarthritis](https://github.com/uncbiag/OAI_analysis_2) 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](https://itkpythonpackage.readthedocs.io/en/latest/Quick_start_guide.html) with:
pip install --upgrade --pre itk
**Guide and Textbook**
- [InsightSoftwareGuide-Book1-5.3rc04.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightSoftwareGuide-Book1-5.3rc04.pdf)
- [InsightSoftwareGuide-Book2-5.3rc04.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightSoftwareGuide-Book2-5.3rc04.pdf)
**Library Sources**
- [InsightToolkit-5.3rc04.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightToolkit-5.3rc04.tar.gz)
- [InsightToolkit-5.3rc04.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightToolkit-5.3rc04.zip)
**Testing Data**
Unpack optional testing data in the same directory where the Library Source is unpacked.
- [InsightData-5.3rc04.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightData-5.3rc04.tar.gz)
- [InsightData-5.3rc04.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/InsightData-5.3rc04.zip)
**Checksums**
- [MD5SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/MD5SUMS)
- [SHA512SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.3rc04/SHA512SUMS)
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` understands `pathlib.Path`'s
- New `repr` for `itk.Matrix`
- `np.asarray` works on `itk.Matrix`
- `DCMTKImageIO` wrapping addressed
- `GradientDifferenceImageToImageMetric` wrapped
- `SynImageRegistrationMethod`, `BSplineSynImageRegistrationMethod` wrapped
- `ConjugateGradientLineSearchOptimizerv4` wrapped
- Wrap `ImageRegistrationMethodv4` for `itk.Mesh`
- Wrap `PointSetToPointSetMetric`, `PointSetToPointSetRegistrationMethod`
- Wrap `ANTSNeighborhoodCorrelationImageToImageMetricv4`
- Nearly all registration v4 classes are now wrapped
- `VectorImage` input for `DisplacementFieldTransform`
- 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 to `itk::ReadImage`, `itk::WriteImage`
- FFT backends are now registered through the object factory mechanism
- `cbegin()` and `cend()` member functions to `Index`, `Offset`, `Size`
- Add `itk::MakeFilled<TContainer>(value)`
- `itk::ConvertNumberToString<TValue>(val)` convenience function
- `itk::bit_cast<TDestination>(source)` function
- `itk::PolyLineCell`
- `InputSpaceName` and `OutputSpaceName` support for `itk::Transform`
- `qfac`, `qt_xyz` added to Nifti metadata
- `LZW` compression support
- Support requested output region in FFT filters
- Many code coverage improvements
New filters
- `itk::TransformGeometryImageFilter`: applies a rigid transform to an `Image`'s metadata.
- 1D FFT classes
- Interface classes for forward, inverse transformations
- Vnl implementations
- FFTW implementations
- `itk::TriangleMeshCurvatureCalculator` - Gaussian curvature calculator for `itk::Mesh`
- `FFTDiscreteGaussianImageFilter` -- discrete gaussian filters via FFTs
Remote module updates
New remote modules:
- [HASI](https://github.com/KitwareMedical/HASI): High-Throughput Applications for Skeletal Imaging
- [ITKGrowCut](https://github.com/InsightSoftwareConsortium/ITKGrowCut): segments a 3D image from user-provided foreground and background seeds
- [ITKMeshToPolyData](https://github.com/InsightSoftwareConsortium/ITKMeshToPolyData): Convert an ITK Mesh to a simple data structure compatible with vtkPolyData
- [ITKCudaCommon](https://github.com/SimonRit/ITKCudaCommon): Framework for processing images with CUDA
- [itk-wasm WebAssemblyInterface](https://github.com/InsightSoftwareConsortium/itk-wasm): Build WebAssembly processing pipelines to native executables and support ITK WebAssembly file formats
- [ITKCleaver](https://github.com/SCIInstitute/ITKCleaver): Multimaterial tetrahedral meshing.
- [ITKIOMeshSWC](https://github.com/InsightSoftwareConsortium/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 candidate, and discuss your experiences at [discourse.itk.org](https://discourse.itk.org). Contribute with pull requests, code reviews, and issue discussions in our [GitHub Organization](https://github.com/InsightSoftwareConsortium).
**Enjoy ITK!**