ITK 5.2.0 has been released!

We are happy to announce the release of Insight Toolkit (ITK) 5.2.0! :tada: 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.

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 contributors since v5.2rc03:

Michael Kuczynski, Flanz, Robert, Adrien Boucaud, Tom Birdsong, and suryanshsangwan.

What’s Next

Our next feature release, ITK 5.3, will follow a few patch releases. Remote module Python packages will be updated to leverage and work with itk-5.2.0.post3. Join the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

Enjoy ITK!

ITK Changes Since v5.2rc03

Bradley Lowekamp (6):

Enhancements

Performance Improvements

  • Replace thread index array with thread local storage (18f764f23a)

Platform Fixes

Bug Fixes

Style Changes

Dženan Zukić (13):

Enhancements

Performance Improvements

  • using constant boundary condition instead of filling the edge (a3429dd18e)

Documentation Updates

  • fix AtomicInt and MutexLock broken links in migration guide (eb0e5a01fc)
  • improve description of LBFGSERR_ROUNDING_ERROR stopping condition (3cff310b8c)

Platform Fixes

  • fix CMake Deprecation Warning (Compatibility with CMake < 2.8.12) (ff2643f37b)
  • Fix CMake warning by setting policy 0120 to OLD (ce2efb1b9e)
  • Disable CMake warning by setting policy 0120 to OLD (d9de577a7f)

Bug Fixes

  • Fix crash in itk.image_from_xarray if is_vector and Dimension==4 (3f2d117175)

Style Changes

  • mark ultrasound remote module enablement as advanced variable (2c660a404c)
  • use ReadImage and WriteImage in PolygonSpatialObjectIsInsideTest (75adb9fa30)

Flanz, Robert (1):

Bug Fixes

  • Fix regression in PolygonSpatialObject::IsInsideInObjectSpace (e3bf8e9af8)

James Butler (1):

Platform Fixes

  • Fix OpenJPEG build error with Visual Studio 16.9 (7cebc26dfa)

Jon Haitz Legarreta Gorroño (11):

Enhancements

Documentation Updates

  • Remove duplicate README file from Review module test folder (c077bb3f62)

Platform Fixes

  • Fix deduced type initialization warning and operand mismatch error (25dea2f73d)
  • Fix image pointer casting error (1c25350c93)
  • Fix missing initializer warning (7548a390d7)
  • Avoid creating a copy variable (6c352afd04)
  • Fix unreachable code warning (4b8767b7c5)

Style Changes

  • Add missing source file extension to Common module tests (d5bfbef81c)
  • Move DCMTK test baselines to module’s Baseline folder (55a186f1d4)

Lee Newberg (11):

Enhancements

  • Use (Shaped)RegionRange instead of (Shaped)RegionIterator. (ca23a2b2ad)
  • Mark most CMake variables as advanced (4c785c2176)
  • Support ArrayLike type with both numpy>=1.20 and numpy<1.20. (5c86c02178)

Performance Improvements

  • Make loop over labels be multi-threaded (b1ffefe79a)
  • Use std::unordered_map in itkContourExtractor2DImageFilter. (5e884ceb29)

Platform Fixes

  • type and const safety in ContourExtractor2DImageFilter (ad81939921)
  • Fix gcc4.8 warnings + errors itkContourExtractor2DImageFilter.hxx (396c2a172e)
  • Replace Type{} with Type() for gcc4. (22ca5dd83d)
  • Address ContourExtractor2DImageFilter valgrind defects (be7c5fda7e)

Bug Fixes

  • Fix reference counts for HDF5 DataSet assignment operator (479b9424e8)

Style Changes

  • Mimic code that was reviewed for the upstream HDF5 source (090399dbf0)

Matt McCormick (21):

Enhancements

  • Support 32 bit integer IO in wrapping (beb286c327)
  • Bump KWStyle to 2021-03-17 master (541b779329)
  • Add typehints for itk types to extras (22827a5e97)
  • Add typehints for itk functional filters (ed11fdcf73)
  • Add .process_object attribute to functional filters (06fe2c3c0b)
  • Update testing data content links for ITK 5.2.0 (ac080c97b1)

