Skip to content

Releases: InsightSoftwareConsortium/ITK

ITK 5.3 Release Candidate 4: Distributed Computing

23 Aug 18:53
v5.3rc04
73e883d

Choose a tag to compare

We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 4 is available for testing! 🎉 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. For more information about new segmentation and shape analysis algorithms, see the 5.3 RC 2 Release Notes. For more information about documentation improvements, see the 5.3 RC 3 Release Notes.

ITK 5.3 RC 4 highlights distributed computing support with Dask. Dask 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, bioimaging, and material science, 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, perform multimaterial tetrahedral meshing from segmentations, and read meshes from SWC files, a format for representing neuron morphology.

Knee MRI mapping of cartilage thickness in osteoarthritis 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 with:

pip install --upgrade --pre 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
  • 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: 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.

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

Read more

ITK 5.3 Release Candidate 3: Documentation

13 May 16:45
v5.3rc03

Choose a tag to compare

ITK 5.3 Release Candidate 3 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 3 is available for testing! 🎉 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, among many more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes. For more information about new segmentation and shape analysis algorithms, see the 5.3 RC 2 Release Notes.

ITK 5.3 RC 3 highlights documentation improvements. The ITK Software Guide has been updated for ITK's modern C++ improvements. The guide now also includes a helpful primer for debugging native Python extension modules across platforms. The PDF's remain available for free download (links below), and an updated hardcopy can be purchased from Amazon. ITK's Sphinx Examples were updated to the latest ITK and Sphinx. Join us for a hackathon to work on the examples on Friday, May 20th. Doxygen API documentation now uses MathJax and SVG, and Doxygen HTML archives are significantly smaller.

ITK 5.3 RC 3 also includes FFT backend registration through the object factory, Python wrapping for more registration methods, metrics, and registration of point sets, and new remote modules to facilitate rendering of meshes and ITK filtering with CUDA. And, there any many more improvements and fixes detailed in the log below.


In addition to the PDF's below, the ITK Software Guide for ITK 5.3 is available in hard copy form on Amazon. Book 1, Book 2.

Download

Python Packages

Install ITK Python packages with:

pip install --upgrade --pre 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
  • 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

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

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

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

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

  • 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 59 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, and Jose M Pozo.

What's Next

We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidate will provide an opportunity to test contributions for packaging, distributed computation, and GPU acceleration. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.3rc02

Bradley Lowekamp (20):

Enhancements

  • Add valgrind suppression file for Ubuntu 20.04 (af5dc21f77)
  • Remove LBFGS2's pimpl member (2f60979bbb)
  • CircleCI use large resource class (2cded6cf83)
  • Update SimpleITKFilters remote module (fd67bcc443)
  • Doxygen use svg and mathjax (a3a87b7b06)
  • remove rendering datetime with Doxygen into HTML footer (510392c6ac)
  • Move factory registration code to separate file (ab07c12492)
  • Add factory names as optional argument (52c7d7479f)
  • Use ITK_<factory_name>_FACTORY_REGISTER_MANAGER (099b5621c8)

Platform Fixes

Bug Fixes

  • fix uninitiali...
Read more

ITK 5.3 Release Candidate 2: Grow Cuts

11 Nov 17:10
v5.3rc02

Choose a tag to compare

Pre-release

ITK 5.3 Release Candidate 2 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 2 is available for testing! 🎉 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, and makes over 200 more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes.

ITK 5.3 RC 2 highlights a new remote module, ITKGrowCut, which segments a 3D image from user-provided seeds. This method was popularized by 3D Slicer and was improved for inclusion in Seg3D with support from the National Institute of General Medical Sciences (NIGMS) of the National Institutes of Health (NIH) under grant numbers P41 GM103545 and R24 GM136986. This module can also be scripted in Python through a package installed with:

pip install itk-growcut


Seeds for ITKGrowCut module.


Results produced by ITKGrowCut module.

Download

Python Packages

Install ITK Python packages with:

pip install --upgrade --pre itk

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
  • 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

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

New filters

  • itk::TransformGeometryImageFilter: applies a rigid transform to an Image's metadata.
  • 1D FFT classes
    • Interface classes for forward, inverse transformations, half-hermetian transformations
    • Vnl implementations
    • FFTW implementations

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

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

  • expat
  • fftw
  • gdcm
  • googletest
  • hdf5
  • kwsys
  • metaio
  • niftilib
  • vxl
  • zlib migrated to zlib-ng

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 41 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:

Pranjal Sahu, Darren Thompson, Tomoyuki SADAKANE, Oleksandr Zavalistyi, Jose Tascon, Kian Weimer, Michael Kuczynski, Ebrahim Ebrahim, Philip Cook, ambrozicc1, Jason Rudy, josempozo, Andreas Gravgaard Andersen, and Hastings Greer.

What's Next

We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidate(s) will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.3rc01

Aaron Bray (1):

Enhancements

Andreas Gravgaard Andersen (4):

Enhancements

Brad King (3):

Enhancements

  • Update to newer third-party update script (28bf772844)
  • Convert MetaIO import script to use update-third-party.bash (b59cfe70d3)
  • Update to newer third-party update script (19155f3996)

Bradley Lowekamp (6):

Enhancements

  • Refactor TransformGeometryImageFilter pipeline i/o (2de73abe37)
  • Use InPlaceImageFilter for base class, run in-place by default (4379b75c2a)
  • Support generic linear Transform (978bc5b9f5)

Bug Fixes

  • Use GenerateOutputInformation and pipeline isolation (374940a1c6)
  • Fix ImageRegionSplitters with zero sized image (63f4ab7dd8)
  • Install ITKInitializeCXXStandard.cmake (98f0f5c5ed)

