ITK 5.1 Release Candidate 2 available for testing

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

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 have been transferred to NumFOCUS. CMake’s copyright has been transferred to Kitware.

And More

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

Congratulations

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

Of the 30 authors who contributed since v5.1rc01 and 65 authors since v5.0.0, we would like to specially recognize the 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.

And the new contributors since v5.1rc01: Brad T. Moore, Niklas Johansson, Flavien Bridault, Pradeep Garigipati, haaput, tabish, and Antoine Robert.

What’s Next

As we work towards the next release candidate, the new strongly typed enum’s will undergo testing. ITK remote modules will update their copyright attribution to NumFOCUS. 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.1rc01

Antoine Robert (1):

Enhancements

  • Add boundary condition getters and setters (a48512e7bd)

Brad King (1):

Bug Fixes

  • Update URL for GitSetup hooks checkout (db254e1308)

Brad T. Moore (1):

Enhancements

  • Added explicit test of VectorImage with ExpandImageFilter (6135513ade)

Bradley Lowekamp (18):

Enhancements

  • Update to latest GoogleTest release tag (a2d2b515de)
  • Enable CircleCI to retrieve ccache on pull requests (4f3f5c70e9)
  • Add VectorImage support to MeanImageFilter (61bda3f5c4)
  • Add test for sorting and size in RelabelComponentImageFilter (484b49d938)
  • ignore GDCM whitespace issues (a3b7dadcc4)

Performance Improvements

  • Refactor RelabelComponentImageFilter (234bbf3843)

Platform Fixes

  • Remove unused region parameter in default copy constructor (b0ad27fa88)
  • Disable GTest using threads (ed712c296a)
  • Fix DCMTK unused CMake variable warning (1de82a792a)
  • Fix suggested brace around initialization warnings (8bae0c9ad2)

Bug Fixes

  • Use unique_ptr (99cba442d6)
  • Set ConnectedComponentImageFilter’s initial background value to zero. (1e76197da7)
  • Prevent integer underflow in CropImageFilter (09e4a7994e)
  • Fix RelabelComponentImageFilter with sorting off, size on (1621016a6f)
  • Restore enum typedef name Convolution and Deconvolution filters (14851ac81c)
  • set BinaryNot operator to const method (d921281245)

Style Changes

  • Move constructor to hxx, use inline initialization for ivars (cc182cc883)

Miscellaneous Changes

  • SetScale() and SetSkew() did not recompute offset (3715675314)

Davis Vigneault (5):

Enhancements

Bug Fixes

Dženan Zukić (15):

Enhancements

  • updating remote modules (c871d92fbf)
  • Deprecate TreeContainer group of classes (48c2ff830e)
  • adding JPEG2000 ICT and RCT encoding compliance tests (7a6f90ce62)
  • update example to support non-overlapping images (0aba9318fb)

Documentation Updates

  • Update SupportedCompilers.md (8b6383f634)
  • update example links in ImageToVTKImageFilter (53dde77fd3)
  • updating zenodo authors’ ORCIDs and affiliations (90b0d8fdb6)

Platform Fixes

  • expose TransformCategoryType under LEGACY (0775d4a616)

Bug Fixes

  • fix null pointer dereference in itkInOrderTreeIterator.h (d5158e04f0)
  • Baseline and test image order was reversed in GDCM tests (eca0ae1998)
  • incorrect neighbor determination in scan-line derived filters (c32a7846cb)
  • remove assertion which frequently fails (102c3ed361)

Style Changes

  • ivar initialization into the header file in GDCMSeriesFileNames (af6109466f)
  • cleaning up excessive white space in example (da7fecc016)

Miscellaneous Changes

Eigen Upstream (2):

Miscellaneous Changes

Flavien Bridault (1):

Platform Fixes

  • Fix compiling an app with Clang when ITK is built with GCC (eb8ce3c619)

GDCM Upstream (2):

Miscellaneous Changes

GoogleTest Upstream (1):

Miscellaneous Changes

Hans Johnson (37):