Documentation Updates

  • Update notes for ITKExamples → ITKSphinxExamples repository renaming (bf7600b317)
  • Update .zenodo (bbf4a978c0)

Platform Fixes

  • Wrap FastSymmetricForcesDemonsRegistrationFilter like its parent class (a9d9690b32)
  • Set Windows Python CI version to 3.8 (f1978435f8)
  • Build PNG arm sources for aarch64 CMAKE_SYSTEM_PROCESSOR (27216ceb98)
  • Constrain x86_64 optimization flags according to CMAKE_SYSTEM_PROCESSOR (28d2b22ca7)
  • Add lxmml for Windows Python CI build (0fb00c7977)
  • Do not explicitly instantiate Array in itkArrayTest (f5ce437b9d)
  • Add tolerance for patch-based denoising tests on Apple M1 (84b59dcee4)

Bug Fixes

  • Checkout full depths for clang-format-linter (3f0d124b8f)
  • Add all to itk.support.init_helpers (14992c6cd7)
  • Set ElementType for wrapping PyVectorContainer (dcde43cb41)

Style Changes

  • Remove extra itk prefix from support Python modules (4aba024e75)
  • Use modern, Pythonic style in ImageRegistration3.py (224043546e)
  • black formatting on Python modules (08eb3675b8)

Mihail Isakov (1):

Platform Fixes

  • Forward CMAKE_APPLE_SILICON_PROCESSOR (4fbacb9513)

Niels Dekker (27):

Enhancements

  • Add explicit OptimizerParameters(inputData, dimension) constructor (800e59e9ea)
  • Make itk::Matrix trivially copyable, following Rule of Zero (59ebc33c6e)
  • Add static member function, itk::Matrix::GetIdentity() (f8ad6cfdee)

Platform Fixes

  • Add virtual destructor to TestClass in ExceptionObject unit test (e2c62faf10)
  • Avoid “message” naming conflicts when calling an exception macro (3d35e43c08)
  • Define ExceptionObject destructor out-of-line (doing Rule of Five) (0fce3ff86b)
  • Fix macOS clang warnings [-Wunused-variable] in test source files (24744f9ef4)
  • Fix macOS clang warning [-Wunused-variable] in itkMINCImageIOTest (b2c3042da9)
  • No longer test is_trivially_copyable in itkMatrixGTest on GCC 4 (f24496d1b8)
  • Workaround Clang 3 error default initialization const MatrixGTest (874f51dba7)

Bug Fixes

  • Remove duplicate "itk::ERROR: itk::ERROR: " from itkExceptionMacro (df0a977dd4)
  • Remove duplicate "itk::ERROR: " from itkSpecializedExceptionMacro (1bd35b3bd5)

Style Changes

  • Remove 6 no-op dynamic_casts (casting T* to T*) from Modules/Core (5b3fc71e87)
  • Avoid “no-op” dynamic_cast from inside LightObject::New() (64cafdf93d)
  • Remove 9 no-op dynamic_casts (casting T* to T*) (5089a04475)
  • Remove unintended extra space from destructors and operators (1e99f17cf3)
  • ExceptionObject may assume that std::string::c_str() never throws (bf82b3cfee)
  • Follow Rule of Zero and use std::shared_ptr in ExceptionObject (f88fefff52)
  • C++11 inheriting constructors from ExceptionObject for 4 classes (e41b2ef921)
  • Remove destructors ExceptionObject derived classes (Rule of Zero) (79cf5c07b2)
  • Use equal_to on pixel containers DenseFiniteDifferenceImageFilter (670863f3c8)
  • Replace “itk::ERROR” by “ITK ERROR” in description of exception (2b34388159)
  • Inherit constructors (C++11) inside itkDeclareExceptionMacro (301a0482ee)
  • Remove ITK_MACROEND_NOOP_STATEMENT calls from exception macro’s (3f6c15eb53)
  • Remove dynamic_casts PosteriorImage BayesianClassifierImageFilter (faf3d3b223)
  • Remove ; from itkExceptionMacro PatchBasedDenoisingImageFilter (c9f07d9d73)
  • Default ImageBase default-constructor, call Matrix::GetIdentity() (254a9691ae)

