Skip to content

Releases: InsightSoftwareConsortium/ITK

ITK 5.2 Release Candidate 3

09 Mar 15:43
v5.2rc03
d695196
Compare
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
Compare
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
Compare
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
Compare
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)

ITK 5.1.1

31 Aug 22:44
v5.1.1
3ecf6c8
Compare
Choose a tag to compare

ITK 5.1.1 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.1.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 itk

or:

conda -c conda-forge install itk

Library Sources

Testing Data

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

Checksums

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

This release improves support for ITK's use in the Dask distributed library for Python-based distributed computation, adds support for the GCC 9 and 10 compilers, improves CUDA FFT support, and numerous other fixes described in the changelog below. Thank you to everyone who contributed to the release.

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.

Another patch release is planned before the next feature release.

Enjoy ITK!

Changes from 5.1.0 to 5.1.1

Antoine Robert (1):

Enhancements

  • Use Numpy bridge with array of dimension 1 (caae21695f)

Bradley Lowekamp (14):

Enhancements

  • Update GDCM to latest on the release-2.8 branch (90e6da1ff6)

Platform Fixes

Bug Fixes

  • Disable dynamic threading in noise filter. (af780e8a03)
  • Add StatisticsImageFilter (43a8972077)
  • Fix segfault with empty CompositeTransforms (0300b63ddf)
  • Fix additional segmentation faults with empty Composite (7212dc719f)
  • Address memory leak in CastSpatialOpbjectTest (a243e9d9af)
  • Patch missing const qualifier to GDCM dircos_comp comparison (90ad651db4)
  • Address bug with small size in output of SliceImageFilter (7aac4a6748)
  • Update CI scripts from current ITK master (3213404416)
  • update CircleCI configuration with selections from master (08dc0116fe)
  • Don't use InsertElement which modifies MTime (63d148715e)
  • Address buffer overflow with deprecated GDCM1 interface (5df152b4c3)

Bryn Lloyd (1):

Platform Fixes

Davis Vigneault (1):

Bug Fixes

Dženan Zukić (9):

Enhancements

Documentation Updates

  • restore LICENSE accidentally overwritten by a merge commit (ed2a25db2c)

Platform Fixes

  • a fix for non-system double-conversion build (a47c974f64)
  • update download location for pre-built ICU for Visual Studio (f360092423)

Style Changes

  • make column limit more stringent in the examples (0b970d803d)
  • apply clang-format (d9e73e9a8b)
  • rename libPNG's license to match the original one (5012917fb4)
  • remove duplicate item in a list (a8ba7686a5)

GDCM Upstream (1):

Miscellaneous Changes

Hans Johnson (1):

Bug Fixes

  • Double scaling introduced in refactoring (355c6cbda3)

Jerome Schmid (1):

Platform Fixes

  • VtkGlue module-Provide support for VTK new cmake targets (c2cfd2b6d1)

Jonathan Daniel (2):

Enhancements

Bug Fixes

  • Accept TemplateTypeError with fallback_only (612a769660)

Marco Nolden (1):

Platform Fixes

  • added vcl compiler detection for GCC 10.x (e53d1d94f0)

Matt McCormick (20):

Enhancements

  • Bump CMakeLists.txt version to 4.13.3 (f7ac08b4c9)
  • Add testing data content links for ITK 5.1.1 (866ee013a1)
  • Update ITK CMake version for 5.1.1 (3ecf6c87d1)

Platform Fixes

  • Duplicate ImageToImageFilter wrapping of ULL (e747b0a946)
  • Avoid duplicate itk.PointSetD3 wrapping (bea2a7906e)
  • Do not reference FE_DIVBYZERO FE_INVALID with Emscripten (b05b007a63)
  • Add VXL support for GCC 9 (9825d546c4)
  • Add lxml to macOS CI environment (1919eaa95b)

