@thewtex thewtex released this Jan 4, 2019 · 123 commits to master since this release

Assets 8

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

  • 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:

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

@thewtex thewtex released this Dec 19, 2018 · 141 commits to master since this release

Assets 2

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


@thewtex thewtex released this Sep 11, 2018 · 706 commits to master since this release

Assets 8

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 = 2

median_filter = itk.MedianImageFilter[ImageType, ImageType].New()
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 = 2

output_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.

  • 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
      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!

@thewtex thewtex released this Aug 9, 2018 · 1850 commits to master since this release

Assets 8

On behalf of the Insight Segmentation and Registration Toolkit (ITK) Community, we are happy to announce the release of ITK 4.13.1!

ITK is an open-source, cross-platform library for multidimensional image analysis.

Release files can be downloaded from

To install or upgrade Python packages with pip:

python -m pip install --upgrade pip
python -m pip install --upgrade --upgrade-strategy eager itk

To install packages with conda:

conda install -c conda-forge itk

This is a patch release that fixes critical issues, regressions, documentation, and compiler support. This release includes the addition of symbol name mangling for HDF5 and fixes to the name mangling for libtiff. A number of fixes were added to the NumPy bridge along with miscellaneous improvements. For more details, see the log below.

This release is also the first time packages are available for Python 3.7.

The next feature pre-release for ITK 5, ITK 5 Beta 1, is anticipated within the next few weeks.

Enjoy ITK!

ITK changes from v4.13.0 to v4.13.1:

Bradley Lowekamp (10):
      COMP: Use anonymous namespace for internal linkage
      COMP: Update SimpleITKFilters for dependency issues
      BUG: Add missing extensions to ImageIO
      BUG: Add specification of OutputImage Type for TobogganImageFilter
      BUG: Prevent concurrent read/write in output image
      BUG: Handle case where output image is zero sized
      COMP: Fix overflow in floating-point conversion warning
      ENH: TileImageFilter learns to use VectorImages
      ENH: Update SimpleITKFilters remote modules
      BUG: Use pip to install cmake for release

Francois Budin (2):
      BUG: Initializes CMAKE_DEBUG_POSTFIX to be empty
      BUG: Improvements to ITK NumPyBridge

Jean-Christophe Fillion-Robin (1):
      BUG: Prevent gdcm "missing implementation" error on macOS

Jon Haitz Legarreta Gorroño (1):
      ENH: Add Python wrap file to itk::MultiResolutionPDEDeforableRegistration.

Martino Pilia (1):
      BUG: fix itkFormatWarning in Python wrapping

Matthew McCormick (13):
      ENH: Add wrapping for BSplineTransformInitializer
      COMP: Do not use absolute path to TestBigEndian.cmake in GDCM
      COMP: Enable pthreads shim with Emscripten
      BUG: Allow module examples to be enabled when built externally
      ENH: Ensure external module examples get added to current build tree
      COMP: Work around RegionGrow2DTest compiler error on ppc64le
      BUG: Wrap long long instead of long
      COMP: Detect Linux in itkMemoryUsageObserver.h on Alpine Linux
      COMP: Wrap MultiResolutionPDEDeformableRegistration for Pyramid filter types
      BUG: Migrate to
      BUG: Correct Windows and macOS CastXML hashes
      COMP: Set CMake project command VERSION
      COMP: Bump CastXML for Visual Studio 2017 support

Niels Dekker (1):
      COMP: Worked around endless VS2015 Release compilation on Math::Floor

Pablo Hernandez-Cerdan (2):
      COMP: Fix VNL to compile with gcc8.
      STYLE: Mark CMAKE_DEBUG_POSTFIX as advanced.

Sean McBride (5):
      STYLE: arranged/alphabetized things to make subsequent changes reviewable
      COMP: Fixed some missing name mangling of libTIFF symbols
      BUG: fixed crash on macOS under guardmalloc from RunOSCheck()
      COMP: Mangle HDF5 symbol names
      COMP: fix warning about implicit double to bool conversion

@thewtex thewtex released this May 28, 2018 · 1095 commits to master since this release

Assets 2

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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!


@thewtex thewtex released this Apr 17, 2018 · 1305 commits to master since this release

Assets 2

ITK 5.0 Alpha 1 is ready for testing!

ITK 5.0 brings dramatic improvements to ITK's API and performance. At the same time, there are minimal changes that break backwards compatibility.

This the first in a series of alpha releases to enable the community to test and improve these major changes.

In this first alpha release, we highlight ITK's adoption of and requirement for the C++11 standard. Prior to this release, a subset of C++11 functionality was utilized, when available, through backports and macros. ITKv5 deprecates or removes these macros (e.g. ITK_NULLPTR, ITK_DELETED_FUNCTION, ITK_NOEXCEPT, ITK_CONSTEXPR) and directly uses C++11 keywords such as delete, constexpr, nullptr, override, noexcept. The keywords auto and using as well as range-based loops are also now used heavily throughout ITK.

ITKv5 includes some API changes. Even though we tried to minimize backward compatibility issues, there will be a few (see below for important changes). These changes were discussed by the community on the ITK Discourse forum [1][2][3][4]. This ITK alpha release is purposefully created with the goal of helping developers to test their current software with this new ITK version, update their code if necessary, and report problems they encountered during this process.

ITK now requires CMake 3.9.5 for configuration and a compiler that supports C++11. This means that Visual Studio 2015 or later is required for Windows development with the Microsoft toolchain.

Important changes in style have also been integrated in ITK to match the C++11 best practices. This includes replacing typedef calls with the using keyword, the usage of the keyword auto when appropriate, and moving the macro ITK_DISALLOW_COPY_AND_ASSIGN from the private class section to the public class section. The ITK Software Guide has been updated to match these changes.

As shown below, toolkit has adopted the application of the using keyword for type aliases, which many developers find easier to read and understand.

  template< typename TInputImage, typename TOutputImage > 
  class ITK_TEMPLATE_EXPORT BoxImageFilter:
    public ImageToImageFilter< TInputImage, TOutputImage >
    /⋆⋆ Standard class type alias. ⋆/ 
    using Self = BoxImageFilter;
    using Superclass = ImageToImageFilter< TInputImage, TOutputImage >;
    ~BoxImageFilter() {}
    void GenerateInputRequestedRegion() override; 
    void PrintSelf(std::ostream & os, Indent indent) const override;
    RadiusType m_Radius;
  } // end namespace itk

For more information on style changes, see the Coding Style Guide found in the ITK Software Guide.

To test the 5.0 Alpha 1 Python packages, run

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

For a full list of the new features and changes in API, please review the log below. The community has been busy -- there have been 319 commits, 97,794 insertions, 152,791 deletions since 4.13.0 was released in December!

Please discuss your experiences on Discourse. The API is expected to change across alpha releases as we improve the library based on our experiences.

Changes from v4.13.0 to v5.0 Alpha1