Samuel Gerber (2):

Enhancements

  • Add option to access index in point set registration (b6a142a5b3)

Performance Improvements

  • Avoid Superfluous PointsLocator Updates (79c3c960c5)

Sean McBride (6):

Enhancements

  • changed CTEST_DROP_METHOD from http to https (3cd8502cd9)
  • fixed failing test with macOS Rosetta emulation by increasing buffer size (bca298ab36)

Platform Fixes

  • removed dead atomic operation checks (a44407b73f)
  • remove try-compile for SSE2 detection (0402e50150)
  • cherrypick HDF5 commit that added C++11 override keywords (dded4df49e)
  • fix link error building Universal Binary on Intel Mac (3fe5595ae6)

Simon Rit (1):

Platform Fixes

  • add FFTW library directory to FFT module (c5f8949654)

Tom Birdsong (3):

Enhancements

  • Expose numpy / vector container interface (cca42db412)
  • Type hints in functional interface (208e1e59e0)

Bug Fixes

  • Wrap PyVectorContainer for all VectorContainer templates (7216ed1ebd)

VXL Maintainers (2):

Miscellaneous Changes

ITK Sphinx Examples Changes Since v5.2rc03

Brian Helba (1):

Enhancements

  • Use the upstream CMake ExternalData module, instead of a vendored local copy (d1f7d985)

Dženan Zukić (1):

Style Changes

  • Switch to the new code order: Python before C++ (5db4da31)

Lee Newberg (5):

Documentation Updates

  • Indicate how to adjust resolution in ResampleAnImage (896d48e2)
  • Add details for running CreateNewExample.py (532ca008)
  • RescaleAnImage → RescaleIntensity to clarify that it’s not about size. (a732d546)

Platform Fixes

Bug Fixes

  • Fix continuous integration failure of ResampleAnImage (66b8d2f0)

Mathew Seng (7):

Enhancements

  • Enable use of titlecase for header creation (b33b3806)

Documentation Updates

  • Rename folder directories (3190a58e)
  • Allow consistent Documentation.rst headers (65e5b8f9)
  • Put remaining example headers into proper format (d2b99b30)
  • Enable LineSpatialObject doxygen references in Sphinx (8dd5e762)

Bug Fixes

  • Submodules not ordered in alphabetical order (c806da3e)
  • Rename LineSpatialObject to CreateALineSpatialObject (47e05d48)

Matt McCormick (44):

Enhancements

  • Add .ipynb_checkpoints to .gitignore (81a58211)
  • Upgrade to ITK 5.2 RC 3 (227eeff5)
  • Add clang-format pre-commit hook (eb063108)
  • Add black style pre-commit hook (0175c886)
  • Bump Netlify GitHub Action to v1.1.13 (0ee18172)
  • Test Python in CI with the Superbuild (57e24097)
  • Add IsPixelInsideRegion Python example (b9b630b2)
  • Update ITK Required version to 5.2.0 (f76453ee)
  • Update ITK to v5.2.0 (5377df13)
  • Simplify ResampleAnImage output parameters (e148246a)

Documentation Updates

  • Place Jupyter Notebook section before Code (54f836da)
  • Rename UpsampleOrDownsampleAScalarImage to ResampleAScalarImage (86f62137)
  • Add Python code for ResampleAScalarImage (0a458df4)
  • Place resample examples next to each other in module index (33cdf2c4)
  • Simplify ResampleSegmentedImage, Python version (d3ae2969)
  • Add pandoc, nbsphinx to the documentation deps (63634901)
  • Rename build-test-superbuild to build-test-python (d5505edb)
  • Install titlecase package for CreateNewExample.py script (7489cce3)
  • Update example Download link instructions (c17864d3)
  • Update build instructions for example .zip files (249b93e9)