Bug Fixes

  • Specify itk package in SWIG Python modules (98fc085a9d)
  • Simplify itk.BlockMatchingImageFilter feature points PointSet mangling (2e2b3332cd)
  • Import C module from Python submodule (a6a5140f4d)
  • ITKModuleExternal CMAKE_LIBRARY_OUTPUT_DIRECTORY when wrapping (eb97b5aa4a)
  • Wrap ExtractImageFilter for UL (972a89c228)
  • Support casting unsigned long pixel types in Python (530e61eedf)
  • Remove netnlib triangle classes (7f95961fa7)
  • Remove License incompatible netlib files from vxl updates (d1066224e3)
  • Empty image support in image_from_xarray (3da4926531)
  • Add missing enumerate with multi-ndarray-output itk filters (c7595ff794)
  • Do not wrap unsigned char for connected component output (f3e328657f)

Style Changes

  • ITK_WRAP_PYTHON_PROCCESS to ITK_WRAP...
Read more

ITK 4.13.3

03 Aug 22:37
v4.13.3
f7ac08b
Compare
Choose a tag to compare

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

Release files can be downloaded from

https://itk.org/download/

This purpose of this release is to provide updated compiler support as projects continue the transition to ITK 5. Only updated source code and testing data tarballs are provided in this release.

This release includes fixes for GCC 9, 10, Visual Studio 2019 and fixes in GDCM for improved DICOM support. For more details, please see the log below.

This is the last anticipated release in the ITK 4 series. Projects are encourage to migrate to ITK 5 following the migration guide.

Enjoy ITK!

ITK changes from v4.13.2 to v4.13.3:

Bradley Lowekamp (7):
      BUG: Patch missing const qualifier to GDCM dircos_comp comparison
      BUG: Address bug with small size in output of SliceImageFilter
      BUG: Update CI scripts from current ITK master
      ENH: Update GDCM to latest on the release-2.8 branch
      BUG: update CircleCI configuration with selections from master
      BUG: Don't use InsertElement which modifies MTime
      BUG: Address buffer overflow with deprecated GDCM1 interface

Dženan Zukić (4):
      ENH: use double-conversion's CMake targets
      COMP: a fix for non-system double-conversion build
      ENH: back-porting #1165 to support Visual Studio 2019
      COMP: update download location for pre-built ICU for Visual Studio

GDCM Upstream (1):
      GDCM 2019-11-04 (7e3be76f)

Jerome Schmid (1):
      COMP: VtkGlue module-Provide support for VTK new cmake targets

Marco Nolden (1):
      COMP: added vcl compiler detection for GCC 10.x

Matthew McCormick (3):
      COMP: Prevent duplicate wrapping ouput file specification
      COMP: Add VXL support for GCC 9
      ENH: Bump CMakeLists.txt version to 4.13.3

ITK 5.1.0

10 Jun 19:10
v5.1.0
d3286c9
Compare
Choose a tag to compare

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

ITK 5.1.0 is a feature release that improves and extends the major ITK 5.0 release. ITK 5.1.0 includes a NumPy and Xarray filter interface, clang-format enforced coding style, enhanced modern C++ range support, strongly-typed enum's, and much more.

A number of issues were addressed based on feedback from Release Candidate 3. Filters avoid extra copies when operating on NumPy arrays, and itk.Image is now a NumPy array-like. Remote module CI testing infrastructure has been migrated to GitHub Actions for C++ tests, Python package builds, and automated Python package deployment.

Downloads

Python Packages

Install ITK Python packages with:

pip install --upgrade itk

or:

conda install -c conda-forge itk

Guide and Textbook

Library Sources

Testing Data

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

Checksums

Features

ITKParabolicMorphology

Parabolic morphological filtering with the ITKParabolicMorphology remote module. To install the new Python package: pip install itk-parabolicmorphology. Jupyter notebooks are provided as examples. For more information, see the Insight Journal article, Beare R. Morphology with parabolic structuring elements. The Insight Journal. January-June. 2008. http://www.insight-journal.org/browse/publication/228.

GitHub Actions for ITK Remote Module Testing, Packaging, PyPI Deployment

