ITK 5.3.0 has been released!
Published on December 22, 2022 by Matthew McCormick
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.
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.
Install ITK Python packages with:
pip install --upgrade itk
Guide and Textbook
Unpack optional testing data in the same directory where the Library Source is unpacked.
- 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 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
- Linux x86_x64 binary Python packages are available for older and newer C++ standard libraries ABI's
- Wrap itk.PointsLocator
- MetaDataObject wrapping for itk.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++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
- Add 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
- InputSpaceName and OutputSpaceName support for itk::Transform
- qfac, qt_xyz added to Nifti metadata
- LZW 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 in itk::LandmarkBasedTransformInitializer
- Many code coverage improvements
- 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: 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, BoneEnhancement, BoneMorphometry, Cuberille, NeuralNetworks, FPFH, FixedPointInverseDisplacementField, GenericLabelInterpolator, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MeshToPolyData, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, Shape, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, Ultrasound, VariationalRegistration, and WebAssemblyInterface.
Third party library updates
- zlib migrated to zlib-ng
Congratulations and thank you to everyone who contributed to this release.
Of the 90 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, Jose M Pozo, Paul Elliott, Gabriele Belotti, Rafael Palomar, Fernando Hueso-González, Mark Asselin, mrhardisty, Laryssa Abdala, Roland Bruggmann, Natalie Johnston, ferdymercury, Shreeraj Jadhav, luz paz, Mikhail Polkovnikov, Chris Harris, Matt Cieslak, Alex, Imko Schumacher, Joey Cho, Butui Hu, Shengpeng YU, Alexy Pellegrini, and Stefan Dinkelacker.
Major improvements to the toolkit in this release led to an extended release timeline as refinements were made in testing. For 5.4.0, we plan to return to our regular biannual release cadence. For 5.4, anticipated improvements include enhancements to GPU Python packages, Python packaging improvements via scikit-build, improved MONAI support, and WebAssembly support. A few patch releases are expected before 5.4.0.
Discuss your experiences at discourse.itk.org or forum.image.sc. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization. Contribute donations through NumFOCUS on our Open Collective page. For commercial support, reach out to Kitware.