What’s New in Release 4.3.0


A summary of what is new in the 4.3.0 feature release.


The 4.3.0 release is a major milestone that marks the hard work on many outstanding community members.

We are excited to announce that experimental DICOM image reading is available via the DCMTK library as a backend in addition to the GDCM library.  By default, DCMTK ImageIO support is not enabled.  To try DCMTK ImageIO support, turn the CMake option Module_ITKIODCMTK ON.  For Unix platforms, the supporting DCMTK library will automatically be built as a CMake ExternalProject.  On Windows, the DCMTK library must be built independently of the ITK build system. Then, specify the location to the external build after setting the CMake option ITK_USE_SYSTEM_DCMTK ON.

WrapITK has undergone extensive improvements and bug fixes.  The status of WrapITK on various platforms can be found on the following Wiki page:

A number of registration-related feature enhancements were added.  The image registration methods have been updated to accommodate multiple image metrics within a single optimization scheme.  This permits, for example, registration of a T1/T2 fixed image pair with a T1/T2 moving image pair using a single metric for both T1 and T2 gradients or even using two different metrics.  New exponential transforms are available along with automated B-Spline transform scale estimation.  A new physics-based non-rigid registration class is also available.

Updated third-party library versions include: * NrrdIO from Teem 1.11, * libtiff 4.03, * FFTW 3.3.2

A large number of important bugs were crushed, including fixes to the ObjectFactoryBase, Patch-Based Denoising improvements, support for a system libtiff, mesh processing, and FFTW use.

Support for itk::VectorImage’s was added to many algorithms, and a single templated Adaptor class can now be applied without modification to both itk::VectorImage’s and itk::Image’s of itk::Vector’s, itk::RGBPixel’s, etc.

An extensive amount of code cruft was removed and coding style was made more consistent; ITK gets more stylish and classy with every release!

Performance optimizations were achieved by removing GetInput/GetOutput calls within filter inner loops, improving memory alignment, memory access pattern optimizations, and parallelization through threading.

NOTE:  As previously scheduled, Visual Studio 2005 will no longer be supported after this release.

List of commits

Changes since v4.2.0:

Andreas Schuh (1):
      DOC: Modify BSplineDeformableTransform comments.

Andriy Kot (1):
      ENH: Main filter for A2D2 PBNRR.

Arnaud Gelas (10):
      PERF: couple of performance improvements useful for mesh processing
      PERF: Minor performance improvement in KernelTransform
      BUG: Fix errors on MS Visual
      COMP: missing includes in itkVectorImageToImageMetricTraitsv4.h
      ENH: Add tests for iterator indices
      COMP: fix doxgen warnings
      COMP: fix warning about uninitialized value
      COMP: Fix compilation error (missing include).
      COMP: fix clang warning about unused parameter
      STYLE: Make CopyMeshToMesh a function just like the other Copy Container ones.

Baohua Wu (2):
      BUG: fixed a few bugs related to GPU Demons
      ENH: added suport for buffered region in GPU image

Bill Lorensen (11):
      COMP: Macro definition of None in X11 breaks enum
      BUG: ThirdParty should not depend on ITK
      ENH: Utility to find modules needed by an ITK app
      COMP: Incorrect test signature
      BUG: GDCMImageIO ignores ImagePositionPatient
      STYLE: Fix according to KWstyle
      BUG: DCMTKImageIOFactory has wrong class name
      COMP: Remove DCMTK from default modules
      COMP: add set methods for member variables where missing.
      BUG: Cannot read a 2 channel (gray, alpha) png file correctly
      COMP: Revert recent change to iterator that fails to compile