A GitHub Action configuration is available for ITK Remote Module continuous integration (CI) testing and Python packaging on Linux, macOS, and Windows. Continuous deployment (CD) is configured to upload packages to the Python Package Index (PyPI) when the repository is tagged. More information can be found in the ITK Python Package ReadTheDocs documentation.

Pass NumPy Array's or Xarray DataArray's to ITK Image Filters

The Pythonic, functional-like interface to all ITK image-to-image-filters now directly supports operation on NumPy ndarray's, i.e. numpy.ndarray. If a ndarray is passed as an input, a ndarray is returned as an output.

For example,

smoothed = itk.median_image_filter(array, radius=2)

Previously, explicit conversion to / from an itk.Image was required with itk.array_from_image and itk.image_from_array.

We can now also convert an itk.Image to a numpy.ndarray with the standard np.asarray call.

import numpy as np
import itk

image = itk.imread('/path/to/image.tif')
array = np.asarray(image)

An itk.Image is now more NumPy array-like: shape, ndim, and dtype attributes are available; these correspond to the values when converted to a NumPy ndarray. Basic NumPy functions can be called directly on an itk.Image, i.e.,

min = np.min(image)
max = np.max(image)
mean = np.mean(image)

Similar, experimental support (subject to change) is also available for Xarray DataArray's. If an xarray.DataArray is passed as an input, an xarray.DataArray is returned as an output. Moreover, the operation preserves spatial and dimensional metadata. For example,

import xarray as xr
import itk

image = itk.imread('/path/to/image.tif')
da = itk.xarray_from_image(image)
smoothed = itk.median_image_filter(da, radius=3)
print(smoothed)

results in:

<xarray.DataArray (y: 288, x: 894)>
array([[255.    , 255.    , 255.    , ..., 255.    , 255.    , 255.    ],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       ...,
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995]],
      dtype=float32)
Coordinates:
  * x        (x) float64 0.0 1.0 2.0 3.0 4.0 ... 889.0 890.0 891.0 892.0 893.0
  * y        (y) float64 0.0 1.0 2.0 3.0 4.0 ... 283.0 284.0 285.0 286.0 287.0
Attributes:
    direction:  [[1. 0.]\n [0. 1.]]

A round trip is possible with itk.image_from_xarray.

Python 3 Only

ITK 5.1 will be the first Python 3-only release. Consistent with most scientific Python packages and CPython's 2020 drop in support, Python 2 support and binaries are no longer available.

Python Package 64-bit Float Support

In addition to the many other pixel types supported, the itk binary Python packages now include support for the double pixel type, i.e. 64-bit IEEE floating-point pixels. This improves compatibility with scikit-image, which uses this pixel type as a default.

clang-format Enforced C++ Coding Style

ITK has adopted a .clang-format coding style configuration file so a consistent coding style can automatically be applied to C++ code with the clang-format binary. A consistent coding style is critical for readability and collaborative development.

clang-format has been applied to the entire codebase. The Whitesmiths style of brace indentation, previously part of the ITK Coding Style Guidelines, is not supported by clang-format, so it has been replaced by a brace style consistent with VTK's current style.

A Git commit hook will automatically apply clang-format to changed C++ code.

Enhanced Modern C++ Range Support

In addition to the ImageBufferRange, ShapedImageNeighborhoodRange, and IndexRange classes introduced in ITK 5.0, ITK 5.1 adds an ImageRegionRange. These range classes conform to the Standard C++ Iterator requirements so they can be used in range-based for loop's and passed to Standard C++ algorithms. Range-based for loops provide an elegant syntax for iteration. Moreover, they are often more performant than other iteration classes available.

For example, to add 42 to every pixel:

ImageBufferRange<ImageType> range{ *image };
 
for (auto&& pixel : range)
{
  pixel = pixel + 42;
}

In ITK 5.1, adoption of the range classes was extended across the toolkit, which demonstrates their use and improves toolkit performance.

Point Set Registration Parallelism