Platform Fixes

  • Bump ITK version to 2021-03-14 master (74142c32)
  • Make the Sphinx linkcheck optional (7eae01a1)

Bug Fixes

  • Remove Compatibility/Deprecated group (b0777843)
  • Enable production-deploy on Netlify GitHub Action (8bcc38b8)
  • Do not use shallow checkout for linting (43a59ba7)
  • Use super-linter GitHub Action for black linting (2be5415c)
  • Remove unnecessary matrix options for notebook testing (017d6fd3)
  • Add nbsphinx to the superbuild Python packages (71aecd82)
  • Require itk>=5.2.0.post2 for notebook tests (97c6e553)
  • Tarball html output path when not built as a remote module (f76dc431)
  • Fix download links (635cbc75)
  • Add ipython to Python environment for documentation build (f6cbeb76)
  • Correct MutualInformationAffine output (f5e029f2)
  • Transform SVG files in Sphinx (0e0de5fb)
  • Fix epub output path link in documentation (0ca83aa3)

Style Changes

  • Pythonic style for ResampleAVectorImage (4cdd7029)
  • Use itk::ReadImage and itk::WriteImage in ApplyAffineTransform (fc822448)
  • Use Pythonic interface for ResampleAnImage (473070bf)
  • Run black on all Python examples (05bd86a4)
  • Add black, flake8 GitHub Action linters (6dd94077)
  • Disable JSCPD check (dbda6ab0)
  • Explicitly enable black linting for super-linter (4fdae985)
  • Rename ITKExamples to ITKSphinxExamples (b0d53207)
  • Only output downloadable .zip archives for examples (567b01c6)

Melvin Robinson (3):

Documentation Updates

  • Update documentation output to match Code.cxx output (0e2eca92)

Miscellaneous Changes

  • Fix filename for Create3DVolume. Need to add test (8176dc90)
  • Fix another small doc file (d695005d)

Pablo Hernandez-Cerdan (2):

Enhancements

Platform Fixes

  • Remove “vtk” prefix from VTK COMPONENTS (9c045a18)

Stephen Aylward (5):

Platform Fixes

  • Bump min required version for CMake to > 2.8 to avoid warning (f75e9c87)

Bug Fixes

  • CreateTarball assumes /src/ is unique in path (37da5d6c)

Style Changes

  • Reformatting CreateTarball.py to match lint (e706163a)
  • Additional lint changes to CreateTarball.py (d19ecc34)

Miscellaneous Changes

  • Style: Fix remaining lint issues (94d58947)

Tom Birdsong (4):

Enhancements

  • Build notebook docs with nbsphinx (c5eae3cc)
  • Add ComputeMeanSquareBetweenTwoImages Python example (d7928a96)

Bug Fixes

  • Move build-test-cxx CI source tree to path with shorter name (2f3b1dfc)
  • Use GZip for Doxygen XML archive (2d30a5bc)

suryanshsangwan (1):

Miscellaneous Changes

ITK Software Guide Changes Since v5.2rc03

Matt McCormick (4):

Enhancements

  • Bump ITK version to 5.2rc03 (3fda610)
  • Update ITK to v5.2.0 (d5dab33)

Documentation Updates

  • Update for ITKExamples → ITKSphinxExamples renaming (c4846a2)

Bug Fixes

  • Work around CI environmental variable setting (944a3e2)

Remote Module Changes Since v5.2rc03

AnisotropicDiffusionLBR:

Mathew Seng (1):

Platform Fixes

  • Update GitHub Actions from ITKModuleTemplate (3df1fde)

Matt McCormick (3):

Enhancements

  • Update CI for ITK 5.2 RC 3 (cc6c28c)

Platform Fixes

  • Constrain wrapping to 2D, 3D images (4cec024)

Bug Fixes

  • Incorporate ITKModuleTemplate CI configuration updates (1720bae)

