ITK Versions Save

Insight Toolkit (ITK) -- Official Repository. ITK builds on a proven, spatially-oriented architecture for processing, segmentation, and registration of scientific images in two, three, or more dimensions.

v5.4rc04

2 weeks ago

v5.4rc02

3 months ago

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

:flashlight: Highlights

ITK 5.4 marks a significant feature update aimed at bolstering the project's long-term sustainability. Specifically, this release harnesses the power of Web3 technology to enhance the process of contributing new data for collaborators, streamline software release management for quicker and more efficient rollouts, and facilitate decentralized, cost-efficient, and redundant data storage for extended distribution purposes.

Since every local Git repository contains a copy of the entire project history, it is important to avoid adding large binary files directly to the repository. Large binary files added and removed throughout a project's history will cause the repository to become bloated, take up too much disk space, require excessive time and bandwidth to download, etc.

A solution to this problem which has been adopted by ITK is to store binary files, such as images, in a separate location outside the Git repository, then download the files at build time with CMake.

A "content link" file contains an identifying cryptographic hash or Content Identifier (CID). The content link is stored in the Git repository at the path where the file would exist, but with a .cid extension appended to the file name. CMake will find these content link files at build time, download them from a list of server resources, and create symlinks or copies of the original files at the corresponding location in the build tree.

The CID is a self-describing hash following the multiformats standard created by the InterPlanetary Filesystem (IPFS) community. A file with a CID for its filename is content-verifiable. Locating files according to their CID makes content-addressed, as opposed to location-addressed, data exchange possible. This practice is the foundation of the decentralized web, also known as the dWeb or Web3. By adopting Web3, we gain:

  • Permissionless data uploads
  • Robust, redundant storage
  • Local and peer-to-peer storage
  • Scalability
  • Sustainability

Contributors to ITK can upload their data through a simple web app, (alt web3 link) that utilizes a free CID pinning service, web3.storage.

Data used in the ITK Git repository is periodically tracked in a dedicated Datalad repository, the ITKData DataLad repository. DataLad is a free and open source, Git-based distributed data management system that keeps track of data, ensures reproducibility, and supports collaboration. Versioned testing data trees can be browsed in a natural, nested directory / file layout, either via DataLad or IPFS's UnixFS storage.

The tracked data is stored across redundant locations so it can be retrieved from any of the following:

ITK testing data flow

Testing data workflow. Testing or example data is uploaded to IPFS via the content-link-upload.itk.org web app. This pins the data on multiple servers across the globe. At release time, the data is also pinned on multiple servers in the USA and France and community pinners. At release time, the data is also stored in the DataLad Git repository, served on an Apache HTTP server, and served on the GitHub Pages CDN. At test time an ITK build can pull the data from a local cache, archive tarball, the Apache HTTP server, GitHub Pages CDN, or multiple IPFS HTTP gateways.

For more information, see our testing data documentation.

ITK 5.4 contains many additional improvements; highlights can be found below along with a more detailed changelog. For a summary of changes that continues our modern C++ evolution see our 5.4 Release Candidate 1 release notes.

💾 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

  • Wrapping for itk.PhasedArray3DSpecialCoordinatesImage
  • Better support for multi-component images in image_from_vtk_image
  • itk.imread supports a series_uid kwarg for DICOM series selection
  • TBB version updated to latest stable version, disabled on Intel macOS
  • Python binaries for 3.7-3.11 across platforms
  • This will be the last release with Python 3.7 suppport
  • Remote module GitHub action updated, Python 3.7 is not supported in Remote module builds
  • Updated to the latest version of scikit-build

C++

  • C++17 is now required
  • Many style improvements for modern C++ and consistency
  • GCC 13 support
  • Name mangling prefix for third party libraries is configurable
  • Update mangled 3rd-parties to use MANGLE_PREFIX CMake variable
  • Many improvements to code coverage
  • Enhanced NRRD and Nifti metadata support
  • Apply cmake-format for a consistent CMake style