Brad King (11):
      MetaIO: Avoid NULL dereference in MetaOutput::GetUsername
      KWSys: Fix SystemInformation declaration order
      ENH: Allow ITK modules to export custom information
      ENH: ExternalData: Fix typo in unknown action error message
      COMP: Make module header tests depend on module libraries
      COMP: Make module header tests depend on module libraries
      STYLE: Replace write_file() with file(WRITE) and file(APPEND)
      STYLE: Replace make_directory() with file(MAKE_DIRECTORY)
      STYLE: Replace install_(files|programs|targets) with install command
      STYLE: Replace remove() with list(REMOVE_ITEM)
      STYLE: Remove unsed vxl source directory

Bradley Lowekamp (46):
      COMP: fixing error when instatiated with image of double
      PERF: remove per sample allocation, use per-thread structure
      BUG: prevent static initialization fiasco during factory registration
      PERF: Avoid memcpy call per component for Nift
      BUG: Correct for divide by zero when first bin has zero frequency
      PERF: add alignment data attribute to per-thread structure
      BUG: fix writing a corrupt meta image header from unknow metadata
      PERF: remove per sample allocation, use per-thread structure
      BUG: prevent static initialization fiasco during factory registration
      BUG: fix writing a corrupt meta image header from unknow metadata
      BUG: fix for overlay functor for llvm optimization bug
      ENH: adding support for VectorImage output in LabelMapCountorOverlay
      BUG: Fix segfault when no inital means were set.
      BUG: verify sigma is a positive number for Recursive Gaussian
      COMP: fix exception specification warning
      BUG: Restore automatic loading of factories in ITK_AUTOLOAD_PATH
      BUG: Avoid warning by using ProcessObject::GetInput method
      COMP: add missing functional header for logic ops tests
      BUG: The incorrect auto_load path was specified in itkIOPluginTest
      BUG: Use path to configure NrrdIO.h for installation
      PERF: Replacing iterator copy with optimized ImageAgotithm::Copy
      BUG: Prevent segfault when logger not set for PatchedBasedDenoising
      BUG: Update uncrustify configuration with space before access spec
      ENH: Enabling support for system lib versions prior to TIFF 4.0.0
      STYLE: Fixed numerous style error in PatchBased denoising
      BUG: Internal factory must use RegisterFactoryInternal method
      BUG: Fix Wrapping FFTWComplexToComplex
      ENH: updating to libtif 4.0.3
      BUG: Fix compilation ofswig external project
      BUG: Fix segfault from integer overflow in NIFTI reader
      BUG: disable wrapping of Toboggan filter for win 64
      ENH: adding support for VectorImage to JoinSeries filter
      ENH: support for VectorImage output to GradientRecursiveGaussian
      BUG: Correcting wrapping CMakeList.txt for DCMTK
      ENH: Improve MRCImageIO support for VectorImages
      COMP: Adding Valgrind suppression for NRRD IO on RH6
      ENH: Convert the Modulus filter to standard binary filter
      BUG: unset environmental default number of threads
      COMP: Adding valgrid suppression file for RHEL6
      BUG: Remove NiftiBigIO Test add MEMORY_SIZE test lock
      COMP: Fix WrapITK warning in DCMTK
      BUG: Append FFTW dirs to ITK's in ITKConfig
      COMP: Fix link error with visibility-inlines-hidden
      BUG: ShrinkImageFilter marked as modified in SetShrinkFactor
      BUG: Prevent modulus by zero is Modulus functor
      BUG: Enable the rehash method to re-register internal factories.

Brian Avants (2):
      COMP: The + operation was not registering on Win7-vc10-vce32rel
      BUG: InputImageDimension should be OutputImageDimension

Brian Helba (1):
      ENH: Update Remote/LesionSizingToolkit to newer commit

Cory Quammen (4):
      BUG: Added missing include
      BUG: Propagate the spacing and meta-data in FFTWForwardFFT fitler.
      BUG: Added locking around fftw_destroy_plan
      DOC: Modify PasteImageFilter comments.