Bradley Lowekamp (49):
  	ENH: Adding more swap methods
  	BUG: Respect Visibility Preset for initial template visibility
  	COMP: Use explicit equality for boolean evaluation of real number
  	BUG: Keep the SetSeed# methods in IsolatedConnectedImageFilter
  	ENH: Use direct for loops for implementing image transformations
  	COMP: Use anonymous namespace for internal linkage
  	ENH: Mark 2 template parameter ModulusTransform to be removed
  	COMP: Remove legacy marking on definition of SetSeed methods
  	STYLE: Use itk::v3 nested namespace for Rigid3DTransform
  	BUG: Preserve option to use a "label value" mask and boolean mask
  	ENH: update C+11 headers and try compile for headers
  	ENH: Remove duplicated CMake module from upstream CMake
  	COMP: Explicitly include the fixed width integer header before usage
  	COMP: Update SimpleITKFilters for dependency issues
  	BUG: The CXX language must be enable to check compiler variables
  	PERF: Support move semantics for ITK smart pointers
  	ENH: Remove usage of SmartPointerForward reference
  	ENH: Remove unneeded internal smart pointer type
  	COMP: Require MSVC VS14 2015 for C++11 compatibility
  	ENH: Use C++11 template alias for Image::Rebind
  	STYLE: Use copy-swap idiom for SmartPointer
  	ENH: Use std::unique_ptr over itk::AutoPointer
  	DOC: Document additional MaskValue variable
  	BUG: remove unused cmake CXX try compile file
  	BUG: Remove un-configured and unused CMake configure define
  	BUG: Improve Doxygen extraction with blank line
  	ENH: Remove TEMPLATED_FRIEND macro and try compile
  	ENH: Replace optional tr1 type_traits with c++11 standard
  	ENH: Assume c++11, remove configure defines for optional TR1 features
  	BUG: Add missing extensions to ImageIO
  	ENH: Only use std::atomic implementation for AtomicInt class
  	ENH: Add direct SmartPointer conversions to match raw Pointers
  	PERF: Use emplace when inserting into map for ProcessObject
  	ENH: Create virtual interface for the MultiTheader
  	ENH: Trying out the ThreadPool as a separate MultiThreader
  	BUG: Fix uninitialized cross structuring element buffer
  	BUG: Disable ThreadPools by default
  	COMP: Add forward declaration of ExceptionObject in Macro.h
  	COMP: Add forward declaration of ExceptionObject in Macro.h
  	ENH: Use gtest_discover_tests if available
  	DOC: Watershed filters is not stream-able
  	COMP: Use nullptr over 0 for null pointer
  	STYLE: Use SmartPointer direct conversion constructors
  	Revert "BUG: Disable ThreadPools by default"
  	BUG: Actually disable ThreadPools by default
  	COMP: Suppress warning on CircleCI about itkIndex out of bounds
  	ENH: Update CircleCI external data cache
  	ENH: Address incorrect types with neighborhood iterator base class
  	COMP: Make MirrorPadImageFilter::DelayBase a conventional parameter

Bryce A Besler (1):
  	ENH: Move DiscreteGaussianDerivativeImageFilter from Review to ITKImageFeature

Dženan Zukić (27):
  	ENH: updating SphinxExamples and pointing to GitHub
  	COMP: Get rid of warning about registry key
  	STYLE: minor fixes
  	BUG: duplicator crashes if buffered region is smaller than largest region
  	STYLE: reducing code duplication and cleaning up method documentation
  	ENH: adding itkReviewPrintTest to tests. It existed but was not invoked.
  	COMP: turn FEM off by default, as it takes a long time to build
  	COMP: fixing compiler warnings
  	ENH: making ITKBioCell and ITKNeuralNetworks remote modules
  	COMP: fixing configure error
  	COMP: long paths are not yet supported by all the tools in the build chain
  	COMP: using ITK_DELETED_FUNCTION, and more consistent override specifier
  	ENH: simplify code and properly support long long type
  	COMP: fix compile warning
  	STYLE: avoid redirect for repository address in DVMeshNoise
  	ENH: update remote modules to require CMake 3.9.5
  	BUG: fixing crash in test
  	ENH: Remove ITKFEMRegistration from default configuration
  	ENH: Fixing error and improving examples' test
  	ENH: Use MultiThreaderBase
  	STYLE: reducing duplication and removing commented code in DistanceMap tests
  	STYLE: fixing typo
  	BUG: more reliably detect Windows+DLLs case
  	ENH: enable thread pool by default
  	ENH: adding exponential decay option to MirrorPadImageFilter
  	BUG: Set/GetGlobalDefaultNumberOfThreads was forgotten in legacy #ifdef
  	BUG: fixing Windows+DLL ThreadPool sporadic destructor hanging

Francois Budin (17):
  	BUG: Update ITK test files SHA and debug
  	ENH: Bump ITK version to 5.0.0.
  	ENH: lifting path length limitation on Windows 10 version 1607+
  	BUG: Remove bad guards stopping inclusion of necessary hxx file
  	BUG: Remove extern "C" call to include <cstring>
  	BUG: Initializes CMAKE_DEBUG_POSTFIX to be empty
  	BUG: Initializes CMAKE_DEBUG_POSTFIX to be empty
  	DOC: Remove CMake comments mentioning CMake 3.4
  	DOC: ITK_CONSTEXPR* and ITK_HAS_CXX11_RVREF are deprecated
  	BUG: DCMTK builds fails with ICU ON on Linux and Mac
  	BUG: LabelErodeDilate remote module repositories are out of sync
  	BUG: Projects could not link to DCMTK on Windows and MacOS
  	DOC: Add missing documentation for `github_compare` option
  	ENH: Update CMake code to use IN_LIST (CMake >= 3.3)
  	BUG: Update LabelErodeDilate
  	ENH: Compile ITK with MKL (FFTW) installed on system
  	BUG: Update ParabolicMorphology remote module

Gregory C. Sharp (1):
  	DOC: Fix misspelling of vertices

Hans Johnson (86):
  	ENH: Update Wiki examples for latest code changes
  	COMP: Remove override warnings
  	ENH: Cuberille future compilation deprecations
  	ENH: Strain future compilation deprecations
  	COMP: TwoProjectionRegistration Future proof code
  	COMP: LevelSetsv4 used deprecated api
  	COMP: N4 remove testing of deprecated SetMaskLabel
  	BUG: Provide consistent GetOutput behavior
  	BUG: GetModifiableTransformList needs to always be available
  	BUG: Restore backwards compatibility
  	DOC: Remove ITKv3 to ITKv4 migration documentation.
  	COMP: Provide migration documentation old macros
  	STYLE: Remove deprecated code directory contents
  	STYLE: Remove all vestiges of ITKv3 code
  	STYLE: Remove legacy code for ITKv5 starting
  	ENH: Revert to include itkv3::Rigid3DTransform
  	STYLE: Move Future deprecated to deprecated
  	BUG: Restored testing for long HistorgramMatching
  	COMP: Remove unnecessary conditional tests
  	COMP: Force using lower deployment targert for fftw
  	COMP: Use C++ headers over C headers
  	STYLE: Fix header guard format
  	ENH: Set cmake Minimums to 3.9.5
  	COMP: Change min cmake version to 3.9.5 for circleci
  	COMP: Directly use cmake compiler_detection.h
  	STYLE: Fix typo requireing -> requiring
  	COMP: Consistently set use of CMake 3.9.5 and options
  	COMP: Enforce building ITK with C++11
  	COMP: Modularize cmake config like VTK.
  	COMP: Use C++ headers over C headers (part 2)
  	ENH: Scripts used during ITKv5 migration
  	STYLE: Remove conditional version 201103L code
  	COMP: Need to match type for different threaders
  	COMP: Preparing for ITKv5 by adding override
  	COMP:  Use C++11 override directly
  	STYLE: Use override statements for C++11
  	COMP:  Use C++11 ITK_NULLPTR directly
  	COMP: Use nullptr instead of 0 or NULL
  	STYLE: Prefer nullptr for C++11
  	COMP:  Use C++11 nullptr directly
  	BUG: VXL visibility must match ITK visibility
  	COMP:  Use C++11 = delete directly
  	COMP:  Use C++11 constexpr directly
  	BUG: Missing external linkage options for float and double.
  	COMP: Remove deprecated C++ 11 features
  	ENH: used during ITKv5 migration
  	ENH: Update SeveralRemotes to latest version.
  	COMP: Suppress invalid warning
  	STYLE: Remove outdated conditional code
  	STYLE: Remove unnecessary old CMakeCode
  	ENH: Remote for SmoothingRecursiveYvvGaussianFilter
  	STYLE: Prefer C++11 type alias over typedef
  	BUG: Type alias errent typo in name
  	BUG: ConceptChecking type matching failed.
  	STYLE: Remove ITK_HAS variables that should not be defined
  	COMP: Allow using cmake 3.9.5 default for RPATH setting
  	STYLE: Replace itkStaticConstMacro with static constexpr
  	BUG: Propagate C++11 requirements to external project
  	STYLE: Prefer constexpr for const numeric literals
  	STYLE: Use range-based loops from C++11
  	PERF: Allow compiler to choose best way to construct a copy
  	PERF: Replace explicit return calls of constructor
  	STYLE: Use auto for variable creation
  	BUG: Restore ITK.kws.xml preferences
  	ENH: Provide advanced development mode for writing GTests
  	COMP:  Use C++11 noexcept directly
  	ENH: Use simplified/natural conversion to const pointer
  	ENH: Use natural ConstPointer conversion
  	STYLE: Use override statements for C++11
  	COMP:  Use C++11 noexcept directly
  	ENH: Add google test for itkIndex.h
  	ENH: Make const operator[] conform to standards
  	STYLE: Change aggregate classes to mirror std::array
  	ENH: Update all remote modules with C++11 conformance
  	BUG: New SmartPointer conversion ambiguity
  	BUG: Error in ITK_VERSION construction
  	ENH:  Add introspection into the build process
  	COMP: Silence warning of mismatched signs.
  	ENH: Bring in C++11 updates for ITKBridgeNumPy
  	STYLE: Do not use itkGetStaticConstMacro in ITK
  	COMP: Make member name match kwstyle requirements.
  	BUG: Add ability to construct SmartPointer with NULL
  	BUG: Update NULL pointer patch with final fixes