Performance

  • Use index/point transforms without bounds checking
  • Improved SSE2 detection
  • Many improvements to how locks are handled

Documentation

  • New GitHub Action to check spelling
  • Doxygen formatting cleanup
  • Doxygen spelling fixes
  • Doxygen Insight Journal links are consistent
  • Many Doxygen improvements to the content
  • Software Guide updated for style modernization
  • Change the Insight Journal handle links to insight-journal links
  • Replace itkTypeMacro with itkOverrideGetNameOfClassMacro

Remote module updates

Updated modules:

Third party library updates

  • eigen
  • gdcm
  • googletest
  • kwsys
  • meta-io
  • nifti
  • pygccxml
  • vxl
  • zlib-ng

🙏 Congratulations

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

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

Nicklas Larsson, huangjxbq, Sankhesh Jhaveri, adrinkwater, FabioLolix, Vaibhaw, Ningfei Li, Max Aehle, Noah Egnatis, Federico Zivolo, Patrick Linnane, LAURENDEAU Matthieu, Shreeraj Jadhav, Shengpeng YU, Fernando Bordignon, and Andras Lasso.

🗣️ What's Next

Process improvements in this release will ensure more regular and frequent releases in the future. Listening to feedback from the community, we anticipate one additional 5.4 release candidate to enable testing of critical DICOM improvements. Our next release candidate will include improvements based on experiences with 5.4 RC 2. 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.4rc01

Dave Chen (4):

Documentation Updates

  • Fixed spelling in itkRGBGibbsPriorFilter.h (a4a46ccf83)
  • spelling fixes for the new github action (55b5f46bab)
  • Spell out Computing for the checker (816d406fbb)

Bug Fixes

Dženan Zukić (7):

Enhancements

  • Add Python wrapping for itk::PhasedArray3DSpecialCoordinatesImage (4bfe66c762)
  • Better support for multi-component images in image_from_vtk_image (336be62d3d)
  • Improve warning messages (label numbers as ints instead of chars) (7b74fca444)

Performance Improvements

  • Use index/point transforms without bounds checking (6e5ccc7504)

Documentation Updates

  • Move detailed description to the top of class documentation page (afb5595d8f)
  • Update ITK version mentioned in download.md from 4.13.1 to 5.3.0 (80446b1c18)

Platform Fixes

  • Avoid CMake warning caused by feature test (5bdcb06679)

Gabriel A. Devenyi (1):

Bug Fixes

  • Fix incorrectly specified expected result in itkIOTransformMINCTest.cxx (279ffc9895)

Jean-Christophe Fillion-Robin (2):

Enhancements

  • Update mangled 3rd-parties to use MANGLE_PREFIX CMake variable (a3afcf6fcd)
  • Ensure 3D multi-components conversion in image_from_vtk_image is tested (abbab61c31)

Jon Haitz Legarreta Gorroño (104):

Enhancements

  • Increase coverage for miscellaneous classes (d6beb524a4)
  • Increase coverage for RegularStepGradientDescentBaseOptimizer (1312fca3d2)
  • Increase Optimizers classes coverage: get cost function derivate (bec6a42b7e)
  • Increase coverage for miscellaneous classes (99abf7b89b)
  • Increase coverage for miscellaneous classes (f7615d27ac)
  • Test the const point iterators in itk::QuadEdgeMeshPolygonCell (46c47e08b3)
  • Increase coverage for miscellaneous classes (fd873b7ecf)
  • Remove ivar memberless PrintSelf implementation (3a73368734)
  • Allow itkCellInterfaceTest to run as long as possible (e09713fbe9)
  • Print the superclass object in itk::MRFImageFilter::PrintSelf (a7a8254fe2)
  • Add boolean macro to itk::Statistics::Histogram::ClipBinsAtEnds (4179d83534)
  • Use itkPrintSelfObjectMacro to print smart pointers (20225e5b7a)
  • Add getter methods to itk::RGBGibbsPriorFilter ivars (d28311fb8e)

