All Versions
Latest Version
Avg Release Cycle
75 days
Latest Release
47 days ago

Changelog History
Page 1

  • v5.1.rc01

    December 08, 2019
  • v5.1.b01

    September 03, 2019
  • v5.0.1

    July 25, 2019

    πŸš€ ITK 5.0.1 Release Notes

    🍱 We are happy to announce the Insight Toolkit (ITK) 5.0.1! πŸŽ‰ ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

    πŸ“¦ Python Packages

    πŸ“¦ ITK Python packages can be installed by running:

    pip install itk

    πŸ“¦ or to install the conda package, run:

    conda install -c conda-forge itk

    Software Guide

    Library Sources

    βœ… Testing Data

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


    πŸš€ ITK 5.0.1 is the first patch release that addresses issues identified in the major 5.0.0 release. For more details on ITK 5, see the ITK 5.0.0 Release Notes.

    πŸš€ This release improves support for ITK's use in Dask, the scientific Python distributed computing library, addresses a number of build and runtime corner cases, and makes updates to the Software Guide for ITK 5. For more details, see 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. The ITK Examples are currently undergoing a major integration and update effort lead by community member Hans Johnson -- your participation is welcome. Take part in the community discussion at Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

    πŸš€ We have a soft commitment to backwards compatibility to address any potential API or architectural issues until the next feature release. Stay tuned for upcoming announcements on ITK's integration with modern web technologies and improved support for Remote Module development on GitHub.

    Enjoy ITK!

    πŸ”„ Changes from 5.0.0 to 5.0.1

    Bradley Lowekamp (8):
          BUG: Fix ProcessObject::RemoveOutput for null objects.
          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: Install FFTW headers in same location as ITK
          COMP: Fix not marked 'override' for ImageSink destructor
          BUG: Use enable_if with SFINAE to dispatch
          BUG: Specify specific CircleCI docker image with platform
    Dženan Zukić (5):
          BUG: resample filter no longer triggers unnecessary exception
          COMP: forgotten class for ITKV4_COMPATIBILITY in 2aae174
          COMP: fix warning about missing override in CastImageFilter
          STYLE: Add ITK prefix to testing macros in release branch
          ENH: documenting supported compilers
    Francois Budin (2):
          BUG: ImageBase regions and ImageRegion properties are returned as reference
          DOC: Add ITK 5.0 release notes
    GenevieveBuckley (1):
          BUG: All exceptions must be derived from python's BaseException class
    Matthew McCormick (16):
          ENH: New content links for ITK 5.0.0
          STYLE: DeformableRegistration2 line length warnings
          COMP: SpatialObjectsHierarchy Software Guide newline
          BUG: Add test/CMakeLists.txt stub to NumPy bridge
          COMP: Provide NumericTraits<complex<T>>::ZeroValue() definition
          BUG: Do not require PyBUF_WRITABLE in GetArrayViewFromImage
          DOC: Update supported Python versions warning
          BUG: Add PEP 366 __package__ support to ITKLazyModule
          BUG: Release the Python Global Interpreter Lock (GIL) during execution
          STYLE: Apply ITK Style Guidelines to itkPyCommand.cxx
          BUG: itk::PyCommand ensures the GIL state
          BUG: Support pickling LazyITKModule with cloudpickle
          BUG: Add Pipeline name to Azure configuration
          DOC: Update Azure Pipelines badge URL's
          BUG: Add wrapping for TransformMeshFilter
          ENH: Bump itkVersion.cmake for 5.0.1
    Pablo Hernandez-Cerdan (1):
          BUG: Fix COMPILE_DEFINITIONS of castxml
    Stephen Aylward (4):
          ENH: Updated Spatial Object tex to match ITKv5
          BUG: Fixed spelling mistakes and use of plural member functions
          BUG: Fix grammar and naming mistakes in SpatialObject documentation
          DOC: Fixed expected output of examples and documentation
    yjcchen0913 (1):
          BUG: Ensure strict weak ordering in HessianToObjectnessMeasure's sort
  • v5.0.0

    May 29, 2019

    πŸš€ ITK 5.0.0 Release Notes

    🍱 We are happy to announce the Insight Toolkit (ITK) 5.0.0! πŸŽ‰ ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.

    πŸš€ ITK 5.0.0 is a major release that features an incredible number of improvements: This includes major enhancement in the development process, major code refactoring, addition of important features, improvement of ITK Python wrapping, and more.

    πŸ“¦ Python Packages

    πŸ“¦ ITK Python packages can be installed by running:

    pip install itk

    πŸ“¦ or to install the conda package, run:

    conda install -c conda-forge itk

    Software Guide

    Library Sources

    βœ… Testing Data

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


    Montage Poster
    🐎 Montaging for microscopy imaging files with the new ITKMontage remote module: High-Performance, Open-Source Microscopy Image Montaging. Matthew McCormick , DΕΎenan ZukiΔ‡ , FranΓ§ois Budin , Michael Jackson, Dennis Dimiduk , David Rowenhorst , Sean Donegan, and Michael Groeber. WBIR 2018.

    ITK on GitHub

    🍎 An important step has been taken to faciliate participation of the community in the development of ITK: The official repository was moved to GitHub! This move includes ITK's main repository, as well as many other ITK projects such as the ITKExamples, and many ITK remote modules. It is now very easy for anyone to participate in the development of the library. This has already been a success with many new authors getting involved and submitting patches through the GitHub pull-request mechanism. This change also includes moving the issue tracker to the GitHub issue tracker where any problem encountered with ITK should be reported. ITK's GitHub migration was explained in more detail in ITK 5.0 Beta 3: GitHub. Finally, moving ITK to GitHub made it straightforward to use Microsoft Azure Pipeline Continuous Integration platform: Each pull-request is tested on all 3 major platforms (Windows, Linux, MacOS) and Python builds can be requested to ensure that a patch can be integrated.


    Major C++ code refactoring brought dramatic improvements to ITK's API and performance (see ITK 5.0 Alpha 1: Modern C++ for more details). ITK now uses the C++11 standard allowing the developers full access to its new powerful features such as range-based loops, constexpr, lambda expressions, and uniform initialization syntax. Using C++ 11 also removes the necessity of many ITK macros (e.g. ITK_NULLPTR, ITK_DELETED_FUNCTION) which have equivalents in the new standard. This also leads to changes in style to match the C++ 11 best practices. This includes replacing typedef calls with the using keyword to improve source code readability. ITK's C++ code is easier to read, understand, and maintain!

    Thread Pool

    πŸš€ This new release of ITK also integrates big performance improvements thanks to the refactoring of the multithreading infrastructure with a thread pool available by default, and the possible usage of the Intel Threading Building Blocks (TBB) threading backend (see ITK 5.0 Alpha 2: Performance for benchmarks).

    Spatial Objects

    βž• Additionally, a major upgrade of the ITK Spatial Object framework, which provides a representation of objects and the mechanism to specify their spatial relationship relative to other objects in a scene, was integrated in this new version of ITK. The new code improves consistency in the programming interface and simplifies implementation and usage (more details in ITK 5.0 Release Candidate 2: Spatial Object’s.

    πŸ†• New Features

    πŸš€ Other new features in this ITK release include new algorithms, better mesh support (see ITK 5.0 Release Candidate 1: Meshes), new global variable model using one singleton, and better streaming capabilities.

    Third Party Libraries

    ⚑️ Eigen, a C++ library for linear algebra, was integrated in ITK and gradual transition from VXL to Eigen for Linear algebra is planned. Many third party libraries were updated: VNL, DCMTK, GDCM, HDF5, KWSys, MetaIO, Zlib, GIFTI, nifti, pygccxml.

    Remote Modules

    πŸš€ Remote modules, which allow easy integration of new image processing algorithm in ITK, were updated and new Python packages compatible with this new release of ITK were created. Four new remote modules were also added to ITK: PhaseSymmetry, IOOpenSlide, Montage, and BSplineGradient (description of the modules in ITK 5.0 Beta 3: GitHub).


    πŸš€ Traditionally, ITK in Python had to be used through an object-oriented interface. In this new release, we have added a functional interface which is more Pythonic and should be more familiar to Python programmers. Examples on how to use this new procedural interface are available in ITK 5.0 Beta 1: Pythonic Interface.


    πŸš€ Congratulations and thank you to everyone who contributed to this release. Of the 49 authors, we would like to specially recognize the new contributors, Isaiah Norton, maekclena, Rashad Kanavath, Bai Shi, Hui Xie, Martino Pilia, Ally Warner, pierre33, Chao Wu, Gregory C. Sharp, Bryce A Besler, Kwame Kutten, Mihail Isakov, Jerome Schmid, Roman Grothausmann, Alexis Girault, Gabriel A. Devenyi, Marian Klymov, Thomas Janvier, and Forrest Li.

    Migration to ITKv5

    πŸ“š The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse.

    What's Next

    Join us in the creation of advanced, open source scientific image analysis tools. Get started with the ITK examples. Take part in the community discussion at Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.

    πŸš€ We have a soft commitment to backwards compatibility to address any potential API or architectual issues until the next feature release. Stay tuned for upcoming announcements on ITK's integration with modern web technologies and improved support for Remote Module development on GitHub.

    Enjoy ITK!

    πŸ”„ Changes from 5.0 RC 2 to 5.0.0

    Alexis Girault @agirault (4):
          ENH: Compare images converted from and to VTK in ITKVtkGlue tests
          ENH: Pass directions in VTKImage import/export classes
          ENH: Throw exception when necessary while importing a vtk image
          BUG: Ignore calls to the direction APIs in VTK if lower than 8.90
    Bradley Lowekamp @blowekamp (46):
          COMP: Address const char[] conversation warning
          BUG: Fix leaking PNGIO resources during exception
          BUG: Remove redundent fclose on PNG file pointer
          ENH: Add Valgrind suppression file for Ubuntu 18.04 LTS
          BUG: Update FEM test for new spatial objects
          COMP: Correct continuous index type
          BUG: Address valgrid defects related to the PointSpatialObject
          BUG: Fix ownership of environment variable value
          BUG: Fix leak in SpatialObject InternalClone method
          ENH: Update a couple example to use the resample instead of warp
          BUG: Set all component of 3D points
          BUG: Add named output support to StreamingImageFilter
          ENH: Deprecate VectorResampleImageFilter
          ENH: Consolidating setting compression level interface to ImageIOBase
          ENH: Implement InternalSetCompressor method in ImageIOs
          DOC: Add compression documentation to ImageIOs
          ENH: Use the empty string "" for the default compressor
          ENH: Add compression level support to NRRD IO
          ENH: Improve TIFF ImageIO compression testing
          ENH: Add base class for generic streaming processes
          ENH: Add ImageSink base filter class
          ENH: Use streaming base class for LabelStatisticsImageFilter
          ENH: Use named input in LabelStatisticsImageFilter
          ENH: Add streaming support to StatisticsImageFilter
          ENH: Add testing for streaming with StatisticsImageFilter
          ENH: Remove output image, use standard decorator macros
          ENH: Refactor min/max filter to use ImageSink
          ENH: Add ImageSink::VerifyInputInformation
          ENH: Add KWStyle override for ImageStatistics module
          ENH: Use streaming sink base class for image to histogram filters
          ENH: Deprecate ImageTransformer class
          BUG: Update NormalizeImageFilter with double graft mini-pipeline
          DOC: statistics filter changes for ITKv5
          ENH: Add Python wrapping for streaming base classes
          ENH: Add streaming testing of label statistics filter
          COMP: Move deprecated VectorCastImageFilter wrapping to deprecated
          BUG: Fix path for Brain Web data
          BUG: Correct StreamingProcessObject's progress computation
          STYLE: prefer variable-less catch re-throw
          BUG: Set current request number back to -1 after stream execution
          ENH: Expose streaming methods in MinimumMaximumImageFilter
          ENH: Add streaming testing for min max filter
          ENH: replace RGB adaptor with directly using CastImageFilter
          ENH: Add cast support for per component conversion
          ENH: Mark the Cast functor to be remove with legacy code
          DOC: Update documentation for streaming statistics filters.
    Dženan Zukić @dzenanz (25):
          ENH: make ITK_MAX_THREADS configurable
          BUG: fix threading test bugs when ITK_DEFAULT_MAX_THREADS is over 256
          COMP: compile GPU classes with legacies disabled
          COMP: removing extraneous DLL specification from private member
          COMP: follow-up on recent removal of METAIO_STL macro
          COMP: add missing dependent module for ITKv3 examples
          COMP: ResampleImageFilter does not have SetDisplacementField method
          ENH: reduce default compression level for much faster compression
          BUG: compression was accidentally disabled in NrrdImageIO
          COMP: compile in ITK
          STYLE: move ivar default values to header file
          ENH: expose setting compression level in ImageFileWriter
          ENH: expose compression level in MetaImageIO
          BUG: the clang version check was overly strict on Apple platforms
          COMP: fix build failures introduced by c76b193 (#886)
          ENH: cleaning up tests which are almost exact duplicates from MetaIO
          ENH: updating remote modules
          COMP: fix warning: 'return' will never be executed
          COMP: fix export specification of Barrier class
          COMP: follow up to 814419a (bounding box m_CornersContainer removal)
          ENH: LevelSetsv4Visualization has moved to remote module ITKVtkGlue
          ENH: run large image IO tests serially
          ENH: enabling ResampleImage streaming test and updating baselines
          ENH: enabling ResampleImage streaming test and updating baselines
          ENH: exclude Eigen3 from the list of default modules
    Francois Budin @fbudin69500 (19):
          ENH: Add `fallback_only` parameter to `imread()` Python function
          ENH: Add suffix to Azure build running gcov to differentiate them
          STYLE: Add display name to checkout step in AzurePipelineBatch.yml
          ENH: Add JUnit test formatter to AzurePipelinesBatch.yml
          STYLE: Add badge for Azure pipeline Linux code coverage build
          ENH: Warning when trying to open in Python an image file that doesn't exist
          BUG: Missing `ci_addons` to convert ctest results to JUnit format
          BUG: Disable itkObjectFactoryBasePrivateDestructor test with -static link flag
          ENH: Add Python function to print Python class name corresponding to C++ class
          ENH: Python ImageFileReader error message improvement
          ENH: Warning when trying to open in Python an image file that doesn't exist
          ENH: Follow up commit to fix itkBoundingBox with LEGACY support
          ENH: Follow up commit to fix itkBoundingBox with LEGACY support
          BUG: std::list of `LineSpatialObject` needs to be wrapped
          BUG: ITK could not find Eigen3::Eigen target when using system Eigen
          BUG: Revert changing call to `Initialize()` with `clear()`
          BUG: Corner positions were inserted at the end of a list that was initialized
          BUG: Enforces consistent types
          BUG: Remote modules Python files (*.so, *.py) were built in the wrong folder
    GDCM Upstream (1):
          GDCM 2019-05-16 (e405908e)
    Hans J. Johnson @hjmjohnson (20):
          BUG: Usage name did not match file name.
          STYLE: Minor indentation improvements.
          ENH: Enable ITKV3_COMPATIBILITY option
          STYLE: Remove outdated python examples
          STYLE: Syncronize changes between RegistrationITKv[34]
          STYLE: Remove RegistrationITKv3 duplicate examples
          ENH: Remove ITKV3_COMPATIBILITY support from ITKv5.0
          STYLE: Move deprecated Examples/RegistrationITKv3 to test
          BUG: Explicit RegisterRequiredFactories needed as test
          STYLE: Remove Software Guide tags from ITKv3 testing
          DOC: Make use of checkboxes consistent with github
          ENH: Add cmake override for GIT_TAG of remote modules
          STYLE: Remove custom environmental override for WikiExamples
          DOC: Fix spelling errors
          ENH: Identify histogram min/max for UseSampledPointSet
          BUG: itkConfigure.h defines ITK_DEFAULT_MAX_THREADS
          COMP: Remove unused static variable warning
          DOC: Remove documentation references to VectorResampleImageFilter
          DOC: Remove VectorCastImage documentation references
          ENH: Changes required for ITKv5 compatibility
    Jon Haitz Legarreta GorroΓ±o @jhlegarreta (4):
          STYLE: Remove tab.
          DOC: Improve remote modules' maintenance scripts documentation
          ENH: Add a script to apply another script to all remotes
          DOC: Modify the CoC breach reporting procedure
    Mathieu Malaterre @malaterre (3):
          STYLE: Teach git about GDCM oversize file
          BUG: Do not include COPYING from a non existing directory
          DOC: Fix old reference to Image Number
    Matthew McCormick @thewtex (23):
          COMP: Wrap functions for WindowedSincInterpolateImageFunction
          COMP: Wrapping windowed sinc function includes
          COMP: Update for changes to VTK target names
          DOC: Improve ease of release note command execution
          DOC: Document generation of MD5SUMS and SHA512SUMS files for releases
          DOC: Add More Information section to CONTRIBUTING
          DOC: Add ITK 5.0 RC 2 release notes
          BUG: PythonFindEmptyClasses test for windowed-sinc functions
          BUG: Prevent ITKMesh from installation as header
          BUG: Fix identification of Clang major version
          COMP: ImageMaskSpatialObjectGTest array initialization
          COMP: ImageMaskSpatialObjectGTest add braces for initialization
          ENH: Expand ResampleImageFilter requested region by interpolator domain
          STYLE: Use typename instead of class in ImageSink
          STYLE: override methods should not be marked virtual
          BUG: ImageSink defines UpdateLargestPossibleRegion
          STYLE: StreamingProcessingObject passing void with no arguments
          BUG: {MinimumMaximum,StatisticsImageFilter} set PrimaryOutputName
          BUG: Remove MinimumMaximumImageFilter from module2module test pipeline
          BUG: InterpolateImageFunction::GetRadius hidden in ITKV4_COMPATIBILITY
          BUG: Condition Eigen export code on ITK_BINARY_DIR
          BUG: Fix ITKv3 registration test names for property setting
          BUG: Remove CTEST_TEST_TIME debug message
    MetaIO Maintainers (5):
          MetaIO 2019-05-03 (7e16abe1)
          MetaIO 2019-05-08 (dd5089a2)
          MetaIO 2019-05-15 (bffb2ef1)
          MetaIO 2019-05-16 (5010ab63)
          MetaIO 2019-05-21 (368213e5)
    Niels Dekker @N-Dekker (21):
          ENH: Add std style reverse iterators to FixedArray
          ENH: Add ImageMaskSpatialObject::ComputeMyBoundingBoxInIndexSpace()
          STYLE: SpatialObject() = default, const BoundingBox, Transform members
          ENH: Added tests for ImageMaskSpatialObject::IsInside
          ENH: Test ImageMaskSpatialObject::IsInside independent of distant pixels
          BUG: Fix issue #785 removing BoundingBox check from ImageMask IsInside
          PERF: Overload SpatialObject IsInsideInObjectSpace without name argument
          BUG: Half a pixel margin ImageMaskSpatialObject::ComputeMyBoundingBox()
          STYLE: Deprecated FixedArray member functions rBegin() and rEnd()
          STYLE: Replace std::swap_ranges by C++11 std::swap of m_InternalArray
          DOC: Use the term "object space" for ObjectSpace based member functions
          STYLE: Replace unsigned short by unsigned int as FixedArray index type
          STYLE: Explicitly defaulted default-constructors Vector Accessor classes
          STYLE: Ensure that ContinuousIndex TCoordRep is a floating point type
          ENH: Convenience overloads for ImageBase Transform member functions
          ENH: Add NumberOfCorners and ComputeCorners() to BoundingBox
          STYLE: Remove (deprecate) BoundingBox::GetCorners() + m_CornersContainer
          COMP: Fixed GCC4 missing-field-initializers warning on `{}` in GTest
          DOC: Fixed Doxygen description BoundingBox Get member functions
          DOC: Fixed Doxygen description BoundingBox Get member functions
    Roman Grothausmann @romangrothausmann (1):
          ENH: Bump remote module ParabolicMorphology
    Simon Rit @SimonRit (4):
          COMP: remove MSVC 14 C4800 (performance) warnings with FFTW
          COMP: remove unused parameter warning with GCC 4.8.5
          COMP: fix wrong GDCM library names for open jpeg
          ENH: update RTK remote file with release tag v2.0.1
    VXL Maintainers (1):
          VNL 2019-05-08 (99697e67)
    @maekclena (8):
          ENH: Update compiler macros (#810)
          BUG: Remove error prone test case
          BUG: Fix reverse iterator increment return type
          ENH: Add iterator increment operator return value test
          BUG: Minor python wrapping fixes
          ENH: Remove duplicate code
          ENH: Use ResampleImageFilter for vectors
          ENH: Deprecate VectorCastImageFilter (#870)
  • v5.0.rc02

    April 30, 2019

    πŸš€ We are happy to announce the Insight Toolkit (ITK) Release Candidate 2! πŸŽ‰ This will be the final release candidate before the 5.0.0 release, and the community is encouraged to adopt 5.0 RC 2 in ITK-based applications.

    πŸ“¦ Python Packages

    πŸ“¦ ITK Python packages can be installed by running:

    python -m pip install --upgrade pip
    python -m pip install --upgrade --pre itk

    Library Sources

    βœ… Testing Data

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



    Image denoising with the new ITKTotalVariation remote module. Left: Transmission electron microscopy image of pectin. Right: Denoised image.

    This release features a major upgrade to the ITK Spatial Object framework, led by Stephen Aylward, with contributions from Hastings Greer, Forrest Lee, Niels Dekker, Dženan Zukić, and Hans Johnson. In ITK, a itk::SpatialObject provides a representation of objects and the mechanism to specify their spatial relationship relative to other objects in a scene. Objects can be images but also abstract, parametric entities, such as a ellipse, box, or arrow, or point-based, such as a tube, contour, or surface. Objects can be organized into spatial hierarchies.SpatialObjects are key for model-based registration, integration of segmentation results in multiple formats, conversions to and from images, and capturing spatial relationships between structures.

    In ITK 5, the SpatialObject framework was refactored to improve consistency in the the programming interface and simplify implementation and usage. As a result, incorrect or unexpected behaviors are avoided. Complexity and dependency were reduced by removing a dependency on the VNL tree data structures. Additionally, IndexSpace was removed from the API of all SpatialObjects to prevent ambiguity while providing a consistent and intuitive interface. Only two reference spaces are consistently and explicitly available in the API: ObjectSpace and WorldSpace. ObjectSpace is the space local to each object, where the object's parameters are defined. WorldSpace is the coordinate system defined by the top-level SpatialObject in a hierachy, which is defined by parent-child object relationships. Only two transforms are now consistently and explicitly available in the API: ObjectToParent transform and ObjectToWorld transform. The ObjectToParent transform moves an object within its parent's ObjectSpace. The ObjectToWorld transform is derived from component ObjectToParent transforms and is provided for convenience and to reduce redundant computations. The API is now more explicit regarding the space that an operation applies to. For instance, IsInside(point) is now IsInsideInObjectSpace(point) or IsInsideInWorldSpace(point). For more information on the SpatialObjects changes, see the ITK 5 Migration Guide.

    πŸš€ The Python package synchronization infrastructure for static global variables was refactored to support more variables and permit future additions to the singleton. This will prevent the need to rebuild remote module binary Python packages following future releases of ITK 5. However, current remote module Python packages that use ITK 5 should be rebuilt and republished for ITK 5.0 RC 2.

    πŸš€ For an overview of ITK 5's transition to modern C++, performance-related changes, the new, Pythonic API, the project's migration to GitHub, and Mesh improvements, see the ITK 5 Alpha 1: Modern C++, ITK 5 Alpha 2: Performance, ITK 5 Beta 1: Pythonic Interface, ITK 5 Beta 3: GitHub and ITK 5 Release Candidate 1: Meshes release announcements.


    Tomographic phantom reconstruction with the new Reconstruction Toolkit (RTK) remote module.

    πŸ†• New Remote Modules

    • ITKIOScanco: read and write Scanco microCT .isq files.
    • ITKTotalVariation: total variation image denoising.
    • 🐎 ITKRTK: the Reconstruction Toolkit provides high performance implementations of advanced tomographic image reconstruction algorithms.
    • ITKThickness3D: compute the skeleton and thickness transform from 3D images.

    🐎 Performance Improvements

    • βž• Add MetaDataDictionary move support.
    • πŸ“‡ MetaDataDictionary uses copy-on-write.
    • πŸ—„ itk::Barrier is now deprecated: replace with the new multi-threading functions.
    • πŸ›  Range-based for loops supported in itk::FixedArray.
    • 🐎 Major performance improvements to TimeProbe, ResourceProbe constructor (issue #350).

    πŸ“š Documentation

    • Repository README files were migrated to Markdown.


    • πŸ— Continuous code coverage builds from Azure Pipelines.
    • πŸ‘ Better support for unicode in KWSys.
    • itksys::hash_map and itksys::hash_set are deprecated in favor of std equivalents.
    • πŸ†• New GitHub pull request templates and issue templates.
    • πŸ†• New scripts added to update ITK remote modules.


    • πŸš€ itk::SpatialObject framework refactored (see release notes introduction).
    • πŸŽ‰ Initial streaming support added to itk::ResampleImageFilter for linear transforms.

    Third Party

    • ⚑️ Eigen 3 updated to the latest version.
    • πŸ‘ Better support for building against a system Eigen.
    • ⚑️ GDCM updated to the latest version.
    • ⚑️ HDF5 updated to 1.10.4.
    • ITKVtkGlue support for VTK with VTK_RENDERING_BACKEND set to None.
    • ⚑️ KWSys updated to the latest version.
    • ⚑️ MetaIO updated to the latest version.
    • ⚑️ VXL updated to the latest version.
    • ⚑️ MINC updated to the latest version.


    • ♻️ Static variable synchronization method refactored; ITK 5 remote module Python packages need to be rebuilt against 5.0 RC 2.
    • βž• Add wrapping for itk.PCAShapeSignedDistanceFunction.
    • πŸ“„ Docstrings added to snake case functions.
    • βœ… Python tests should now be defined in /wrapping/test/CMakeLists.txt to exclude their definition when wrapping is not enabled.
    • πŸ‘ Conversion between ITK matrices and NumPy arrays is now supported.
    • βž• Additional wrapping types for itk.ImageDuplicator.
    • βž• Additional types supported for NumPy <-> ITK Image conversion.
    • βž• Additional wrapping and typemaps for std::vector<itk::Image<...>::Pointer>.
    • βž• Add wrapping for itk.TriangleMeshToBinaryImageFilter.
    • βž• Add wrapping for itk.ExtrapolateImageFunction.
    • βž• Add wrapping for itk.WindowedSincInterpolateImageFunction.

    πŸš€ To install the 5.0 Release Candidate 2 Python packages, run

    python -m pip install --upgrade pip python -m pip install --upgrade --pre itk

    What's Next

    πŸš€ There are many more improvements not mentioned above. For more details, please see the change log below. Congratulations and thank you to everyone who contributed to this release.

    πŸ“š The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse.

    πŸš€ The ITK 5.0.0 final release is scheduled for May.

    Enjoy ITK!

    πŸ”„ Changes from 5.0 RC 1 to 5.0 RC 2

    Bradley Lowekamp @blowekamp (14):
          ENH: Add move support to the MetaDataDictionary object
          PERF: Implement copy on write for MetaDataDictionary
          ENH: adding MetaDataDictionary GTests
          BUG: Do not modify MetaDataDictionary with operator[] const
          ENH: Improve ExposeMetaData efficiency
          COMP: Address CMake policy warnings in ThirdParty libraries
          ENH: Update AzurePipelines configuration from master
          ENH: Explicitly set the XCode version used in Azure
          COMP: Use CMP0048 new for wrapping
          COMP: Set CMP0048 to new in ITK (Remote) Modules
          COMP: Address OSX Clang "direct access" linkage warnings
          ENH: Add Azure Pipelines script for coverage
          BUG: Fix Li threshold calculator for negative image values
          DOC: Correct documented Canny Segmentation filter example
    Dženan Zukić @dzenanz (18):
          ENH: add better support for Unicode by using UTF-8 by default in KWSys
          BUG: propagate ITK_LIBRARY_PROPERTIES into zlib
          COMP: fixing MSVC warning C4800
          ENH: refactoring NarrowBandImageFilterBase to not use Barrier
          DOC: fixing code sample
          COMP: compile fixes for Visual Studio 2017
          ENH: ModifiedTimeType uses 64 bits on Windows - it was 32 before
          ENH: refactor itkThreadPoolTest and rename into itkMultithreadingTest
          ENH: shuffling tests in ITKCommon to make the split more logical
          ENH: introduce a parameter to control level of output
          ENH: concentrating WaitForAll() in Iterate()
          ENH: ParallelSparseFieldLevelSetImageFilter no longer uses barrier
          ENH: moving Barrier into Deprecated module
          ENH: prevent false sharing between threads
          STYLE: declaration alignment
          ENH: replace itksys::hash_map and hash_set by std equivalents
          COMP: missing override for destructors
    Eigen Upstream (3):
          Eigen3 2019-01-26 (e2c082bf)
          Eigen3 2019-03-05 (0805e8fd)
          Eigen3 2019-03-14 (8a3c2d91)
    Forrest Li @floryst (4):
          ENH: Update arrow spatial object
          ENH: Update EllipseSpatialObject
          ENH: Update box spatial object
          ENH: Update polygon SO and delete polygon group SO
    Francois Budin @fbudin69500 (25):
          BUG: Implement but hide MetaDataDictionary iterator methods
          BUG: Explicitly give Python library path to ITK Python targets for MSVC
          ENH: Wrap itkPCAShapeSignedDistanceFunction
          ENH: Synchronize factories across modules in Python
          ENH: Explicitly return `None` when calling ` __call__ `` if filter has no output
          ENH: Deprecated object call function and improve procedural call function
          ENH: Adds argument completion with procedural calls
          ENH: Add docstring to snake case functions
          BUG: Disable Python tests if `ITK_BUILD_DEFAULT_MODULES` is OFF
          BUG: Returns a copy of the VNL matrix instead of a reference
          ENH: Add helper functions to convert NumPy arrays to ITK matrices and back
          ENH: Add `ttype` keyword in New() function for Python templated classes
          ENH: `isinstance()` can be called without template parameters of classinfo
          BUG: Wrap itkImageDuplicator for all image types as it is used by NumPyBridge
          ENH: itkPCAShapeSignedDistanceFunction supports float images
          ENH: Add advanced CMake option `ITK_DO_NOT_BUILD_TESTDRIVERS`
          ENH: Move part of CI configuration into Azure YML files
          ENH: Move Python tests into wrapping subfolder
          BUG: Correct CMake variable name and move baseline files to appropriate folder
          ENH: Only run Python tests on Linux and Windows
          ENH: Adds wrapping for std::vector<itk::Image<...>::Pointer> and typemaps
          ENH: New test to verify that` ObjectFactoryBasePrivate` is destroyed correctly
          ENH: Enable forcing creating snake_case function for non-ProcessObject classes
          ENH: Add snake case method for non itkProcess derived class itkImageDuplicator
          BUG: itkObjectFactoryBasePrivateDestructor was not compiling with MSVC
    GDCM Upstream @malaterre (3):
          GDCM 2019-02-07 (8e1cfd05)
          GDCM 2018-10-23 (2e701ed7)
          GDCM 2019-02-08 (815caa81)
    HDF5 Maintainers (1):
          HDF5 2018-10-15 (545c5fb2)
    Hans J. Johnson (27):
          STYLE: Remove exact duplicate test code
          ENH: Improve by adding enhanced complexity to testing
          ENH: Add test for IsInsideInObjectSpace.
          DOC: Improve diagnostic message from ExtractImageFilter
          ENH: TransformIOBaseTemplate Must be explicitly instantiated
          STYLE: Instance variables should be private
          STYLE: Move default [con/de]strutor to .h (part 2)
          STYLE: Class derived from TransformBase need explicit instantiation
          STYLE: Remove functions that are not used
          ENH: Use member functions with default values
          COMP: Refactor to remove const_cast of void *
          STYLE: Fix spelling s/ranage/range/g in comment.
          ENH: Improve coverage for itk::FastMarchingImageFilterBase.
          COMP: Allow compiler option fixed in gcc 4.1.0
          PERF: Allow overwriting ABI/Optimization & Warning flags
          DOC: Minor spelling corrections
          ENH: Improve test coverage of ImageMoments
          DOC: Expand GetAxisAlignedBoundingBoxRegion replacement code
          STYLE: Prefer using Update() for consistency
          ENH: Avoid deprecated SpatialObject function calls
          ENH: ProtectedComputeMyBoundingBox return not used
          ENH: Clean up tests to pass under new API
          COMP: Consolodate duplicate LogTester code
          COMP: Support ITK_LEGACY_REMOVE for SpatialObjects
          ENH: Add legacy interface to SpatialObjects
          BUG: Match return types for nullptr return values
          COMP: Remove compilation warning unmatched types
    Hastings Greer @HastingsGreer (6):
          BUG: ImageSpatialObject's BoundingBox was nonfunctional if not axis aligned
          BUG: ImageMaskSpatialObject::IsInside uses image cosines
          COMP: fix compilation errors
          COMP: Various compiler errors
          COMP: fixes to enable compilation with gcc
          COMP: Update tests
    Jerome Schmid @schmidje (1):
          COMP: VtkGlue module-Provide support for VTK new cmake targets
    Jon Haitz Legarreta GorroΓ±o @jhlegarreta (29):
          ENH: Add a PrintHelper file to overload boolean and vector printing.
          ENH: Add a parameter to test to improve `itk::ResampleImageFilter` testing.
          ENH: Update the ITKIOFDF remote module.
          ENH: Improve `itk::ResampleImageFilter` class coverage.
          BUG: Fix `Γ¬tkResmapleImageTest2` test failing on 32-bit systems.
          DOC: Transition `Examples` folder `README` file to Markdown.
          DOC: Increase `VNL` ThirdParty module `README` information accuracy.
          ENH: Conform to GitHub PR and issue template guidelines.
          DOC: Transition the `Nonunit/Review` `README` to Markdown syntax.
          ENH: Bump the latest version of the `ITKThickness3D` remote.
          BUG: Fix GitHub community template syntax errors.
          STYLE: Transition GitHub community template filenames to lowercase.
          DOC: Change GitHub community template guidelines to HTML comment markup.
          ENH: Add new GitHub community issue templates.
          STYLE: Improve coverage issue template name wording.
          DOC: Fix PR template not being displayed.
          DOC: Add emojis to GitHub issue templates.
          ENH: Update a few remote modules to their latest commit versions.
          DOC: Improve the CONTRIBUTING guidelines document
          DOC: Fix typo.
          DOC: Add checklist to PR template.
          ENH: Add a script to update the remote module commit hashes
          ENH: Add a script to update the ITK tag as required in files
          ENH: Update the Remote module Python package version automatically
          STYLE: Rename remote module maintenance script
          DOC: Add Remote module PyPI update notice in Release guide
          ENH: Bump remote modules.
          ENH: Bump remote modules to latest commits
          ENH: Bump remote modules to their latest commits
          COMP: Fix Software Guide line length too long warnings
    KWSys Upstream @bradking (2):
          KWSys 2019-02-14 (e270ce9f)
          KWSys 2019-03-28 (e92bdbe8)
    Matthew McCormick @thewtex (51):
          ENH: Use HDF5 1.10.4
          DOC: Updates to the README
          DOC: Use 'ITK: The Insight Toolkit' for README title
          ENH: Add legacy multi-frame DICOM MD5 content links
          COMP: Avoid duplicate wrapping of VectorContainer with unsigned short
          BUG: MeshIOBase ivars used for number points, cells, pixels
          STYLE: Keep ProjectObject methods protected in ResampleImageFilter
          STYLE: Remove unnecessary ResampleImageFilter input/output checks
          DOC: Updates to the Release documentation for 5.0 RC 1
          ENH: Update CI ExternalDataVersion to 5.0rc01
          DOC: Add ITK 5 Release Candidate 1 release notes
          ENH: Add regression test for reading legacy multi-frame DICOM
          ENH: Update itk_hdf5_mangle.h for HDF5 1.10.4
          COMP: Re-apply HDF5 Emscripten clobbered by 1.10.4 update
          ENH: Add probot-stale GitHub bot configuration
          ENH: Add test result analysis to Azure Pipelines web interface
          COMP: Set CMP0083 for PIE flags
          COMP: HDF5 CMake does not have INTEGER cache type
          COMP: Do not also pass png_ptr twice to png_set_error_fn
          ENH: Wrap TriangleMeshToBinaryImageFilter
          PERF: Use constexpr in complex NumericTraits
          BUG: VTKPolyDataMeshIO CanReadFile returns false for non-PolyData
          COMP: Set CMP0083 for PIE flags
          BUG: Use VERSION_GREATER_EQUAL for PIE check
          ENH: Bump CMakeLists.txt version to 4.13.2
          ENH: Add missing SHA512 content link
          ENH: Explicitly use Python 3.7 in Azure builds
          COMP: Prevent duplicate wrapping ouput file specification
          BUG: Add executable bit to
          COMP: Specify type in LiThresholdCalculator min call
          ENH: Wrap ExtrapolateImageFunction
          ENH: Add Python wrapping for SymmetricEigenAnalysisImageFilter
          BUG: Add missing ITKImageGrid circle.png content links
          BUG: itkResampleImageTest2Streaming verification
          ENH: Add IOScanco remote module
          COMP: Add backwards compatible EnlargeRegionOverBox
          BUG: Set dashboard_do_coverage in Azure configuration
          COMP: Add export specification to ITKSpatialObjects
          BUG: Mark HDF5 CMake variables as advanced
          BUG: Mark INSTALL_GTEST CMake variable as advanced
          STYLE: NIFTI CMake variable spacing
          BUG: Do not use CACHE variables for NIFTI when not required
          BUG: Mark TESTLIB_VCL_WHERE_ROOT_DIR_H as advanced
          BUG: Remove BUILD_* GDCM settings from the cache
          BUG: Remove ALLOW_UNSUPPORTED from the cache
          STYLE: C-style variable declarations in WindowedSinceInterpolateImageFunction
          ENH: Add wrapping for WindowedSincInterpolateImageFunction
          ENH: ITKVtkGlue only requires rendering libraries when needed
          COMP: GaussianInterpolateImageFunction test narrowing
          BUG: Allow Python tests in module test/CMakeLists.txt
          ENH: Add new content links for ITK 5.0 RC 2
    MetaIO Maintainers (2):
          MetaIO 2019-01-15 (6efa2b32)
          MetaIO 2019-04-24 (9d2012d1)
    Mihail Isakov @issakomi (4):
          BUG: doesn't detect ITKMeshIO
          STYLE: header included twice, spelling
          BUG: index overflow in BinaryMask3DMeshSource
          BUG: changed to signed
    Niels Dekker @N-Dekker (28):
          PERF: Remove SystemInformation data from ResourceProbe, fix issue #350
          COMP: Fix support itk::VectorContainer<TElementIdentifier, bool>
          COMP: Fix SymmetricEigenAnalysis support TMatrix = itk::Array2D<T>
          COMP: Trailing return types (reference, const_reference) VectorContainer
          STYLE: HoughTransform2DCircles, GaussianDerivativeImageFunc member init.
          COMP: Win32Header no longer disable MSVC warning C4800, C4290, C4786
          COMP: Removed unreachable code, fixing VS2017 warning (level 4) C4702
          STYLE: Removed '2' from GaussianDerivativeImageFunction::ImageDimension2
          STYLE: Renamed SpatialFunction within GaussianDerivativeImageFunction
          BUG: Fixes crashes in unit tests when argv[0] == nullptr
          STYLE: Removed InitializeConstShapedNeighborhoodIterator()
          STYLE: ImageFileReader uses std::unique_ptr<[]>, try-catch-throw removed
          STYLE: Renamed array of radii EllipseSpatialObject to RadiiInObjectSpace
          STYLE: Remove GetPixelTypeName() from both Image and Mesh SpatialObject
          ENH: GTest for ImageMaskSpatialObject::GetAxisAlignedBoundingBoxRegion()
          STYLE: Removed unused private EventObject::EventFactoryFunction type
          COMP: Support ITK_LEGACY_SILENT for ThreadInfoStruct
          STYLE: Removed five unused nested types from ImageSpatialObject
          ENH: Add static member function Size<VDimension>::Filled(SizeValueType)
          STYLE: Removed legacy-only ComputeMyBoundingBox() which was not in ITK4
          STYLE: Renamed ProtectedComputeMyBoundingBox() to ComputeMyBoundingBox()
          STYLE: Remove const from SpatialObject::ComputeMyBoundingBox()
          BUG: Fix #734 Incorrect results GetAxisAlignedBoundingBoxRegion() for 2D
          ENH: Extend test ImageMaskSpatialObject::GetAxisAlignedBoundingBoxRegion
          STYLE: SpatialObject GetModifiableMyBoundingBoxInObjectSpace() non-const
          PERF: ImageMaskSpatialObject::GetAxisAlignedBoundingBoxRegion() faster
          ENH: Add explicit constructors Point and FixedArray for C++11 std::array
          ENH: Add begin() and end() to FixedArray, support range-based for-loops
    Pablo Hernandez-Cerdan @phcerdan (11):
          ENH: Add itk-module-init.cmake to Eigen3
          COMP: Make ThirdParty Eigen3 COMPILE_DEPENDS
          COMP: Revert "COMP: Make ThirdParty Eigen3 COMPILE_DEPENDS"
          BUG: Fix Eigen3 INSTALL_DIR
          DOC: Update ITK5MigrationGuide
          BUG: Fix OFFIS_DMCTK_VERSION_NUMBER where wrunlock was introduced
          BUG: Fix export for ITKDeprecated classes
          BUG: Do no install any Eigen3 targets if ITK_USE_SYSTEM_EIGEN=ON
          ENH: Update Remote Module IsotropicWavelets
          ENH: Add COMPILE_DEFINITIONS to castxml
          ENH: Add remote module TotalVariation
    Roman Grothausmann @romangrothausmann (4):
          ENH: new tests to verify streaming capabilities of itkResampleImageFilter
          BUG: corrected logic for checking that streaming was not used
          ENH: compare outputs of itkResampleImageTest2Streaming to determine success:
          ENH: Stream ResampleImageFilter for linear transforms
    Simon Rit @SimonRit (2):
          ENH: add RTK as a remote module
          ENH: added test to check that Matrix returns a copy of the vnl matrix
    Stephen R.Aylward @aylward (47):
          ENH: Refactor of SpatialObject top-level class
          ENH: Remove itkAffineGeometryFrame file
          ENH: Update ArrowSpatialObject
          ENH: Children name match using string.find (i.e., any substring)
          ENH: Refined SpatialObject base class and organized .h. Refactoring.
          ENH: Refactor Line and Landmark Spatial Objects
          ENH: Refactor Mesh and fix bugs found in previous refactorings
          BUG: Remove itkPlaneSpatialObject because it implemented a boxSO
          ENH: Refactor itkPolygon[Group]SpatialObject
          ENH: Refactor Scene to be a Group and refine base SpatialObject
          ENH: Refactoring the SpatialObject to be more intuitive
          ENH: SpatialObjects have "MyBoundingBox" and "FamilyBoundingBox"
          ENH: Resolved SpatialObject member function and variable names
          ENH: Updated subclasses to match SpatialObjectAPI
          ENH: SpatialObjectPoint and Properties updated
          ENH: Removed unwanted TreeNode classes
          ENH: Removing outdated source files
          COMP: SpatialObjectProperties now a cxx file that compiles
          ENH: Refactor SpatialObjectPoints and TubeSpatialObjectPoints
          ENH: Update PolygonGroup IO to use new spatial object classes
          ENH: Refactoring for IO
          ENH: Renamed functions to make coordinate system explicit
          ENH: Refactoring Meta*Converter classes
          ENH: Update to tests to fit new SO API
          BUG: Fixed bugs on windows for tests
          ENH: Updated wrapping and examples to compile SpatialObjects
          ENH: Updated itkGetObjectMcro to itkGetModifiableObjectMacro
          ENH: Updates to fix failing tests
          ENH: Fix two more tests
          BUG: Fix bug in ImageMaskSO bounding box
          ENH: Making tests bug at a time...
          BUG: Missing center computation in isInside function for Ellipse
          ENH: Adding support for Clone member function to perform a deep copy
          BUG: Last spatial-object-specific tests now pass.
          BUG: Fix const issues regarding My/Family Bounding Box
          BUG: Fix warnings and other minor things
          ENH: Fixing PolygonSpatialObject
          ENH: Made ContourSO and PolygonSO more consistent in logic
          BUG: Fix IsInsideObjectSpace function in PolygonSpatialObject
          BUG: Fix multiple bugs in refactoring of spatial objects
          DOC: SpatialObject docs in migration guide (#630)
          DOC: Detail function change in ImageMaskSpatialObject
          DOC: Specify ITK class alternatives to removed SO member functions
          BUG: Adds RemovePoint() to PointBasedSpatialObjects (#693)
          DOC: PointBasedSpatialObject's PointListType migration docs provided (#652)
          BUG: Adding a consistent Clear() to SpatialObjects (#700)
          DOC: Update recommendation for computing a Boundoing Region in IndexSpace (#699)
    Thomas Janvier @T4mmi (1):
          ENH: Add Thickness3D Remote module.
    VXL Maintainers (3):
          VNL 2019-03-04 (1e8a027f)
          VNL 2019-03-11 (3d183906)
          VNL 2019-03-22 (d0ff9f72)
    Vladimir S. FONOV @vfonov (2):
          MINC 2019-04-23 (44fae20d)
          ENH: fixed build script
    Ziv Yaniv @zivy (1):
          BUG: PNGImageIO segfaults on corrupt png.
    @maekclena (13):
          BUG: Initialize array with expected number of elements
          BUG: Disable TIFF predictor
          BUG: Python3 compatibility
          ENH: Cleanup python wrapping tests
          ENH: Address review comments
          ENH: Update maintenance script
          BUG: Replace sed by ex for portability
          ENH: fix inconsistencies and clearer output
          ENH: Update remote modules
          BUG: fix gaussian interpolate test
          BUG: Ignore comment lines
          STYLE: Visually indent array
          BUG: Remove outdated class declaration
  • v5.0.rc01

    February 05, 2019

    πŸš€ We are happy to announce the Insight Toolkit (ITK) Release Candidate 1! πŸŽ‰ As the first release candidate, the major advancements for ITK 5 have matured, and the community is encouraged to adopt the release candidate in ITK-based applications.

    πŸš€ This release improves Mesh support in Python though simplification and extension of Mesh and PointSet wrapping. In general, this release makes improvements to the modernization of the toolkit staged in ITK 5.
    The C++ range classes continue to advance, including the experimental itk::ImageBufferRange, itk::IndexRange, and itk::ShapedImageNeighborhoodRange. Our migration to GitHub was overwhelmingly successful, but it continues to improve. Pull requests now receive a helpful CDash build analysis GitHub Check.

    πŸ— GitHub CDash Build Analysis Check

    πŸš€ For an overview of ITK 5's transition to modern C++, performance-related changes, the new, Pythonic API, and the project's migration to GitHub, see the ITK 5 Alpha 1: Modern C++, ITK 5 Alpha 2: Performance, ITK 5 Beta 1: Pythonic Interface, and ITK 5 Beta 3: GitHub release announcements.

    🐎 Performance Improvements

    • N4BiasFieldCorrectionImageFilter accelerated through itk::ImageBufferRange and other optimizations.
    • 🚚 Various modern C++ improvements related to default constructors, move operations, etc.

    πŸ“š Documentation

    • ⚑️ ITK Software Guide PDF is now updated for ITK 5.
    • TransformIndexToPhysicalPoint notation is improved.


    • πŸ‘ Mesh IO classes, e.g. Gifti, OBJ, OFF, FreeSurfer, BYU, STL, are now split into separate modules for better modularity.
    • πŸ— A CDash build analysis summary and link is provided as a GitHub Check.
    • βž• Added new C++11 member functions from std::vector to itk::VectorContainer.

    Third Party

    • πŸ‘ DCMTK 3.6.4 is now supported.
    • CanRead is now faster for inspection of potential DICOM files, both with the GDCM and DCMTK DICOM backends.
    • ⚑️ Eigen updated to 3.3.7.
    • πŸ‘Œ Improved support for integration of a system Eigen.
    • πŸ‘Œ Improved compatibility with system HDF5.


    • Wrapping for Mesh and PointSet classes was simplified and extended.
    • BinaryMaskToNarrowBandPointSetFilter is now available in Python.
    • πŸ‘ Better itk.Image NumPy buffer management for advanced pipeline grafting.

    πŸš€ To install the 5.0 Release Candidate 1 Python packages, run

    python -m pip install --upgrade pip python -m pip install --upgrade --pre itk

    What's Next

    πŸš€ There are many more bug fixes and improvements not mentioned above. For more details, please see the change log below. Congratulations and thank you to everyone who contributed to this release.

    πŸ“š The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse.

    πŸš€ We are approaching the 5.0.0 final release! The next release will be the second ITK 5 release candidate; it is scheduled for March.

    Enjoy ITK!

    Changes from v5.0b03 to v5.0rc01
    Bradley Lowekamp (2) @blowekamp:
          BUG: Use compatible ITKv4 computation
          BUG: Fix Ostu test to work with ITKv4 default options
    Dženan Zukić (9) @dzenanz:
          ENH: updating ITKMontage module
          DOC: trying to fix the doxygen warning
          ENH: Updating Visual Studio debug visualizer definitions
          DOC: removing long outdated comment
          ENH: updating Montage module
          STYLE: minor fixes to release notes
          COMP: a fix for system double-conversion build
          ENH: updating Montage: fix double-conversion include directory
          ENH: update ITKMontage: Fix crash when setting tiles from memory
    Eigen Upstream (1):
          Eigen3 2019-01-14 (16812519)
    Francois Budin (1) @fbudin69500:
          BUG: Missing ITK_WRAP_rgba_* variables in
    Hans Johnson (7) @hjmjohnson:
          STYLE: rm initializer list extra lines
          ENH: DCMTK 3.6.4 api changes accomodated
          ENH: Move default [con/de]strutor to .h
          COMP: Protected static function must be public
          PERF: GDCM & DCMTK CanRead fails very slowly for non-DICOM files.
          PERF: readability container size empty
          STYLE: Prefer = default to explicit constructor(){}
    Jon Haitz Legarreta GorroΓ±o (1) @jhlegarreta:
          DOC: Adjust the CoC Committee to the 01/09/2019 meeting decision.
    Matthew McCormick (31) @thewtex:
          ENH: Update Azure Pipelines CI testing cache to 5.0b03
          DOC: Releasing ITK updates for 5.0b03
          BUG: Exercise BinaryMaskToNarrowBandPointSetFilterTest
          BUG: BinaryMaskToNarrowBandPointSetFilter GenerateData protected
          BUG: Remove unused FixedDensityFunction in JensenHavrdaChatvatTsallis
          BUG: Do not build/use PoolMultiThreader without WinThreads or PThreads
          BUG: ShapeDetectionLevelSetFilter outputs
          BUG: ShapeDetectionLevelSetFilter outputFileName
          COMP: Remove itk::ThreadPool::GetGlobalDefaultNumberOfThreadsByPlatform
          DOC: Add 5.0 Beta 3 release notes
          DOC: Fix link to in
          ENH: Add wrapping for BinaryMaskToNarrowBandPointSetFilter
          COMP: Mark DCMTKImageIO::CanWriteFile argument as unused
          COMP: Fix Software Guide line length too long warnings
          COMP: Fix Software Guide line length too long warnings
          ENH: Use CompensatedSummation in point set metrics to improve robustness
          COMP: ShapedImageNeighborhoodRangeGTest array initialization
          ENH: Move Gifti Mesh IO into a separate module
          ENH: Consistency in wrapped mesh types
          PERF: Parallelize ManifoldParzenWidnowsPointSetFunction::SetInputPointSet
          ENH: Move OBJ Mesh IO into a separate module
          ENH: Migrate OFF IO into ITKIOMeshOFF
          ENH: Update IOSTL to 2019-01-16 master
          COMP: Do not use readNoPreambleDICOM with Emscripten
          BUG: Fix Azure Pipelines commit checkout
          BUG: Fix Azure Pipelines master checkout on Windows
          BUG: Default MeshIOBase PointDimension is 3
          ENH: Update IOMeshSTL remote module and update name
          ENH: Improve loading to help pyinstaller can analyze module dependencies
          COMP: Wrapping of VectorContainer and DefaultStaticMeshTraits
          ENH: Add legacy multi-frame DICOM MD5 content links
    Niels Dekker (19) @N-Dekker:
          DOC: issue #273: SyNImageRegistrationMethod default member initializers
          STYLE: Small improvements ImageBase constructor, SetRequestedRegion, '\'
          COMP: Fix "unreachable code" MakeOutput RegistrationMethods
          PERF: N4BiasFieldCorrectionImageFilter implementation using ImageRange
          STYLE: Renamed ImageRange to ImageBufferRange
          PERF: Remove SystemInformation data from ResourceProbe, fix issue #350
          STYLE: Remove dynamic_cast from CastToSTLContainer(), add noexcept
          PERF: N4BiasFieldCorrectionImageFilter adds points + weights ~20% faster
          PERF: Fast assign point data, weights BSplineScatteredData filter
          COMP: ImageBufferRange iterator same as const_iterator, for const image
          PERF: BSplineDecompositionImageFilter now calls ImageAlgorithm::Copy
          ENH: Add default-constructor and empty() to ShapedImageNeighborhoodRange
          ENH: Made ShapedImageNeighborhoodRange assignable and tested copy + move
          STYLE: C++ "Rule of Zero" for iterator classes of Range types
          PERF: Add fast noexcept move semantics to Neighborhood and its Allocator
          BUG: ResourceProbe::Reset() should set m_MaximumValue to lowest value
          BUG: Fixed MoveAssignedRangeHasSameIterators GTest of two range types
          STYLE: Move test utils default-constructed ranges to RangeGTestUtilities
          ENH: Add default-constructor and empty() to IndexRange
    Pablo Hernandez-Cerdan (14) @phcerdan:
          DOC: Fix doxygen in SymmetricEigenAnalysis
          ENH: Python, wrap complex in NumericTraits
          ENH: Update IsotropicWavelets module
          BUG: Fix failure of ITK_EIGEN macro expansion
          ENH: Add test checking noexcept moves in FixedArray
          STYLE: Change EXPECT_EQ to EXPECT_TRUE|FALSE in CommonTypeTraitGTest
          ENH: Add python wrapping for std::pair and other int containers
          ENH: Add internal/external eigen3 libraries
          ENH: Update IsotropicWavelets
          ENH: Add new c++11 member functions of std::vector to itk::VectorContainer
          ENH: Simplify specialization of NumericTraits<std::complex<TComponent>>
          BUG: itkMatrix: Use NumericTraits::Zero instead of literal 0
          DOC: SoftwareGuide: improve TransformIndexToPhysicalPoint notation
          COMP: Fix multi-line comment warning generated by latex notation
    Roman Grothausmann (1) @romangrothausmann:
          BUG: avoid overwriting output in 2nd run used for comparison in test:
    Simon Rit (1) @SimonRit:
          BUG: python itk.Image returned by GetImageFromArray now manages its own buffer
    @ihnorton (1):
          COMP: use HDF5 library names only to avoid abspaths w/ SYSTEM_HDF5
  • v5.0.b03

    January 04, 2019

    πŸš€ We are happy to announce the Insight Toolkit (ITK) version 5 Beta 3 release! πŸŽ‰ This release celebrates the community's migration to GitHub. :octocat: As a true open source project, community participation is a high priority. 🀝 Our migration to GitHub facilitates collaboration with the broader scientific open source community. πŸ”¬


    πŸš€ This release also includes major improvements in the areas of performance and third party libraries. A new, experimental ImageRange class enables iteration over an image's pixels in a modern, performant way. Fundamental ITK data structures were improved to enabled compiler optimizations for Plain Old Data objects. VXL was modernized to C++11, and Eigen is now available in the toolkit; ITK's gradual transition from VXL to Eigen for linear algebra has begun.

    πŸ“„ In addition, four new remote modules are available, FFT's can be computed on the GPU via cuFFTW, and ITK Python's itk.imread now supports image series. More information can be found in the feature summary below.

    πŸš€ For an overview of ITK 5's transition to modern C++, performance-related changes, and the new, Pythonic API, see the ITK 5 Alpha 1: Modern C++, ITK 5 Alpha 2: Performance, and ITK 5 Beta 1: Pythonic Interface release announcements.

    GitHub Migration

    GitHub now hosts the official ITK, ITKExamples, and ITKSoftwareGuide Git repositories:

    The InsightSoftwareConsortium GitHub Organization is currently home to 88 other ITK-related repositories. Many of these repositories are externally developed ITK modules. If you would like create a new repository or transfer a repository to the InsightSoftwareConsortium GitHub organization, let us know on ITK's Discourse discussion forum.

    Documentation on how to contribute has been updated and improved. Contribution documentation is available in the ITK Software Guide and as Markdown files in the source code repository, browsable in GitHub's web interface. Our file is a starting point for contributors. We also have a Git cheatsheet for quick reference.

    Our Code of Conduct describes our motivation to build impactful, open source image analysis software through a welcoming and productive community. The Code of Conduct also describes our values: to be open, welcoming, inclusive, civil and considerate, respectful, collaborative, careful in the words that we choose, responsible, and inquisitive. We expect community members to lead by example, but we also define a set of unacceptable behaviors and mechanisms to enforce conduct violations.

    To guide submission of pull requests and issues, we created templates used when issues and pull requests are opened. Release notes from previous releases were migrated from the Wiki; release notes can be browsed in repository Markdown files.

    πŸš€ Plans for upcoming releases can now be found in the project GitHub Milestones. Release artifacts will now be published on ITK's GitHub Releases as opposed to Sourceforge. Release artifact archives are now also available in the ITK Girder Collection.

    πŸ”§ The ./Utilities/ script now guides repository configuration for GitHub contributions. Git client-side hooks help submit a well-formatted commit message. Git aliases, review-push and pr, are provided to submit pull requests for review and download submitted pull requests for local testing.

    πŸ“š A new cross platform script, ITK/Utilities/, is available to upload binary testing data. This script, invoked directly or through the data-upload alias, performs an authenticated upload to and generates an ExternalData content link to avoid inflation of the source code repository's size. This script can be used to upload testing data for ITK or an externally developed module.

    A static archive of our previous code review system, the Gerrit Code Review instance, was created to preserve the code review discussions for nearly 24,000 changes on ITK and other Kitware supported projects.

    🍎 Continuous integration testing ensures the continued quality and productive development of the toolkit. CircleCI and Azure Pipelines CI testing run over 2,800 regression tests on Linux, macOS, and Windows for both C++ and Python builds. Pull requests content is checked by ghostflow-director to prevent integration of large files, etc.

    We now track issues in the repository's GitHub Issue Tracker. The legacy JIRA issue tracker is now read-only, and it will remain available for reference.

    🐎 Performance Improvements

    • A new, experimental ImageRange class provides range-based iteration over the pixels of an itk::Image.
    • The Rule of Five was applied to basic data structures like itk::FixedArray, itk::Point, itk::Vector so they satify std::is_trivial and std::is_standard_layout. This is now also tested. This enables compiler optimizations and moves.
    • ResampleImageFilter::CastPixelWithBoundsChecking is now faster.
    • Data copies in itk::BSplineTransform were reduced.
    • ⚑️ The number of evaluations in line search optimizer were reduced by half.

    ⚑️ Third Party Updates

    • 0️⃣ The Eigen linear algebra third party library is now available as an ITK module, and it is enabled by default.
    • ⚑️ VXL was updated to require C++11 and use modern C++ syntax
    • ⚑️ GDCM, Zlib and GIFTI were updated to the latest upstream.

    Remote Modules


    The result of phase symmetry filtration of a cardiac ultrasound B-mode volume. From Hatt C. "Multi-scale Steerable Phase-Symmetry Filters for ITK."
    The Insight Journal. July-December. 2011.

    πŸ†• New Remote Modules added:

    0️⃣ The itk::JPEG2000ImageIO class was migrated out the ITKReview module into its own module, ITKIOJPEG2000, and enabled by default.

    πŸ‘ Frequency Domain Support

    • βž• Added itk::HalfHermitianFrequencyIterator: iterate over images in the frequency domain generated with the itk::RealToHalfHermitianForwardFFTImageFilter
    • πŸ‘‰ Support for Fast Fourier Transforms (FFTs) computed on NVIDIA GPUs via cuFFTW: enable by setting ITK_USE_CUFFTW=ON.


    πŸ“¦ To install the 5.0 Beta 3 Python packages, run

    python -m pip install --upgrade pip python -m pip install --upgrade --pre itk

    What's Next

    πŸš‘ There are many more bug fixes and critical improvements not mentioned above. For more details, please see the change log below. Congratulations and thank you to everyone who contributed to this release.

    πŸ“š The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse. We are approaching the 5.0.0 final release! The next release will be the first ITK 5 release candidate; it is scheduled for the end of January.

    Enjoy ITK!

    Changes from v5.0b01 to v5.0b03
    Note: ITK v5.0b02 was skipped due to a build error with Visual Studio.
    Bai Shi (1):
          COMP: To fix compilation error of "cannot dynamic_cast 'x'
    Bradley Lowekamp (47):
          DOC: Improve Extract exception for region size mismatch
          BUG: Print ImageIOBase::m_Spacing
          BUG: Fix TIFFImageIO spacing for multi-page
          BUG: Support ITK transform files with corrected group names
          ENH: Only use one Work Unit in BSpline convergence checker
          BUG: Fix HDF5ImageIO reporting any HDF5 file is readable
          ENH: Improve N4BiasFieldCorrectionImageFilter
          ENH: Add extensions to HDF5ImageIO
          ENH: Add ImageIO methods to check name for file extensions
          BUG: Quiet HDF5-DIAG from H5File::isHdf5
          ENH: Update LabelStatistics to use dyanmic threading
          ENH: Move JPEG200 ImageIO into separate ImageIO module
          BUG: Update SCIOFIO to ITKv4.13 branch
          ENH: Make ProcessObject::VerifyInputInformation constant
          BUG: Handle boundary case with max metric
          PERF: Reduce number of evaluations in line search optimizer by half
          COMP: Fix unused argument warnings in SpatialObjectPoint::operator=
          BUG: Handle boundary case with max metric
          ENH: Update ImageToHistogram to use modern dynamic threading.
          PERF: implement concurrent histogram merge/reduce
          BUG: Fix move of histogram smart pointer
          BUG: Add parameter which stores the requested number of work units.
          BUG: use =default for default implementation of destructor
          BUG: Prevent square root of negative number
          BUG: Check all entries are not null
          STYLE: Prefer immediate exception over long if
          BUG: Fix sqrt of negative values
          BUG: Address valgrind leaks for classes which use ScanlineFilterCommon
          BUG: Limit number of threads used for testing ITK
          ENH: Replace centered transforms with non-centered versions
          BUG: Remove static member function variable
          DOC: Fix LBFBS2 typo
          BUG: Remove static member function variable
          BUG: Fix multi-resolution bspline registration example
          BUG: Adding updated baseline image for improved example
          DOC: Fix typos in LBFGS2 optimizer's error string
          ENH: On Azure DevOps only show test output on failure
          STYLE: Use GTest file name suffix for Google Test based tests
          BUG: Remove unused TRansfromDomainDirectionInverse IVAR
          BUG: Synchronize BSpline MeshDomain parameters from fixed params
          ENH: Adding GTest for BSplineTransform
          ENH: Create method to set transform domain params from coeff images
          BUG: Synchronize BSpline MeshDomain parameters from fixed params
          ENH: Refactor BSplineTransform
          DOC: Update the BSplineTransform class doxygen
          ENH: Update N4BiasField to utilized named positional inputs
          COMP: Addressed unused parameter warning in ImageRegion default
    Brian Helba (1) @brianhelba :
          BUG: Ensure that itkSampleToHistogramFilterTests fail on errors
    Dženan Zukić (50) @dzenanz :
          ENH: code simplification and more granular progress reporting
          ENH: return bin maximum as threshold
          STYLE: removing void if used in place of empty parameter list
          ENH: update remote module MorphologicalContourInterpolation
          BUG: nbOfThreads was bounded to GlobalMaximumNumber, but not work units
          ENH: Ignore current load in PoolMultiThreader
          COMP: missing ConstPointer declaration
          BUG: fix crash in RegionGrowingBenchmark
          ENH: reducing duplication in 4 scanline-based image filters
          ENH: use scanline iterators and clean up the code a little
          COMP: fix [-Wc++11-narrowing] in initializer list during Python wrapping
          ENH: refactor ConnectedComponent to not use Barrier. Also reduce duplication.
          STYLE: aligning macro continuation backslash
          COMP: fixing unused variable warning
          COMP: add Python wrapping for ScanlineFilterCommon
          ENH: updating remotes to their latest versions
          DOC: mentioning ITKV4_COMPATIBILITY in the migration guide
          COMP: minor fixes in preparation for deprecating atomic, mutex and friends
          ENH: updating remotes to latest versions
          ENH: using standard library's mutex primitives
          ENH: deprecating functionality which exist in C++11 standard library
          COMP: missing #include <condition_variable>
          BUG: clamp work units to ITK_MAX_THREADS in Platform and Pool MultiThreaders
          BUG: fix Python wrapping after deprecating MutexLock and friends
          ENH: adding new remote modules: Montage and BSplineGradient
          DOC: fixing copy-paste error about functor type
          ENH: improve precision of median calculation by default
          STYLE: minor space and line break improvements
          ENH: FrequencyBandImageFilter derives from UnaryFrequencyDomainFilter
          ENH: ITKv5_CONST macro for VerifyPreconditions() and VerifyInputInformation()
          ENH: ITKv5_CONST macro for VerifyPreconditions() and VerifyInputInformation()
          BUG: background label could be the same as one of the object labels
          COMP: fix compiler warning in itkIndexRange.h
          ENH: adding wrapping for UnaryFrequencyDomainFilter
          DOC: updating commit information for ITKv5_CONST in ITK 4.13.x
          ENH: commit message script uses GitHub issue referencing format.
          ENH: update Montage remote module
          BUG: test image was not properly initialized. Closes #207.
          COMP: fixing compile errors on Ubuntu 16.04 with GCC 5.4.0
          ENH: compile VNL in parallel on Visual Studio
          COMP: fix compile errors with CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS:BOOL=ON
          COMP: Remove VNL_EXPORT from header only class. Closes #191.
          COMP: fix link errors coming from undefined static constexpr member
          STYLE: rename template parameter TMatrixDimension into VDimension
          DOC: EigenValues parameter uses operator[], not operator[][]
          COMP: compile with Visual Studio in conformance mode AKA /permissive-
          COMP: moving the default constructor of vnl_matrix from .h into .hxx
          STYLE: removing empty lines between comments and constructors
          ENH: enable progress reporting with ITKV4_COMPATIBILITY. Closes #228.
    Eigen Upstream (1):
          Eigen3 2018-11-19 (493fa50e)
    Francois Budin (9) @fbudin69500 :
          BUG: THEADER instead of THREADER
          BUG: Disable using mkl_tbb_thread
          ENH: Adding IOOpenSlide ImageIO remote module to ITK
          BUG: WRAP_2 is a local variable, not a CACHE variable
          BUG: Wrong path to baseline images
          ENH: Allow selecting ImageIO in Python template code
          ENH: Support loading image series in itkTemplate.
          ENH: `itk.imread()` now supports image series
          ENH: Support for tuples passed as arguments through itkTemplate New() function
    GDCM Upstream (2) @malaterre :
          GDCM 2018-11-05 (3ffbf1ed)
          GDCM 2018-11-30 (ec82fb48)
    Gabriel A. Devenyi (1) @gdevenyi :
          PERF: Enable MINC internal compression by default
    Hans Johnson (58) @hjmjohnson :
          COMP: Prefer snprintf to avoid buffer overruns
          STYLE: Use modern C++11 =delete to indicate not implemented
          ENH: Update KWStyle hash to build latest updates
          STYLE: Prefer error checked std::stoi over atoi
          BUG: GE4IO atoi failures resulted in implicit 0 image slices
          BUG: Commandline arguments were not properly processed
          BUG: atoi failure => 0 hid processing failures
          BUG: Command line parsing silently failed
          STYLE: Prefer error checked std::stod over atof
          BUG: Failed conversion to float with uncaught failure
          STYLE: Pefer = default to explicitly trivial implementations
          COMP: Use nullptr instead of 0 or NULL
          STYLE: Replace defines with constexpr and using statements
          COMP: Fix VS2017 compilation regression
          COMP: Use static method from class directly
          STYLE: Remove support for pre 20160229 VXL_VERSION_DATE_FULL
          STYLE: Decouple matlab printing explicit instantiations
          ENH: Adding explicit instantiations for dimensions 1-10
          COMP: Remove duplicate explicit instantiations
          COMP: Remove unused variables.
          BUG: vidl_itk_istream does not override an ITK object
          ENH: Use C++11 override for overridden functions.
          STYLE: Remove unnecessary vcl_XXX.h headers
          ENH: Add scripts to assist with migrations
          ENH: Adding a few more clang tidy checks.
          BUG: Do not override user selection settings
          ENH: Update to require VXL 2.0.0 or later
          STYLE: Remove unused include headers
          ENH: Provide mechanism for changing git remote url
          COMP: Many of the remotes require updates for ITKv5
          STYLE: Remove VCL_INCLUDE_CXX_0X outdated reference.
          ENH: Add specification for -D __clang__ to clang-tidy
          PERF: emplace_back method results in potentially more efficient code
          STYLE: Replace integer literals which are cast to bool.
          ENH: Fetch upstream as part of setup.
          ENH: Stop abort on first failure.
          BUG: Default commit message fixed for =delete modernization
          ENH: Provide consistency with C++11 core guidelines
          BUG: Missing default argment override
          ENH: VXL 2.0.0 provides all instantiations needed by ITK
          ENH: Fix deficient itkCastImageFilter test
          STYLE: Minor variable naming and readability changes.
          COMP: Provide conversion range testing valid_static_cast function
          ENH: Increase minimum VXL version to 2.0.1 for wrapping
          ENH: REVERT compile VNL in parallel on Visual Studio
          ENH: Require VXL v2.0.2 release.
          ENH: Increase size attribute for large third party file.
          STYLE: Remove VXL_VERSION_DATE_FULL conditionals
          COMP: Remove duplicate explicit instantiation
          ENH: Provide range for non-warned cmake versions
          ENH: Update the GIFTI codebase
          DOC: Typo: @tparam -> @param fix doxygen generation
          DOC: Improved documentation for the migration guide
          ENH: Manually update nifti version from github
          ENH: Employ the `rule of zero` for aggregate types
          STYLE: Use default member initialization
          STYLE: Remove the register keyword
          ENH: NIFTI needs to be part of ITKTargets
    Hui Xie (1) @Hui-Xie :
          BUG: The Z spacing was set using thickness
    Isaiah Norton (1) @ihnorton :
          BUG: don't quote argument to URL_HASH for FFTW
    Jon Haitz Legarreta GorroΓ±o (14) @jhlegarreta :
          ENH: Improve itkEuclideanDistancePointMetric coverage.
          COMP: Use C++11 nullptr directly
          DOC: Fix incorrect class ref for Doxygen.
          ENH: Bump remote modules to their latest commits.
          ENH: Increase coverage for itk::GrayscaleFillholeFilterImage.
          DOC: Update the documentation concerning binary data.
          DOC: Format remote module documentation README to markdown.
          ENH: Update the SmoothingRecursiveYvvGaussianFilter remote module hash.
          DOC: Point to the ITK git cheat sheet in the repository.
          DOC: Fix the ITK Git cheat sheet file link.
          ENH: Add script to priviledge C++11 type alias over typedef.
          DOC: Advise users to delete the PR template in message.
          DOC: Move the issue and pull request templates to a specialized folder.
          ENH: Remove `FindITKPythonLibs.cmake` file.
          ENH: Follow remote repositories name changes.
    Matthew McCormick (77) @thewtex :
          ENH: Synchronize testing data content links
          DOC: Updates and improvements on the release process
          COMP: Address empty _FILE_OFFSET_BITS in tif_config.h with MinGW64
          BUG: Do not warn about FFTW GPL license when using Intel MKL
          DOC: Improve ITK_USE_MKL description
          BUG: Mark MKL CMake configuration options as advanced
          ENH: Add support for NVidia CUDA FFTs via cuFTTW
          COMP: Fix HDF5 itk_h5CX_set_apl implicit declaration
          COMP: Use the Platform Threader by default with Emscripten
          COMP: Set CMP0074 to NEW
          COMP: Fix HDF5TransformIO compatibility with HDF 1.8
          COMP: Set CMP0074 in third party libraries
          COMP: Do not mark itk::FloatingPointExceptions constructor as deleted
          COMP: Define TransformBaseTemplate constructor / destructor
          COMP: DataObject InvalidRequestedRegionError unused parameter
          COMP: Remove unused orig parameters in DataObject
          BUG: Remove unused itk_minc2 imported library statement
          BUG: Skip MINC static library build when building shared libraries
          COMP: Suppress undefined public symbol warnings in third party libs
          BUG: Remove duplicate ITK version number
          COMP: Do not install HDF5 static library with BUILD_SHARED_LIBS enabled
          COMP: Add override to TransformBaseTemplate destructor
          COMP: Avoid GCC 4.8 default destructor internal compiler error
          BUG: Import zlib1.rc from ZLib subtree
          BUG: Use GlobalDefaultNumberOfThreads for FFTW plans
          BUG: Simplify specification of greatest prime factor with cuFFTW
          ENH: Add Azure Pipelines configuration
          BUG: Remove ResampleImageFilter duplicate number of pixels check
          COMP: Avoid Intel compiler warning on unknown deprecated attribute
          ENH: Ensure that .sha512 content links have LF newlines
          ENH: Configure .gitattributes for ghostflow-director CheckSize
          DOC: Update ITK Git Reference for GitHub
          DOC: Update for GitHub
          COMP: Address ITKReview module wrapping following migration of ITKIOJPEG2000
          BUG: Migrate Python tests into their modules
          ENH: Use Release CMAKE_BUILD_TYPE for macOS Python CI builds
          BUG: Remove apt-get install's from macOS Azure Pipeline's configuration
          ENH: Update Git client side hooks for GitHub
          ENH: Add script
          COMP: Remove vcl_complex.h from Python builds
          BUG: Remove vcl_complex support from
          BUG: Disable PythonGetNameOfClass test
          BUG: Enable ITKIOJPEG2000 by default
          DOC: Add Test a Topic to overview section
          DOC: Organize code of conduct sub-documents into a folder
          DOC: Update Documentation/ for GitHub migration
          DOC: Fix spelling of "individual" in
          DOC: Add CI status badges to the README
          COMP: Add missing mutex include to itkImageToHistogramFilter.h
          PERF: Use initializer list in ShapedImageNeighborhoodRange operator*
          DOC: Fix link
          BUG: Run apt-get update for Linux Azure configuration
          COMP: Wrap InPlaceImageFilter for complex float to complex double
          BUG: Do not gpg sign third party updates
          DOC: Note that a pull request has to be explicitly opened
          DOC: Suggest using 72 characters or less in commit hooks
          ENH: Ensure NumPy is available for Python tests
          BUG: Add missing export specification for XMLReader, XMLWriterBase
          BUG: Remove invalid ShapeDetectionLevelSetFilter arguments
          COMP: Remove Doxygen \ref, \copydetails commands
          STYLE: Improve readability of HexadedronCell::EvaluatePosition.
          COMP: Fix IsFloatingPoint concept check for VariableLengthVector
          BUG: Set up wrapping options for use in modules
          ENH: Add PhaseSymmetry remote module
          ENH: Download ExternalData cache for CI builds
          DOC: Remove the convention that release branches start with "release"
          ENH: Run content link synchronization script
          ENH: Add setup-girder-api-key Git Setup script
          BUG: Remove ExternalData MD5 content link generation
          ENH: Move FreeSurfer Mesh IO into a separate module
          DOC: Add missing link in
          ENH: Add regression test for reading legacy multi-frame DICOM
          COMP: Float narrowing conversion in BSpline class initialization
          DOC: Move maintainer documentation into Documentation/Maintenance
          DOC: Import release archive notes from the Wiki
          DOC: Improve 4.13, 5 release notes from GitHub Releases
    Niels Dekker (42) @N-Dekker :
          PERF: Made ResampleImageFilter::CastPixelWithBoundsChecking faster
          STYLE: NumericTraits::NonpositiveMin() using numeric_limits::lowest()
          BUG: Fixed casts to int64_t and double in ResampleImageFilter
          ENH: Tested ResampleImageFilter preserves 'double' and int64_t pixels
          STYLE: Replaced 'bool pre = 0' by 'bool pre = false'
          STYLE: Declared "IsAt" iterator member functions 'const'
          DOC: Replaced leading stars ('*') by spaces in Doxygen code blocks
          STYLE: Replaced "Hyperrect..." by "Rect..." in class + function names
          BUG: Removed underscores from GTest test names
          STYLE: Shortened itkShapedImageNeighborhoodRangeGTest test names
          STYLE: Declared VerifyPreconditions() member functions 'const'
          STYLE: Replaced star ('*') by space in front of Doxygen \code tags
          PERF: Made ConstNeighborhoodIterator::GetPixel(i) much faster
          ENH: Added GradientNormThreshold to HoughTransform2DCirclesImageFilter
          STYLE: Removed unused ShapedImageNeighborhoodRange::m_Image
          ENH: Added ConstShapedNeighborhoodIterator::ActivateOffsets(offsets)
          DOC: Replaced leading stars ('*') by spaces in indented Doxygen code
          ENH: Added GenerateConnectedImageNeighborhoodShapeOffsets()
          COMP: Fixed GDCM OpenJPEG name mangling
          ENH: Added ShapedImageNeighborhoodRange::SetLocation(index)
          COMP: Fixed GDCM OpenJPEG name mangling
          ENH: Added HoughTransform2DCirclesImageFilter::UseImageSpacing
          ENH: Added IndexRange for efficient region and grid space iteration
          COMP: Fixed IndexRange warnings -Wshadow -Wmissing-field-initializers
          PERF: unsharpenedImage iterator in N4Bias...Filter is now "WithIndex"
          BUG: Avoid premature GaussianDerivative kernel computation HoughCircles
          BUG: ShapedImageNeighborhoodRange should not try to avoid rvalue offsets
          ENH: Added policy for constant NeighborhoodRange values outside image
          STYLE: AccessorFunctor::SetPixelAccessor parameter reference to const
          PERF: Removed 'virtual' from Default Pixel Accessor destructors
          ENH: Added ImageRange: a range of iterators to the pixels of an image
          STYLE: ImageHelper now doing '+=' and using C++11 std::integral_constant
          BUG: Fixed ShapedImageNeighborhoodRange copying pixel access parameter
          COMP: Fixed ImageRange warning, passing object to variadic constructor
          DOC: Did #136 Update migration guide with Hough transform changes
          ENH: Added default-constructor and empty() to ImageRange
          ENH: ShapedImageNeighborhoodRange now supports any buffered region index
          PERF: Defining ImageRange iterator as raw pixel pointer, when possible
          ENH: Added Experimental::MakeImageRange(TImage*)
          PERF: Replaced postfix ++ calls on ITK iterators by the prefix ++ calls
          PERF: Small improvements to equality operators of Image Region classes
          PERF: Added C++11 final, noexcept, default, initializers to ImageRegion
    Pablo Hernandez-Cerdan (17) @phcerdan :
          COMP: Fix hdf5 warning missing perl script
          COMP: Fix HDF5 CMake warning policy CMP0075
          ENH: Tweak constructors, Ro5 in FixedArray, Point
          ENH: Add Ro5 to FixedArray and derived classes
          COMP: Fix warnings related to Ro5 changes in FixedArray
          ENH: Add Ro5 constructors to SymmetrySecondRankTensor
          ENH: Add Ro5 to classes derived from Point
          ENH: Initialize SecondRankTensor and RGBPixelType
          ENH: Print direction in ImageIOBase
          ENH: Add HalfHermitianFrequencyIterator
          ENH: Use variadic templates for SetPosition
          ENH: Add ThirdParty module Eigen3
          COMP: Add CONFIG to find_package(Eigen3)
          COMP: Add missing headers SymmetricEigenAnalysis
          COMP: Use the right constructors for fixed eigen3 matrix
          COMP: Reorder variables associated find_package in Eigen3
          ENH: Update external module ITKIsotropicWavelets
    Roman Grothausmann (2) @romangrothausmann :
          DOC: adjusted to fit more general case n != m
          DOC: corrected description of the output
    Sean McBride (3) @seanm :
          COMP: Added additional HDF5 symbols for mangling
          DOC: improved comments about HDF5 symbol mangling
          COMP: fixed some -Wunused-template warnings by adding private namespaces
    Simon Rit (2) @SimonRit :
          BUG: fix NumPy bridge for itk::Image with PixelType itk::Vector
          ENH: improve automatic Python ImageFileReader for non-scalar pixel types
    Tobias Wood (1) @spinicist :
          BUG: Swapped int to SizeType to prevent overflow errors
    VXL Maintainers (8):
          VNL 2018-11-04 (ea3a2cc9)
          VNL 2018-11-08 (88b72533)
          VNL 2018-11-14 (ee083096)
          VNL 2018-11-15 (4fe68119)
          VNL 2018-11-18 (fa7c7abd)
          VNL 2018-11-23 (cb6f5dcb)
          VNL 2018-11-29 (f6e20c3c)
          VNL 2018-12-15 (bb0d2eb6)
    Yann Le Poul (4) @YannLePoul :
          BUG: make sure the palette is empty when m_IsReadAsScalarPlusPalette is false
          DOC: fix rotation spelling issue in some versor related files
          STYLE: IsReadAsScalarPlusPalette already printed in parent class
          BUG: unnecessary call to GetExpandRGBPalette
    Zlib Upstream (1):
          zlib 2018-06-11 (355d8648)
    allywarner (1) @allywarner :
          BUG: CMake build errors
    pierre33 (1) @pierre33 :
          ENH: Update itkNaryFunctorImageFilter
  • v5.0.b02

    December 19, 2018

    πŸš€ This release was superseded by ITK 5.0 Beta 3 due to Visual Studio build errors.

  • v5.0.b01

    September 11, 2018

    πŸš€ We are happy to announce the first beta release for ITK 5. This release features an additional, more Pythonic interface to filters. This interface is more familiar in Python and facilitates rapid prototyping. ITK 5.0 Beta 1 also includes many performance-related improvements, such as a pure C++11 thread pool by default, an HDF5 update to 1.10, new frequency domain iterators, new neighborhood range classes, and a new multi-dimensional, multi-component superpixel class.

    πŸš€ For an overview of ITK 5 performance-related changes and the transition to modern C++, see the ITK 5 Alpha 1: Modern C++ and ITK 5 Alpha 2: Performance release announcements.

    Python Interface

    ⚑️ The traditional, object-oriented interface to ITK's Python classes allows the composition of filters in a pipeline. After setting up a chain of filters, Update() is called at the end of the pipeline. This facilitates streaming of very large images that may exceed the system's memory capacity. For example,

    import itk input\_image = itk.imread('input.nrrd') ImageType = type(input\_image) radius = 2median\_filter = itk.MedianImageFilter[ImageType, ImageType].New() median\_filter.SetInput(input\_image) median\_filter.SetRadius(radius) median\_filter.Update() output\_image = median\_filter.GetOutput() itk.imwrite(output\_image, 'output.nrrd')

    While powerful, this interface is verbose.

    A procedural interface is now available with PEP8-compliant snake case naming of all filters that inherit from itk.ProcessObject. For example,

    import itk input\_image = itk.imread('input.nrrd') radius = 2output\_image = itk.median\_image\_filter(input\_image, radius=radius) itk.imwrite(output\_image, 'output.nrrd')

    In this case, the type of the filter is implicitly determined by the input image type. Immediately, the filter is executed, and the result is directly returned. Object parameters defined by Set* methods can be specified in the filter call with keyword arguments. The Pythonic, snake case form of these parameters can also be used.

    PEP8 function naming has also been applied to the NumPy bridge.

    array = itk.GetArrayFromImage(image)
    array = itk.array_from_image(image)

    Similar functions names are available when creating NumPy array views, itk.Image's from NumPy arrays, and converting VNL vector and matrices to NumPy arrays.

    πŸ“¦ To test the 5.0 Beta 1 Python packages, run

    python -m pip install --upgrade pip python -m pip install --upgrade --pre itk

    🐎 Performance Improvements

    🐎 Based on experiences since initial changes introduced in ITK 5 Alpha 2, many notable performance improvements have been made.

    • 0️⃣ The default thread pool is now fully backed by C++11 threading primitives.
    • A new itk::MultiThreaderBase::ParallelizeArray function is available to quickly and easily dispatch C++11 lamda's or std::function's on linearly indexed containers, similar to itk::MultiThreaderBase::ParallelizeImageRegion for operating on N-dimensional image regions.
    • A new itk::MultiThreaderBase::ParallelizeImageRegionRestrictDirection function is available to prevent splitting an image region over a given direction.
    • πŸ— SetNumberOfThreads has been renamed to SetNumberOfWorkUnits to more accurately reflect configuration of work unit granularity, especially in the context of the Threading Building Blocks (TBB) backend.
    • Progress reporting with multiple parallel operations is enabled with a new itk::ProgressTransformer class.
    • πŸ“š A large corpus of code has been transitioned ITK 5, and the process is now relatively straight forward and well documented. Please see the ITK 5 Migration Guide for more information.

    πŸ’… Style changes

    πŸ“š Classes in the C++11 standard library are now preferred over ITK's implementations. This includes atomic integers, mutex locks and related classes, and hash maps. For more information, please see the migration guide.

    πŸ†• New Classes

    πŸ‘€ Visible Human superpixel segmentation. A 2D slice of 3D superpixel. For more information, see the Insight Journal article, Scalable Simple Linear Iterative Clustering (SSLIC) Using a Generic and Parallel Approach, Lowekamp, B et al,

    What's Next

    πŸš‘ There are many more bug fixes and critical improvements not mentioned above. For more details, please see the change log below. Congratulations to everyone who contributed to this release.

    πŸš€ Please discuss your experiences on Discourse. The community has been quite active in testing and improving these changes for the next major release of ITK. Another beta release is planned for the October-November time period.

    Changes from v5.0a02 to v5.0b01
    Bradley Lowekamp (47):
          BUG: Prevent concurrent read/write in output image
          BUG: Handle case where output image is zero sized
          BUG: Add missing dependencies in Module testing
          ENH: Remove SPECIFIC_IMAGEIO_MODULE_TEST feature
          BUG: Fix name typo for ITK_GLOBAL_DEFAULT_THREADER
          BUG: Fix incorrect library variable for MeshIO test drivers
          ENH: Create TestKernel library
          COMP: Fix overflow in floating-point conversion warning
          ENH: Add SLIC segmentation to new Superpixel module
          COMP: Fix C++11 compatibility with assert in constexpr
          COMP: Use std::min over vnl_math_min
          BUG: Fix index type and and number of indexes
          BUG: Add alternate baseline itkSLICImageFilterTest1 test
          ENH: Update test output to include test name
          BUG: improve numeric consistency in linear algorithm
          COMP: Add missing overrride to virtual destructor
          ENH: TileImageFilter learns to use VectorImages
          COMP: Remove unused testing function and headers
          BUG: Finish updating to ScanlineIterator in nonlinear method
          ENH: Update SLIC filter to use new ITK threading model
          ENH: TileImageFilter learns to use VectorImages
          ENH: Update SimpleITKFilters remote modules
          COMP: remove duplicate declaration of TempImageType
          DOC: Add link to published Insight Journal paper
          ENH: Update CenteredTransformInitializer print self method
          PERF: Remove internal streaming in DiscreteGaussianImageFilter
          ENH: Update MinimumMaximumImageFilter to use dynamic threading
          ENH: Update StatisticsImageFiler to use DynamicThreadedGenerateData
          ENH: Add compensated summation to the StatisticsImageFitler
          BUG: Use pip to install cmake
          BUG: Use pip to install cmake for release
          PERF: Use the recursive Gaussian filter in registration method
          BUG: Add additional baseline for debug
          COMP: Length GTest discovery timeout
          BUG: Correct image used for debug SimpleImageRegistrationTest
          BUG: Add cxx suffix to specified source GTest code
          ENH: Consistently use default OutputWindow for messages
          BUG: Explicitly set sampled pointset in virtual domain
          ENH: Use std::enable_if and std::is_same in filters
          PERF: Memory alloc reduction in ComputeJacobianWithRespect
          PERF: Improve MatrixOffset Jacobian computation performance
          COMP: Address signed to unsigned comparison warning
          STYLE: Cleanup development comments
          PERF: perform matrix multiplication in-place for composite Jacobian
          ENH: Provide explicitly instantiated vnl_svd_fixed
          PERF: Change type of Jacobian w.r. position to vnl_matrix_fixed
          PERF: Change the purpose of the cache jacobian argument
    Brian Avants (1):
          PERF: Only throw exception if zero valid points
    Chao Wu (2):
          ENH: Enable writing scl_slope and scl_inter in NIfTI header
          BUG: Missing SetCPUBufferPointer in GPUImage<...>::SetPixelContainer(...)
    Dženan Zukić (45):
          STYLE: a more direct link (after PR has been merged)
          STYLE: update clang-format configuration
          ENH: adding ParallelizeArray method to MultiThreaderBase
          COMP: fixing warning in external module
          COMP: Address usage of deleted assignment operator
          ENH: more thorough removal of deprecated "multiple method"
          DOC: add compatibility warning to Barrier
          STYLE: initializing SingleMethod/SingleData in base class
          DOC: merging instructions from itkMultiThreader.h into migration guide
          ENH: rename NumberOfThreads into NumberOfWorkUnits in filters
          ENH: Add backwards compatibility for Get/SetNumberOfThreads
          ENH: renaming NumberOfThreads into NumberOfWorkUnits in MultiThreaderBase
          ENH: adding backwards compatibility for MultiThreaders
          ENH: default number of work units is greater than default number of threads
          COMP: fixing compile warning on GCC 4.8
          ENH: rewriting thread pool to take advantage of C++11
          ENH: implement Parallelize Array and ImageRegion in PoolMultiThreader
          COMP: SmoothingRecursiveYvvGaussianFilter compiles with new ITKv5 threading
          ENH: RGB/RGBA consistency, operator / and remove comments from implementation
          ENH: refactoring RecursiveSeparableImageFilter to use new threading
          ENH: updating MCI: adjusting to split between threads and work units in ITKv5
          ENH: compute spacing using n-1 instead 2-1 in ImageSeriesReader
          BUG: updating the HDF5 symbol mangling
          ENH: fix reading of oblique image series
          BUG: fixing crash in ThreadPool's destructor
          COMP: fixing warning about shadowed global
          COMP: avoid warning with CMake 3.12 and newer regarding policy CMP0075
          ENH: write format which is backwards-compatible with HDF5 version 1.8
          ENH: refactoring BinaryImageToLabelMapFilter to use the new threading model
          ENH: adding ProgressTransformer
          ENH: proper backwards compatibility to HDF5 1.8
          STYLE: fixing 'No new line at the end of file'
          ENH: adding short description of split between threads and work units
          ENH: rewriting BarrierTest to work with any MultiThreader
          ENH: cause compile error with HDF5 version 1.10.0 and 1.10.1
          STYLE: fixing 'No new line at the end of file'
          ENH: restore BeforeThreadedGenerateData method
          DOC: state that SetRecursive must be called before SetInputDirectory
          BUG: updating the symbol mangling list
          BUG: removing mangling of unversioned variant of versioned definitions
          ENH: update migration guide: prefer C++11 classes over ITK's
          ENH: cleaning up ProcessObject
          ENH: using progress transformer in recently refactored classes
          COMP: fixing LoggerBase to compile even when DEBUG is defined
          DOC: ProgressReporter should be replaced by ProgressTransformer
    Francois Budin (3):
          BUG: Improvements to ITK NumPyBridge
          DOC: Improve exception message to precise what image sizes can be processed
          BUG: Improvements to ITK NumPyBridge
    GCC-XML Upstream (1):
          ENH: pygccxml develop (reduced)
    GDCM Upstream (1):
          GDCM 2018-05-23 (69cb71a4)
    HDF5 Maintainers (3):
          HDF5 2016-05-10 (7453bbef)
          HDF5 2018-07-20 (bed5b207)
          HDF5 2018-08-22 (08d77e43)
    Hans Johnson (6):
          ENH: HDF5 moved from svn to git
          ENH: Update HDF5 import script for 1.10.2
          ENH: Remove svn version of hdf5 files not added by import from git
          STYLE: Consistently name for ITK conventions
          BUG: Fixing the HDF5 internal path names tests
          COMP: Fix const assignment error in testing
    Isaiah Norton (3):
          BUG: prevent segfault when transform reader fails to load .mat
          PERF: improve DCMTKFileReader::CanReadFile perf
          BUG: prevent segfault when transform reader fails to load .mat
    Jean-Christophe Fillion-Robin (1):
          BUG: Refactor itkFloatingPointExceptions to fix macOS support
    Jon Haitz Legarreta (1):
          ENH: User initialization lists over direct assignment.
    Jon Haitz Legarreta GorroΓ±o (4):
          ENH: Add the ITK BoneMorphometry module as a remote.
          COMP: Bump remote modules versions.
          ENH: Clean up itkGrayscaleMorphologyImageFilter tests.
          ENH: Increase itk::OtsuMultipleThresholdsImageFilter coverage.
    KWSys Upstream (1):
          KWSys 2018-06-01 (8ef62b28)
    Kwame Kutten (2):
          BUG: Removed quotes from fftwf and fftwd hashes
          ENH: Make StatisticsImageFilter returns Sum Of Squares
    Marian Klymov (1):
          ENH: Mark copy constructor of ExceptionObject and derived classes noexcept.
    Matthew McCormick (39):
          COMP: Reduce example line lengths for inclusion in the SG
          COMP: Remove duplicate InPlaceImageFilter wrapping for RGB -> UC
          BUG: Do not copy workbox files when BUILD_DOCUMENTATION is OFF
          COMP: Remove duplicate BinaryGeneratorImageFilter class wrapping
          BUG: Migrate to
          ENH: Remove itkzlib in preparation for subtree update
          ENH: Add ZLIB
          BUG: Do not use P-threads with Emscripten
          COMP: Remove extra argument from HoughTransform3DCircles wrapping
          ENH: Update testing data content links
          BUG: Correct Windows and macOS CastXML hashes
          BUG: Fix SLICImageFilter wrapping
          BUG: Improve backwards compatibility of BoxUtilities functions
          BUG: Remove commented, unused Python wrapping configuration
          BUG: Remove deprecated GetPointer wrapping method
          ENH: Python snake case functions
          BUG: Remove deprecated itk.write function
          BUG: Remove unmaintained, itk.show2D
          ENH: Add snake case function aliases for NumPy conversions
          DOC: ITK 5 now requires CMake 3.10.2
          BUG: Bump SplitComponents remote module to 2018-07-18
          BUG: Remove TBBImageToImageFilter remote module
          BUG: Correct Windows and macOS CastXML hashes
          COMP: Set CMake project command VERSION
          COMP: Do not wrap itk::ThreadJob
          COMP: Set CMake project command VERSION
          ENH: Add ParallelizeImageRegionRestrictDirection
          COMP: Bump CastXML for Visual Studio 2017 support
          ENH: Bump pygccxml hash to 2018-08-07 develop branch
          ENH: Update pygccxml git subtree version
          BUG: Remove
          BUG: Use manylinux to build CastXML linux executable
          BUG: Avoid symlink issues in
          DOC: Additional information and updates on bug fix release process
          COMP: Prevent duplicate wrapping ouput file specification
          COMP: Support instantiation of a 1D TranslationTransform
          DOC: Update how to reference a GitHub issue in the commit-msg hook
          DOC: ITK 5 Migration Guide grammar tweaks
          ENH: PEP8 for itk.Extras arguments
    MetaIO Maintainers (1):
          MetaIO 2018-07-17 (6328f544)
    Niels Dekker (14):
          DOC: Fixed \code sections ShapedImageNeighborhoodRange and added \author
          STYLE: Renamed RelativeIndices to ShapeOffsets in ShapedImageNeighborhoodRange
          ENH: Added ConnectedImageNeighborhoodShape, for N-connected neighborhoods
          ENH: Added operator[] to ShapedImageNeighborhoodRange
          ENH: Documented + tested order offsets ConnectedImageNeighborhoodShape
          COMP: Fixed conversion to PDFValueType in MattesMutualInfo...Threader
          ENH: Added reverse iterators to ShapedImageNeighborhoodRange
          STYLE: Removed HoughTransform2DCircles default for TRadiusPixelType
          ENH: Changed type float data members HoughTransform filters to double
          ENH: Added Functor::CoLexicographicCompare
          ENH: Made Functor::LexicographicCompare more generic and easier to use
          BUG: Added default-constructor iterator ShapedImageNeighborhoodRange
          ENH: Added ImageNeighborhoodPixelAccessPolicy for custom border extrapolation
          STYLE: Removed LinearInterpolateImageFunction::m_Neighbors
    Pablo Hernandez-Cerdan (11):
          COMP: Remove ignored const qualifier in template.
          COMP: Fix warnings -Wcatch-value
          ENH: Update isotropic wavelets module.
          ENH: Add frequency iterators and band pass filter.
          COMP: Update IsotropicWavelets, remove FrequencyIterators
          STYLE: Remove comment in ITKImageFrequency cmake
          BUG: Fixes generating floating point exceptions
          COMP: Fix warnings in cdash introduced after FPE.
          DOC: Add example using std::atomic for multithreading.
          STYLE: Mark CMAKE_DEBUG_POSTFIX as advanced.
          COMP: Avoid extra point copy in MetaTube
    Sean McBride (2):
          COMP: Fixed warning about missing case label in public header
          COMP: Fixed three misc clang warnings
    Simon Rit (1):
          ENH: allow wrapping of XML writers
    VXL Maintainers (3):
          VNL 2018-07-26 (2a77e40b)
          VNL 2018-08-04 (3dafea87)
          VNL 2018-09-05 (fc0c9043)
    Vladimir S. FONOV (1):
          MINC 2018-08-09 (ce4333ca)
    Zlib Upstream (1):
          zlib 2018-06-11 (355d8648)

    Enjoy ITK!

  • v5.0.a02

    May 28, 2018

    🐎 Major improvements in ITK 5.0 include a switch to C++11 language standard, improved performance, and cleanup of legacy code. More information about the C++11 transition, spearheaded by Hans Johnson, can be read in the ITK 5.0 Alpha 1 announcement.

    🐎 ITK 5.0 Alpha 2 emphasizes performance improvements: 1) A refactored multithreading infrastructure, 2) in ITK 5, a thread pool is available by default, 3) an Intel Threading Building Blocks (TBB) threading backend with dynamic region splitting, 4) improved image iterator performance, 5) simple APIs to execute functions in parallel, 6) simple construction of unary and binary generator image filters filters, and 7) new, experimental C++11 range classes for iteration in range-based for loops.

    There are now two multi-threaded "GenerateData" method signatures. The classic one, ThreadedGenerateData, is kept when a filter needs to know in advance the number of pieces into which the requested region will be split. This information was previously used by some filters to allocate intermediate, thread-local data. The new dynamic signature, DynamicThreadedGenerateData, allows the region to be split dynamically in response to data content and multi-processor load to achieve load balancing. Presently, only the TBB backend performs dynamic splitting. More information can be found in the Multi-Threading section of in The ITK Software Guide. Instructions that describe changes required to leverage dynamic parallelism in external filters can be found in the migration guide. Most existing ITK-based codes will build with minimal to no modifications required.

    An itk::PoolMultiThreader is the default in ITK 5, which provides a thread pool for platform native threads. The itk::PlatformMultiThreader is also available, which behaves like the previous itk::MultiThreader class.

    Our multi-threading refactoring enables better load balancing for filters with variable per-pixel computation cost. As TBB is one of the best open source libraries for load-balanced threading, it was an easy choice. The itk::TBBMultiThreader can be enabled by setting Module_ITKTBB to ON in ITK's CMake configuration.

    🐎 Most methods in neighborhood iterators were virtual, but this was a rarely-used feature. That virtualization is now a configure-time parameter, and it is off by default. This significantly improves performance of filters which utilize neighborhood iterators. More information can be found in the Discourse discussion.

    πŸ“š A ParallelizeImageRegion method allows multi-threaded processing without writing a full-blown filter class. As evident in this example, multiple parallelized operations of arbitrary complexity can now be concisely specified and executed with C++11 lamda's or std::function's.

    The new itk::UnaryGeneratorImageFilter and itk::BinaryGeneratorImageFilter's allow per-pixel operations to be specified in several ways: 1) traditional "Functor", with operator(), 2) C++11 lambda functions, with closures, 3) C++11 std::function 4) C-style function pointers.

    New, experimental classes for C++11 iteration in range-based for loops, e.g. itk::Experimental::ShapedImageNeighborhoodRange, provide a modern, convenient syntax for image pixel iteration, and dramatic performance improvements.

    Furthmore, ITK 5 improves performance by leveraging Rvalue references to implement move semantics and perfect forwarding.

    🐎 ITK 5 Performance Benchmarks
    🐎 ITK 5 Performance Benchmark Improvements ITK Performance Benchmarks, lower is better, for ITK 4.13.0, ITK 5.0 Alpha 2 with the platform thread pool, and ITK 5.0 Alpha 2 with TBB. ITK 5.0 advances performance in general, especially with the TBB threading backend.

    Thanks to everyone who contributed to the major advancements made in the ITK 5 performance refactoring. Special recognition goes to Dženan Zukić, Kitware, who lead the refactoring effort. Contributions were also made by Jared Vicory, Robert Maynard, Francois Budin, Matt McCormick, Pablo Hernandez-Cerdan, Kitware, Jonathan Lefman, formerly of Intel, Bradley Lowekamp, associated with the National Library of Medicine, Hans Johnson, the University of Iowa, Simon Warfield, Benoit Scherrer, Rene-Paul Debroize, Amir Jaberzadeh, and Etienne St-Onge, Boston's Children's Hospital. The TBB-refactoring was inspired by the TBBImageToImageFilter, which was supported in part by the Intel Parallel Computing Center at the Computational Radiology Laboratory, Boston Children's Hospital. Bradley Lowekamp contributed the itk::UnaryGeneratorImageFilter and itk::BinaryGeneratorImageFilter filters. Neils Dekker, Leiden University Medical Center, contributed the new range classes.

    πŸ›  There were many other improvements and bug fixes since 5.0 Alpha 1. For example, addition of .editorconfig, prominent placement of .clang-format, addition of ITK-specific debug visualizers for Visual Studio versions 2012-2017 improve editing and debugging experience in Visual Studio.

    πŸ“¦ To test the ITK 5.0 Alpha 2 Python packages, run

    python -m pip install --upgrade pip python -m pip install --upgrade --pre itk

    πŸš€ Note: there are a few warnings that appear when using the wrapping. These will be addressed with the next release.

    πŸš€ The next planned release, ITK 5.0 RC1, will focus on the transition of code review process to GitHub.

    Changes from v5.0 Alpha 1 to v5.0 Alpha 2
    Bradley Lowekamp (22):
          PERF: remove virtual methods in neighborhood iterators
          ENH: Use named inputs for the PasteImageFilter
          PERF: Remove iterators stored as member variables
          BUG: Add specification of OutputImage Type for TobogganImageFilter
          BUG: Add specification of OutputImage Type for TobogganImageFilter
          ENH: Improve numerics of resampling for linear transform
          COMP: Fix gcc 4.8 initialize warning
          ENH: Add baseline image to sporadically failing test
          ENH: Adding Unary and Binary GeneratorImageFilter
          ENH: Convert functor based filters to generator
          ENH: Update internal filters to use BinaryGereratorImageFilter
          ENH: Updating Functor filter with parameters to the new Generator
          COMP: Address Generator filters destructors warning
          DOC: Fix BSplineDecompositionImageFilter Doxygen see also link
          ENH: reuse default splitter
          BUG: revert thread update to BSplineScatteredDataPointSetToImageFilter
          ENH: Update CircleCI CMake version to 3.11.2
          BUG: Correct detection of most recent data file
          ENH: Improve numeric computation of linear interpolation for Resample
          ENH: Update baseline image for ResampleImageFilter3Test1
          BUG: Add 4 pixel tolerance to ResampleImageFilter3Test1
    Dženan Zukić (37):
          ENH: start migration guide document
          STYLE: increasing initial size of the debug window
          BUG: fixing null pointer dereference at the end of iteration
          COMP: reducing direct usage of MultiThreader
          BUG: remove observations in FilterWatcher's destructor
          ENH: support Unicode characters in class documentation
          BUG: fixing index computation in resample filter
          ENH: reducing code duplication in FilterWatcher
          ENH: refactoring MultiThreader infrastructure
          ENH: deciding which filters can use the new threading model
          ENH: reporting progress
          ENH: simplifying Canny filter by using new threading infrastructure
          STYLE: Renaming MultiThreader to PlatformMultiThreader
          ENH: use C++11 thread primitives instead of SpawnThread
          COMP: improve backwards compatibility by retaining the renamed header
          ENH: Add TBB-based multi-threader
          ENH: refactoring filters to avoid use of memory barrier
          ENH: reworking logic for determining default multi-threader
          COMP: fixing compile error on GCC 4.8.5 20150623 (Red Hat 4.8.5-28)
          STYLE: remove outdated and useless comments from VectorExpandImageFilter
          ENH: add a baseline for QuickViewTest.png (Win7x64+VS2017+VTK8.1OpenGL2)
          STYLE: reduce number of lines by removing unnecessary empty lines
          DOC: document FilterWatcher removal
          ENH: adding an .editorconfig file to aid IDE's code formatting options
          BUG: forgotten #ifdefs for ITK_LEGACY_REMOVE
          ENH: adding debugger help files for Visual Studio 2017
          ENH: moving .clang-format file into the root folder,
          ENH: using the new threading mechanism for FFT module
          ENH: explicitly setting threading model in each multi-threaded filter
          ENH: support classic ThreadedGenerateData via ITK_CLASSIC_THREADING_MODEL
          BUG: fixing a test which has been failing since multi-threading refactoring
          ENH: updating baselines for itkBSplineScatteredDataPointSetToImageFilterTest*
          COMP: fixing 2 compile warnings
          STYLE: renaming migration guide document
          ENH: extending migration guide with threading refactoring instructions
          ENH: reducing redundancy in itkLandmarkBasedTransformInitializerTest
          ENH: eliminate CMake option ITK_CLASSIC_THREADING_MODEL
    Hans Johnson (5):
          STYLE: Use C++11 override keyword directly
          STYLE: Use C++11 override keyword directly
          ENH: Add compression option for Transform files
          COMP: Address type mis-match compiler warning
          COMP: Remove unused variable warning
    Jon Haitz Legarreta GorroΓ±o (10):
          COMP: Use and move ITK_DISALLOW_COPY_AND_ASSIGN calls to public section.
          ENH: Update the WikiExamples remote module commit hash.
          COMP: Bump the remote modules' versions.
          DOC: Fix miscellaneous typos.
          DOC: Update the ITK logo files in `Documentation` folder.
          DOC: Remove PSD files containing old ITK logo.
          BUG: Address use of CMake variables in CMakeLists.txt.
          COMP: Set the minimum required CMake version to 3.10.2.
          STYLE: Stick to the ITK style guidelines.
          COMP: Bump the remote modules' versions after the CMake ver update.
    Lucas Gandel (2):
          ENH: include WrapITKConfig for external module
          ENH: Allow for itk::ImageSource wrapping override
    Matthew McCormick (17):
          ENH: Support Python snake case keyword arguments in object initializion
          PERF: Avoid extra condition check in
          COMP: Detect Linux in itkMemoryUsageObserver.h on Alpine Linux
          COMP: Define ITK_DELETE_FUNCTION for backwards compatibility
          BUG: Fix bugs in ITKV4_COMPATIBILITY definition
          COMP: Wrap MultiResolutionPDEDeformableRegistration for Pyramid filter types
          COMP: Do not disallow constructors in Python classes
          DOC: Add Mathieu Malaterre to GDCM copyright holders in NOTICE
          COMP: Address array initialization in itkShapedImageNeighborhoodRangeGTest
          COMP: ShapeImageNeighborhoodRange signed unsigned comparison
          COMP: Add missing itkViewImage.h include to itkViewImage.hxx
          COMP: Initialize CovariantVector in DeformableSimplexMesh3DFilter
          COMP: Update Unary and Binary filters for new generator class base
          COMP: Initialize DeformableSimpleMesh3DFilter displacement
          COMP: Suppress maybe-uninitialized in SimpleDataObjectDecorator Component
          COMP: Do not include itkMultiThreader.h in the header tests
          COMP: Fix Python wrapping of MultiThreaderBase
    Niels Dekker (11):
          ENH: Added Compute member functions to NeighborhoodInnerProduct
          STYLE: Added DISALLOW_COPY_AND_ASSIGN(GaussianDerivativeImageFunction), etc.
          ENH: Added ShapedImageNeighborhoodRange for modern C++ style iteration
          STYLE: Removed '&' from pixelPointer param of NeighborhoodAccessorFunctor::Set
          PERF: Removed virtual ~NeighborhoodAccessorFunctor() and made class final
          COMP: Fixed ShapedImageNeighborhoodRange doxygen + signed/unsigned warning
          BUG: Dropped OffsetTable assumptions from ShapedImageNeighborhoodRange
          PERF: Made HoughTransform2DCircles GaussianDerivative call non-virtual
          COMP: Workaround Clang range-loop-analysis warning NeigborhoodRange test
          ENH: Added class to create offsets for a hyperrectangular neighborhood shape
          ENH: Random access support for ShapedImageNeighborhoodRange iterators
    Pablo Hernandez-Cerdan (4):
          ENH: Add stateless viewer ViewImage with Python wrap.
          DOC: Add docs to ViewImage.
          COMP: Fix catch by value warning in SpatialObject.
          COMP: Fix VNL to compile with gcc8.
    Rashad Kanavath (1):
          COMP: fix linking on OpenBSD
    Sean McBride (4):
          COMP: -Wunused-template & -Winconsistent-missing-destructor-override warnings
          BUG: removed illegal int to enum conversion
          COMP: fix warning about implicit double to bool conversion
          COMP: fix warning about implicit double to bool conversion
    Simon Rit (1):
          COMP: missing include path for FFTW
    Taylor Braun-Jones (1):
          COMP: Fix clang diagnostic: case value cannot be narrowed
    VXL Maintainers (1):
          VNL 2018-05-16 (26628604)

    Enjoy ITK!