ITK provides a powerful registration framework for point-set registration, offering information-theoretic similarity metrics, labeled point-set metrics, and spatial transformation models that range from affine to b-spline to dense displacement fields. ITK 5.1 features enhanced parallelism in point-set metric computation, leveraging the native thread-pool and Threading Building Blocks (TBB) enhancements in ITK 5.

SpatialObject's and Strongly-Typed enum's

Improvements and refinements were made to the ITK 5 itk::SpatialObject refactoring, and modern C++ interface. In particular, ITK 5.1 transitions enumerations to strongly-typed enumerations, which is flagged by modern compilers due to improved scoping and implicit conversions to int. Enum names now follow a consistent <Description>Enum naming conversion, which results in a Python interface:

<Description>Enum_<EnumValue1>
<Description>Enum_<EnumValue2>
[...]

A guide for updating to the new enum's can be found in the [Strongly Typed Enumerations](https://...

Read more

ITK 5.1 Release Candidate 3

09 Apr 19:02
v5.1rc03
77d5167
Compare
Choose a tag to compare
Pre-release

We are happy to announce the Insight Toolkit (ITK) 5.1 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.1 is a feature release that improves and extends the major ITK 5.0 release. ITK 5.1 includes a NumPy and Xarray filter interface, clang-format enforced coding style, enhanced modern C++ range support, strongly-typed enum's, and much more.

Release Candidate 3 adds a remote module rating quality grading system, a new remote module, TubeTK, and improvements based on experience with Release Candidate 2.

Downloads

Python Packages

Install ITK pre-release binary Python packages with:

pip install --pre itk

Library Sources

Testing Data

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

Checksums

Features

ITKTubeTK

Brain vessels segmented with the new TubeTK remote module. To install experimental Python packages: pip install itk-tubetk. Jupyter notebooks are provided as examples.

Pass NumPy Array's or Xarray DataArray's to ITK Image Filters

The Pythonic, functional-like interface to all ITK image-to-image-filters now directly supports operation on NumPy ndarray's, i.e. numpy.ndarray. If a ndarray is passed as an input, a ndarray is returned as an output.

For example,

smoothed = itk.median_image_filter(array, radius=2)

Previously, explicit conversion to / from an itk.Image was required with itk.array_from_image and itk.image_from_array.

We can now also convert an itk.Image to a numpy.ndarray with the standard np.asarray call.

import numpy as np
import itk

image = itk.imread('/path/to/image.tif')
array = np.asarray(image)

Similar, experimental support (subject to change) is also available for Xarray DataArray's. If an xarray.DataArray is passed as an input, an xarray.DataArray is returned as an output. Moreover, the operation preserves spatial and dimensional metadata. For example,

import xarray as xr
import itk

image = itk.imread('/path/to/image.tif')
da = itk.xarray_from_image(image)
smoothed = itk.median_image_filter(da, radius=3)
print(smoothed)

results in:

<xarray.DataArray (y: 288, x: 894)>
array([[255.    , 255.    , 255.    , ..., 255.    , 255.    , 255.    ],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       ...,
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995]],
      dtype=float32)
Coordinates:
  * x        (x) float64 0.0 1.0 2.0 3.0 4.0 ... 889.0 890.0 891.0 892.0 893.0
  * y        (y) float64 0.0 1.0 2.0 3.0 4.0 ... 283.0 284.0 285.0 286.0 287.0
Attributes:
    direction:  [[1. 0.]\n [0. 1.]]

A round trip is possible with itk.image_from_xarray.

Python 3 Only

ITK 5.1 will be the first Python 3-only release. Consistent with most scientific Python packages and CPython's 2020 drop in support, Python 2 support and binaries are no longer be available.

Python Package 64-bit Float Support

In addition to the many other pixel types supported, the itk binary Python packages now include support for the double pixel type, i.e. 64-bit IEEE floating-point pixels. This improves compatibility with scikit-image, which uses this pixel type as a default.

clang-format Enforced C++ Coding Style