Documentation Updates

  • Change the Insight Journal handle links to insight-journal links (1d4d1ba198)
  • Remove class self reference in Doxygen \sa command (3ed75247e6)
  • Clean up itk::ConformalFlatteningMeshFilter Doxygen documentation (3a542d0d19)
  • Remove duplicate "type" in alias documentation (fabc102c52)
  • Document miscellaneous cell class methods in header files (291e618b24)
  • Avoid documenting ivar default values in SpatialFunction class (4418b97f56)
  • Make the RTTI method documentation consistent in module Video (a22d0a840f)
  • Add a note to the README about issues vs. questions (27f450358c)
  • Add a note to the first interaction workflow about its nature (b774fd5358)
  • Refer to ITK's discussion space in a consistent manner (c42a8a7d3f)
  • Reword the copyright holder sentence in the code of conduct (f2cec9b741)
  • Link the Creative Commons license page in the code of conduct (392b74dd30)
  • Improve consistency when referring to the issue tracker in README (66e933613c)
  • Fix MetaDataObject::EncapsulateMetaData empty return doc warning (68ab83372a)
  • Document MetaDataObject::EncapsulateMetaData parameters (0595670b96)
  • Document itk::Indent class methods in header file only (3eb8fd7cdf)
  • Improve MINC transform adapter exception message (a54062d23c)
  • Fix typo in itk::Math function parameter documentation (b87ed30059)
  • Use Doxygen math syntax for math notation in class documentation (365c547d9f)
  • Document RGBGibbsPriorFilter class methods in header file only (4e5be8334d)
  • Use proper Doxygen documentation style in RGBGibbsPriorFilter (309a0535de)
  • Improve comments in itkHistogramTest.cxx (657b793d97)
  • Remove François Budin from GPG key holder ITK maintainer's list (85072a41ee)
  • Remove updating ResearchGate ITK project from release tasks (4809e93798)
  • Explain better the release announcement in NumFOCUS newsletter (39138d78e6)
  • Remove unnecessary ITKIOTransformMINC README files (89e00d7ac8)
  • Improve ITKIOTransformMINC class documentation (7caf7e3c70)

Platform Fixes

  • Fix method parameter bound mismatch warning in itk::VertexCell (2338bdc487)
  • Fix method parameter bound mismatch warning in misc cell classes (a66bc7dc48)
  • Add missing semicolon to macro statement end in tests (1801209574)

Bug Fixes

  • Return exit failure when insufficient test arguments are provided (3b7078fdb4)
  • Fix dynamically allocated memory management (edd6051ae3)