Bryn Lloyd (2):

Bug Fixes

  • pythonic itk should understand pathlib.Path (051ad61e26)
  • failing test - only pythonic api knows PathLike paths (0178cf01af)

Dženan Zukić (14):

Enhancements

  • use std::enable_if instead of itk::mpl::EnableIf (6b58ee8fce)
  • deprecate itk::EnableIf and the header which implements it (9f3a6243bf)
  • replace instances of mpl::IsSame by std::is_same (c28930c90f)
  • deprecate itk::IsSame and the header which implements it (342845e644)
  • replace itkStaticAssert by STL's static_assert (cd43985eba)
  • fully cover the logical test cases in MetaProgrammingLibraryTest (dcd7dfd469)
  • replace usage of IsBaseOf by std::is_base_of (e90519eeed)
  • deprecate mpl::IsBaseOf and the header which implements it (d458298bdd)
  • Deprecated mpl::IsConvertible and the header which implements it (2f29c8d2d0)
  • switch to zlib-ng official repository (dcaecbe147)

Platform Fixes

  • remove a workaround for a bug in Visual Studio 2015 (2f732c0f05)
  • fix VS2017 compile error in itkFEMElementStd.h (182d302823)

Style Changes

Read more

ITK 5.3 Release Candidate 1: Performance

14 Sep 17:58
v5.3rc01

Choose a tag to compare

We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 1 is available for testing! 🎉 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, and makes over 200 more improvements.

Release Candidate 1 highlights performance improvements. For deformable image registration, b-spline sampling was improved by ~30%. Multi-threading in Python was improved by adding Threading Building Blocks (oneTBB) to the cross-platform binaries, which improves multi-threaded parallelism by ~5-10%. Compression time with zlib, used by common medical imaging file formats like NIFTI, NRRD, or MetaImage, was dramatically reduced through migration to zlib-ng.

name description zlib duration [ms] zlib C.Ratio zlib-ng duration [ms] zlib-ng C.Ratio zlib-ng Speed-up zlib-ng C. Ratio improvement
wbPET.mha whole body PET 672 9.7% 661 9.3% 2% 4%
mra.nrrd MR angiography 1300 49.0% 1097 49.1% 19% 0%
CBCT.nrrd ConeBeam CT 11281 42.5% 9486 41.3% 19% 3%
input.nii brain MRI 4818 57.6% 3353 57.4% 44% 0%
scan7.mha mouse ultrasound 5939 45.4% 4694 46.2% 27% -2%
TBR5_clinpet.nii label map 782 0.5% 91 0.5% 759% -2%
WhiteMatter.nii label map 185 5.6% 76 5.8% 143% -4%
Average 145% 0%

Comparison of image compression with traditional zlib library and the new zlib-ng replacement introduced with ITK 5.3 using the default compression level.

Download

Python Packages

Install ITK Python packages with:

pip install --upgrade --pre itk

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.
  • Initial Python wrapping is available for the Video modules.
  • TransformToDisplacementField is now available in Python.

C++

  • C++14 is now required.
  • The minimum CMake version required is now 3.16.3.
  • New functions: MakePoint, MakeVector, MakeIndex, MakeSize.

New filter

  • itk::TransformGeometryImageFilter: applies a rigid transform to an Image's metadata.

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

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

  • gdcm
  • niftilib
  • zlib migrated to zlib-ng
  • hdf5
  • kwsys
  • metaio
  • googletest
  • vxl

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 32 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:

Pranjal Sahu, Darren Thompson, Tomoyuki SADAKANE, Oleksandr Zavalistyi, Jose Tascon, Kian Weimer, Michael Kuczynski, Ebrahim Ebrahim, and Philip Cook.

What's Next

We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidates will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.2.0

Brad T. Moore (1):

Bug Fixes

  • fixed reference leak when SWIG passing tuples or lists (95ee15a07e)

Bradley Lowekamp (12):

Enhancements

  • Add additional testing for zero sized label object (bc95f51d9f)
  • StatisticsLabelMapFilter use improve integer histogram (daa2a20f4b)
  • Rename ResampleInPlaceImage to TransformGeometryImageFilter (9827449b4b)

Platform Fixes

  • Address braces around initializer warning. (dae904e3d9)
  • Use C99 int types over libtiff's (f98f6a8920)

Bug Fixes

  • Register ComposeScaleSkewVersor3DTransform transform (8c7784d183)
  • Fix SpatialOrientationAdapter::FromDirectionCosines (8801247049)
  • Add tests demonstration current behavior of histogram based median (c6da8be54c)
  • Fix StatisticsLabelMap median for even number of pixels (208d7e32d7)
  • Fix HDF5 installation with cmake targets (4ecd711eab)
  • Propagate usage of HDF5 find_package NO_MODULE arg to install (f83a0ba9f4)
  • Add tests demonstration current behavior of histogram based median (55d0fdfafa)
  • Fix StatisticsLabelMap median for even number of pixels (3abace1991)
  • Correct stop condition description (362dd4c7cf)

Dave Chen (1):

Enhancements

  • add support for direction in VTK image (80bcb13d9b)

Dženan Zukić (50):