Enhancements

  • Update RTK for future proofing. (aec69e2c1d)
  • Update DCMTK to master branch of upstream DCMTK (4e1a27d616)
  • Update FFTW to latest release (b4a67f5ce9)
  • Add all commit authors for ITK (9e2cb14b35)
  • When using cmake > 3.12 use FindPython3 module (58d001656c)
  • Consistently use strongly typed enums (0dd31a62f8)

Performance Improvements

  • emplace_back method results in potentially more efficient code (797ef760f7)
  • Allow compiler to choose best way to construct a copy (76f27145c0)
  • readability container size empty (3f0cc19b72)

Platform Fixes

Bug Fixes

  • Second argument to stream operator<< as const (5a0c06a761)
  • Print function should be const (5b4eaa27d2)
  • Add missing const ‘GetDataObject’ function signature (c7fd5bd08a)
  • Set ‘GetDataObject’ function signature to const (42bfdd5a4c)
  • operator() can not be const (3f232f7719)
  • Missing backward compatible enumeration name (4d0871aa80)
  • Incorrect type specified for enumeration (401e0ea471)

Style Changes

  • clang-format style updates. (eb66250269)
  • Move deprecated remote modules into subdirectory. (1ba0d0b34c)
  • Remove redundant void argument lists (e6d859ecae)
  • Use override statements for C++11 (8e763c5f53)
  • Replace integer literals which are cast to bool. (d81d218c89)
  • Prefer c++11 ‘using’ to ‘typedef’ (32f6f1e6ca)
  • Use default member initialization (18d43c85cf)
  • Prefer = default to explicitly trivial implementations (240751ac15)
  • Prefer = delete to explicitly trivial implementations (c0f987e073)
  • Use range-based loops from C++11 (7f2c44cf53)
  • Use auto for variable type matches the type of the initializer expression (0992eb8776)
  • Fix style conformance with include file (8237e6fa6f)

Jared Vicory (1):

Enhancements

  • Wrap ComposeImageFilter for complex types (4a7c34e6ca)

Matt McCormick (56):

Enhancements

  • Update SCIFIO remote module to 2019-12-11 Git master (56de114eba)
  • Update stale-bot comment about issue closure (6c8378bfe0)
  • Update content links (7e2adb6523)
  • Use curl instead of wget in SourceTarball script (d7a1867674)
  • Add script to identify release authors (bf08f71bdb)
  • Use a script to generate the release changelog (c5245f4aef)
  • clang-format.bash detects clang-format-8 executable (f7044be737)
  • Add clang-format linter GitHub Action (0b91401420)
  • Apply clang-format to PR with action (2308142928)
  • Also run clang-format linter on PRs (3d17890175)
  • Bump macOS Azure CI images to 10.14 (5620a36fab)
  • Add itk.xarray_from_image and itk.image_from_xarray (3943bc142b)
  • Add script to update .zenodo.json (5b625daf53)
  • Require 10 or more commits for .zenodo.json (85e6c1465d)
  • Support xarray.DataArray’s in Pythonic filters (b7b6638b7a)
  • New testing data content links for ITK 5.1RC2 (30131b722a)

Documentation Updates

  • Document how to re-run tests with a PR comment (453e477a65)
  • Update ExternalData kitware rsync command (ab048f5c2d)
  • Update .mailmap to consolidate author identification (291ae03f7a)
  • Set lang attribute for Doxygen docs (b711d61356)
  • Add Stephen R. Aylward to .mailmap (4af9a483e2)
  • Add version-specific Doxygen links to the download page (281a5c202f)
  • .mailmap entry for Hans J. Johnson (e20be863ef)
  • Update README links (10954f4cf9)
  • Update clang-format.bash path (beda0186da)
  • Add clang-format check docs in CONTRIBUTING.md (8d3961ed9a)
  • Add Zenodo DOI badge (e0f89c703f)
  • Remove CONTRIBUTING note about ApplyClangFormat action (da7e365463)
  • CONTRIBUTING.md link to ITK Software Guide Development Guidelines (5270f2d2d4)
  • Add Citation section to README (d362bc036e)
  • Request updates ITKBibliography.bib (f93f025304)
  • Update copyright assignment to NumFOCUS (344e9bc58e)
  • Add welcome message to CONTRIBUTING.md (f0dde80570)
  • Update NOTICE and README.md copyright remarks (8577221dbe)
  • .mailmap entry for ntustison@wustl.edu (d9e47489b7)
  • Add .zenodo.json for author association (822d7e4af9)
  • Suggest adding ORCID iD in CONTRIBUTING.md (22e42ba6b1)