Style Changes

  • Increase itk::LabelStatisticsImageFilter::PrintSelf consistency (20124626ae)
  • Use macros in tests (84769233ee)
  • Improve ivar printing style (4ca8106ef7)
  • Conform to ITK comment style for within code in OpenCVVideoCapture (1d4cc7ab36)
  • Increase consistency in test argument check message (3e41b8213d)
  • Honor FastIncrementalBinaryDilateImageFilter class in test name (ae3ee1de82)
  • Improve style across miscellaneous tests (424f25800e)
  • Conform to ITK SWG style guidelines adding a test ending message (19ae34f628)
  • Conform to ITK style guidelines in miscellaneous test comments (be8e4f6020)
  • Remove empty comment lines in itk::TriangleCell implementation (16f42267a0)
  • Prefer using the ITK_TRY_EXPECT macros in test (eacd1d24fa)
  • Conform to ITK style guidelines in test (b3c935159b)
  • Conform to ITK SWG style guidelines in test ending message (5c8f982e34)
  • Use the itkNameOfTestExecutableMacro macro in tests (395c8f44ea)
  • Use exception checking macros in tests (2038fd7695)
  • Remove test input argument checking if no argument is required (2596ea22b8)
  • Fix ITK coding style inconsistency linter error (18dd3e693f)
  • Honor the filter name in source code filename (c3ae51517e)
  • Increase consistency in test argument check message (5ca4f3b02a)
  • Conform to ITK style guidelines in test ending message (cfb8ae114d)
  • Conform to ITK comment style for within-code comments (tests) (35b85b15bf)
  • Remove empty comment lines in tests (7a316c9c12)
  • Remove uninformative standard output messages in tests (05a0e03c31)
  • Do not allow lonely std output endl statements in misc tests (f795943d61)
  • Improve printed message style across miscellaneous tests (83c1c48c95)
  • Declare variables close to where they are used in tests (8a1d3d7420)
  • Declare and use test image dimensionality as constexpr (8bc48815e5)
  • Do not declare a test status variable that is only used once (e388b79fdd)
  • Use exception checking macros in itkVectorExpandImageFilterTest (6e8a2600d1)
  • Prefer setting the input once all ivars have been set in test (bb3d6d1696)
  • Use ITK_TRY_EXPECT_NO_EXCEPTION macro in IOTransformMINC test (204d23a7e8)
  • Prefer using ITK_TEST_EXPECT_EQUAL lh and rh comparison macro (56bd332807)
  • Prefer using itk::Math::FloatAlmostEqual in comparisons (93d3d88c76)
  • Add vertical space for readability in itkIOTransformMINCTest (47df4f3567)
  • Use macros in tests (c313059069)
  • Honor itk::RGBGibbsPriorFilter classname in its test filename (86e2e937c0)
  • Use an unsigned integer to store the number of poles (6807db4845)
  • Prefer using setter macro for itk::RGBGibbsPriorFilter ivar (452cb3f971)
  • Use standard return codes in example (2535192fb3)
  • Increase consistency in example argument check message (5707df8d3e)
  • Make non-macro comparison conditional blocks consistent in tests (67d18e4715)
  • Increase consistency in test argument check message (c2688765c2)
  • Conform to ITK style guidelines in test ending message (dfc9fcd32f)
  • Prefer using constexpr <type> over struct for image dimension (eaf25ef26b)
  • Conform to ITK comment style for within-code comments (tests) (488ac833aa)
  • Remove empty comment lines in tests (e4643c59f0)
  • Remove uninformative standard output message in itkHistogramTest (41ad697626)
  • Remove uninformative comments in tests (b9b530f620)
  • Do not allow lonely std output endl statements in misc tests (f9f3078385)
  • Increase consistency in newline character use in tests (154938d8ca)
  • Remove blank lines in excess in miscellaneous tests (603b67d7b9)
  • Prefer using macros for itk::SLICImageFilter basic methods (df51b3ffa2)
  • Use standard exit return code in itk::SLICImagetFilter test (8930ed2da3)
  • Conform to ITK SWG style guidelines in test ending message (d9f0d5e66a)
  • Do not use superclass template parameters in itk::fem RTTI (9f1d99077f)
  • Prefer double forward slashes for within-method body comments (8d3df523ff)
  • Use testing macros in itkHistogramTest.cxx (397278f75f)
  • Make non-macro comparison blocks consistent in itkHistogramTest (d6111f2edb)
  • Use this to address self methods in RGBGibbsPriorFilter (034cd067bb)

Matt McCormick (22):

Enhancements

  • Bump pygccxml to v2.4.0 (b1f03a845c)
  • Migrate content links from .md5, .sha512 to .cid (f3899ce8c6)
  • Add cmake-format config and script (788fbc4858)
  • Remove setup-girder-api-key GitSetup script (31597d4fac)
  • Remove UploadBinaryData.sh script (2916886bfb)

Documentation Updates

  • Release documentation updates for ITK 5.4 RC 01 (779afebce0)
  • Update testing data upload docs for CID transition (53fddd33c6)
  • Update .git-blame-ignore-revs for cmake-format, .cid content links (9442dcdcec)
  • Update content link upload documention in GitCheatSheet.pdf (caedb38830)
  • Add Sphinx Documentation rendering (effb802abd)