BSplineGradient:

Matt McCormick (1):

Enhancements

  • Bump CI to ITK 5.2 RC 3 (76996c4)

HigherOrderAccurateGradient:

Matt McCormick (1):

Enhancements

  • Bump CI to ITK 5.2 RC 3 (59fa983)

IOFDF:

Matt McCormick (2):

Enhancements

  • Update CI for ITK 5.2 RC 3 (f79f207)

Documentation Updates

  • Add PyPI, License badges (587a000)

IOScanco:

Dženan Zukić (6):

Enhancements

  • enable writing ISQ files (08e269a)
  • avoid possible buffer overflows on string ivar setters (0f60565)
  • Initializing MuWater constant to the usual value (50aafe1)
  • update CI to 5.2RC3+ (823fb92)

Performance Improvements

  • do not re-scale the data if there is no need for it (b4392f4)

Bug Fixes

  • do not crash in CanReadFile if the path does not exist (7569472)

Matt McCormick (3):

Enhancements

  • Populate the Image MetaDataDictionary when reading (4e887b2)
  • Update build for ITK 5.2 RC 3 (4dd399f)
  • Populate the Image MetaDataDictionary when reading (f44399d)

Michael Kuczynski (3):

Enhancements

  • Add Tests for AIM Reading (05a019d)

Bug Fixes

  • Updated Baseline AIM Image to Pass Tests (8b0ab02)

Style Changes

  • Update Output File Names in Tests (530cc34)

MinimalPathExtraction:

Matt McCormick (1):

Enhancements

  • Update CI for ITK v5.2rc03+ (537b34a)

Montage:

Dženan Zukić (10):

Enhancements

  • update CI to 5.2RC3+ (2869345)
  • add getters and setters to Tile and TileConfiguration for Python access (325add3)
  • avoid deadlock when invoked via Python (62d6492)
  • support RGB and RGBA pixel types for TileMergeImageFilter (7f565de)
  • adding a Python example (ebe2dc3)
  • review suggestions (fc0a8d6)

Documentation Updates

  • Fix a broken article link (65dbdc8)

Bug Fixes

  • Do not use shallow checkout for linting (458424d)

Style Changes

  • minor corrections (29707c0)
  • allow wider range of types for instantiating merge filter (cb86803)

Matt McCormick (3):

Enhancements

  • Update builds for ITK 5.2 RC 3 (4b6aa42)

Documentation Updates

  • Add article citation (86fa4e0)
  • Improve authors for Zukić, Dž. (b66bb4f)

MorphologicalContourInterpolation:

Adrien Boucaud (2):

Enhancements

  • Add a flag to enable/disable extrapolation (ca5f688)
  • Update CI for ITK 5.2rc03 (87deba0)

Dženan Zukić (2):

Enhancements

  • adding a Python example with a simple test with an input image (2f90b24)
  • build examples as part of CI testing (539da4f)

RLEImage:

Matt McCormick (1):

Enhancements

  • Update Python package version requirement to 5.2rc1 (3ac76da)

RTK:

Lucas Gandel (1):

Platform Fixes

  • Add missing iostream include for CUDA classes (3dba9889)

Simon Rit (6):

Enhancements

  • upgrade CI for python packages to 5.2rc02 (3a00f178)
  • wrap RegularizedConjugateGradientConeBeamReconstructionFilter (4f3b7506)
  • upgrade CI for python packages to 5.2rc03 (6da67e06)

Documentation Updates

  • fix broken links to Siggraph pages (70cd3b37)

Bug Fixes

  • missing initialization of SART division threshold (dd7a5fe9)

Style Changes

  • rename guards for Cuda includes following ITK’s style (dd660a00)

SplitComponents:

Matt McCormick (3):

Enhancements

  • Bump CI for ITK 5.2 RC 3 (5c70947)

Documentation Updates

  • Remove Azure Pipelines badge (72594b2)

Platform Fixes

  • Update ITK version to 2021-03-14 master for Windows CI builds (fc7de89)