Enhancements

  • Add ResampleInPlaceImageFilter (53f8473c2d)
  • Update style and use the test of ResampleInPlaceImageFilter (e08395a7c0)
  • Add Transform::ApplyToImageMetadata method (510586750a)
  • Add support for long long pixel types to ImageDuplicator wrapping (18ae7502f0)
  • update remote modules using the maintenance script (c6f4685638)
  • Python wrapping reads VLV pixel type correctly (231ecb7d3d)
  • add HASI remote module (2798c2a85f)
  • Add GrowCut remote module (22524c5f71)
  • Remove WriteCompilerDetectionHeader ([d3e1...
Read more

ITK 5.2.1

17 Aug 16:45
v5.2.1
8be208e

Choose a tag to compare

We are happy to announce the Insight Toolkit (ITK) 5.2.1! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

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

ITK 5.2.1 is a patch release that makes improvements to issues found in the 5.2.0 release. For more details on ITK 5.2, see the ITK 5.2.0 Release Notes.

This release addresses various issues like improved combination of itk's native thread pool with Python's multiprocessing module in contexts like MONAI and Dask. Other improvements include more robust label map statistic computation, expanded Python support for additional datatypes, fixes for tube spatial objects when processing with the TubeTK module, support for GCC 11, and compatibility with the C++20 and C++23 standards. A detailed list can be found in the changelog below.

What's Next

Join us in the creation of advanced, open source scientific image analysis tools. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

The first release candidate for ITK 5.3, the next feature release, is anticipated in September.

Enjoy ITK!

ITK Changes Since v5.2.0

Bradley Lowekamp (7):

Enhancements

  • StatisticsLabelMapFilter use improve integer histogram (daa2a20f4b)
  • Add additional testing for zero sized label object (1fba0db29b)

Bug Fixes

  • Register ComposeScaleSkewVersor3DTransform transform (8c7784d183)
  • Add tests demonstration current behavior of histogram based median (55d0fdfafa)
  • Fix StatisticsLabelMap median for even number of pixels (3abace1991)
  • Fix HDF5 installation with cmake targets (4ecd711eab)
  • Propagate usage of HDF5 find_package NO_MODULE arg to install (f83a0ba9f4)

Dženan Zukić (9):

Enhancements

  • fix Python multi-processing hang on unix (2370517505)
  • Python wrapping reads VLV pixel type correctly (4ae3749a61)
  • Add support for long long pixel types to ImageDuplicator wrapping (278ac68e40)

Platform Fixes

  • Update KWStyle to fix compile warnings on Ubuntu 20.04 (32501b4230)
  • Restore generation of static runtime library on MSVC (dbb34f96cc)
  • Update KWStyle's version to avoid compile errors with C++23 (3d85fafc77)
  • use WRAP_ITK_SCALAR instead of WRAP_ITK_REAL in mesh filters (68944d52d7)

Bug Fixes

  • add support for long long pixel types in PyBuffer (ae7079c4fd)

Miscellaneous Changes

  • Revert "COMP: Use CMake 3.18.4 in macOS CI builds" (07176983ed)

GDCM Upstream (1):

Miscellaneous Changes

Lee Newberg (3):

Enhancements

  • Propagate StatisticsLabelMapFilter's default NumberOfBins (509751d5f5)
  • Wrap itkAdaptiveHistogramEqualizationImageFilter for Python. (974c63db99)

Bug Fixes

Matt McCormick (16):

Enhancements

  • Update CastXML source builds to v0.4.3, LLVM 11.1.0 (67fdd3067e)
  • Add CastXML binary for macOS arm64 (fde7fa6ce8)
  • Add Linux arm64 CastXML binaries (42aa3be3e4)
  • Bump the ITK CMake version to 5.1.0 (9f3fc5dd12)
  • Content link synchronization for ITK 5.2.1 (8be208ee1f)

Platform Fixes

  • Backport CastXML arm64 Eigen support (a3996fe99a)
  • Do not add IPO to Python wrapping if not supported (3d2e898400)
  • Only use np.float128 when available (1237a57a3d)
  • Make floating point exceptions a no-op with MUSL, Linux, ARMv8 (0afa3f06a1)
  • Use numpy==1.20.3 for CI testing (b667ce4d25)
  • Use mallinfo2 when available (f540091c6a)
  • Add missing template export macro to SLICImageFilter (c3e40927f8)

Bug Fixes

  • Add vnl_vector_from_array to extras all (3f8b14be54)
  • Do not create global multiprocessing RLock (cfdb5023a8)
  • Support double colons in Changelog commit summary (62804d09e9)

Style Changes

  • Apply black to AuthorsChangesSince.py script (7504f6e45c)

Niels Dekker (1):

Bug Fixes

  • Similarity3DTransform::SetScale should recompute m_Offset (dd893faf8a)

Pablo Hernandez-Cerdan (1):

Enhancements

  • Increase hook-max-size for next GDCM update (f913c0b6ed)

Stephen R. Aylward (5):

Enhancements

  • Updated SpatialObject wrapping to support CONST_POINTER (28cb8507fd)

Platform Fixes

  • Update SpatialObjects to correct const-ness (903f7c152e)

Bug Fixes

  • SpatialObject writes object color (3bf34f6cc5)
  • TubeSpatialObject missing CopyInformation (3060a6d1e5)
  • TubeSpatialObject didn't preserver Artery flag (2c3d27c9ee)

Thompson, Darren (IM&T, Clayton) (2):

Platform Fixes

  • Removed constructor template parameters from the VNL library (f27ab3f91f)
  • Removed constructor template parameters from itkSmapsFileParser (4c320b1d49)

Tom Birdsong (1):

Enhancements

  • Add float wrappings for itkSymmetricSecondRankTensor (5378dae447)

VXL Maintainers (1):

Miscellaneous Changes

  • VXL 2021-07-19 (22f874d...
Read more

ITK 5.2.0

28 May 13:36
v5.2.0
ac080c9

Choose a tag to compare

ITK 5.2.0 Release Notes

We are happy to announce the release of Insight Toolkit (ITK) 5.2.0! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

ITK 5.2 is a feature release that improves and extends interfaces to deep learning, artificial intelligence (AI) libraries, with an emphasis on Project MONAI, the Medical Open Network for AI. ITK 5.2 feature highlights include functional filter support for PyTorch tensors, Python dictionary interfaces to itk.Image metadata, NumPy-based pixel indexing, 4D Python image support, and improved multi-component image support.

Changes from Release Candidate 3 include an updated Python Quick Start Guide and many improvements to the ITK Sphinx Examples.

Experimental pip-installable Python packages are available for ARMv8 on macOS for the Apple M1 Silicon processor, and Linux, also known as aarch64. For a scientific computing environment on these platforms, we recommend mini-forge.

The pip-installable Python packages work with conda across all platforms. We are working to add native conda-forge packages in a future release.

All Pythonic, functional filter interfaces have type annotations with common, standard types along with numpy.typing.ArrayLike and itk.support.types.ImageLike.

Many other improvements were made since RC 3 based on community feedback. A full list can be found in the Changelog below.

Downloads

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

MONAI-compatible itk.Image metadata dict and NumPy-indexing pixel set/get Python interfaces.

  print(image['0008|0008'])
  image['origin'] = [4.0, 2.0, 2.0]

or a dictionary can be retrieved with:

  meta_dict = dict(image)

For example:

In [3]: dict(image)
Out[3]:
{'0008|0005': 'ISO IR 100',
 '0008|0008': 'ORIGINAL\\PRIMARY\\AXIAL',
 '0008|0016': '1.2.840.10008.5.1.4.1.1.2',
 '0008|0018': '1.3.12.2.1107.5.8.99.484849.834848.79844848.2001082217554549',
 '0008|0020': '20010822',

For non-string keys, they are passed to the NumPy array view so array views can be set and get with NumPy indexing syntax, e.g.

In [6]: image[0,:2,4] = [5,5]

In [7]: image[0,:4,4:6]
Out[7]:
NDArrayITKBase([[    5,  -997],
                [    5, -1003],
                [ -993,  -999],
                [ -996,  -994]], dtype=int16)

Provides a Python dictionary interface to image metadata, keys are
MetaDataDictionary entries along with 'origin', 'spacing', and
*'direction' keys. The latter reverse their order to be consistent with
the NumPy array index order resulting from array views of the image.

The itk.xarray_from_image and itk.image_from_xarray functions gained support for transfer of itk MetaDataDictionary and xarray attrs along with support for ordering xarray DataArray dims.

Pythonic enhancements

Improved Xarray support was added in the functional filter support for NumPy ndarray-like images, i.e. a numpy.ndarray, Dask Array or xarray.DataArrays.

itk.Image now provides an astype() method for casting to a NumPy dtype or itk pixel type.

In addition to single files or an image stack in a Python list, a directory can be passed to itk.imread containing a DICOM series. A spatially ordered 3D image will be obtained.

The conversion functions, itk.vtk_image_from_image() and itk.image_from_vtk_image() are directly available for working with VTK.

We now generate .pyi Python interface files, providing better feedback in integrated development environments (IDE)'s like PyCharm.

Python code was modernized for Python 3.6, including some typehints. We now use the black Python style.

An itk.set_nthreads() convenience function is available to set the default number of threads. Support is now available for use in the Python multiprocessing module.

In addition to itk.imread, itk.imwrite, itk.meshread, itk.meshwrite, spatial transformation IO functions are available, itk.transformread, itk.transformwrite.

To provide an itk.ImageIOBase derived object to read a specific file format, itk.imread and itk.imwrite gained support for the imageio keyword argument.

Python package layout improvements

Python support module organization has been organized into the itk.support.* package.

Python development was added for multi-config CMake generators, e.g. Visual Studio or multi-config Ninja, with the limitation that it only works with the most recently built configuration. When developing ITK Python wrapping or ITK remote modules, copy the WrapITK.pth build tree file to your virtual environment or conda environment site-packages to experiment with the wrapping.

Python package advances

Improved VectorImage and multi-component image support is available in the ITK Python packages.

NumPy is now a required package dependency.

Python packages are now built with interprodedural optimizations (IPO). Linux Python packages are built with the manylinux2014 toolchain.

Binary Python packages are available for ARM on macOS and Linux.

Python packages are available for Python 3.6 to 3.9. Following CPython deprecation schedule, this is the last release to support Python 3.6.

C++ interface improvements

A new itk::FunctionCommand class is available, an itk::Command subclass that calls std::function objects or lambda functions.

New itk::ReadImage, itk::WriteImage convenience functions are available for reading and writing image files with minimal code.

An itk::Image now supports operator== and operator!=.

A new itk::TernaryGeneratorImageFilter class is now available.

Third party library updates

Updates were made for the third party libraries:

  • GDCM
  • HDF5
  • double-conversion
  • pygccxml
  • castxml
  • swig
  • VXL
  • KWIML
  • KWSys
  • MetaIO
  • cuFFTW

Remote Module Updates

We added a new adaptive denoising remote module.

Many remote modules were updated: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, and VariationalRegistration.
Their updates are included in the detailed changelog below.

Support for cross-platform C++ testing, Python package generation, and PyPI deployment with GitHub Actions was added to almost all remote modules.

Test coverage and bug fixes

A multitude of test code coverage improvements were made -- our code coverage is now 90.09% with 127,103 lines tested.

Many more bug fixes and improvements have been made. For details, see the changelog below.

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 63 authors who contributed since v5.1.0, we would like to specially recognize the new contributors:

Horea Christian, Baptiste Depalle, David Thompson, Pierre Wargnier, Darren Thompson, Sebastien Brousmiche, Alexander Burchardt, Marco Nolden, Michael Kuczynski, MrTzschr, Bernhard M. Wiedemann, Charles Garraud, Lee Newberg, Bryn Lloyd, Gregory Lee, justbennet, Kenji Tsumura, Zhiyuan Liu, Jonathan Daniel, Moritz Schaar, Atri Bhattacharya, Mon-ius, Michael Jackson, Tom Birdsong, Alex Domingo, Laurent Malka, Kris Thielemans, Andreas Huber, and Melvin Robinson.

And the new con...

Read more

ITK 5.2 Release Candidate 3

09 Mar 15:43
v5.2rc03
d695196

Choose a tag to compare

Pre-release

ITK 5.2 Release Candidate 3 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.2 Release Candidate 3 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

ITK 5.2 is a feature release that improves and extends interfaces to deep learning, artificiayl intelligence (AI) libraries, with an emphasis on Project MONAI, the Medical Open Network for AI. ITK 5.2 feature highlights include functional filter support for PyTorch tensors, Python dictionary interfaces to itk.Image metadata, NumPy-based pixel indexing, 4D Python image support, and improved multi-component image support.

Release Candidate 3 adds parallel, multi-label support in itk::ContourExtractor2DImageFilter. Spatial transform IO functions, itk.transformread, itk.transformwrite are available, similar to itk.imread, itk.imwrite, itk.meshread, itk.meshwrite. itk.xarray_from_image, itk.image_from_xarray gained support for transfer of itk MetaDataDictionary and xarray attrs. An itk.ImageIOBase derived object for itk.imread and itk.imwrite can now be provided with the imageio keyword argument. Many code coverage improvements were made along with a number of platform support improvements, including VTK interfaces and Apple M1 ARM64 support.

Downloads

Python Packages

Install ITK Python packages with:

pip install --upgrade --pre itk

Library Sources

Testing Data

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

Checksums

Features

MONAI-compatible itk.Image metadata dict and NumPy-indexing pixel set/get Python interfaces.

  print(image['0008|0008'])
  image['origin'] = [4.0, 2.0, 2.0]

or a dictionary can be retrieved with:

  meta_dict = dict(image)

For example:

In [3]: dict(image)
Out[3]:
{'0008|0005': 'ISO IR 100',
 '0008|0008': 'ORIGINAL\\PRIMARY\\AXIAL',
 '0008|0016': '1.2.840.10008.5.1.4.1.1.2',
 '0008|0018': '1.3.12.2.1107.5.8.99.484849.834848.79844848.2001082217554549',
 '0008|0020': '20010822',

For non-string keys, they are passed to the NumPy array view so array views can be set and get with NumPy indexing syntax, e.g.

In [6]: image[0,:2,4] = [5,5]

In [7]: image[0,:4,4:6]
Out[7]:
NDArrayITKBase([[    5,  -997],
                [    5, -1003],
                [ -993,  -999],
                [ -996,  -994]], dtype=int16)

Provides a Python dictionary interface to image metadata, keys are
MetaDataDictionary entries along with 'origin', 'spacing', and
*'direction' keys. The later reverse their order to be consistent with
the NumPy array index order resulting from array views of the image.

The itk.xarray_from_image and itk.image_from_xarray functions gained support for transfer of itk MetaDataDictionary and xarray attrs along with support for ordering xarray DataArray dims.

Python functional filter support for PyTorch tensors

Similar to functional filter support for NumPy ndarray-like images, i.e. a numpy.ndarray, Dask Array or xarray.DataArrays, all itk.Image filters now support execution on PyTorch Tensor's.

For example:

import itk
import torch
import numpy as np

a = np.random.rand(50,50)
t = torch.from_numpy(a)
r = itk.median_image_filter(t)

Pythonic enhancements

itk.Image now provides an astype() method for casting to a NumPy dtype or itk pixel type.

In addition to since filtes or an image stack in a Python list, pass in a directory to itk.imread containing a DICOM series to obtain the appropriately ordered 3D image.

itk.vtk_image_from_image() and itk.image_from_vtk_image() for working with VTK.

We now generate .pyi Python interface files, providing better feedback in integrated development environments (IDE)'s like PyCharm.

Python code was modernized for Python 3.6, including some typehints. We now use the black Python style.

An itk.set_nthreads() convenience function is available to set the default number of threads. Support is now available for use in the Python multiprocessing module.

In addition to itk.imread, itk.imwrite, itk.meshread, itk.meshwrite, spatial transformation IO functions are available, itk.transformread, itk.transformwrite.

To provide an itk.ImageIOBase derived object to read a specific file format, itk.imread and itk.imwrite gained support for the imageio keyword argument.

Python package layout improvements

Python support module organization has been organized into the itk.support.* package.

Python development was added for multi-config CMake generators, e.g. Visual Studio or multi-config Ninja, with the limitation that it only works with the most recently built configuration. When developing ITK Python wrapping or ITK remote modules, copy the WrapITK.pth build tree file to your virtual environment or conda environment site-packages to experiment with the wrapping.

Python package advances

Improved VectorImage and multi-component image support is available in the ITK Python packages.

NumPy is now a required package dependency.

Python packages are now built with interprodedural optimizations (IPO). Linux Python packages are built with the manylinux2014 toolchain.

Python packages are available for Python 3.6 to 3.9. Following CPython deprecation schedule, this is the last release to support Python 3.6.

C++ interface improvements

A new itk::FunctionCommand class is available, an itk::Command subclass that calls a std::function objects or lambda functions.

New itk::ReadImage, itk::WriteImage convenience functions are available for reading and writing image files with minimal code.

An itk::Image now supports operator== and operator!=.

A new itk::TernaryGeneratorImageFilter class is now available.

Third party library updates

Updates were made for the third party libraries:

  • GDCM
  • HDF5
  • double-conversion
  • pygccxml
  • castxml
  • swig
  • VXL
  • KWIML
  • KWSys
  • MetaIO
  • cuFFTW

Remote Module Updates

We added a new adaptive denoising remote module.

Many remote modules were updated: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, and VariationalRegistration.
Their updates are included in the detailed changelog below.

Support for cross-platform C++ testing, Python package generation, and PyPI deployment with GitHub Actions was added to almost all remote modules.

Test coverage and bug fixes

A multitude of test code coverage improvements were made -- our code coverage is now 90.09% with 127,10 3nelines tested.

Many more bug fixes and improvements have been made. For details, see the changelog below.

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 58 authors who contributed since v5.1.0, we would like to specially recognize the new contributors:

Horea Christian, Baptiste Depalle, David Thompson, Pierre Wargnier, Darren Thompson, Sebastien Brousmiche, Alexander Burchardt, Marco Nolden, Michael Kuczynski, MrTzschr, Bernhard M. Wiedemann, Charles Garraud, Lee Newberg, Bryn Lloyd, Gregory Lee, justbennet, Kenji Tsumura, Zhiyuan Liu, Jonathan Daniel, Moritz Schaar, Atri Bhattacharya, Mon-ius, Michael Jackson, Tom Birdsong, Michael Kuczynski, Alex Domingo, Laurent Malka, and Kris Thielemans.

And the new contributors since v5.2rc02:

Andreas Huber and Melvin Robinson.

What's Next

This will be the last release candidate before the 5.2.0 release. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. We will hold [a hackathon on March 17th](https://docs.google.com/document/d/1ETszOhQWXxinP49mFz8_w_fgm_Ks_FnEJMB5mvlBh4w...

Read more

ITK 5.2 Release Candidate 2

15 Feb 20:03
v5.2rc02
0353b17

Choose a tag to compare

Pre-release

ITK 5.2 Release Candidate 2 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.2 Release Candidate 2 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

ITK 5.2 is a feature release that improves and extends interfaces to deep learning, artificial intelligence (AI) libraries, with an emphasis on Project MONAI, the Medical Open Network for AI. ITK 5.2 feature highlights include functional filter support for PyTorch tensors, Python dictionary interfaces to itk.Image metadata, NumPy-based pixel indexing, 4D Python image support, and improved multi-component image support.

Release Candidate 2 makes improvements to these new features, such as 4D Python support and torch tensor support, adds preliminary support for the new Apple M1 ARM64 system, and prepares updates to the ITK Sphinx Examples.

Downloads

Python Packages

Install ITK pre-release binary Python packages with:

pip install --upgrade --pre itk

Library Sources

Testing Data

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

Checksums

Features

MONAI-compatible itk.Image metadata dict and NumPy-indexing pixel set/get Python interfaces.

  print(image['0008|0008'])
  image['origin'] = [4.0, 2.0, 2.0]

or a dictionary can be retrieved with:

  meta_dict = dict(image)

For example:

In [3]: dict(image)
Out[3]:
{'0008|0005': 'ISO IR 100',
 '0008|0008': 'ORIGINAL\\PRIMARY\\AXIAL',
 '0008|0016': '1.2.840.10008.5.1.4.1.1.2',
 '0008|0018': '1.3.12.2.1107.5.8.99.484849.834848.79844848.2001082217554549',
 '0008|0020': '20010822',

For non-string keys, they are passed to the NumPy array view so array views can be set and get with NumPy indexing syntax, e.g.

In [6]: image[0,:2,4] = [5,5]

In [7]: image[0,:4,4:6]
Out[7]:
NDArrayITKBase([[    5,  -997],
                [    5, -1003],
                [ -993,  -999],
                [ -996,  -994]], dtype=int16)

Provides a Python dictionary interface to image metadata, keys are
MetaDataDictionary entries along with 'origin', 'spacing', and
'direction' keys. The later reverse their order to be consistent with
the NumPy array index order resulting from array views of the image.

Python functional filter support for PyTorch tensors

Similar to functional filter support for NumPy ndarray-like images, i.e. a numpy.ndarray, Dask Array or xarray.DataArrays, all itk.Image filters now support execution on PyTorch Tensor's.

For example:

import itk
import torch
import numpy as np

a = np.random.rand(50,50)
t = torch.from_numpy(a)
r = itk.median_image_filter(t)

Pythonic enhancements

itk.Image now provides an astype() method for casting to a NumPy dtype or itk pixel type.

In addition to since filtes or an image stack in a Python list, pass in a directory to itk.imread containing a DICOM series to obtain the appropriately ordered 3D image.

itk.vtk_image_from_image() and itk.image_from_vtk_image() for working with VTK.

We now generate .pyi Python interface files, providing better feedback in integrated development environments (IDE)'s like PyCharm.

Python code was modernized for Python 3.6, including some typehints. We now use the black Python style.

An itk.set_nthreads() convenience function is available to set the default number of threads. Support is now available for use in the Python multiprocessing module.

Python package layout improvements

Python support module organization has been organized into the itk.support.* package.

Python development was added for multi-config CMake generators, e.g. Visual Studio or multi-config Ninja, with the limitation that it only works with the most recently built configuration. When developing ITK Python wrapping or ITK remote modules, copy the WrapITK.pth build tree file to your virtual environment or conda environment site-packages to experiment with the wrapping.

Python package advances

Improved VectorImage and multi-component image support is available in the ITK Python packages.

NumPy is now a required package dependency.

Python packages are now built with interprodedural optimizations (IPO). Linux Python packages are built with the manylinux2014 toolchain.

Python packages are available for Python 3.6 to 3.9. Following CPython deprecation schedule, this is the last release to support Python 3.6.

C++ interface improvements

A new itk::FunctionCommand class is available, an itk::Command subclass that calls a std::function objects or lambda functions.

New itk::ReadImage, itk::WriteImage convenience functions are available for reading and writing image files with minimal code.

An itk::Image now supports operator== and operator!=.

A new itk::TernaryGeneratorImageFilter class is now available.

Third party library updates

Updates were made for the third party libraries:

  • GDCM
  • HDF5
  • double-conversion
  • pygccxml
  • castxml
  • swig
  • VXL
  • KWIML
  • KWSys
  • MetaIO
  • cuFFTW

Remote Module Updates

We added a new adaptive denoising remote module.

Many remote modules were updated: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, and VariationalRegistration.
Their updates are included in the detailed changelog below.

Support for cross-platform C++ testing, Python package generation, and PyPI deployment with GitHub Actions was added to almost all remote modules.

Test coverage and bug fixes

A multitude of test code coverage improvements were made -- our code coverage is now 89.86% with 126,591 lines tested.

Many more bug fixes and improvements have been made. For details, see the changelog below.

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 58 authors who contributed since v5.1.0, we would like to specially recognize the new contributors:

Horea Christian, Baptiste Depalle, David Thompson, Pierre Wargnier, Darren Thompson, Sebastien Brousmiche, Alexander Burchardt, Marco Nolden, Michael Kuczynski, MrTzschr, Bernhard M. Wiedemann, Charles Garraud, Lee Newberg, Bryn Lloyd, Gregory Lee, justbennet, Kenji Tsumura, Zhiyuan Liu, Jonathan Daniel, Moritz Schaar, Atri Bhattacharya, and Mon-ius.

And the new contributors since v5.2rc01:

Michael Jackson, Tom Birdsong, Michael Kuczynski, Alex Domingo, Laurent Malka, and Kris Thielemans.

What's Next

We anticipate an additional release candidate following community testing before the 5.2.0 release. The following release candidates will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.2rc01

Alex Domingo (1):

Bug Fixes

  • fix python module definition in VtkGlue wrap (5e28b1d05d)

Brad King (1):

Enhancements

  • Update to newer third-party update script from CMake (e0cd16a3c5)

Bradley Lowekamp (6):

Enhancements

  • Update ternary filter wrapping for generator base class (1fd685a12a)
  • Create ITK_DEFAULT_THREADER definition (0cb20b764c)
  • Add ITK_DEFAULT_THREADER as CMa...
Read more

ITK 5.2 Release Candidate 1

29 Jan 15:49
v5.2rc01

Choose a tag to compare

Pre-release

ITK 5.2 Release Candidate 1 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.2 Release Candidate 1 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

ITK 5.2 is a feature release that improves and extends interfaces to deep learning, artificial intelligence (AI) libraries, with an emphasis on Project MONAI, the Medical Open Network for AI. ITK 5.2 feature highlights include functional filter support for PyTorch tensors, Python dictionary interfaces to itk.Image metadata, NumPy-based pixel indexing, 4D Python image support, and improved multi-component image support.

Downloads

Python Packages

Install ITK pre-release binary Python packages with:

pip install --upgrade --pre itk

Library Sources

Testing Data

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

Checksums

Features

MONAI-compatible itk.Image metadata dict and NumPy-indexing pixel set/get Python interfaces.

  print(image['0008|0008'])
  image['origin'] = [4.0, 2.0, 2.0]

or a dictionary can be retrieved with:

  meta_dict = dict(image)

For example:

In [3]: dict(image)
Out[3]:
{'0008|0005': 'ISO IR 100',
 '0008|0008': 'ORIGINAL\\PRIMARY\\AXIAL',
 '0008|0016': '1.2.840.10008.5.1.4.1.1.2',
 '0008|0018': '1.3.12.2.1107.5.8.99.484849.834848.79844848.2001082217554549',
 '0008|0020': '20010822',

For non-string keys, they are passed to a NumPy array view so array views can be set and get with NumPy indexing syntax, e.g.

In [6]: image[0,:2,4] = [5,5]

In [7]: image[0,:4,4:6]
Out[7]:
NDArrayITKBase([[    5,  -997],
                [    5, -1003],
                [ -993,  -999],
                [ -996,  -994]], dtype=int16)

Provides a Python dictionary interface to image metadata, keys are
MetaDataDictionary entries along with 'origin', 'spacing', and
'direction' keys. The later reverse their order to be consistent with
the NumPy array index order resulting from array views of the image.

Python functional filter support for PyTorch tensors

Similar to functional filter support for NumPy ndarray-like images, i.e. a numpy.ndarray, Dask Array or xarray.DataArrays, all itk.Image filters now support execution on PyTorch Tensor's.

For example:

import itk
import torch
import numpy as np

a = np.random.rand(50,50)
t = torch.from_numpy(a)
r = itk.median_image_filter(t)

Pythonic enhancements

itk.Image now provides an astype() method for casting to a NumPy dtype or itk pixel type.

In addition to an image filename or an image filename stack in a Python list, pass in a directory to itk.imread containing a DICOM series to obtain the appropriately ordered 3D image.

itk.vtk_image_from_image() and itk.image_from_vtk_image() for working with VTK.

We now generate .pyi Python interface files, providing better feedback in integrated development environments (IDE)'s like PyCharm.

Python code was modernized for Python 3.6, including some typehints. We now use the black Python style.

An itk.set_nthreads() convenience function is available to set the default number of threads. Support is now available for use in the Python multiprocessing module.

Python package layout improvements

Python support module organization has been organized into the itk.support.* package.

Python development was added for multi-config CMake generators, e.g. Visual Studio or multi-config Ninja, with the limitation that it only works with the most recently built configuration. When developing ITK Python wrapping or ITK remote modules, copy the WrapITK.pth build tree file to your virtual environment or conda environment site-packages to experiment with the wrapping.

Python package advances

Improved VectorImage and multi-component image support is available in the ITK Python packages.

NumPy is now a required package dependency.

Python packages are now built with interprodedural optimizations (IPO). Linux Python packages are built with the manylinux2014 toolchain.

Python packages are available for Python 3.6 to 3.9. Following CPython deprecation schedule, this is the last release to support Python 3.6.

C++ interface improvements

A new itk::FunctionCommand class is available, an itk::Command subclass that calls a std::function objects or lambda functions.

New itk::ReadImage, itk::WriteImage convenience functions are available for reading and writing image files with minimal code.

An itk::Image now supports operator== and operator!=.

A new itk::TernaryGeneratorImageFilter class is now available.

Third party library updates

Updates were made for the third party libraries:

  • GDCM
  • HDF5
  • double-conversion
  • pygccxml
  • castxml
  • swig
  • VXL
  • KWIML
  • KWSys
  • MetaIO
  • cuFFTW

Remote Module Updates

We added a new adaptive denoising remote module.

Many remote modules were updated: AdaptiveDenoising, AnalyzeObjectLabelMap, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOFDF, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MGHIO, MeshNoise, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, MultipleImageIterator, ParabolicMorphology, PerformanceBenchmarking, PhaseSymmetry, PolarTransform, PrincipalComponentsAnalysis, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SmoothingRecursiveYvvGaussianFilter, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, TubeTK, TwoProjectionRegistration, and VariationalRegistration.
Their updates are included in the detailed changelog below.

Support for cross-platform C++ testing, Python package generation, and PyPI deployment with GitHub Actions was added to almost all remote modules.

Test coverage and bug fixes

A multitude of test code coverage improvements were made -- our code coverage is now 89.86% with 126,590 lines tested.

Many more bug fixes and improvements have been made. For details, see the changelog below.

Congratulations

Congratulations and thank you to everyone who contributed to this release.

Of the 51 authors who contributed since v5.1.0, we would like to specially recognize the new contributors:

Horea Christian, Baptiste Depalle, David Thompson, Pierre Wargnier, Darren Thompson, Sebastien Brousmiche, Alexander Burchardt, Marco Nolden, Michael Kuczynski, MrTzschr, Bernhard M. Wiedemann, Charles Garraud, Lee Newberg, Bryn Lloyd, Gregory Lee, justbennet, Kenji Tsumura, Zhiyuan Liu, Jonathan Daniel, Moritz Schaar, Atri Bhattacharya, and Mon-ius.

What's Next

We anticipate at least one more release candidate following community testing before the 5.2.0 release. The following release candidates will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.1.0

Alexander Burchardt (1):

Documentation Updates

Antoine Robert (2):

Enhancements

  • Use Numpy bridge with array of dimension 1 (53ce90294b)

Atri Bhattacharya (2):

Bug Fixes

  • Use explicit libm linking only on UNIX. (0ba93de147)

Miscellaneous Changes

Baptiste Depalle (1):

Enhancements

Bernhard M. Wiedemann (1):

Bug Fixes

Brad King (1):

Style Changes

  • Allow specific HDF5 sources to be larger than normal limit ([b...
Read more

ITK 5.1.2

08 Dec 17:14
v5.1.2
a0125aa

Choose a tag to compare

ITK 5.1.2 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.1.2! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

Python Packages

Install ITK Python packages with:

pip install --upgrade itk

or:

conda install -c conda-forge itk

Library Sources

Testing Data

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

Checksums

ITK 5.1.2 is a patch release that makes improvements to issues found in the 5.1.1 release. For more details on ITK 5.1, see the ITK 5.1.0 Release Notes.

This release addresses various issues such as HDF5 install paths and MRC and TIFF pixel type support -- details can be found in the change log below. Cross-platform Python packages are available for Python 3.6, 3.7, 3.8, and 3.9. Packages for Python 3.5 are no longer provided following CPython's deprecation schedule.

What's Next

Join us in the creation of advanced, open source scientific image analysis tools. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

The first release candidate for ITK 5.2, which provides many new features and updates for Project MONAI, is anticipated over the next two weeks.

Enjoy ITK!

Changes from 5.1.1 to 5.1.2

Bradley Lowekamp (4):

Platform Fixes

  • Updating ITKSimpleITKFilters remote module (e3ba060fe5)

Bug Fixes

  • Address divide by zero error in SignedMaurerDistance (4fb2831d62)
  • Support MRC2014 mode 0 as signed 8-bit integer (f7d72576bf)

Style Changes

  • Improve function types used in SignedMaurerDistanceMap (b706cf64c7)

Hans Johnson (1):

Bug Fixes

  • itkhdf5 installed paths were incorrect with recent hdf5 versions (fd4a438042)

Lee Newberg (1):

Bug Fixes

  • MinPriorityQueueElementWrapper constructor needs default constructor (b027780259)

Matt McCormick (3):

Enhancements

  • Update ITK CMake version for 5.1.2 (39d9b1712f)
  • Add int.tiff.md5 content link for 5.1.2 release (a0125aa894)

Bug Fixes

  • Add TIFFImageIO support for unsigned int and int pixel types (241953dd23)

Niels Dekker (1):

Bug Fixes

  • Fix MatrixOffsetTransformBase SetFixedParameters if too few params (33e9e6bdba)