Platform Fixes

Bug Fixes

  • GetGlobalDefaultSplitter to a global singleton (94344fd0b5)
  • Update pygccxml source code path in update script (886b5243b1)
  • Fix xarray compute value check (ff64d3c3ff)
  • Remove extra space in CppcheckTargets VERBATIM (078db2e1bc)
  • Fix ITKGroup identification with multiline itk_module (6384cd067a)

Style Changes

  • Separate \ingroup for MultiThreaded with AddImageFilter, PowImageFilter (1ec8df840a)
  • Initial run of cmake-format (efa749515d)
  • Lower case for function name in ITKModuleEnablement (3568eeec2b)

MetaIO Maintainers (1):

Miscellaneous Changes

Nicklas Larsson (1):

Bug Fixes

Niels Dekker (41):

Enhancements

  • Add TEST(ObjectFactoryBase, CreatedInstanceHasReferenceCountOfTwo) (47bcc5081e)
  • Make VectorContainer::size_type public, test nested vector types (dc641cd7d7)
  • Add MersenneTwisterRandomVariateGenerator::ResetNextSeed() (ecd7bdae82)

Documentation Updates

  • Note that object returned by CreateInstance has reference count 2 (f981aae69d)
  • itkGetObjectMacro member functions return a raw (not smart) pointer (eb97e952c2)
  • Document that SetGlobalInstance always returns true (9da299b85c)

Platform Fixes

  • Adjust check that all arguments of MakePoint/Vector have same type (89d3c3c015)

Bug Fixes

  • ImageRandomIteratorWithIndex should not assign data in constructor (997ff54d59)
  • Use lock_guard<mutex> in FFT configuration to deal with exception (a00eb3914d)
  • Use lock_guard<mutex> in FEMFactoryBase to deal with exception (c1e15a36d0)

Style Changes

  • Call GetTransformTypeAsString() just once, in TransformFactory (9baa34b699)
  • Remove redundant GetPrimaryOutput() calls from ProcessObject (997aa169a2)
  • Remove redundant checks in ProcessObject::VerifyPreconditions() (c3ee320bf8)
  • ImageSourceCommonGlobals default member initializer, Rule of Zero (c6690b9209)
  • Replace std::unique_lock with std::lock_guard in ThreadPool (1094cdde9a)
  • Replace std::unique_lock with std::lock_guard in Filter.hxx files (3335e69433)
  • Remove duplicate assignment from itkPlatformMultiThreaderPosix (1dc9deb15c)
  • Remove unused threadId, just pass nullptr to _beginthreadex (2ee34dde73)
  • Use lock_guard<mutex> in PlatformMultiThreader classes (c4c3710d5f)
  • Use lock_guard<mutex> in PlatformMultiThreader::TerminateThread (e56c7bdf20)
  • Use lock_guard<mutex> in ParallelSparseFieldLevelSetImageFilter (5e1f0cf1c0)
  • Use lock_guard<mutex> in PDEDeformable Registration classes (873a724b92)
  • Replace std::min, std::max in MultiThreaderBase with std::clamp (0c31b223ed)
  • Remove ITK_X_ASSERT, just use assert in constexpr functions (e888f7bc2d)
  • Use insert_or_assign in SingletonIndex SetGlobalInstancePrivate (5c14067e53)
  • Let SetGlobalInstancePrivate return void, instead of true (eadc465c3f)
  • Let Singleton assume that SetGlobalInstance always returns true (6ec6328ed2)
  • SingletonIndex does not need to store the unused func parameter (6d1c4c7ab7)
  • Remove unused parameter from SetGlobalInstance and Singleton (8598841db5)
  • Replace Registration/Metricsv4 "LockPtr" with "MutexPtr" (8149ba9651)
  • Rename private and internal data members from "Lock" to "Mutex" (0150e46924)
  • Code cleanup ImageRandomConstIteratorWith(Only)Index RandomJump() (d92dc14c7f)
  • Rename local std::lock_guard variables "lockGuard" (04100e62e0)
  • Default constructors VectorContainer, Iterator, ConstIterator (ff47f5cf84)
  • Remove private ObjectFactoryBase member InitializeFactoryList() (82d7060408)
  • Replace std::bind in ThreadPool::AddWork with lambda expression (75b99671a8)
  • Simply assign factories, in ObjectFactoryBase::RegisterInternal() (2859d67cda)
  • Remove private ObjectFactoryBase member RegisterInternal() (427972e600)
  • Remove lock MersenneTwisterRandomVariateGenerator ResetNextSeed (1ce107fc42)
  • Disallow copy/move, default constructor MersenneTwisterGlobals (89d4735e05)
  • Add using-declaration MersenneTwisterRandomVariateGenerator GTest (bdcb9e33cb)

