ITK 5.3 Release Candidate 2 available for testing

Kitware Logo with hexagons in the background

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

  • Create an IDE folder structure (#2791) (569f96529e)

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

  • nifti_installed_targets message is gray instead of default red (83a51e21c6)
  • remove unnecessary parentheses around logical conditions (e092a3df47)

Hans Johnson (3):

Enhancements

Bug Fixes

  • Wrong superclass identified for child class. (e64795cee5)

Style Changes

Hastings Greer (1):

Enhancements

  • Make representation match repr(itkVector) (5210cc23ab)

HastingsGreer (1):

Enhancements

Jason Rudy (1):

Platform Fixes

  • Fix Python wrapping of DCMTKImageIO. Closes #2762. (40235a57b4)

Jon Haitz Legarreta Gorroño (25):

Enhancements

  • Add further regexes for the issue/PR labeler (bffcf331db)
  • Improve KLCompareHistogramImageToImageMetric coverage (77fc43ba1b)
  • Improve KLCompareHistogramImageToImageMetric coverage (eec8c4dd2a)
  • Increase forward/inverse 1D FFT filters’ coverage (89837f6b80)
  • Increase code coverage (c4a359cc98)

Platform Fixes

  • Fix missing initialization braces warning (c7641fc000)
  • Fix missing initialization braces warning (33d1d0d3cc)
  • Fix missing initialization braces warning (c19cdcdf4e)
  • Fix undeclared identifier error (94dfea440b)
  • Mark class destructors with override (1daf2182f8)
  • Mark class destructors with override (7ef2496a26)

Bug Fixes

  • Provide missing template parameter to superclass (280c43e6a2)

Style Changes

  • Avoid repeating parent aliases in operator classes (babece933d)
  • Improve itk::SimilarityIndexImageFilter class test file style (ada00b5a00)
  • Sort the infrastructure regexes in labeler dictionary (8225a45cad)
  • Remove unnecessary implementation file manual instantiation guard (36bb69db44)
  • Improve the ivar printing in PrintSelf methods (286fca2694)
  • Make itkLabelImageToLabelMapFilterTest style consistent (014c08fc68)
  • Improve the ivar printing in PrintSelf methods (ef5a73456a)
  • Make IODCMTK module test style consistent (9cf28765c8)
  • Make FFT module test style consistent (59f16e7094)
  • Make style consistent in miscellaneous tests (5ce113f95b)
  • Prefer = default to explicitly trivial implementations (85e80f1fb0)
  • Prefer = default to explicitly trivial implementations (9b7464014d)
  • Make CMake flag help text third-party toolkit names consistent (867bf80e16)

KWSys Upstream (1):

Miscellaneous Changes

Lee Newberg (1):

Bug Fixes

  • Correct extra reference count from ObjectFactory::Create() (d8742f00b8)

Matt McCormick (11):

Enhancements

Documentation Updates

  • Recommend GitHub CLI (5e0a11483f)
  • Document Linux ARM Python package builds (509a66e176)
  • Software Guide link to GeodesicActiveContourShapePriorLevelSetImageFilter (911430821c)

Platform Fixes

  • Avoid Superclass type alias GCC compile errors (230be6be26)
  • Update CircleCI image to cimg/python:3.9 (b9e51f1c0d)
  • Initialize CXX standard in ITK_USE_FILE (9233ef9a7d)
  • Update KWStyle for macOS unknown -Wdeprecated-copy (0cc6867f37)

Bug Fixes

  • Improve dimension-dependent BSplineInterpolationWeightFunction wrapping (61f98c7fff)
  • Remove unused FFT1D testing data content links (ae983e8170)

MetaIO Maintainers (2):

Miscellaneous Changes

Niels Dekker (24):

Enhancements

  • Add static FastEvaluate(u) to BSplineDerivativeKernelFunction (760ae1246c)
  • Add RegisterInternalFactoryOnce<TFactory>() to ObjectFactoryBase (9f29a52d6c)
  • Improve thread-safety of registration of internal IO factories (fb47ffaf62)

Performance Improvements

  • Use FixedArray for table within BSplineInterpolationWeightFunction (974540982b)
  • Use FastEvaluate in MattesMutualInformationImageToImageMetric + v4 (9961ccd672)
  • Remove unnecessary IdentityTransform::m_ZeroJacobian (eec9fe6705)
  • Remove protected itk::Transform data member m_DirectionChange (0539a2c4dd)

Platform Fixes

  • Copy BSplineInterpolationWeightFunction::SupportSize within lambda (27e4815bb8)
  • Workaround VS2017 error C2653/C2886 using-declaration compiler bug (066ddb8859)
  • Use trailing return type instead of typename + dependent type (c54ad6715a)
  • Fix KWStyle check errors from cxx files Modules/Core/Common/CMake (809f14958a)
  • Declare IOFactoryRegisterManager constructors explicit (72782b8f01)
  • Remove pointer-to-bool conversions from IOFactoryRegisterManager (49c910a1fe)
  • Add “const” to IOFactoryRegisterManager implementations (f56cc7ef17)
  • Fix error: constexpr variable ‘ImageIOFactoryRegisterRegisterList’ (3ad34a16e8)

Style Changes

  • Use modern C++ TRealValueType{ x } syntax (c9b05ab2f9)
  • Improve const-correctness of protected CompositeTransform members (a4693b5074)
  • Do not use itkGetStaticConstMacro in ITK/Modules/Filtering (4408bd4b72)
  • Replace itkStaticConstMacro ImageSink, BinaryGeneratorImageFilter (f4e12a0b4b)
  • FUTURE_LEGACY_REMOVE itkStaticConstMacro, itkGetStaticConstMacro (bb217ca4a7)
  • clang-format AlignEscapedNewlines Left (for macro definitions) (7829ef68ad)
  • git blame should ignore “clang-format AlignEscapedNewlines Left” (b3bceaf2b8)
  • Use auto for declaration of variables initialized by New() (828453d1bf)
  • Remove redundant overrides of Get and Set member functions (5b155aec50)

Philip Cook (1):

Enhancements

Sean McBride (6):

Enhancements

  • make BSplineWarping2Test run serially, as it’s quite slow (0836c79324)

Platform Fixes

  • fixed compile errors due to incorrect superclass identification (9e2b8841ef)
  • modified several sed invocations to be BSD compatible (b76ff2cfe5)
  • fixed various Wunused-but-set-variable warnings from Clang 13 (b85f24600a)

Bug Fixes

  • fixed various threading errors in logging code, found by TSan (9599fc6cc0)

Style Changes

Simon Rit (3):

Enhancements

  • test exception handling in multithreading (24c3ad91db)

Bug Fixes

  • fix exception handling in itk::PoolMultiThreader (ec43890e1a)
  • fix installation of the generated file expat_config.h (9b74f7b38b)

Stephen R. Aylward (3):

Enhancements

Tom Birdsong (8):

Enhancements

Platform Fixes

  • Replace itkStaticConstMacro with constexpr in 1D FFT classes (cb25661a12)

Bug Fixes

  • Respect UseImageSpacing flag in LaplacianImageFilter (8f7a832b14)
  • Fixups for adding 1D FFT classes from ITKUltrasound to ITK (9332084028)
  • Replace deprecated macro in 1D FFT classes (2c2a48494c)

Style Changes

  • Use itkGetConstMacro for getting 1D FFT direction (d88c631d98)
  • Mark FFTW 1D FFT class destructors with override (eb6001490b)

Ziv Yaniv (1):

Bug Fixes

  • VersorTransform did not update offset in SetParameters (fb64eb2a89)

Zlib-ng Upstream (1):

Miscellaneous Changes

ambrozicc1 (1):

Bug Fixes

  • Disable all floating point exceptions (cd3f05eb0b)

josempozo (1):

Style Changes

  • itkTimeVaryingBSplineVelocityFieldImageRegistrationMethod.hxx (#2722) (52477f353f)

ITK Sphinx Examples Changes Since v5.3rc01

Dženan Zukić (1):

Bug Fixes

  • filling the buffer was forgotten in CreateImage (fc491a42)

Hans Johnson (3):

Platform Fixes

  • Remove unused typedefs from examples. (202a4541)
  • Place all QUICKVIEW code in ifdef (ca095ee2)

Bug Fixes

  • Missed setting file from command line. (3930982d)

Jon Haitz Legarreta Gorroño (1):

Enhancements

Mathew Seng (1):

Enhancements

  • BinaryMathematicalMorphology baseline testing (a91c350b)

ITK Software Guide Changes Since v5.3rc01

Jon Haitz Legarreta Gorroño (1):

Enhancements

Niels Dekker (4):

Platform Fixes

  • Fix compile errors from *.cxx files in SoftwareGuide/Cover/Source (ca70c18)

Bug Fixes

  • Replace “assigment” with “initialization” in the auto section (fb9eb1e)

Style Changes

  • In code examples, use auto for variables initialized by New() (49c2bf0)
  • Use auto for declaration of variables initialized by New() (d7f79dc)

Remote Module Changes Since v5.3rc01

Shape:

TubeTK:

Stephen R. Aylward (9):

Enhancements

  • Improve radius estimation and refactor tube-to-image registration framework (#82) (ef72833a)
  • Updated ITK to v5.3rc01 throughout github workflow (119f23ca)
  • Update Linux wheel to cp39 for github action (575517b7)
  • Update version to 1.0 (#89) (cee053ac)

Bug Fixes

  • MultiThreader not needed to set number of workers (#84) (d487bc13)
  • Spatial Object Registration Optimization (#86) (3911cc78)
  • Fix cmd-line args to RegisterSpatialObjectsToImage app (9d052906)
  • Create link to oneTBB for linux (b0670cf1)

Miscellaneous Changes

Leave a Reply