Hastings Greer (1):
  	ENH: Add wrapping for Labeled PointSet to PointSet registration classes

Jean-Christophe Fillion-Robin (3):
  	BUG: Prevent gdcm "missing implementation" error on macOS
  	BUG: Prevent gdcm "missing implementation" error on macOS
  	STYLE: MeshIO: Introduce ITKIOMeshBase module. See #3393

Jon Haitz Legarreta (8):
  	STYLE: Fix typo in itk::VariableLengthVector struct name.
  	ENH: Set the InsightSoftwareConsortium repo as the remote.
  	STYLE: Improve itkHoughTransform2DLinesImageFilter style.
  	DOC: Add different GitHub badges to the `` file.
  	DOC: Change the ITK Git tips wiki page reference for Git scm website.
  	DOC: Add commands in a `Review` section to the ITK Git cheat sheet.
  	DOC: Change the `ITKGitCheatSheet.tex` file tittle.
  	DOC: Make references to ITK issue tracking system consistent.

Jon Haitz Legarreta Gorroño (19):
  	BUG: Fix bug in class LaTeX documentation Doxygen link.
  	BUG: Fix unnecessary explicit itk namespace mention in Doxygen link.
  	DOC: Remove redundant ellipsis after "etc." in LaTeX doc.
  	DOC: Remove unnecessary EOF comments.
  	DOC: Make namespace closing bracket comments consistent.
  	DOC: Fix typo: substract to subtract.
  	DOC: Remove unnecessary ifdef and class ending comments in FEM.
  	DOC: Remove non-existing namespace comment.
  	ENH: Add a code of conduct to the ITK project.
  	ENH: Bump latest version of the ITKSplitComponents remote module.
  	DOC: Remove unnecessary Doxygen \ref keyword in module crossrefs.
  	DOC: Remove crossrefs to non-existing classes.
  	DOC: Improve the markdown file contents.
  	DOC: Change the term `mailing list` in
  	DOC: Fix syntax mistake in `Sharing Data` section of CoC.
  	DOC: Fix typos in class doc.
  	ENH: Add Python wrap file to itk::MultiResolutionPDEDeforableRegistration.
  	STYLE: Update the wrap files to match current CMake syntax.
  	DOC: Fix typo.

KWSys Upstream (1):
  	KWSys 2018-01-08 (f7990fc2)

Marcus D. Hanwell (1):
  	DOC: Add GitCheatSheet sources

Martino Pilia (2):
  	BUG: fix itkFormatWarning in Python wrapping
  	BUG: fix itkFormatWarning in Python wrapping

Matthew McCormick (46):
  	BUG: Remove ITKTubeTK remote
  	ENH: Add wrapping for BSplineTransformInitializer
  	ENH: Add PolarTransform remote module
  	COMP: Do not use absolute path to TestBigEndian.cmake in GDCM
  	COMP: Enable pthreads shim with Emscripten
  	COMP: Do not use absolute path to TestBigEndian.cmake in GDCM
  	COMP: Enable pthreads shim with Emscripten
  	BUG: Allow module examples to be enabled when built externally
  	ENH: Ensure external module examples get added to current build tree
  	COMP: Specify OutputImageType for boundary conditions in FFTPadImageFilter
  	COMP: Update DCMTK to 2018.01.16 and support Emscripten
  	COMP: Fix cross compiling DCMTK
  	BUG: Do not set DCMTK_WITH_XML to ON in DCMTK configuration
  	COMP: itk::Math perfect forward return type
  	BUG: Do not segfault when trying to use PDEDeformableRegistrationFilter
  	COMP: Ensure CastXML uses C++11 with GCC or Clang
  	COMP: Remove legacy BackTransform methods from Rigid3DTransform
  	COMP: Explicitly add NumericTraits::max to the API
  	COMP: Address SG line length warnings in DataRepresentation, Filtering
  	DOC: Update README Software Guide link
  	DOC: Update Discussion link in the README
  	ENH: Add banner to the README
  	COMP: Bump KWStyle to 2018-02-22 master
  	COMP: Add missing wrapping for MultiThreaderBase
  	COMP: Do not wrap methods with ?unknown? type
  	COMP: Add missing itkSimpleFastMutexLock headers
  	ENH: Import the ITKBridgeNumPy module
  	BUG: GetArrayFromImage calls UpdateLargestPossibleRegion
  	BUG: Add missing wrapping for PoolMultiThreader
  	BUG: Exclude MultiThreaderBase from GetNameOfClass test
  	COMP: Add SimpleFastMutexLock include to ESMDemonsRegistrationFunction
  	BUG: Cast to correct iterator type in PeriodicBoundaryCondition
  	BUG: Fix casting in PeriodicBoundaryCondition
  	COMP: Work around RegionGrow2DTest compiler error on ppc64le
  	BUG: Bump KWStyle for C++11 brace list initialization support
  	BUG: Fix MeshFileWriter export specification
  	BUG: Wrap long long instead of long
  	ENH: Create ITKIOMeshVTK module
  	COMP: ExceptionObject declaration must come before usage
  	ENH: Migrate BYU IO into ITKIOMeshBYU
  	COMP: Bump ParabolicMorphology for MultiThreaderChanges
  	COMP: Remove SmartPointer NULL initialization compatibility code
  	DOC: Use http for
  	ENH: Migrate MultiScaleHessianBasedMeasureImageFilter out of ITKReview
  	ENH: Move ContourExtractor2DImageFilter out of ITKReview
  	DOC: Avoid Voronoi term when referring to the pixel center

Niels Dekker (18):
  	PERF: Improved speed of copying and resizing NeighborhoodAllocator
  	STYLE: Removed 'char(255)' casts from NumericTraits min() and max()
  	STYLE: Removed assignments from Neighborhood copy constructor
  	BUG: Fixed semantics NeighborhoodAllocator operator== and operator!=
  	BUG: GaussianDerivativeImageFunction should use image spacing consistently
  	PERF: NeighborhoodOperatorImageFunction avoids copy ConstNeighborhoodIterator
  	COMP: Worked around endless VS2015 Release compilation on Math::Floor
  	PERF: Removed blurring from GaussianDerivativeImageFunction
  	ENH: Added GetCenterPoint and SetCenterPoint to EllipseSpatialObject
  	DOC: Explained calling GetCenterPoint() when using Hough filter->GetCircles()
  	ENH: IsInside(point) made easier, especially for HoughTransform circles
  	STYLE: Using C++11 auto in HoughTransform2DCirclesImageFilter
  	PERF: GaussianDerivativeImageFunction now reuses NeighborhoodIterator objects
  	PERF: GaussianDerivativeImageFunction constructor, RecomputeGaussianKernel()
  	COMP: ITK_DISALLOW_COPY_AND_ASSIGN now unconditionally does '= delete'
  	COMP: Moved ITK_DISALLOW_COPY_AND_ASSIGN calls to public section
  	COMP: Manually moved ITK_DISALLOW_COPY_AND_ASSIGN calls to public section
  	COMP: Moved ITK_DISALLOW_COPY_AND_ASSIGN calls in *.cxx to public section

