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