ITK has adopted a .clang-format coding style configuration file so a consistent coding style can automatically be applied to C++ code with the clang-format binary. A consistent coding style is critical for readability and collaborative development.

clang-format has been applied to the entire codebase. The Whitesmiths style of brace indentation, previously part of the ITK Coding Style Guidelines, is not supported by clang-format, so it has been replaced by a brace style consistent with VTK's current style.

A Git commit hook will automatically apply clang-format to changed C++ code.

Enhanced Modern C++ Range Support

In addition to the ImageBufferRange, ShapedImageNeighborhoodRange, and IndexRange classes introduced in ITK 5.0, ITK 5.1 adds an ImageRegionRange. These range classes conform to the Standard C++ Iterator requirements so they can be used in range-based for loop's and passed to Standard C++ algorithms. Range-based for loops provide an elegant syntax for iteration. Moreover, they are often more performant than other iteration classes available.

For example, to add 42 to every pixel:

ImageBufferRange<ImageType> range{ *image };
 
for (auto&& pixel : range)
{
  pixel = pixel + 42;
}

In ITK 5.1, adoption of the range classes was extended across the toolkit, which demonstrates their use and improves toolkit performance.

Point Set Registration Parallelism

ITK provides a powerful registration framework for point-set registration, offering information-theoretic similarity metrics, labeled point-set metrics, and spatial transformation models that range from affine to b-spline to dense displacement fields. ITK 5.1 features enhanced parallelism in point-set metric computation, leveraging the native thread-pool and Threading Building Blocks (TBB) enhancements in ITK 5.

SpatialObject's and Strongly-Typed enum's

Improvements and refinements were made to the ITK 5 itk::SpatialObject refactoring, and modern C++ interface. In particular, ITK 5.1 transitions enumerations to strongly-typed enumerations, which is flagged by modern compilers due to improved scoping and implicit conversions to int. Enum names now follow a consistent <Description>Enum naming conversion, which results in a Python interface:

<Description>Enum_<EnumValue1>
<Description>Enum_<EnumValue2>
[...]

A guide for updating to the new enum's can be found in the Strongly Typed Enumerations section of the ITK 5 Migration Guide.

DICOM Support

ITK's broadly adopted medical image support is hardened thanks to 20 years of testing and support from major open source DICOM library maintainers. In this release, many members of the community collaborated to further enhance ITK's DICOM support for corner cases related to modality, pixel types, and vendor variations.

Remote Module Updates

New remote module: TubeTK: An open-source toolkit, led by Kitware, Inc., for the segmentation, registration, and analysis of tubes and surfaces in images.

A new remote module grading system was added to help convey the quality compliance level for the 45 remote modules.

Many remote modules were updated: AnalyzeObjectMapIO, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, ParabolicMorphology, PhaseSymmetry, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, and TwoProjectionRegistration. Their updates are included in the detailed changelog below.

Zenodo Citation