Sean McBride (19):
  	STYLE: Fixed up confusion between base 2 and base 10 prefixes
  	STYLE: arranged/alphabetized things to make subsequent changes reviewable
  	COMP: Fixed some missing name mangling of libTIFF symbols
  	BUG: fixed crash on macOS under guardmalloc from RunOSCheck()
  	BUG: don't use double underscore, which is reserved in C++
  	STYLE: fixed some spelling, spacing, and comments
  	DOC: Fixed comment about LegacyAnalyze75Mode default value
  	BUG: Some minor cleanup and improvement after itkNiftiImageIO code review
  	STYLE: arranged/alphabetized things to make subsequent changes reviewable
  	COMP: Fixed some missing name mangling of libTIFF symbols
  	BUG: Analyze 7.5 fixes/improvements
  	COMP: Mangle HDF5 symbol names
  	COMP: Fixed clang Wrange-loop-analysis warnings
  	DOC: fixed minor typo in comment
  	BUG: fixed crash on macOS under guardmalloc from RunOSCheck()
  	COMP: Mangle HDF5 symbol names
  	BUG: Revert part of f38b1dd4, which caused a regression
  	ENH: Added new DetermineFileType() API to NiftiImageIO
  	COMP: fixed clang warning about unnecessary copy in for loop

Simon Rit (1):
  	BUG: fix deadlock in FFTW for windows shared libs