Sean McBride (1):

Bug Fixes

  • Use atomic bool to fix race found by thread sanitizer (c3a8eab2ad)

VXL Maintainers (1):

Miscellaneous Changes

Zlib-ng Upstream (2):

Miscellaneous Changes

pygccxml Upstream (1):

Enhancements

ITK Sphinx Examples Changes Since v5.4rc01

Matt McCormick (5):

Enhancements

  • Update to ITK 5.4 RC 01 (0b4ca644)
  • Bump ITK to 5.4 Release Candidate 2 (e404022a)
  • Add PASS_REGULAR_EXPRESION to ConvertImageWithLabelsToShapeLabelMap (84fb315d)

Platform Fixes

  • pandoc version for docs build (3370d2ae)

Bug Fixes

  • Disable ConvertImageWithLabelsToShapeLabelMapTest on Windows (db481ba1)

ITK Software Guide Changes Since v5.4rc01

Jon Haitz Legarreta Gorroño (5):

Documentation Updates

  • Avoid documenting ivar default values (6a2861a)
  • Avoid using initialization lists in coding style snippets (35a15c2)
  • Use non-boolean, built-in type ivars to illustrate PrintSelf (8f61111)
  • Do not encourage using empty comment lines (278366c)

Style Changes

  • Finish coding style guideline item sentence with period (14aee41)

Matt McCormick (2):

Enhancements

  • Bump ITK Superbuild version to 5.4 RC 1 (381c84c)
  • Bump ITK Superbuild version to 5.4 RC 2 (3b541a4)

Niels Dekker (1):

Documentation Updates

  • Replace itkTypeMacro with itkOverrideGetNameOfClassMacro (5428594)

v5.4rc01

9 months ago

v5.3.0

1 year ago

v5.3rc04

1 year ago

v5.3rc03

1 year ago

v5.3rc02

2 years ago

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! :tada: 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<Self>::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

  • fixed repeated spelling mistake/typo (54731ef592)

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

v5.3rc01

2 years ago

v5.2.1

2 years ago

ITK 5.2.1 Release Notes

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

ITK Software Guide Changes Since v5.2.0

Jon Haitz Legarreta Gorroño (3):

Documentation Updates

  • Adapt enum section to strongly typed enums (088a010)
  • Add long long specifier C++ and mangling types (cf51385)

Style Changes

  • Use itkNameOfTestExecutableMacro macro for test names (e116243)

Matt McCormick (3):

Enhancements

  • Update ITK to v5.2.0 (d5dab33)
  • Update ITK version to 5.2.1 (81c741c)

Documentation Updates

  • Correct signed long mangling and C++ variables (1481a04)

Niels Dekker (2):

Enhancements

  • Update compiler versions for C++14 (80b8f89)
  • Update Xcode Apple Clang compiler for nightly dashboard (f65f786)

v5.2.0

2 years ago