ITK 5.3.0 available for download
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
. Major improvements were made to the generation of Python interface, *.pyi
files. Additional remote modules we 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 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, 3.11
- Initial Python wrapping is available for the Video modules
TransformToDisplacementField
is now available in Python- Pythonic IO functions
itk.imread
understandspathlib.Path
‘s - New
repr
foritk.Matrix
np.asarray
works onitk.Matrix
DCMTKImageIO
wrapping addressedGradientDifferenceImageToImageMetric
wrappedSynImageRegistrationMethod
,BSplineSynImageRegistrationMethod
wrappedConjugateGradientLineSearchOptimizerv4
wrapped- Wrap
ImageRegistrationMethodv4
foritk.Mesh
- Wrap
PointSetToPointSetMetric
,PointSetToPointSetRegistrationMethod
- Wrap
ANTSNeighborhoodCorrelationImageToImageMetricv4
- Nearly all registration v4 classes are now wrapped
VectorImage
input 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 for x86_64, manylinux_2_28 for aarch64
- 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 foritk.Matrix
- Generation of Python interface,
*.pyi
files - 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::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 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::PolyLineCell
InputSpaceName
andOutputSpaceName
support foritk::Transform
qfac
,qt_xyz
added to Nifti metadataLZW
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
initk::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::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
- dcmtk
- double-conversion
- 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 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.
π£οΈ What’s Next
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.
Enjoy ITK!