ITK has a [Zenodo Citatio...

Read more

ITK 5.1 Release Candidate 2

07 Mar 00:46
v5.1rc02
30131b7
Compare
Choose a tag to compare
Pre-release

ITK 5.1 Release Candidate 2

We are happy to announce the Insight Toolkit (ITK) 5.1 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.1 is a feature release that improves and extends the major ITK 5.0 release. ITK 5.1 includes a NumPy and Xarray filter interface, clang-format enforced coding style, enhanced modern C++ range support, strongly-typed enum's, and much more.

Downloads

Python Packages

Install ITK pre-release binary Python packages with:

pip install --pre itk

Library Sources

Testing Data

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

Checksums

Features

ITK Xarray

An itk.Image converted to an xarray.DataArray. Xarray enables processing while preserving metadata, distributed computing with Dask, and machine learning with the scikit-learn API.

Pass NumPy Array's or Xarray DataArray's to ITK Image Filters

The Pythonic, functional-like interface to all ITK image-to-image-filters now directly supports operation on NumPy ndarray's, i.e. numpy.ndarray. If a ndarray is passed as an input, a ndarray is returned as an output.

For example,

smoothed = itk.median_image_filter(array, radius=2)

Previously, explicit conversion to / from an itk.Image was required with itk.array_from_image and itk.image_from_array.

We can now also convert an itk.Image to a numpy.ndarray with the standard np.asarray call.

import numpy as np
import itk

image = itk.imread('/path/to/image.tif')
array = np.asarray(image)

Similar, experimental support (subject to change) is also available for Xarray DataArray's. If an xarray.DataArray is passed as an input, an xarray.DataArray is returned as an output. Moreover, the operation preserves spatial and dimensional metadata. For example,

import xarray as xr
import itk

image = itk.imread('/path/to/image.tif')
da = itk.xarray_from_image(image)
smoothed = itk.median_image_filter(da, radius=3)
print(smoothed)

results in:

<xarray.DataArray (y: 288, x: 894)>
array([[255.    , 255.    , 255.    , ..., 255.    , 255.    , 255.    ],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       ...,
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995],
       [ 11.9995,  11.9995,  11.9995, ...,  11.9995,  11.9995,  11.9995]],
      dtype=float32)
Coordinates:
  * x        (x) float64 0.0 1.0 2.0 3.0 4.0 ... 889.0 890.0 891.0 892.0 893.0
  * y        (y) float64 0.0 1.0 2.0 3.0 4.0 ... 283.0 284.0 285.0 286.0 287.0
Attributes:
    direction:  [[1. 0.]\n [0. 1.]]

A round trip is possible with itk.image_from_xarray.

Python 3 Only

ITK 5.1 will be the first Python 3-only release. Consistent with most scientific Python packages and CPython's 2020 drop in support, Python 2 support and binaries are no longer be available.

Python Package 64-bit Float Support

In addition to the many other pixel types supported, the itk binary Python packages now include support for the double pixel type, i.e. 64-bit IEEE floating-point pixels. This improves compatibility with scikit-image, which uses this pixel type as a default.

clang-format Enforced C++ Coding Style

ITK has adopted a .clang-format coding style configuration file so a consistent coding style can automatically be applied to C++ code with the clang-format binary. A consistent coding style is critical for readability and collaborative development.

clang-format has been applied to the entire codebase. The Whitesmiths style of brace indentation, previously part of the ITK Coding Style Guidelines, is not supported by clang-format, so it has been replaced by a brace style consistent with VTK's current style.

A Git commit hook will automatically apply clang-format to changed C++ code.

Enhanced Modern C++ Range Support

In addition to the ImageBufferRange, ShapedImageNeighborhoodRange, and IndexRange classes introduced in ITK 5.0, ITK 5.1 adds an ImageRegionRange. These range classes conform to the Standard C++ Iterator requirements so they can be used in range-based for loop's and passed to Standard C++ algorithms. Range-based for loops provide an elegant syntax for iteration. Moreover, they are often more performant than other iteration classes available.

For example, to add 42 to every pixel:

ImageBufferRange<ImageType> range{ *image };
 
for (auto&& pixel : range)
{
  pixel = pixel + 42;
}

In ITK 5.1, adoption of the range classes was extended across the toolkit, which demonstrates their use and improves toolkit performance.

Point Set Registration Parallelism

ITK provides a powerful registration framework for point-set registration, offering information-theoretic similarity metrics, labeled point-set metrics, and spatial transformation models that range from affine to b-spline to dense displacement fields. ITK 5.1 features enhanced parallelism in point-set metric computation, leveraging the native thread-pool and Threading Building Blocks (TBB) enhancements in ITK 5.

SpatialObject's and Strongly-Typed enum's

Improvements and refinements were made to the ITK 5 itk::SpatialObject refactoring, and modern C++ interface. In particular, ITK 5.1 transitions enumerations to strongly-typed enumerations, which is flagged by modern compilers due to improved scoping and implicit conversions to int. Enum names now follow a consistent <Description>Enum naming conversion, which results in a Python interface:

