ITK 4.13 has been released!

itk-releases

(Francois Budin) #1

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 Sourceforge.net tarballs can be found on the download page:

http://www.itk.org/ITK/resources/software.html


Results of the phase analysis (with soft threshold) for different number of scales in the wavelet pyramid - ITKIsotropicWavelets (Credit: @phcerdan)

Outline

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

Introduction

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 Python.org, 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 https://blog.kitware.com/python-packages-for-itk-modules 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:

find_package(ITK COMPONENTS ITKCommon ITKImageIO ITKTransformIO REQUIRED)

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:

ITK_USE_THREADPOOL=1

Or, call the static method

itk::MultiThreader::SetGlobalDefaultUseThreadPool(true);

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.
    • https://blog.kitware.com/python-packages-for-itk-modules
    • 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
BUG: Used ITK_HAVE_FEENABLEEXCEPT instead of ITK_HAS_FEENABLEEXCEPT
BUG: Used ITK_HAVE_FEENABLEEXCEPT instead of ITK_HAS_FEENABLEEXCEPT
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 itkTemplate.py
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: doxy2swig.py 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 UpdateThirdPartyFromUpstream.sh
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
BUG: Respect ITK_FUTURE_LEGACY_REMOVE
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 README.md.
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 CONTRIBUTING.md.
DOC: Mention the ITK full name in README.md.
DOC: Fix broken links and oversights in CONTRIBUTING.md.
DOC: Add a GitHelp.md resource to Documentation.
DOC: Make the ITK long name be consistent in .md files.
DOC: Create ISSUE_TEMPLATE.md

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: Use GDCM_HAVE_BYTESWAP_H
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: Use GDCM_HAVE_BYTESWAP_H
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 vector.data() in ITKIOBruker
ENH: Bump CMakeLists.txt version to 4.12.1
DOC: Format the README in markdown syntax
DOC: Enable offline Doxygen support
BUG: ITKIOMINC DEPENDS on ITKMINC
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
BUG: Reset LIST_OF_IMAGEIO_FORMATS in UseITK.cmake
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
COMP: Fix macro ITK_NOEXCEPT, deprecate ITK_NOEXCEPT_OR_THROW

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: Set GDCM_USE_COREFOUNDATION_LIBRARY off
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 ParseCxxExamples.py script location in README.md.
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 README.md 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
COMP: Remove ITKV3_COMPATIBILITY
ENH: Add CircleCI configuration
ENH: Propagate CMAKE_{C,CXX}_COMPILER_LAUNCHER in superbuild
ENH: Bump ITK version to 4.13.0


Factory Registration Managers