Strain:

Matt McCormick (1):

Enhancements

  • Update CI for ITK 5.2 RC 3 (9af85d8)

Thickness3D:

Mathew Seng (1):

Platform Fixes

  • Update GitHub Actions from ITKModuleTemplate (82bb742)

Matt McCormick (1):

Enhancements

  • Update CI for ITK v5.2rc02 (2150b11)

TotalVariation:

Matt McCormick (2):

Enhancements

  • Update CI for ITK 5.2 RC 2 (147c4cb)

Documentation Updates

  • Update setup.py download_url (b3564d7)

TubeTK:

Mathew Seng (6):

Enhancements

  • Cannot have both a modifiable and constant object macro (b3b717c3)

Platform Fixes

  • Update GitHub Actions from ITKModuleTemplate (79485ec1)

Bug Fixes

  • Remove old CI configurations (d0769c36)

Style Changes

  • Update itkGetObjectMacro macros (b8e642e9)
  • Rename ITK_DISALLOW_COPY_AND_ASSIGN to ITK_DISALLOW_COPY_AND_MOVE Fixes changes made in #2053. ITK_DISALLOW_COPY_AND_ASSIGN will be used if ITK_FUTURE_LEGACY_REMOVE=OFF. (918d7b01)
  • Place ‘;’ at the end of each macro (7bb42067)

Matt McCormick (3):

Enhancements

  • Update CI configuration for ITK 5.2 RC 3 (40bbcfb1)

Documentation Updates

Platform Fixes

  • Add cmake_minimum_required to top level CMakeLists.txt (05b347c4)

Stephen Aylward (3):

Enhancements

  • Combine jupyter notebooks into single .py file for CTP-Head (53a34786)
  • Remove cmake_minimum_requirements since ITK defines them. (4024de62)

Bug Fixes

  • Eliminate chance of divide by zero in itktubeBlurImageFunction (7d90c1f3)

Ultrasound:

Matt McCormick (3):

Enhancements

  • Update Notebook to Python 3 (61bec2c)
  • Add notebook CI testing (cae3e45)

Style Changes

  • Move notebooks into examples/ directory directly (d8ebede)
7 Likes

Thank you very much for releasing 5.2.0, Matt!

Would it be possible to show the full subject line of each commit? It now appears to chop off subject lines that have “::”.

1 Like

Very nice developments, thanks to all for working on these.

Do xarray and VTK conversions preserve image directions?

We were suffering for so long due to lack of image direction support in VTK. Now that we have it in VTK, we should not lose it due to Python wrapping. Does xarray support oriented images?

Are these generated automatically by the Python wrapper or some third-party tool or it is an ITK implementation? Could this mechanism be used for generating .pyi files for other C++ libraries, such VTK?

1 Like

@Niels_Dekker good catch! Yes, this is tracked here: Add support for colons in the changelog summary · Issue #2558 · InsightSoftwareConsortium/ITK · GitHub

1 Like

We do have oriented images in the xarray conversion functions via a direction attribute. However, more standardization across the community for adoption of this would be helpful. The ISC could possibly be helpful in this regard?

VTK conversions preserve image directions?

Not currently (VTK did not have oriented image support when this was created), but this could be added. An issue to track this is here: Orientation support for image_from_vtk_image and vtk_image_from_image · Issue #2559 · InsightSoftwareConsortium/ITK · GitHub

1 Like

Wanted to update our libraries but when I pulled the v5.2.0 tag from the GitHub repo I see that the last commit was back in April?

ENH: Update testing data content links for ITK 5.2.0 ac080c97b1 Matt McCormick matt.mccormick@kitware.com Apr 2, 2021 at 12:50 PM

This is with a fresh checkout of the sources from https://github.com/InsightSoftwareConsortium/ITK/tree/v5.2.0.

It’s Monday, after a long weekend so maybe this is just user error?

It is not an error. It took a while to go through all the steps of a release, including testing that remote modules work with the new version. Python packages are now at 5.2.0.post3.