Platform Fixes

  • PYTHON_LIBRARY is missing for Windows configuration (539a4078c9)
  • Quote Python3_LIBRARY argument (9cda7da8a2)
  • Get Input const in CastSpatialObjectFilter (79cd3473ee)
  • Exclude inconsistently failing Linux Python CI tests (76d1ca4c89)
  • Add missing brackets to RelabelComponentsImageFilterGTest (808cd8ba30)

Bug Fixes

  • Workaround Python3 CMake module bugs (9b4d33a97f)
  • Address CastSpatialObjectFilter argument to itkTypeMacro (82c7474d16)
  • Call itk.down_cast on ProcessObject outputs in functional call (cb2bec611f)
  • Remove duplicate wrapping of itk.MeshEnums (8e02210d10)
  • Remove Python 2 code from igenerator.py (2d2d4da0f4)
  • Re-enable NumPy bridge tests in PythonExtrasTest (9600bf5b58)
  • Use Python3_EXECUTABLE when specified (44e44acea0)
  • Set Python3_EXECUTABLE on Windows (8fa1900cc2)
  • Specify CMAKE_GENERATOR for Eigen external project build (b2d575c4ec)
  • Add Python3 CMake module workarounds to ITKModuleExternal (07705bd0eb)
  • Exclude Modules/Remote/CMakeLists.txt from remote module changes (5acb608c27)

Style Changes

  • Updates for ImageIORegionGTest, DiscreteGaussianImageFilter (4634cb0490)
  • Do not use id as variable in igenerator.py (8d9d0d9a72)
  • Remove Python 2 compatibility code in site-packages detection (9899fe6edc)

Niels Dekker (3):

Style Changes

  • Make RecursiveSeparableImageFilter MathEMAMAMAM/SMAMAMAM static (0e2569e422)
  • Make RecursiveSeparableImageFilter (32d514b495)
  • Locally use unique_ptr within RecursiveSeparableImageFilter (cb2c89d3a4)

Niklas Johansson (1):

Style Changes

Pablo Hernandez-Cerdan (3):

Documentation Updates

Platform Fixes

Pradeep Garigipati (1):

Bug Fixes

  • Remove debug console prints from GPU kernels (8561ca0e25)

Roman Grothausmann (1):

Enhancements

  • updating remote module PolarTransform (1c9e9d31e1)

Sean McBride (2):

Platform Fixes

  • reformulate a self-assignment to fix -Wself-assign-overloaded warning (271e37f5e1)

Bug Fixes

  • fixed off-by-one error found by ASan (2a30b921ea)

Simon Rit (1):

Enhancements

  • latest version of remote module RTK (81035432e3)

Stephen R. Aylward (5):