David Doria (6):
      ENH: Add a SetRegion function to all ImageIterators.
      ENH: Add SetRegion function to NeighborhoodIterators.
      ENH: Allow the ShapedNeighborhoodIterators to use SetRegion.
      COMP: Replace stdlib.h with cstdlib.
      STYLE: Replace dash character in comment.
      STYLE: Replace C Library headers with c[headername]

Dirk Padfield (3):
      PERF: Faster distance computation and fixed reflective iterator bug
      BUG: Corrected bug in SignedDanielssonDistanceMap and added regression tests.
      ENH: Templated MaskedFFTNormalizedCorr. over MaskType (#ITK-2940)

Fotis Drakopoulos (1):
      BUG: Variance and structure tensor fix

Gang Song (2):
      ENH: Add sparse threader for ANTS CC metric
      COMP: Remove deque header from metric class header

Gordon Kindlmann (5):
      ENH: updating ITK's NrrdIO to reflect state of Teem's NrrdIO, take 4
      ENH: re-enabling warnings for NrrdIO
      ENH: warning about idxIn in reorder.c; no trailing whitespace
      ENH: still trying to quash warning about idxIn in reorder.c
      BUG: tracking changes (hopefully the last) in Teem prior to its 1.11 release

Hans Johnson (35):
      ENH: Bump version to 4.3.0
      BUG: Test harness gave false positives
      BUG: Remove duplicate file in wrong place
      ENH: Allow removal of all Deprecated code
      COMP: Remove unnecessary const_cast.
      STYLE: Remove all references to StartRegistation
      BUG: Array overrun in LaplacianRecursiveGaussian
      COMP: Revert use of itkLegacyMacro
      ENH: Improve testing of GetInverse
      PERF:  Const correct optimize initialization.
      COMP: Fix data type for consistency
      ENH: Imaging data should not be in git
      BUG: Missing DisplacementFieldTransform IO
      COMP: Fix warning for propogating success status
      BUG: Make IsTransformQueueEmpty const
      STYLE: Convert CMake-language commands lower case
      STYLE: Remove CMake-language block-end arguments
      BUG: Reading composite transform error
      ENH: Update compiler fixes for fftw external
      BUG: Test harness gave false positives
      BUG: Remove duplicate file in wrong place
      COMP: Remove unnecessary const_cast.
      COMP: Unused variable warning with FFTW options
      ENH: Test always uncondintionally returned true
      STYLE: Add more files that need to be ignored
      STYLE: Fix typo in comment.
      PERF: Avoid costly redundant computations.
      BUG: Removed too stringent ConceptChecking
      PERF: Remove unnecessary function GetImageDimension
      STYLE: Remove dead code ITK_TEMPLATE_EXPLICIT
      STYLE: Made use of .hxx guards consistent
      DOC: Update space before access specification
      BUG: Allow backwards compatibilty for ITK_TEMPLATE_TXX
      STYLE: Make round consistent in ITK.
      BUG: Incorrect syntax for Intel optimize pragma

Ho Cheung (4):
      COMP: Add "#include " to classes for VS2012
      PERF: Fix usage of ElementAt in PolyLineParametricPath to use const version
      BUG: Make LaplRecurGauss filter set the number of threads on the subfilters
      COMP: Fix regression of name mangling for libtiff

ITK Migration V4 (3):
      DOC: Modify ComposeImageFilter comments.
      DOC: Modify VectorIndexSelectionCastImageFilter comments.
      DOC: Modify AnisotropicDiffusionFunction comments.

Jean-Christophe Fillion-Robin (2):
      BUG: Prevent MetaIO vessel tube from getting stuck in while loop
      BUG: Add test for MetaIO vessel tube from getting stuck in while loop

Jeffrey Duda (1):
      ENH: Updates for multivariate metrics

Kent Williams (18):
      PERF: Pull expensive GetInput/GetOutput calls out of inner loops
      COMP: propogate compiler selection & flags to FFTW build
      STYLE: Remove superfluous static_cast
      PERF: Pull expensive GetInput/GetOutput calls out of inner loops
      STYLE: Refine usage of static_cast
      BUG: B.Lowenkamp's changes to detect empty fields in Meta files
      BUG: isblank is missing on Microsoft Visual Studio.
      COMP: propogate compiler selection & flags to FFTW build
      BUG: Added test to verify metadata gets copied on file write w/Nrrd
      BUG: Add regression test to try very long filename w/MetaIO
      ENH: Allow change of tolerance in ImageToImageFilter
      DOC: Document spacing/direction tolerance access methods.
      BUG: Orientation vector in FiniteCylinderFunction
      PERF: hoist computation of norm outside Evaluate method.
      ENH: Add DCMTKImageIO to ITK
      BUG: Origin was lost reading HDF5 format images.
      COMP: add new gdcm test for SeriesReader + MetaDataDictionary
      COMP: add set methods for member variables where missing.

Kris Zygmunt (5):
      PERF: Optimize patch-based denoiser tensor computations
      BUG: GPU tests sometimes fails
      BUG: SymmetricEigenAnalysis OrderByMagnitude bug
      PERF: speed up patch-based denoising tests
      BUG: Denoising 3D patch weights incorrect

Marius Staring (1):
      ENH: Creating a typedef for the modified time

Matthew McCormick (64):
      ENH: Allow custom name for ProcessObject Primary Input/Output.
      DOC: Clarify ProcessObject NumberOfRequiredInputs.
      STYLE: Fix style in itkBlockMatchingImageFilterTest.
      BUG: Fix BlockMatchingImageFilter for pipeline updating.
      DOC: Use one column in the Doxygen alphabetical class index.
      BUG: Fix GCC_XML and SWIG ExternalProject dependencies.
      BUG: Fix multi-object MetaIO reading for ASCII MetaVesselTube.
      STYLE: Improve readability and debugability in MetaScene.
      BUG: Fix multi-object MetaIO reading for ASCII MetaVesselTube.
      COMP: Fix QuadEdgeMesh doxygen warnings.
      ENH: Wrap new exponential Transform classes.
      STYLE: Use typedefs in TreeNode.
      STYLE: Use more descriptive names in itkSceneSpatialObject.hxx.
      STYLE: Cleanup WrapITK comments.
      BUG: Fix WrapITK GCCXML ExternalProject dependency.
      COMP: Make sure the VC script gets executed after gccxml installation.
      ENH: Use tarball for gccxml ExternalProject build.
      PERF: Use GetPrimaryOutput in ImageSource GetOutput.
      COMP: Add missing deque header for ANTSNeighborhoodCorrelation metric.
      BUG: Fix WrapITK GCCXML ExternalProject dependency.
      COMP: Make sure the VC script gets executed after gccxml installation.
      BUG: Fix multi-object MetaIO reading for ASCII MetaVesselTube.
      ENH: Bump release branch CMakeLists.txt version to 4.2.1.
      DOC: Update Doxygen config's for 1.8.2.
      DOC: Remove out-of-date files in Documentation/
      STYLE: Use EXIT_SUCCESS in itkQuadEdgeMeshPolygonCellTest.
      DOC: Improve Doxygen HTML layout.
      STYLE: Improve style in itkGaussianImageSourceTest.
      COMP: GaussianImageSource unsigned comparison always false.
      BUG: Fix VelocityFieldTransform classes wrapping.
      ENH: Support Vector scalar product with CovariantVector.
      MetaIO: Remove the executable bit from metaFEMObject.{h,cxx}.
      MetaIO: Fix invalid memory dereference with empty Meta field.
      COMP: Fix invalid unsigned comparison with 1D instantiation.
      ENH: Archive testing data in Midas.
      BUG: FixedArray wrapping for 4D wrapping.
      ENH: Add operator=( FloatType & rhs ) to CompensatedSummation.
      BUG: Improve robustness of RayCastInterpolateImageFunction.
      BUG: VTKPolyDataMeshIO for Meshes with Tensor Pixels. #2961
      COMP: Do not wrap WatershedImageFilter on Windows.
      BUG: Set the third-party libtiff VERSION to the correct value.
      COMP: Build with ITK_USE_SYSTEM_TIFF. #2967
      COMP: Fix wrapping of itkNarrowBandCurvesLevelSetImageFilter. #2970.
      COMP: Do not run itkSampleToHistogramFilterTest4 with VC.
      COMP: Fix 1D wrapping of itkImageToVTKImageFilter.
      MetaIO: Prevent vessel tube from getting stuck in while loop
      MetaIO: Fix error in metaVesselTube ASCII reader.
      COMP: Disable DCMTK for MinGW.
      COMP: Ignore DCMTK build warnings.
      BUG: Use HTTP protocol by default for Git pull URLs.
      COMP: Better identification of MSVC90.
      STYLE: Fix style of BorderQuadEdgeMeshFilter.
      STYLE: Fix style of CleanQuadEdgeMeshFilter.
      STYLE: Rename itkMultiTransformBase to itkMultiTransform.
      COMP: Wrap MultiTransform.
      STYLE: Fix style in MultiTransform.
      COMP: Disabling the VideoStreamTest.
      COMP: Suppress fftw ExternalProject warnings.
      COMP: LabelImageInterpolateImageFunctionTest type conversion.
      COMP: Add include directory for ITK_USE_SYSTEM_HDF5.
      COMP: itkLabelImageGaussianInterpolateImageFunctionTest signed unsigned.
      COMP: Fix Doxygen warnings.
      COMP: Ignore libtool FFTW warnings with quote.
      COMP: Fix HDF5IO with ITK_USE_64BITS_IDS on Windows.

Matthias Seise (1):
      COMP: Compile wrapITK for python2.7,64bit on windows

Michael Stauffer (6):
      PERF: Optimize GetValue in v4 image metrics.
      ENH: Add "WithOnlyIndex" iterators.
      PERF: improve speed of ImageToImageMetricv4 and derived metrics
      ENH: Add parameter weighting option to Optimizersv4
      ENH: Add MultiTransformBase
      DOC: Fix to ObjectToObjectOptimizerBase documentation

Nick Tustison (20):
      ENH: Expanding HasLocalSupport to transform categories.
      ENH:  Adding ability to prepend transform queue.
      ENH: Adding labeled point set metric.
      ENH:  Add GetTransformCategory() to translation transform.
      ENH: Adding exponential transforms.
      ENH:  Adding common transforms to be registered.
      BUG:  Voxel size scaling needed
      ENH:  Enable inverse for exponential transforms.
      ENH:  BSpline automated scales estimation.
      BUG: Fix resampling of constant velocity field.
      BUG:  Uninitialized variable.
      ENH:  Reorganization of vel. field transforms.
      BUG:  Control point grid origin wasn't set correctly.
      ENH:  Adding option to permit voxel-based smoothing.
      ENH:  Adding Multiple label STAPLE.
      BUG:  Disp. field xfrm inverse not set correctly.
      ENH: Multiple metrics in registration methods.
      BUG:  Incomplete dynamic casting.
      BUG: Correcting valgrind error.
      BUG:  Set correct images in update field.

Paul Novotny (1):
      COMP: Fix Spatial Object Test Segfaults

Richard Beare (1):
      ENH: Functors for logic operations

Willi Huber (2):
      COMP: WrapITK generates non-unique typedefs in FFT submodule
      COMP: Fix the wrapping for some modules

Xiaoxiao Liu (3):
      ENH: Update LSTK version.
      BUG: Update LSTK version to sync with VTK 6.0.
      BUG: Fix ffmpeg VideoStream failing tests.


Table Of Contents

Previous topic

What’s New in Release 4.2.1

Next topic

Write Multi-Threaded Code

This Page