Taylor Braun-Jones (1):
  	BUG: Handle single-component PLANARCONFIG_SEPARATE TIFF images (#ITK-3518)

VXL Maintainers (3):
  	VNL 2018-01-25 (ed159d55)
  	VNL 2018-01-31 (39559d06)
  	VNL 2018-03-04 (09a097e6)

Ziv Yaniv (1):
  	ENH: Adding user set min and max values for noise.

@thewtex thewtex released this Feb 11, 2018 · 1917 commits to master since this release

Assets 2

The Insight Segmentation and Registration Toolkit (ITK), is an open-source, cross-platform library for multidimensional image analysis. On behalf of the Insight Toolkit community, we are proud to announce that ITK 4.13.0 has been released!

Links to the tarballs can be found on the download page:


  1. Introduction
  2. New Features
  3. ITK Changelog
  4. ITK Sphinx Examples Changelog
  5. ITK Software Guide Changelog


Developed by an international community, ITK collects best-of-breed algorithms for registering, segmenting, analyzing, and quantifying n-dimensional imaging data. The high-quality library facilitates reproducible research, provides a software resource for teaching image analysis, and offers a platform for commercial product development.

Here are a few selected highlights for this release:

  • ITK is on PyPI: install ITK's Python wrapping with: pip install itk
  • IsotropicWavelets remote module: isotropic and steerable wavelets in the frequency domain
  • Improvement of the Image IO, including full 64 bit pixel support
  • ITK Python interface improvements: use ITK in a procedural way
  • Improved image and transform IO factory registration
  • ITK's thread pool refactored for improved performance
  • Improved ITK test driver to compare images spacing, origin, size and direction

This release brings multiple exciting new developments for ITK's Python wrapping.

Binary Python Packages
Binary Python wheels are available for Linux, macOS, and Windows, for Python 2.7 and the recent Python 3.X. The wheels have been published on PyPI, the Python package index. These binary wheels are built to be compatible with Python distributions from, system package managers like apt and Homebrew, and Anaconda. (official announcement here). This means that it has never been easier to install and start using ITK: one simple pip install itk command, and a few seconds later it is possible to start interactively processing images.

External Module Python Packages
Furthermore, Python packages for externally developed ITK modules can now be automatically generated and uploaded to PyPI. The module Python package is created by free GitHub continuous integration services. Like the main ITK packages, these packages embed documentation from Doxygen comments into Python docstrings. See for details on how to get started. A number of novel ITK module Python packages have already been created this way, including

  • itk-bonemorphometry
  • itk-polartransform
  • itk-texturefeatures
  • itk-anisotropicdiffusionlbr
  • itk-ultrasound
  • itk-morphologicalcontourinterpolation
  • itk-cuberille
  • itk-ringartifact

IsotropicWavelets Remote Module
A Python package is available for a powerful new remote module, IsotropicWavelets. This module implements a multiresolution (MRA) analysis framework using isotropic and steerable wavelets in the frequency domain. This framework provides the backbone for state of the art filters for denoising, feature detection or phase analysis in N-dimensions. Since it is wrapped in Python, it is as easy to use as ITK: Install the module with pip install itk-isotropicwavelets. Write a Python script or start an interactive Python environment, and call import itk. All the functionality of IsotropicWavelets will be available.

Procedural Filter Interface for Rapid Prototyping
ITK v4.13.0 also incorporates an API improvement throughout the entire toolkit to facilitate rapid prototyping: ITK Python filters are now callables, so ITK can be used in a procedural way. It is possible to run filters without the need to declare a filter object first, and without the need to explicitly call ‘Update()’ on a pipeline.

itk.imwrite(itk.MedianImageFilter(itk.imread(‘my_image.png’), Radius=4), ‘my_output.png’)

This one-liner will read an image, filter it with the MedianImageFilter with a radius of 4 voxels, and save the result in a different file.

Image IO Improvement, including Full 64 bit Pixel Support
Several improvements have been made in the Image IO in this major release: 64 bit images are now consistently supported by all Image IOs. Additionally, MINC image IO is now enabled by default, Bruker IO improved and enabled by default, and DICOM support via DCMTK was greatly improved (and supported on MS Windows). See below “Improved Factory Registration” for the last improvement of Image IO in this release.

GoogleTest for Writing Tests
An ITK module can be tested with GoogleTest library, using the CMake funtion CreateGoogleTestDriver(), in addition to the classic ITKTestDriver. This function will add the GTest dependency to your test. GoogleTest makes it easy to write a lot of different tests to verify that your code works. Examples of tests using this framework can be found in ITK in Modules/Filtering/ImageGrid/test/itkSliceImageFilterTest.cxx, /Modules/Filtering/ImageIntensity/test/itkArithmeticOpsFunctorsTest.cxx, and several other files.

Improved Factory Registration
Each module (including remote modules) can list the factories and formats they support. This information is used to automatically register all formats supported by modules loaded during configuration. When loading ITK with the CMake command find_package() and loading a limited number of ITK components, it is now possible to load all modules corresponding to a factory, e.g. ImageIO, TransformIO. To load all components of a factory, add the component ITK<factory> in the list of requested components. Here is an example that finds ITK with the ITKCommon module and all the available image and transform IO modules:


ITK's Thread Pool Refactored for Improved Performance
ITK's thread pool has been refactored for improved performance. To test the thread pool, set the environment variable:


Or, call the static method


at the start of your application. The thread pool is still experimental, and its implementation and interface will be improved and modified in the near future.

Improved ITK test driver to compare images spacing, origin, size and direction
In part to support improved testing and support for DICOM image metadata, the ITK test driver now checks image spacing, origin, and direction when making baseline image comparisons. If your project uses the ITK test driver, new image baselines with correct metadata information may be required. Alternatively, pass the --ignoreInputInformation flag to the test driver.

Congratulations to the 26 contributors to this release. We would especially like to recognize the new contributors: Laura Pascal, Beatriz Paniagua, Rene-Paul Debroize, Edwin Bennink, David Kügler, Adrien Bailly, and Steve Pieper.

The next feature release, scheduled for June 2018, will be ITK 5.0. This release will introduce thread pools by default with an optional Intel Threading Building Blocks (TBB) backend, require C++11 compiler support, and require a newer version of CMake.

New Features

  • Wrapping Improvements
    • Binary Python packages are now available for Linux, macOS, and Windows. Install with:
          pip install --upgrade pip
          pip install itk
  • ITK modules developed on GitHub can generate their own Python package with freely available continuous integration services.
    • Example module Python packages now pip installable from PyPI: itk-bonemorphometry, itk-polartransform, itk-texturefeatures, itk-anisotropicdiffusionlbr, itk-ultrasound, itk-morphologicalcontourinterpolation, itk-cuberille, itk-isotropicwavelets, itk-ringartifact
  • Add wrapping for several classes: MultiResolutionIterationEvent, RegionOfInterestFilter for VectorImage's, FloatingPointExceptions, CorrelationMetricv4, DemonsMetricv4, JointHistogramMIMetricv4, ITKIOMesh.
  • Enable __call__() function in Python for itkTemplate objects to make ITK more Pythonic. A developer can run instantiate, run a filter, and get the output, in one single command.
  • Python docstrings are generated from the C++ doxygen documentation and directly integrated in the Python modules.
  • The unsigned short pixel type is now supported in ITK Python packages.
  • Bruker IO wrapping
  • New Remote Modules

  • Core Improvements

    • GoogleTest available for testing in ITK
    • Support VCPKG, Microsoft's vcpkg C++ package management system for Visual Studio
    • Refactor ITK's ThreadPool implementation for performance
    • Addition of type long long and unsigned long long for images
    • Add options to itkTestDriver and itkTestingComparisonImageFilter to compare image size, origin, spacing, and direction
    • Add itk_module_examples() macro to simplify the creation of independent examples in remote modules
    • Improve factory registration mechanism (see highlighted features)
    • ITK Python modules now share the list of factories that are registered
    • Automatic enabling of the -fPIC flag for external modules
    • Detect the presence of feenableexcept to compile on Alpine Linux
    • Update GDCM import script for changes in upstream content
    • CMake minimum required version is now 2.8.12
  • Filtering Improvements

    • Improve Not functor and filter to follow other logic functors
    • Separate functors from filters in header by operator groups
    • Move rank filters out of review
    • Explicitly warn and deprecate negative pixel spacing
    • Add SliceImageFilter
    • Move advance Demons registration filters out of review
    • Add ShapeLabelObject::GetRegion method
    • Many improvements in HoughTransform2DCirclesImageFilter
  • IO Improvements

    • Enable MINC IO by default
    • PNG IO was crashing instead of returning false when it couldn’t read image
    • Several DCMTK improvements: build DMCTK on Windows, replace ICONV with ICU in DCMTK dependencies, support color images (RGB/RGBA)
    • Use double floating point API for MetaImage: the text representation is now closer to the
      DICOM Image Orientation (Patient) or Image Position (Patient) attribute and will allow easier conversion from one representation to the other.
    • Fixed <nifti1_io.h> leak into user code
    • Updated the Bruker2DSeq reader to ParaVision 6.0
    • ITKIOBruker is now its own module, migrated out of ITKReview
  • Documentation Improvements

    • Improvement of documentation Markdown files throughout the repository
    • Update old file headers/copyright notices.
    • Improve source code coding style
    • Enable offline Doxygen support
    • Expose RayCastInterpolateImageFunction members in Doxygen
    • Updated documentation for LabelStatisticsImageFilter::GetBoundingBox.
    • Document behaviors of ChangeLabelLabelMapFilter
    • New content in the ITK Software Guide on
      • Cross compilation
      • An entire new Coding Style Guide section
      • Python usage
      • Build configuration
  • Remote Module Updates

    • AnisotropicDiffusionLBR (08.31.2017)
    • Update MorphologicalContourInterpolation (09.22.2017)
  • Third Party Library Updates

    • Update pygccxml version (v1.9.0)
    • Update libPNG to track upstream libpng16 branch
    • Update version of DCMTK to 3.6.1_20170529
    • Update CastXML to support GCC 7 (11.06.2017)
    • Update MetaIO (12.04.2017)
    • Adding libLBFGS third party library
    • Update MINC (09.14.2017)
    • Update VNL (10.05.2017)
  • Lots of important bug fixes

  • And much more! See details in the log below.

Changes from v4.12.0 to v4.13.0

Adrien Bailly (1) @adrien.bailly :
ENH: add wrapping for MultiResolutionIterationEvent and other missing event

Beatriz Paniagua (2) @bpaniagua :
ENH: Updating pygccxml version
ENH: Updating libPNG to track upstream libpng16 branch

Brad King (2) @brad.king :
ENH: Port GDCM update script to update-third-party.bash
ENH: Update GDCM import script for changes in upstream content

Bradley Lowekamp (93) @blowekamp :
DOC: fix spelling transfrom->transform
ENH: Improve Not functor and filter to follow other logic functors
ENH: Separate functors from filters in header by operator groups
DOC: Fix spelling mistakes from SimpleITK JSON, from spellintian
ENH: making available GoogleTest for testing in ITK
COMP: Address missing ITK_TEMPLATE_EXPORT definition
COMP: Use single line for string argument, by-pass multi-line issues
COMP: Revert to CMake 2 compatible line comment
ENH: Move rank filters out of review
BUG: Use const for pipeline inputs and state functions
ENH: Explicitly warn and deprecate negative pixel spacing.
BUG: Modify google test to define _VARIADIC_MAX=10
COMP: Fix using system GoogleTest with a compiled system library
ENH: Add SliceImageFilter
COMP: Use itk::Math::abs over vnl_math_abs
ENH: Add GetProbe method to collectors base.
BUG: Add missing exports for GTest::* targets
BUG: Fix computation of central moments for shape label map
ENH: Adding operator functors from SimpleITK
ENH: Choose efficient central moment computation for run
BUG: Add missing OrientedBoundingBox option
DOC: recommend using separate instances
BUG: Manually set seed for ParticleSwarmOptimzerTest
BUG: Fix computation of oriented bounding box
BUG: shape label object elongation incorrectly zero
ENH: Add GTest utilities for ITK
ENH: adding explicit testing of computed label shape attributes
BUG: Propagate make program to KWStyle ExternalProject
BUG: Error only when unknown module is enabled.
DOC: Document behaviors of ChangeLabelLabelMapFilter
BUG: Document and assert improper usage of transform methods.
COMP: Enable hidden visibility property with GoogleTest static libraries
DOC: Doxygen namespace tag must be full namespace
BUG: Fix computation for Jacobian local vector
BUG: Cast to PrintType for MaskLabel variable printing
ENH: Update FixedPointInverseDisplacementField remote module
BUG: Error only when unknown module is enabled.
BUG: Fix computation of central moments for shape label map
BUG: shape label object elongation incorrectly zero
BUG: Fix computation of oriented bounding box
BUG: Add missing OrientedBoundingBox option
ENH: Update FixedPointInverseDisplacementField remote module
ENH: Only remove hidden visibility for C file with CMake<3
BUG: Print missing Seeds parameter and values used for Upper/Lower
ENH: Remove unneeded m_Upper and m_Lower ivars
ENH: Prefer raw pointers for pipelined owned objects
ENH: Update to use CircleCI 2.0
ENH: Enable MINC IO by default
ENH: Move advance Demons registration filters out of review
BUG: Fix CircleCI command to upload test results
ENH: Test SliceBySlice with non-zero index
BUG: Use same origin for internal image as input image
BUG: Remove duplicate code from local commit
COMP: Remove MINC library level exports
ENH: Add ProcessObject::AddOptionalInputName and more named inputs
ENH: Make more use of AddOptionalInputName
BUG: Use input macros for const correct pipeline inputs
ENH: Remove input name when renamed and add tests
BUG: Correct OBB names in GetAttributeFromName
ENH: Add ShapeLabelObject::GetRegion method
ENH: Hide MINC data in MINCIImageIO interface
BUG: Remove newly added warning in ProcessObject AddRequiredInput
BUG: Apply constant function specifier
BUG: Fix marking of required inputs for GPU PDE registration
BUG: Add missing getter method for PDE InitialDisplacementField
ENH: Use Input macros for set/get GPU PDE inputs
ENH: Move private GE format headers to src
ENH: CircleCI use ccache and cache external data
ENH: Extract reusable code into a copy image information functor
ENH: Change Cast parent class to InPlaceImageFilter
BUG: Add search paths for GoogleTest as source code on system
BUG: Update BinaryImageToLabelMapFilter::m_NumberOfLabels
COMP: Remove shadowing typedef
ENH: Updating remote module TextureFeatures to 3.0.0
COMP: Use integer suffix for long long types
BUG: Disable checking of OBB origin
PERF: Use initialized global variable for default number of threads
ENH: Add remote mote SimpleITKFilters
ENH: Add type for MultiThreader used by the ProcessObject
BUG: Don't use void pointer
BUG: Fix LBFGS2 iteration count and iterface
BUG: Use AutoPtr for initialization based resource acquisition
BUG: Fix factory registration during static initialization
BUG: Fix const correctness of GetDisplacementField, use named input
STYLE: Use LineSearch conventions
BUG: Relax timeout to 60 seconds for itkSimpleFastMutexLockTest
COMP: Mark itkTimeVaryingBSplineVelocityFieldImageRegistrationTest long
COMP: Address linking error using operator<<
COMP: Must define target before adding compile definitions
COMP: Issue a CMake warning if ITKV3_COMPATIBILITY
COMP: Enable CMP0063, support setting visibility properties
COMP: Enable CMP0063, support setting visibility properties
COMP: Enable CMP0063, support setting visibility properties

David Kügler (1) @david.kuegler :
BUG: better support for OBJ mesh format

Dženan Zukić (21) @dzenanz :
ENH: adding an example and improving tests
ENH: support VCPKG
ENH: rewriting ThreadPool and enabling it by default
ENH: docs and compiler fix for ThreadPool, improvements of itkBarrierTest
ENH: turning off thread pool by default for now
STYLE: minor fix in debug mode and clearer code intent by using macros
STYLE: warn users of the DeformableSimplexMesh3DFilter's limitations
ENH: Addition of type long long and unsigned long long for images
STYLE: VTK Mesh IO code simplification
COMP: fixing warnings
BUG: a call to SetGlobalDefaultNumberOfThreads was not respected
BUG: LONGLONG was not handled by DCMTKImageIO
BUG: PNG IO: return false instead of crashing in CanReadFile
COMP: fix a warning
BUG: ThreadPool hangs on Windows when ITK is compiled as DLLs
BUG: tests writing to the same file randomly fail during parallel invocation
COMP: fixing 2 compile errors on some compilers
ENH: adding JSON format report to resource probe
BUG: NIFTI crashing when requested region is set
BUG: colliding file names caused spurious test failures
BUG: fix two rename mistakes introduced in previous patch

Edwin Bennink (1) @ebennink :
BUG: Fixed cylinder bbox, fixed and enhanced IsInside func

Floris Berendsen (2):
COMP: add symbol name mangling for niftilib in ITK
COMP: add symbol name mangling for niftilib in ITK

Francois Budin (54) @fbudin :
ENH: Bump ITK version to 4.13.0.
BUG: Update external data content links
ENH: Add cleanup option to content synchronization script
Revert "Merge branch 'feenableexcept-musl-for-release' into release"
Merge branch 'upstream-metaio' into update_metaIO
ENH: Bump CMakeLists.txt version to 4.12.1.
COMP: Remove -fvisibility-inlines-hidden warning with CMake 2.8.12
BUG: Remove VNL view from array functions and rename wrong variable
BUG: itkSimilarity2DTransform was not reporting singular matrices
ENH: Add test to verify ITK-3553 fixes
BUG: itkTestingComparisonImageFilter should derive from itkImageToImageFilter
BUG: Update tests to use ImageToImage compare image filter
ENH: Add options to itkTestDriver and itkTestingComparisonImageFilter
ENH: Adds MINC image IO wrapping
ENH: Replace ICONV with ICU to compile DCMTK
DOC: Document that workaround MSVC 2017 optimization bug has been corrected
BUG: sha512 file must exist before complaining that it hasn't been updated
BUG: Missing files for DCMTK ImageOrientation test
BUG: itkgdcmopenjp2 was not exported in the build tree in GDCM
BUG: Duplicate SetInput()/GetInput() in itkTestingComparisonImageFilter
BUG: ICU_ARGS CMake variable should be declared CACHE
BUG: Typo in CMake variable name
BUG: Build DMCTK on Windows
BUG: Support color images (RGB/RGBA) with DCMTK
ENH: Add test for colored images loaded with DCMTK
BUG: ICU is always compiled statically
ENH: Update DCMTK build instructions for Windows
ENH: Adds itk_module_examples() macro
COMP: Bump CMake required version to 2.8.12
ENH: Simplify itk-module-init.cmake for DCMTK
BUG: Inconsistent image information between result and baseline
BUG: Python docstrings were not generated anymore
ENH: Add call() function in Python itkTemplate objects
BUG: DMCTK configuration with ICU on Windows was only correct for VS2017
BUG: Remove man page generation that is not necessary anymore
ENH: Improving factory registration
ENH: Adding factory components
ENH: Update remote modules using FACTORY_NAMES
BUG: Add previously removed function getattr() in
BUG: Synchronize factories across modules in Python
ENH: Allow RAW itk-module as shared library
BUG: ITK_WRAP_DOC should not be saved in ITKConfig.cmake
BUG: Remove unicode characters that stop python docstring generation
BUG: failed with Python3
BUG: Allow compilation of VNL with MSVC<1600
BUG: \default is not a doxygen keyword
BUG: Better control of GDCM symbols with CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
ENH: github comparison instead of shortlog in
BUG: DCMTK CMakeLists.txt detects MSVC versions in [1910,1919] as MSVC2017
BUG: itkObjectFactoryBase was making ITK initialization crash
BUG: itkSpatialObject.cxx was not respecting ITK_FUTURE_LEGACY_REMOVE
BUG: Create IO Meta modules at module loading time

GCC-XML Upstream (1):
ENH: pygccxml v1.9.0 (reduced)

GDCM Upstream (4):
GDCM 2017-09-15 (87e3c363)
GDCM 2017-10-13 (46919364)
GDCM 2017-11-09 (af81d444)
GDCM 2017-11-23 (4c51c343)

Google double-conversion Maintainers (1):
ENH: Google double-conversion (reduced)

GoogleTest Upstream (2):
googletest 2016-07-14 (a3ac2d7f)
GoogleTest 2017-12-11 (0fe96607)

Hans Johnson (7) @hjmjohnson :
BUG: vnl_fft_1d lacks sufficient numerical stability
COMP: Clang compiler regression
ENH: Synchronized with cmake version of file
COMP: Missing ITK_OVERRIDE for BinaryPruningIMageFilter
BUG: Fix non-windows cmake configuration regression
COMP: Fix VariationalRegistration for future const GetMacro support

Jean-Baptiste VIMORT (2) @jbvimort :
ENH: Automatic enabling of the -fPIC flag for external modules
ENH: Supression of GDCM's linking to CoreFoundation

Jean-Christophe Fillion-Robin (6) @jcfr :
ENH: Support installing each module python wrapping independently
COMP: Update KWsys to set MACOSX_RPATH property based on CMAKE_MACOSX_RPATH
COMP: Update MINC to set MACOSX_RPATH property based on CMAKE_MACOSX_RPATH
COMP: ITKModuleExternal: Reset targets file
BUG: Fix hook clone
COMP: UseITK: Fix configure error due to different subproject requirements

Jon Haitz Legarreta Gorroño (37) @jhlegarreta :
ENH: Improve coverage for v3 compatibility image arithm filters.
DOC: Fix typo in 'exception'.
STYLE: Improve the itk::FastMarchingImageFilterBase class style.
STYLE: Improve itkApproximageSignedDistanceMapImageFilterTest style.
ENH: Check for input/output objects with an assertion.
BUG: Fix const casting compiler errors.
DOC: Update old file headers/copyright notices.
STYLE: Improve the itkSmoothingRecursiveGaussiaImageFilter style.
ENH: Improve coverage for itkSmoothingRecursiveGaussianImageFilter.
BUG: Fix links to NOTICE and LICENSE files in
STYLE: Conform (partially) to ITK coding style.
DOC: Add missing links to Markdown file cross-refs.
ENH: Add a Pull Request template.
DOC: Remove extension to Markdown cross-ref link text.
STYLE: Change SubtractConstantFromImageFilterTest name.
BUG: Add missing input image iterator declaration.
BUG: Fix Superclass names in V3Compatibility tests.
DOC: Fix wrong comments in V3Compatibility tests.
DOC: Correct the preferred class names in ITKv4.
COMP: Fix valgrind-detected uninitialized members.
ENH: Improve coverage for itkWarpHarmonicEnergyCalculator.
ENH: Bump lastest version of remote repository.
ENH: Display error message in Iterator classes' wrapping.
DOC: Add links to NOTICE and LICENSE files in README.
DOC: Rework the contributing files.
DOC: Document how to upload binary data in a Markdown file.
DOC: Transition ThirdParty top-level README files to Markdown.
DOC: Add third party project updating documentation markdown file.
DOC: Document the release process in a Markdown file.
DOC: Transition Utilities/Maintenance/README Markdown.
DOC: Remove Documentation/Style.pdf file.
DOC: Redirect the "Submit a patch" link to
DOC: Mention the ITK full name in
DOC: Fix broken links and oversights in
DOC: Add a resource to Documentation.
DOC: Make the ITK long name be consistent in .md files.
DOC: Create

KWSys Upstream (1):
KWSys 2017-10-17 (fc4d55ba)

Laura Pascal (2):
ENH: Update version of DCMTK to 3.6.1_20170529
ENH: Update the DoubleConversion library upstream update script.

Mathieu Malaterre (4) @mathieu.malaterre :
ENH: Explicit set the precision when printing double
ENH: Use double floating point API for MetaImage
ENH: Define a global default double precision for MetaImage
ENH: Enforce data truncation for legacy tests

Matthew McCormick (52) @matt.mccormick :
ENH: Add install rules for External Module Python package
COMP: Do not wrap std::_Deque_alloc
ENH: Wrap RegionOfInterestFilter for VectorImage's
COMP: Disable CoreFoundation calls
ENH: Execute the merge when updating third party subtrees
ENH: Allow custom repo and branch for MetaIO subtree updates
COMP: Specify AR to PCRE build on macOS
BUG: Mark GoogleTest CMake options as advanced
COMP: Address LBFGS2Optimizerv4 doxygen warnings
BUG: ITKIOGE has a public dependency on ITKIOIPL
COMP: Bump KWStyle to latest master
ENH: Add TextureFeatures remote module
COMP: Detect the presence of mallinfo
COMP: IsNull() capitalization in LevelSetEquationAdvectionTerm
ENH: Wrap FloatingPointExceptions
COMP: Fail early when byteswap functions are not available
COMP: Detect the presence of feenableexcept
BUG: Use itkGetConstObjectMacro for LogBiasFieldControlPointLattice
COMP: Detect the presence of feenableexcept
COMP: Fix AnisotropicDiffusionLBR example build
BUG: Correct GPUMeanImageFilter Superclass
BUG: Remove debug code from GPUMeanImageFilter
BUG: Do not use static_cast, SmartPointer in GPUImage::GetGPUDataManager
BUG: Remove debug code in itkGPUImage.hxx
COMP: Do not call in ITKIOBruker
ENH: Bump CMakeLists.txt version to 4.12.1
DOC: Format the README in markdown syntax
DOC: Enable offline Doxygen support
BUG: Update Bruker IO wrapping after migration from ITKReview
COMP: Update MorphologicalContourInterpolation to 2017-09-22
DOC: Do not pre-cache Doxygen php files
DOC: Expose RayCastInterpolateImageFunction members in Doxygen
BUG: RayCastInterpolateImageFunciton physical space issues
COMP: Overloaded - operator ambiguous in RayCastInterpolateImageFunction
BUG: Add missing template export for GradientAnisotropicDiffusionImageFilter
ENH: Wrap {Correlation,Demons,JointHistogramMI} Metricv4
ENH: Add Python wrapping for ITKIOMesh
BUG: Hide HDF5 CMake options from main configuration
BUG: Add DCMTK external project dependency after ExternalProject_Add
COMP: Bump CastXML to 2017-11-06 master
BUG: Fix hooks clone when ITK is a submodule
BUG: Remove duplicate entries of ITK_WRAP_PYTHON_LIBRARY_IMPORTS
DOC: Remove broken HoughTransform2DCircles wiki examples link
DOC: NeighborhoodIterator documentation formatting improvements
COMP: Do not use export macro in vnl_amoeba default_verbose
COMP: HoughTransform2DCirclesImageFilter lines too long for Software Guide
COMP: Do not wrap itk::ObjectFactoryBasePrivate
DOC: Update Python package release process

MetaIO Maintainers (5):
MetaIO 2017-07-20 (92caf34d)
MetaIO 2017-08-17 (3e1cb552)
MetaIO 2017-10-04 (55395e3d)
MetaIO 2017-08-31 (5f935e1b)
MetaIO 2017-12-04 (02a2e22e)

Niels Dekker (23) @Niels_Dekker :
COMP: Fixed <nifti1_io.h> leak into user code
STYLE: Replaced NiftiImageHolder by AutoPointer
COMP: Fixed "gifti_io.h" leak into user code
COMP: Fixed "Ge5xHdr.h" leak into user code
PERF: Break out of loop as soon as requested number of circles is found
STYLE: Removed useless (or obsolete) local bool, 'found'.
PERF: Avoid redundant search in GetCircles(n)
PERF: GetCircles now calls Graft, instead of copying pixels from GetOutput(0)
DOC: Added comment that the grafted output image should not be modified.
STYLE: Removed HoughTransform GetCircles parameter (n) which appears obsolete
ENH: Added deprecated GetCircles(unsigned int) overload to HoughTransform
COMP: Replaced deprecated GetCircles(n) call in HoughTransform example
BUG: HoughTransform CirclesList should be empty when NumberOfCircles is zero
ENH: Tested HoughTransform CirclesList is empty when NumberOfCircles is zero
BUG: HoughTransform GetCircles() should avoid circles with accumulator <= 0
STYLE: Removed HoughTransform GetLines parameter (n), which appears obsolete
ENH: Improved HoughTransform2DCirclesImageFilter accuracy, using Math::Round
BUG: HoughTransform GetLines() returned too many lines
PERF: Improved speed of HoughTransform2DCirclesImageFilter::GenerateData()
STYLE: HoughTransform calling convenience overload of SetVariance
DOC: Mentioned that HoughTransform2DCirclesImageFilter also finds discs
ENH: Allow different types accumulator and radius image Hough Circles filter
BUG: Access violation itkGaussianDerivativeOperatorTest argv[0]

Pablo Hernandez-Cerdan (4) @phcerdan :
ENH: Add External Module IsotropicWavelets.
ENH: Update ExternalModule IsotropicWavelets to v0.4
ENH: Update IsotropicWavelets

Rene-Paul Debroize (1):
ENH: Add remote module TBBImageToImageFilter

Samuel Gerber (2):
ENH: Adding libLBFGS third party library
BUG: stdint.h missing on Visual Studio 9

Sean McBride (17) @seanm :
COMP: Added missing ITK_OVERRIDE
COMP: fixed compilation error with int vs nullptr_t
PERF: Fixed some comments; prefer preincrement
COMP: add itk prefix to gdcmopenjp2 library name
COMP: Fixed some -Winconsistent-missing-override warnings
COMP: Added ITK_OVERRIDE to hundreds of destructor declarations.
COMP: Made ITK_OVERRIDE work only in MSVC >= 2012 (instead of 2010)
COMP: Fixed Wshadow warnings by removing shadows
COMP: Added a bunch more missing ITK_OVERRIDE
COMP: suppress all compilers warnings from third party google test
COMP: Added yet more ITK_OVERRIDEs, mostly on destructors
COMP: Added yet more ITK_OVERRIDEs
COMP: Fixed various -Wconst-qual warnings
COMP: Fixed some Wcast-qual warnings
COMP: Removed superfluous declarations in subclass, fixing override warnings
COMP: Silence -Wunused-template warnings by making affected methods inline

Simon Rit (1) @simon.rit :
COMP: remove dynamic exception specifications

Steve Pieper (1) @pieper :
BUG: ITK-3553 fixes ImageOrientation issue in DCMTK reader

Tobias Wood (3) @spinicist :
ENH: Updated the Bruker2DSeq reader to ParaVision 6.0
BUG: Bruker2dseq was not registered correctly due to module name change.
BUG: Fixed origin & orientation issues.

VXL Maintainers (2):
VNL 2017-10-05 (dd7794d9)
VNL 2017-12-08 (a1573ca8)

Vladimir S. FONOV (2):
MINC 2017-09-14 (e11c6df9)
MINC 2017-10-18 (f2d06a67)

Ziv Yaniv (2) @zivy :
DOC: Updated documentation for LabelStatisticsImageFilter::GetBoundingBox.
BUG: itkVTKImageIO::CanWriteFile accepted files with wrong extension.

ITK Sphinx Examples Changelog

Bradley Lowekamp (1) @blowekamp :
Add python syntax highlighting

Dženan Zukić (1) @dzenanz :
COMP: allow examples to build when ITK_LEGACY_REMOVE is enabled

Francois Budin (1) @fbudin :
ENH: Bump ITK version to 4.13.0

Jon Haitz Legarreta Gorroño (6) @jhlegarreta :
ENH: Add WatershedImageFilter example.
ENH: Improve layout and doc for adaptive histogram equalization example.
ENH: Update the ToDo list of examples to import from Wiki.
ENH: Add an example for itk::AdaptiveHistogramEqualizationImageFilter.
BUG: Fix the example images not being rendered.
DOC: Improve the README.rst code syntax.

Matt McCormick (2) @matt.mccormick :
DOC: Update documentation to install PyPI package
STYLE: Make Python code in src/ flake8 compliant

ITK Software Guide Changelog

Francois Budin (1) @fbudin :
ENH: Add patch number to ITK version in Software guide

Jon Haitz Legarreta Gorroño (21) @jhlegarreta :
ENH: Make class and brief dcostring keywords' start columns consistent.
DOC: Update the ITK logo to the new ITK logo.
DOC: Fix script location in
DOC: Fix use of \center vs. \centering in figures.
DOC: Update to the official name of Apple OS systems.
DOC: Remove redundant greater-than sign in path.
DOC: Keep ITK CMake minimum required version consistency.
DOC: Update the Advanced Module Configuration CMake options.
DOC: Update Figures 2.2 and 2.3 in Advanced Module Configuration.
DOC: Update supported compilers' list.
DOC: Transition SoftwareGuide/Cover and Latex READMEs to Markdown
DOC: Fix ITK long name case mismatch.
DOC: Fix Coding Style Guide formatting issues.
DOC: Add Documentation Style section.
DOC: Add a CMake Style item to the Overview section.
DOC: Mention the ITK full name in common abstract.
DOC: Add a cross compilation section to Configuring and Building ch.
DOC: Add content to empty example in Variable Initialization
DOC: Use tilde to connect names and references.
DOC: Enhance the syntax.
DOC: Add a test layout subsection.

Matt McCormick (17) @matt.mccormick :
DOC: Correct Coding Style Guide doxygen links
ENH: Enable specification of ITK_GIT_TAG in the superbuild
COMP: Use the xcolor package instead of color
ENH: Split Running and Parsing examples into an ExternalProject
ENH: Improve EPS conversion operation output
ENH: Add support for Ninja job pools
COMP: Address undefined colorlet command
COMP: Undefined toprule command
COMP: Undefined control sequence cellcolor
COMP: Undefined table configuration
BUG: Do not add_subdirectory(Examples) for ITKSoftwareGuide build
BUG: Do not depend on Examples generated .tex sources
BUG: Update ITK version to 2017-12-15 master
ENH: Add CircleCI configuration
ENH: Propagate CMAKE_{C,CXX}_COMPILER_LAUNCHER in superbuild
ENH: Bump ITK version to 4.13.0

Dec 14, 2017
ITK 4.13-rc02
Dec 4, 2017
ITK 4.13-rc01

@thewtex thewtex released this Sep 12, 2017 · 2575 commits to master since this release

Assets 8

On behalf of the Insight Segmentation and Registration Toolkit (ITK) Community, we are happy to announce the release of ITK 4.12.2! ITK is an open-source, cross-platform library for multidimensional image analysis.

Release files can be downloaded from

This is a patch release that fixes critical issues, regressions, documentation, and compiler support. This release includes better compatibility when building an application that includes additional NIFTI libraries and also fixes for GPGPU build support. Contributions from the 3D Slicer community improve packaging on macOS.

The release also includes an update to the ITK Software Guide that includes the coding style guide among other updates and additions.

The next feature release, 4.13.0, is scheduled for mid-December.

Enjoy ITK!

ITK changes from v4.12.1 to v4.12.2:

Edwin Bennink (1):
     BUG: Fixed cylinder bbox, fixed and enhanced IsInside func

Floris Berendsen (1):
     COMP: add symbol name mangling for niftilib in ITK

Jean-Christophe Fillion-Robin (2):
     COMP: Update MINC to set MACOSX_RPATH property based on CMAKE_MACOSX_RPATH
     COMP: Update KWsys to set MACOSX_RPATH property based on CMAKE_MACOSX_RPATH

Matthew McCormick (6):
     BUG: Correct GPUMeanImageFilter Superclass
     BUG: Remove debug code from GPUMeanImageFilter
     BUG: Do not use static_cast, SmartPointer in GPUImage::GetGPUDataManager
     BUG: Remove debug code in itkGPUImage.hxx
     COMP: Fix AnisotropicDiffusionLBR example build
     ENH: Bump CMakeLists.txt version to 4.12.2

Niels Dekker (1):
     COMP: Fixed <nifti1_io.h> leak into user code

ITK Software Guide changes:

Jon Haitz Legarreta Gorroño (8):
     DOC: Add and reference Coding Style appendix.
     DOC: Fix typo in Registration chapter files headers.
     STYLE: Replace tabs with white spaces.
     DOC: Fix typos in the SW guide LaTeX files.
     ENH: Add the link to the SW Guide PDF compilation version.
     DOC: Add missing wrap types to Wrapping section.
     STYLE: Rework the folder structure and rename files.
     ENH: Remove \ifitkFullVersion artifact switch.

Matt McCormick (2):
     DOC: Add instructions on how to install the stable Python packages
     ENH: Bump ITK ExternalProject version to 4.12.2