<Description>Enum_<EnumValue1>
<Description>Enum_<EnumValue2>
[...]

A guide for updating to the new enum's can be found in the Strongly Typed Enumerations section of the ITK 5 Migration Guide.

DICOM Support

ITK's broadly adopted medical image support is hardened thanks to 20 years of testing and support from major open source DICOM library maintainers. In this release, many members of the community collaborated to further enhance ITK's DICOM support for corner cases related to modality, pixel types, and vendor variations.

Remote Module Updates

Many remote modules were updated: AnalyzeObjectMapIO, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, ParabolicMorphology, PhaseSymmetry, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, and TwoProjectionRegistration. Their updates are included in the detailed changelog below.

Zenodo Citation

ITK has a Zenodo Citation:

DOI

This citation can be used to cite a specific version of the software. If you have contributed 10 or more patches to ITK, please add your ORCID iD to our .zenodo.json file for authorship association.

NumFOCUS Copyright Transfer

ITK's copyright and the copyright of software held by the [Insight Software Consortium](https://www.insightsoftwareconsort...

Read more

ITK 5.1 Release Candidate 1

23 Dec 22:53
v5.1rc01
Compare
Choose a tag to compare
Pre-release

ITK 5.1 Release Candidate 1 Release Notes

We are happy to announce the Insight Toolkit (ITK) 5.1 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.1 is a feature release that improves and extends the major ITK 5.0 release. ITK 5.1 includes a NumPy filter interface, clang-format enforced coding style, enhanced modern C++ range support, and much more.

Downloads

Python Packages

Install ITK pre-release binary Python packages with:

pip install --pre itk

Library Sources

Testing Data

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

Checksums

Features

RTK sphere reconstruction

Tomographic sphere reconstruction with the RTK remote module. Reproduce this result by installing the RTK Python packages, pip install itk-rtk, and run the FirstReconstruction.py example.

Pass NumPy Array's to ITK Image Filters

The Pythonic, functional-like interface to all ITK image-to-image-filters now directly supports operation on NumPy array's, i.e. numpy.ndarray. If a ndarray is passed as an input, a ndarray is returned as an output.

For example,

smoothed = itk.median_image_filter(array, radius=2)

Previously, explicit conversion to / from an itk.Image was required with itk.array_from_image and itk.image_from_array.

We can now also convert an itk.Image to a numpy.ndarray with the standard np.asarray call.

import numpy as np
import itk

image = itk.imread('/path/to/image.tif')
array = np.asarray(image)

Python 3 Only

ITK 5.1 will be the first Python 3-only release. Consistent with most scientific Python packages and CPython's 2020 drop in support, Python 2 support and binaries are no longer be available.

Python Package 64-bit Float Support

In addition to the many other pixel types supported, the itk binary Python packages now include support for the double pixel type, i.e. 64-bit IEEE floating-point pixels. This improves compatibility with scikit-image, which uses this pixel type as a default.

clang-format Enforced C++ Coding Style

ITK has adopted a .clang-format coding style configuration file so a consistent coding style can automatically be applied to C++ code with the clang-format binary. A consistent coding style is critical for readability and collaborative development.

clang-format has been applied to the entire codebase. The Whitesmiths style of brace indentation, previously part of the ITK Coding Style Guidelines, is not supported by clang-format, so it has been replaced by a brace style consistent with VTK's current style.

A Git commit hook will automatically apply clang-format to changed C++ code.

Enhanced Modern C++ Range Support

In addition to the ImageBufferRange, ShapedImageNeighborhoodRange, and IndexRange classes introduced in ITK 5.0, ITK 5.1 adds an ImageRegionRange. These range classes conform to the Standard C++ Iterator requirements so they can be used in range-based for loop's and passed to Standard C++ algorithms. Range-based for loops provide an elegant syntax for iteration. Moreover, they are often more performant than other iteration classes available.

For example, to add 42 to every pixel:

ImageBufferRange<ImageType> range{ *image };
 