Enhancements

  • Adding function to SOToImageFilter simplify output definition (#1531) (d6e79e8cf3)
  • Adding ComposeScaleSkewVersor 3D Transform (#1539) (534c2719d0)
  • Adding filter and wrapping for casting within SO hierarchy (#1576) (b8b70a2f6f)

Bug Fixes

  • SetScale() and SetSkew() did not recompute offset (00609c2b88)
  • itkMetaImageIO.cxx supports more MetaDataDictionary field types (9e76e340ac)

Taylor Braun-Jones (1):

Platform Fixes

VXL Maintainers (2):

Miscellaneous Changes

Vladimir S. FONOV (6):

Enhancements

  • Updated script for Eigen third party update (06d395f4bb)
  • Simplification of the ImageSeriesReader nonuniform sampling detection (8c5d9e9394)
  • Changed NIFTI IO to support different flavors of Analyze readers (1b21b23987)

Documentation Updates

  • updated ITK5MigrationGuide on Analyze format support (94769e0457)

Platform Fixes

Bug Fixes

Ziv Yaniv (1):

Bug Fixes

  • SetLabelForUndecidedPixels value ignored. (3d5698b310)

ITK Examples Changes Since v5.1rc01

Hans Johnson (20):

Enhancements

  • Add .gitattributes to allow running ITK clang-formatting scripts (1ff7ec66)
  • Make type sign match for comparison (b05bb000)
  • Now require ITK 5.1 for examples. (339ad191)
  • Increase minimum viable ITK version (bce41b30)
  • Use same mailmap naming as ITK. (d6038f12)
  • Suppress false warnings for CI (a04e6998)
  • Prefer https vs http for ctest submission. (468ce747)
  • Update for ITK 5.1rc02 (47337988)

Documentation Updates

  • Update copyright assignment to NumFOCUS (993e910d)
  • Indicate that CI for ITKExamples is different. (b6468841)

Platform Fixes

  • Fix build failure of deprecated example (d44d59ae)
  • Fix referenced ITK version to v5.1rc02 (fb41171b)
  • Prefer ZeroValue() for RGB pixel types (fa7aa084)

Bug Fixes

  • Incorrect function signature for override (abe96a4d)

Style Changes

  • Remove redundant void argument lists (34ac8717)
  • Make prototype match definition names (225db636)
  • Prefer c++11 ‘using’ to ‘typedef’ (6f1a8dae)
  • Remove redundant void argument lists (4981c210)
  • Prefer raw-string-literal over escapes (11a8f2de)
  • Use auto for variable type matches the type of the initializer expression (4700ca1a)

Mathew Seng (1):

Enhancements

  • Update enums from changes in ITK (e544261f)

Matt McCormick (2):

Enhancements

  • Point GitSetup to ITK repository (baa4fbf1)

Bug Fixes

  • Do not install pre-release Python packages in Superbuild (37f9df72)

ITK Software Guide Changes Since v5.1rc01

Hans Johnson (2):

Documentation Updates

  • Add commentary about the coding style used. (9eeab2d)

Platform Fixes

  • Exceptions should be caught by constant reference (86782f9)

Matt McCormick (3):

Enhancements

  • Point GitSetup to ITK repository (04639af)
  • Bump ITK version to v5.1rc01 (e0fc439)

Documentation Updates

  • Update history to ITK 5 (a2ab3e5)

Remote Module Changes Since v5.1rc01

Cuberille:

Davis Marc Vigneault (5):

Enhancements

  • Save Adjacent Pixel Value as Cell Data (938e664)

Bug Fixes

  • Use Direction When Computing Offsets (e6bb029)
  • Prevent Non-Manifold Geometry (33f0598)
  • Regenerate Hardcoded Array with CC Bugfix (026840c)

Style Changes

Matt McCormick (1):

Enhancements

  • Bump Python package version to 2.1.1 (71704e5)

IOScanco:

Matt McCormick (2):

Enhancements

  • Update azure-pipelines.yml from ITKModuleTemplate (e86717f)
  • Build against ITK 5.1 RC 1 (e65f70c)

Montage:

Dženan Zukić (7):

Enhancements

  • update ITK version in CI testing infrastructure (fdaa88b)
  • add a fake input data file to make the configurations valid (cb48757)
  • do not force full parallelism (5896493)

Platform Fixes

  • follow rename of ImageIOFactory FileModeType into FileModeEnum (952c6ce)

Bug Fixes

  • ITK_USE_FFTW definitions were not propagated in external builds (06939f6)
  • position of tile 0 was not subtracted for origin adjustment (bfe68e9)

Style Changes

haaput (1):

Bug Fixes

  • fix AxisSize when final dimension is 1 (9e545f0)

tabish (1):

Enhancements

  • add single-layer 3D test which currently crashes (d4420e5)

MorphologicalContourInterpolation:

Dženan Zukić (1):

Platform Fixes

  • follow rename of ImageIOFactory FileModeType into FileModeEnum (a06e470)

PolarTransform:

Roman Grothausmann (1):

Platform Fixes

  • replace itkExceptionObject.h with itkMacro.h (144d270)

RLEImage:

Dženan Zukić (3):

Enhancements

  • run the big tests only if the test machine has 16GB or more (c3178a4)

Platform Fixes

  • follow rename of ImageIOFactory FileModeType into FileModeEnum (1964f86)

Style Changes

  • remove void keyword used instead of formal parameters (a7ed915)

RTK:

Antoine Robert (3):

Enhancements

  • changed GenerateInputRequestedRegion method in Joseph attenuated to avoid code repetition (33aa7493)
  • Add Zeng forward and back projectors to perform PSF correction (393228de)
  • Wrapped Zeng projectors type (a1784552)

Aurélien Coussat (2):

Enhancements

  • Iteration reporting for all iterative filters (1d7c42bb)

Platform Fixes

  • Fixed unused variable ‘caller’ (7e292d94)

Hans Johnson (1):

Platform Fixes

  • Future proof enumeration to integer implicit conversion (6208aad7)

Lucas Gandel (3):

Enhancements

  • Wrap VECTOR_COMPONENTS 2;3;4;5 (529aea11)
  • Wrap NumPy bridge for vector components 2;3;4;5 (751335ae)
  • Azure pipelines script refactoring (090d8f18)

Matt McCormick (1):

Style Changes

  • Remove semi-colons from Python example (50e614a1)

Simon Rit (10):

Enhancements

  • compile CUDA applications on TravisCI (465693b4)
  • wrapping of all convex shapes (1830f9a6)

Documentation Updates

  • mirrored ITK’s doxygen configuration (f02de5c6)

Platform Fixes

  • backward incompatible ITK change renaming FileModeType (8d213dfd)
  • fix constness following InsightSoftwareConsortium/ITK@42bfdd5a4ca8c51211dd2ee2c42cc070a064b925 (b5a199ca)

Bug Fixes

  • fix wrapping for ITK_WRAP_double and unwrap itk (3bfd8400)
  • number of buffered projections wrongly hard-coded (3fc00efa)
  • option ITK_USE_CUDA cannot be tested, it is not defined (dfc063ec)
  • remove unused code from ITKCudaCommon (45af4dd4)
  • add clip planes before adding convex shape to Forbild phantom (ec79377b)

SCIFIO:

Matt McCormick (6):

Enhancements

  • Add Azure Pipelines configuration (380fcb8)
  • Update bundled JRE to Java 11 (bf08094)
  • Bump bio-formats version to 6.3.0 (be3d99d)

Documentation Updates

  • Add Azure Pipeline CI badge to README (f94866a)

Platform Fixes

  • Avoid getenv with Visual Studio (983ba41)

Bug Fixes

  • Remove Python packages from the testing configuration (4e1bd53)

TotalVariation:

Jean-Christophe Fillion-Robin (1):

Documentation Updates

  • Fix maintainer list formatting in README (73f7f97)
4 Likes

This sounds great! Is xarray also a numpy array (so it can be used wherever a numpy array is used)?

Does this mean that ITK can work on the input array or the data is copied internally into an ITK image (always or when needed, e.g., when memory layout of the numpy array is different from what ITK uses)?

Yes, it is pretty wonderful! :slight_smile: To get at the underlying data array:

# A numpy.ndarray or dask.array.core.Array
my_data_array.data 

or

# Always a NumPy array
my_data_array.values

Does this mean that ITK can work on the input array or the data is copied internally into an ITK image (always or when needed, e.g., when memory layout of the numpy array is different from what ITK uses)?

The current implementation uses a view on the underlying values when possible to avoid memory allocation and copies.

2 Likes

Looks wonderful and the news and enhancements to the new release are exciting.

Thanks to all of those that contributed to this new release ! :100:

1 Like