for (auto&& pixel : range)
{
  pixel = pixel + 42;
}

In ITK 5.1, adoption of the range classes was extended across the toolkit, which demonstrates their use and improves toolkit performance.

Point Set Registration Parallelism

ITK provides a powerful registration framework for point-set registration, offering information-theoretic similarity metrics, labeled point-set metrics, and spatial transformation models that range from affine to b-spline to dense displacement fields. ITK 5.1 features enhanced parallelism in point-set metric computation, leveraging the native thread-pool and Threading Building Blocks (TBB) enhancements in ITK 5.

SpatialObject's and Strongly-Typed enum's

Improvements and refinements were made to the ITK 5 itk::SpatialObject refactoring, and modern C++ interface. In particular, ITK 5.1 transitions enumerations to strongly-typed enumerations, which is flagged by modern compilers due to improved scoping and implicit conversions to int. Enum names are now follow a consistent <Description>Enum naming conversion, which results in a Python interface:

<Description>Enum_<EnumValue1>
<Description>Enum_<EnumValue2>
[...]

DICOM Support

ITK's broadly adopted medical image support is hardened thanks to 20 years of testing and support from major open source DICOM library maintainers. In this release, many members of the community collaborated to further enhance ITK's DICOM support for corner cases related to modality, pixel types, and vendor variations.

Remote Module Updates

Many remote modules were updated: AnalyzeObjectMapIO, AnisotropicDiffusionLBR, BSplineGradient, BioCell, BoneEnhancement, BoneMorphometry, Cuberille, FixedPointInverseDisplacementField, GenericLabelInterpolator, HigherOrderAccurateGradient, IOMeshSTL, IOOpenSlide, IOScanco, IOTransformDCMTK, IsotropicWavelets, LabelErodeDilate, LesionSizingToolkit, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, ParabolicMorphology, PhaseSymmetry, RLEImage, RTK, SCIFIO, SimpleITKFilters, SkullStrip, SplitComponents, Strain, SubdivisionQuadEdgeMeshFilter, TextureFeatures, Thickness3D, TotalVariation, and TwoProjectionRegistration. Their updates are included in the detailed changelog below.

Congratulations

Congratulations and thank you to everyone who contributed to this release. Of the 50 authors, we would like to specially recognize the 20 new contributors: Mathew J. Seng, Zahil Shanis, yjcchen0913, PA Rodesch, Aurélien Coussat, yinkaola, Bryce Besler, Pierre Chatelier, Rinat Mukhometzianov, Ramraj Chandradevan, Hina Shah, Gordian Kabelitz, Genevieve Buckley, Aaron Bray, nslay, Antoine Robert, James Butler, Matthew Rocklin, Gina Helfrich, and Neslisah Torosdagli.

What's Next

As we work towards the next release candidate, we will improve strongly typed enum adoption in the toolkit, consistent with the soft commitment to backwards compatibility to address any potential API or architectual issues until the 5.1.0 release. 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.0.0

Aurélien Coussat (1):
      ENH: wrap IterationReporter

Bradley Lowekamp (63):
      BUG: Use ProcessObject GetInput to obtain base pointer
      BUG: Fix ProcessObject::RemoveOutput for null objects.
      COMP: Address missing fftw include in CurvatureRegistrationFilter
      BUG: Fix ProcessObject::RemoveOutput for null objects.
      BUG: Add casting for vector pixel types
      STYLE: Use CTEST_TEST_TIMEOUT
      ENH: Add testing for CastImageFilter for more type conversions
      BUG: Restore support for Cast between explicitly cast-ed pixel type
      BUG: Use ProcessObject GetInput to obtain base pointer
      ENH: Add testing for CastImageFilter for more type conversions
      BUG: Restore support for Cast between explicitly cast-ed pixel type
      BUG: Add DataObject::New method
      BUG: Install FFTW headers in same location as ITK
      Revert "BUG: InterpolateImageFunction::GetRadius hidden in ITKV4_COMPATIBILITY"
      BUG: Pre...
Read more