Changelog History
Page 2
-
v5.0.rc01 Changes
February 05, 2019π We are happy to announce the Insight Toolkit (ITK) Release Candidate 1! π As the first release candidate, the major advancements for ITK 5 have matured, and the community is encouraged to adopt the release candidate in ITK-based applications.
π This release improves
Mesh
support in Python though simplification and extension ofMesh
andPointSet
wrapping. In general, this release makes improvements to the modernization of the toolkit staged in ITK 5.
The C++ range classes continue to advance, including the experimentalitk::ImageBufferRange
,itk::IndexRange
, anditk::ShapedImageNeighborhoodRange
. Our migration to GitHub was overwhelmingly successful, but it continues to improve. Pull requests now receive a helpful CDash build analysis GitHub Check.π For an overview of ITK 5's transition to modern C++, performance-related changes, the new, Pythonic API, and the project's migration to GitHub, see the ITK 5 Alpha 1: Modern C++, ITK 5 Alpha 2: Performance, ITK 5 Beta 1: Pythonic Interface, and ITK 5 Beta 3: GitHub release announcements.
π Performance Improvements
N4BiasFieldCorrectionImageFilter
accelerated throughitk::ImageBufferRange
and other optimizations.- π Various modern C++ improvements related to default constructors, move operations, etc.
π Documentation
- β‘οΈ ITK Software Guide PDF is now updated for ITK 5.
TransformIndexToPhysicalPoint
notation is improved.
Infrastructure
- π Mesh IO classes, e.g. Gifti, OBJ, OFF, FreeSurfer, BYU, STL, are now split into separate modules for better modularity.
- π A CDash build analysis summary and link is provided as a GitHub Check.
- β Added new C++11 member functions from
std::vector
toitk::VectorContainer
.
Third Party
- π DCMTK 3.6.4 is now supported.
CanRead
is now faster for inspection of potential DICOM files, both with the GDCM and DCMTK DICOM backends.- β‘οΈ Eigen updated to 3.3.7.
- π Improved support for integration of a system Eigen.
- π Improved compatibility with system HDF5.
Python
- Wrapping for
Mesh
andPointSet
classes was simplified and extended. BinaryMaskToNarrowBandPointSetFilter
is now available in Python.- π Better
itk.Image
NumPy buffer management for advanced pipeline grafting.
π To install the 5.0 Release Candidate 1 Python packages, run
python -m pip install --upgrade pip python -m pip install --upgrade --pre itk
What's Next
π There are many more bug fixes and improvements not mentioned above. For more details, please see the change log below. Congratulations and thank you to everyone who contributed to this release.
π The ITK 5 Migration Guide is available to help transition a code base from ITK 4 to ITK 5. Please discuss your experiences on Discourse.
π We are approaching the 5.0.0 final release! The next release will be the second ITK 5 release candidate; it is scheduled for March.
Enjoy ITK!
Changes from v5.0b03 to v5.0rc01 ----------------------------------------------- Bradley Lowekamp (2) @blowekamp: BUG: Use compatible ITKv4 computation BUG: Fix Ostu test to work with ITKv4 default options DΕΎenan ZukiΔ (9) @dzenanz: ENH: updating ITKMontage module DOC: trying to fix the doxygen warning ENH: Updating Visual Studio debug visualizer definitions DOC: removing long outdated comment ENH: updating Montage module STYLE: minor fixes to release notes COMP: a fix for system double-conversion build ENH: updating Montage: fix double-conversion include directory ENH: update ITKMontage: Fix crash when setting tiles from memory Eigen Upstream (1): Eigen3 2019-01-14 (16812519) Francois Budin (1) @fbudin69500: BUG: Missing ITK_WRAP_rgba_* variables in WrapITKConfig.cmake.in Hans Johnson (7) @hjmjohnson: STYLE: rm initializer list extra lines ENH: DCMTK 3.6.4 api changes accomodated ENH: Move default [con/de]strutor to .h COMP: Protected static function must be public PERF: GDCM & DCMTK CanRead fails very slowly for non-DICOM files. PERF: readability container size empty STYLE: Prefer = default to explicit constructor(){} Jon Haitz Legarreta GorroΓ±o (1) @jhlegarreta: DOC: Adjust the CoC Committee to the 01/09/2019 meeting decision. Matthew McCormick (31) @thewtex: ENH: Update Azure Pipelines CI testing cache to 5.0b03 DOC: Releasing ITK updates for 5.0b03 BUG: Exercise BinaryMaskToNarrowBandPointSetFilterTest BUG: BinaryMaskToNarrowBandPointSetFilter GenerateData protected BUG: Remove unused FixedDensityFunction in JensenHavrdaChatvatTsallis BUG: Do not build/use PoolMultiThreader without WinThreads or PThreads BUG: ShapeDetectionLevelSetFilter outputs BUG: ShapeDetectionLevelSetFilter outputFileName COMP: Remove itk::ThreadPool::GetGlobalDefaultNumberOfThreadsByPlatform DOC: Add 5.0 Beta 3 release notes DOC: Fix link to UpdatingThirdParty.md in CONTRIBUTING.md ENH: Add wrapping for BinaryMaskToNarrowBandPointSetFilter COMP: Mark DCMTKImageIO::CanWriteFile argument as unused COMP: Fix Software Guide line length too long warnings COMP: Fix Software Guide line length too long warnings ENH: Use CompensatedSummation in point set metrics to improve robustness COMP: ShapedImageNeighborhoodRangeGTest array initialization ENH: Move Gifti Mesh IO into a separate module ENH: Consistency in wrapped mesh types PERF: Parallelize ManifoldParzenWidnowsPointSetFunction::SetInputPointSet ENH: Move OBJ Mesh IO into a separate module ENH: Migrate OFF IO into ITKIOMeshOFF ENH: Update IOSTL to 2019-01-16 master COMP: Do not use readNoPreambleDICOM with Emscripten BUG: Fix Azure Pipelines commit checkout BUG: Fix Azure Pipelines master checkout on Windows BUG: Default MeshIOBase PointDimension is 3 ENH: Update IOMeshSTL remote module and update name ENH: Improve loading to help pyinstaller can analyze module dependencies COMP: Wrapping of VectorContainer and DefaultStaticMeshTraits ENH: Add legacy multi-frame DICOM MD5 content links Niels Dekker (19) @N-Dekker: DOC: issue #273: SyNImageRegistrationMethod default member initializers STYLE: Small improvements ImageBase constructor, SetRequestedRegion, '\' COMP: Fix "unreachable code" MakeOutput RegistrationMethods PERF: N4BiasFieldCorrectionImageFilter implementation using ImageRange STYLE: Renamed ImageRange to ImageBufferRange PERF: Remove SystemInformation data from ResourceProbe, fix issue #350 STYLE: Remove dynamic_cast from CastToSTLContainer(), add noexcept PERF: N4BiasFieldCorrectionImageFilter adds points + weights ~20% faster PERF: Fast assign point data, weights BSplineScatteredData filter COMP: ImageBufferRange iterator same as const_iterator, for const image PERF: BSplineDecompositionImageFilter now calls ImageAlgorithm::Copy ENH: Add default-constructor and empty() to ShapedImageNeighborhoodRange ENH: Made ShapedImageNeighborhoodRange assignable and tested copy + move STYLE: C++ "Rule of Zero" for iterator classes of Range types PERF: Add fast noexcept move semantics to Neighborhood and its Allocator BUG: ResourceProbe::Reset() should set m_MaximumValue to lowest value BUG: Fixed MoveAssignedRangeHasSameIterators GTest of two range types STYLE: Move test utils default-constructed ranges to RangeGTestUtilities ENH: Add default-constructor and empty() to IndexRange Pablo Hernandez-Cerdan (14) @phcerdan: DOC: Fix doxygen in SymmetricEigenAnalysis ENH: Python, wrap complex in NumericTraits ENH: Update IsotropicWavelets module BUG: Fix failure of ITK_EIGEN macro expansion ENH: Add test checking noexcept moves in FixedArray STYLE: Change EXPECT_EQ to EXPECT_TRUE|FALSE in CommonTypeTraitGTest ENH: Add python wrapping for std::pair and other int containers ENH: Add internal/external eigen3 libraries ENH: Update IsotropicWavelets ENH: Add new c++11 member functions of std::vector to itk::VectorContainer ENH: Simplify specialization of NumericTraits<std::complex<TComponent>> BUG: itkMatrix: Use NumericTraits::Zero instead of literal 0 DOC: SoftwareGuide: improve TransformIndexToPhysicalPoint notation COMP: Fix multi-line comment warning generated by latex notation Roman Grothausmann (1) @romangrothausmann: BUG: avoid overwriting output in 2nd run used for comparison in test: Simon Rit (1) @SimonRit: BUG: python itk.Image returned by GetImageFromArray now manages its own buffer @ihnorton (1): COMP: use HDF5 library names only to avoid abspaths w/ SYSTEM_HDF5
-
v5.0.b03 Changes
January 04, 2019π We are happy to announce the Insight Toolkit (ITK) version 5 Beta 3 release! π This release celebrates the community's migration to GitHub. 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:
https://github.com/InsightSoftwareConsortium/ITK.git
https://github.com/InsightSoftwareConsortium/ITKExamples.git
https://github.com/InsightSoftwareConsortium/ITKSoftwareGuide.git
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 CONTRIBUTING.md 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 data.kitware.com Girder Collection.
π§ The
./Utilities/SetupForDevelopment.sh
script now guides repository configuration for GitHub contributions. Git client-side hooks help submit a well-formatted commit message. Git aliases,review-push
andpr
, are provided to submit pull requests for review and download submitted pull requests for local testing.π A new cross platform script,
ITK/Utilities/UploadBinaryData.sh
, is available to upload binary testing data. This script, invoked directly or through thedata-upload
alias, performs an authenticated upload to data.kitware.com 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 http://review.source.kitware.com/ 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 anitk::Image
. - The Rule of Five was applied to basic data structures like
itk::FixedArray
,itk::Point
,itk::Vector
so they satifystd::is_trivial
andstd::is_standard_layout
. This is now also tested. This enables compiler optimizations and moves. ResampleImageFilter::CastPixelWithBoundsChecking
is now faster.- Data copies in
itk::BSplineTransform
were reduced. - β‘οΈ The number of evaluations in line search optimizer were reduced by half.
β‘οΈ Third Party Updates
- 0οΈβ£ The Eigen linear algebra third party library is now available as an ITK module, and it is enabled by default.
- β‘οΈ VXL was updated to require C++11 and use modern C++ syntax
- β‘οΈ GDCM, Zlib and GIFTI were updated to the latest upstream.
Remote Modules
The result of phase symmetry filtration of a cardiac ultrasound B-mode volume. From Hatt C. "Multi-scale Steerable Phase-Symmetry Filters for ITK."
The Insight Journal. July-December. 2011. http://hdl.handle.net/10380/3330π New Remote Modules added:
PhaseSymmetry
- Multi-scale steerable filters for computing phase symmetry (PS).
- From Hatt C, "Multi-scale Steerable Phase-Symmetry Filters for ITK", http://hdl.handle.net/10380/3330
- https://github.com/KitwareMedical/ITKPhaseSymmetry
- Multi-scale steerable filters for computing phase symmetry (PS).
- Enable in an ITK build by setting
Module_PhaseSymmetry=ON
. - Install Python packages:
pip install itk-phasesymmetry
IOOpenSlide
- Read file formats supported by the OpenSlide library. These are generally TIFF-based microscopy formats.
- https://github.com/InsightSoftwareConsortium/ITKIOOpenSlide
- Enable in an ITK build by setting
Module_IOOpenSlide=ON
. - Currently requires a system installation of the OpenSlide library.
Montage
- Montaging for microscopy imaging files.
- Based on Bican, J., "Phase Correlation Method for ITK", http://hdl.handle.net/1926/396, in addition to many improvements.
- https://github.com/InsightSoftwareConsortium/ITKMontage
- Enable in an ITK build by setting
Module_Montage=ON
BSplineGradient
- Approximate an image's gradient from a B-spline fit to its intensity.
- https://github.com/InsightSoftwareConsortium/ITKBSplineGradient
- Enable in an ITK build by setting
Module_BSplineGradient=ON
.
0οΈβ£ The
itk::JPEG2000ImageIO
class was migrated out theITKReview
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 theitk::RealToHalfHermitianForwardFFTImageFilter
- π Support for Fast Fourier Transforms (FFTs) computed on NVIDIA GPUs via cuFFTW: enable by setting
ITK_USE_CUFFTW=ON
.
Python
- π
itk.imread
now supports reading image file series. - π Shorthand setting of parameters of filters in
.New()
or the procedural Python interface now supports passing tuples to set multi-valued parameters.
π¦ 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 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 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 CMAKE_CROSSCOMPILING_EMULATOR support 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 CONTRIBUTING.md 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 UploadBinaryData.sh script COMP: Remove vcl_complex.h from Python builds BUG: Remove vcl_complex support from itkTemplate.py 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/Introduction.md for GitHub migration DOC: Fix spelling of "individual" in CONTRIBUTING.md 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 UploadBinaryData.sh 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 CONTRIBUTING.md link in UploadBinaryData.md ENH: Add regression test for reading legacy multi-frame DICOM COMP: Float narrowing conversion in BSpline class initialization DOC: Move maintainer documentation into Documentation/Maintenance DOC: Import release archive notes from the Wiki DOC: Improve 4.13, 5 release notes from GitHub Releases Niels Dekker (42) @N-Dekker : PERF: Made ResampleImageFilter::CastPixelWithBoundsChecking faster STYLE: NumericTraits::NonpositiveMin() using numeric_limits::lowest() BUG: Fixed casts to int64_t and double in ResampleImageFilter ENH: Tested ResampleImageFilter preserves 'double' and int64_t pixels STYLE: Replaced 'bool pre = 0' by 'bool pre = false' STYLE: Declared "IsAt" iterator member functions 'const' DOC: Replaced leading stars ('*') by spaces in Doxygen code blocks STYLE: Replaced "Hyperrect..." by "Rect..." in class + function names BUG: Removed underscores from GTest test names STYLE: Shortened itkShapedImageNeighborhoodRangeGTest test names STYLE: Declared VerifyPreconditions() member functions 'const' STYLE: Replaced star ('*') by space in front of Doxygen \code tags PERF: Made ConstNeighborhoodIterator::GetPixel(i) much faster ENH: Added GradientNormThreshold to HoughTransform2DCirclesImageFilter STYLE: Removed unused ShapedImageNeighborhoodRange::m_Image ENH: Added ConstShapedNeighborhoodIterator::ActivateOffsets(offsets) DOC: Replaced leading stars ('*') by spaces in indented Doxygen code ENH: Added GenerateConnectedImageNeighborhoodShapeOffsets() COMP: Fixed GDCM OpenJPEG name mangling ENH: Added ShapedImageNeighborhoodRange::SetLocation(index) COMP: Fixed GDCM OpenJPEG name mangling ENH: Added HoughTransform2DCirclesImageFilter::UseImageSpacing ENH: Added IndexRange for efficient region and grid space iteration COMP: Fixed IndexRange warnings -Wshadow -Wmissing-field-initializers PERF: unsharpenedImage iterator in N4Bias...Filter is now "WithIndex" BUG: Avoid premature GaussianDerivative kernel computation HoughCircles BUG: ShapedImageNeighborhoodRange should not try to avoid rvalue offsets ENH: Added policy for constant NeighborhoodRange values outside image STYLE: AccessorFunctor::SetPixelAccessor parameter reference to const PERF: Removed 'virtual' from Default Pixel Accessor destructors ENH: Added ImageRange: a range of iterators to the pixels of an image STYLE: ImageHelper now doing '+=' and using C++11 std::integral_constant BUG: Fixed ShapedImageNeighborhoodRange copying pixel access parameter COMP: Fixed ImageRange warning, passing object to variadic constructor DOC: Did #136 Update migration guide with Hough transform changes ENH: Added default-constructor and empty() to ImageRange ENH: ShapedImageNeighborhoodRange now supports any buffered region index PERF: Defining ImageRange iterator as raw pixel pointer, when possible ENH: Added Experimental::MakeImageRange(TImage*) PERF: Replaced postfix ++ calls on ITK iterators by the prefix ++ calls PERF: Small improvements to equality operators of Image Region classes PERF: Added C++11 final, noexcept, default, initializers to ImageRegion Pablo Hernandez-Cerdan (17) @phcerdan : COMP: Fix hdf5 warning missing perl script COMP: Fix HDF5 CMake warning policy CMP0075 ENH: Tweak constructors, Ro5 in FixedArray, Point ENH: Add Ro5 to FixedArray and derived classes COMP: Fix warnings related to Ro5 changes in FixedArray ENH: Add Ro5 constructors to SymmetrySecondRankTensor ENH: Add Ro5 to classes derived from Point ENH: Initialize SecondRankTensor and RGBPixelType ENH: Print direction in ImageIOBase ENH: Add HalfHermitianFrequencyIterator ENH: Use variadic templates for SetPosition ENH: Add ThirdParty module Eigen3 COMP: Add CONFIG to find_package(Eigen3) COMP: Add missing headers SymmetricEigenAnalysis COMP: Use the right constructors for fixed eigen3 matrix COMP: Reorder variables associated find_package in Eigen3 ENH: Update external module ITKIsotropicWavelets Roman Grothausmann (2) @romangrothausmann : DOC: adjusted to fit more general case n != m DOC: corrected description of the output Sean McBride (3) @seanm : COMP: Added additional HDF5 symbols for mangling DOC: improved comments about HDF5 symbol mangling COMP: fixed some -Wunused-template warnings by adding private namespaces Simon Rit (2) @SimonRit : BUG: fix NumPy bridge for itk::Image with PixelType itk::Vector ENH: improve automatic Python ImageFileReader for non-scalar pixel types Tobias Wood (1) @spinicist : BUG: Swapped int to SizeType to prevent overflow errors VXL Maintainers (8): VNL 2018-11-04 (ea3a2cc9) VNL 2018-11-08 (88b72533) VNL 2018-11-14 (ee083096) VNL 2018-11-15 (4fe68119) VNL 2018-11-18 (fa7c7abd) VNL 2018-11-23 (cb6f5dcb) VNL 2018-11-29 (f6e20c3c) VNL 2018-12-15 (bb0d2eb6) Yann Le Poul (4) @YannLePoul : BUG: make sure the palette is empty when m_IsReadAsScalarPlusPalette is false DOC: fix rotation spelling issue in some versor related files STYLE: IsReadAsScalarPlusPalette already printed in parent class BUG: unnecessary call to GetExpandRGBPalette Zlib Upstream (1): zlib 2018-06-11 (355d8648) allywarner (1) @allywarner : BUG: CMake build errors pierre33 (1) @pierre33 : ENH: Update itkNaryFunctorImageFilter
-
v5.0.b02 Changes
December 19, 2018π This release was superseded by ITK 5.0 Beta 3 due to Visual Studio build errors.
-
v5.0.b01 Changes
September 11, 2018π We are happy to announce the first beta release for ITK 5. This release features an additional, more Pythonic interface to filters. This interface is more familiar in Python and facilitates rapid prototyping. ITK 5.0 Beta 1 also includes many performance-related improvements, such as a pure C++11 thread pool by default, an HDF5 update to 1.10, new frequency domain iterators, new neighborhood range classes, and a new multi-dimensional, multi-component superpixel class.
π For an overview of ITK 5 performance-related changes and the transition to modern C++, see the ITK 5 Alpha 1: Modern C++ and ITK 5 Alpha 2: Performance release announcements.
Python Interface
β‘οΈ The traditional, object-oriented interface to ITK's Python classes allows the composition of filters in a pipeline. After setting up a chain of filters,
Update()
is called at the end of the pipeline. This facilitates streaming of very large images that may exceed the system's memory capacity. For example,import itk input\_image = itk.imread('input.nrrd') ImageType = type(input\_image) radius = 2median\_filter = itk.MedianImageFilter[ImageType, ImageType].New() median\_filter.SetInput(input\_image) median\_filter.SetRadius(radius) median\_filter.Update() output\_image = median\_filter.GetOutput() itk.imwrite(output\_image, 'output.nrrd')
While powerful, this interface is verbose.
A procedural interface is now available with PEP8-compliant snake case naming of all filters that inherit from
itk.ProcessObject
. For example,import itk input\_image = itk.imread('input.nrrd') radius = 2output\_image = itk.median\_image\_filter(input\_image, radius=radius) itk.imwrite(output\_image, 'output.nrrd')
In this case, the type of the filter is implicitly determined by the input image type. Immediately, the filter is executed, and the result is directly returned. Object parameters defined by
Set*
methods can be specified in the filter call with keyword arguments. The Pythonic, snake case form of these parameters can also be used.PEP8 function naming has also been applied to the NumPy bridge.
array = itk.GetArrayFromImage(image) array = itk.array_from_image(image)
Similar functions names are available when creating NumPy array views,
itk.Image
's from NumPy arrays, and converting VNL vector and matrices to NumPy arrays.π¦ To test the 5.0 Beta 1 Python packages, run
python -m pip install --upgrade pip python -m pip install --upgrade --pre itk
π Performance Improvements
π Based on experiences since initial changes introduced in ITK 5 Alpha 2, many notable performance improvements have been made.
- 0οΈβ£ The default thread pool is now fully backed by C++11 threading primitives.
- A new
itk::MultiThreaderBase::ParallelizeArray
function is available to quickly and easily dispatch C++11 lamda's or std::function's on linearly indexed containers, similar toitk::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 toSetNumberOfWorkUnits
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
- A set of new iterators and a band pass filter are available in a new ITKImageFrequency module. These classes help when operating in the dual domain and with the output of FFT's. More details are available in this Insight Journal article.
- New, experimental ShapedImageNeighborhoodRange, HyperrectangularImageNeighborhoodShape classes are available, providing modern, C++ range operations and high performance.
- A new Simple Linear Iterative Clustering (SLIC) super-pixel segmentation filter is available. This implementation improves or the original algorithm by supporting arbitrary dimensions, multi-component images, and a parallized implementation. More details are available in the Insight Journal article.
π 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, http://hdl.handle.net/1926/3596.What's Next
π There are many more bug fixes and critical improvements not mentioned above. For more details, please see the change log below. Congratulations to everyone who contributed to this release.
π Please discuss your experiences on Discourse. The community has been quite active in testing and improving these changes for the next major release of ITK. Another beta release is planned for the October-November time period.
Changes from v5.0a02 to v5.0b01 ----------------------------------------------- Bradley Lowekamp (47): BUG: Prevent concurrent read/write in output image BUG: Handle case where output image is zero sized BUG: Add missing dependencies in Module testing ENH: Remove SPECIFIC_IMAGEIO_MODULE_TEST feature BUG: Fix name typo for ITK_GLOBAL_DEFAULT_THREADER BUG: Fix incorrect library variable for MeshIO test drivers ENH: Create TestKernel library COMP: Fix overflow in floating-point conversion warning ENH: Add SLIC segmentation to new Superpixel module COMP: Fix C++11 compatibility with assert in constexpr COMP: Use std::min over vnl_math_min BUG: Fix index type and and number of indexes BUG: Add alternate baseline itkSLICImageFilterTest1 test ENH: Update test output to include test name BUG: improve numeric consistency in linear algorithm COMP: Add missing overrride to virtual destructor ENH: TileImageFilter learns to use VectorImages COMP: Remove unused testing function and headers BUG: Finish updating to ScanlineIterator in nonlinear method ENH: Update SLIC filter to use new ITK threading model ENH: TileImageFilter learns to use VectorImages ENH: Update SimpleITKFilters remote modules COMP: remove duplicate declaration of TempImageType DOC: Add link to published Insight Journal paper ENH: Update CenteredTransformInitializer print self method PERF: Remove internal streaming in DiscreteGaussianImageFilter ENH: Update MinimumMaximumImageFilter to use dynamic threading ENH: Update StatisticsImageFiler to use DynamicThreadedGenerateData ENH: Add compensated summation to the StatisticsImageFitler BUG: Use pip to install cmake BUG: Use pip to install cmake for release PERF: Use the recursive Gaussian filter in registration method BUG: Add additional baseline for debug COMP: Length GTest discovery timeout BUG: Correct image used for debug SimpleImageRegistrationTest BUG: Add cxx suffix to specified source GTest code ENH: Consistently use default OutputWindow for messages BUG: Explicitly set sampled pointset in virtual domain ENH: Use std::enable_if and std::is_same in filters PERF: Memory alloc reduction in ComputeJacobianWithRespect PERF: Improve MatrixOffset Jacobian computation performance COMP: Address signed to unsigned comparison warning STYLE: Cleanup development comments PERF: perform matrix multiplication in-place for composite Jacobian ENH: Provide explicitly instantiated vnl_svd_fixed PERF: Change type of Jacobian w.r. position to vnl_matrix_fixed PERF: Change the purpose of the cache jacobian argument Brian Avants (1): PERF: Only throw exception if zero valid points Chao Wu (2): ENH: Enable writing scl_slope and scl_inter in NIfTI header BUG: Missing SetCPUBufferPointer in GPUImage<...>::SetPixelContainer(...) DΕΎenan ZukiΔ (45): STYLE: a more direct link (after PR has been merged) STYLE: update clang-format configuration ENH: adding ParallelizeArray method to MultiThreaderBase COMP: fixing warning in external module COMP: Address usage of deleted assignment operator ENH: more thorough removal of deprecated "multiple method" DOC: add compatibility warning to Barrier STYLE: initializing SingleMethod/SingleData in base class DOC: merging instructions from itkMultiThreader.h into migration guide ENH: rename NumberOfThreads into NumberOfWorkUnits in filters ENH: Add backwards compatibility for Get/SetNumberOfThreads ENH: renaming NumberOfThreads into NumberOfWorkUnits in MultiThreaderBase ENH: adding backwards compatibility for MultiThreaders ENH: default number of work units is greater than default number of threads COMP: fixing compile warning on GCC 4.8 ENH: rewriting thread pool to take advantage of C++11 ENH: implement Parallelize Array and ImageRegion in PoolMultiThreader COMP: SmoothingRecursiveYvvGaussianFilter compiles with new ITKv5 threading ENH: RGB/RGBA consistency, operator / and remove comments from implementation ENH: refactoring RecursiveSeparableImageFilter to use new threading ENH: updating MCI: adjusting to split between threads and work units in ITKv5 ENH: compute spacing using n-1 instead 2-1 in ImageSeriesReader BUG: updating the HDF5 symbol mangling ENH: fix reading of oblique image series BUG: fixing crash in ThreadPool's destructor COMP: fixing warning about shadowed global COMP: avoid warning with CMake 3.12 and newer regarding policy CMP0075 ENH: write format which is backwards-compatible with HDF5 version 1.8 ENH: refactoring BinaryImageToLabelMapFilter to use the new threading model ENH: adding ProgressTransformer ENH: proper backwards compatibility to HDF5 1.8 STYLE: fixing 'No new line at the end of file' ENH: adding short description of split between threads and work units ENH: rewriting BarrierTest to work with any MultiThreader ENH: cause compile error with HDF5 version 1.10.0 and 1.10.1 STYLE: fixing 'No new line at the end of file' ENH: restore BeforeThreadedGenerateData method DOC: state that SetRecursive must be called before SetInputDirectory BUG: updating the symbol mangling list BUG: removing mangling of unversioned variant of versioned definitions ENH: update migration guide: prefer C++11 classes over ITK's ENH: cleaning up ProcessObject ENH: using progress transformer in recently refactored classes COMP: fixing LoggerBase to compile even when DEBUG is defined DOC: ProgressReporter should be replaced by ProgressTransformer Francois Budin (3): BUG: Improvements to ITK NumPyBridge DOC: Improve exception message to precise what image sizes can be processed BUG: Improvements to ITK NumPyBridge GCC-XML Upstream (1): ENH: pygccxml develop (reduced) GDCM Upstream (1): GDCM 2018-05-23 (69cb71a4) HDF5 Maintainers (3): HDF5 2016-05-10 (7453bbef) HDF5 2018-07-20 (bed5b207) HDF5 2018-08-22 (08d77e43) Hans Johnson (6): ENH: HDF5 moved from svn to git ENH: Update HDF5 import script for 1.10.2 ENH: Remove svn version of hdf5 files not added by import from git STYLE: Consistently name for ITK conventions BUG: Fixing the HDF5 internal path names tests COMP: Fix const assignment error in testing Isaiah Norton (3): BUG: prevent segfault when transform reader fails to load .mat PERF: improve DCMTKFileReader::CanReadFile perf BUG: prevent segfault when transform reader fails to load .mat Jean-Christophe Fillion-Robin (1): BUG: Refactor itkFloatingPointExceptions to fix macOS support Jon Haitz Legarreta (1): ENH: User initialization lists over direct assignment. Jon Haitz Legarreta GorroΓ±o (4): ENH: Add the ITK BoneMorphometry module as a remote. COMP: Bump remote modules versions. ENH: Clean up itkGrayscaleMorphologyImageFilter tests. ENH: Increase itk::OtsuMultipleThresholdsImageFilter coverage. KWSys Upstream (1): KWSys 2018-06-01 (8ef62b28) Kwame Kutten (2): BUG: Removed quotes from fftwf and fftwd hashes ENH: Make StatisticsImageFilter returns Sum Of Squares Marian Klymov (1): ENH: Mark copy constructor of ExceptionObject and derived classes noexcept. Matthew McCormick (39): COMP: Reduce example line lengths for inclusion in the SG COMP: Remove duplicate InPlaceImageFilter wrapping for RGB -> UC BUG: Do not copy workbox files when BUILD_DOCUMENTATION is OFF COMP: Remove duplicate BinaryGeneratorImageFilter class wrapping BUG: Migrate midas3.kitware.com to data.kitware.com ENH: Remove itkzlib in preparation for subtree update ENH: Add ZLIB UpdateFromUpstream.sh 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.show, 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 ArchiveTestingDataOnMidas.py BUG: Use manylinux to build CastXML linux executable BUG: Avoid symlink issues in UpdateThirdPartyFromUpstream.sh DOC: Additional information and updates on bug fix release process COMP: Prevent duplicate wrapping ouput file specification COMP: Support instantiation of a 1D TranslationTransform DOC: Update how to reference a GitHub issue in the commit-msg hook DOC: ITK 5 Migration Guide grammar tweaks ENH: PEP8 for itk.Extras arguments MetaIO Maintainers (1): MetaIO 2018-07-17 (6328f544) Niels Dekker (14): DOC: Fixed \code sections ShapedImageNeighborhoodRange and added \author STYLE: Renamed RelativeIndices to ShapeOffsets in ShapedImageNeighborhoodRange ENH: Added ConnectedImageNeighborhoodShape, for N-connected neighborhoods ENH: Added operator[] to ShapedImageNeighborhoodRange ENH: Documented + tested order offsets ConnectedImageNeighborhoodShape COMP: Fixed conversion to PDFValueType in MattesMutualInfo...Threader ENH: Added reverse iterators to ShapedImageNeighborhoodRange STYLE: Removed HoughTransform2DCircles default for TRadiusPixelType ENH: Changed type float data members HoughTransform filters to double ENH: Added Functor::CoLexicographicCompare ENH: Made Functor::LexicographicCompare more generic and easier to use BUG: Added default-constructor iterator ShapedImageNeighborhoodRange ENH: Added ImageNeighborhoodPixelAccessPolicy for custom border extrapolation STYLE: Removed LinearInterpolateImageFunction::m_Neighbors Pablo Hernandez-Cerdan (11): COMP: Remove ignored const qualifier in template. COMP: Fix warnings -Wcatch-value ENH: Update isotropic wavelets module. ENH: Add frequency iterators and band pass filter. COMP: Update IsotropicWavelets, remove FrequencyIterators STYLE: Remove comment in ITKImageFrequency cmake BUG: Fixes generating floating point exceptions COMP: Fix warnings in cdash introduced after FPE. DOC: Add example using std::atomic for multithreading. STYLE: Mark CMAKE_DEBUG_POSTFIX as advanced. COMP: Avoid extra point copy in MetaTube Sean McBride (2): COMP: Fixed warning about missing case label in public header COMP: Fixed three misc clang warnings Simon Rit (1): ENH: allow wrapping of XML writers VXL Maintainers (3): VNL 2018-07-26 (2a77e40b) VNL 2018-08-04 (3dafea87) VNL 2018-09-05 (fc0c9043) Vladimir S. FONOV (1): MINC 2018-08-09 (ce4333ca) Zlib Upstream (1): zlib 2018-06-11 (355d8648)
Enjoy ITK!
-
v5.0.a02 Changes
May 28, 2018π Major improvements in ITK 5.0 include a switch to C++11 language standard, improved performance, and cleanup of legacy code. More information about the C++11 transition, spearheaded by Hans Johnson, can be read in the ITK 5.0 Alpha 1 announcement.
π ITK 5.0 Alpha 2 emphasizes performance improvements: 1) A refactored multithreading infrastructure, 2) in ITK 5, a thread pool is available by default, 3) an Intel Threading Building Blocks (TBB) threading backend with dynamic region splitting, 4) improved image iterator performance, 5) simple APIs to execute functions in parallel, 6) simple construction of unary and binary generator image filters filters, and 7) new, experimental C++11 range classes for iteration in range-based for loops.
There are now two multi-threaded "GenerateData" method signatures. The classic one, ThreadedGenerateData, is kept when a filter needs to know in advance the number of pieces into which the requested region will be split. This information was previously used by some filters to allocate intermediate, thread-local data. The new dynamic signature, DynamicThreadedGenerateData, allows the region to be split dynamically in response to data content and multi-processor load to achieve load balancing. Presently, only the TBB backend performs dynamic splitting. More information can be found in the Multi-Threading section of in The ITK Software Guide. Instructions that describe changes required to leverage dynamic parallelism in external filters can be found in the migration guide. Most existing ITK-based codes will build with minimal to no modifications required.
An itk::PoolMultiThreader is the default in ITK 5, which provides a thread pool for platform native threads. The itk::PlatformMultiThreader is also available, which behaves like the previous itk::MultiThreader class.
Our multi-threading refactoring enables better load balancing for filters with variable per-pixel computation cost. As TBB is one of the best open source libraries for load-balanced threading, it was an easy choice. The itk::TBBMultiThreader can be enabled by setting
Module_ITKTBB
toON
in ITK's CMake configuration.π Most methods in neighborhood iterators were virtual, but this was a rarely-used feature. That virtualization is now a configure-time parameter, and it is off by default. This significantly improves performance of filters which utilize neighborhood iterators. More information can be found in the Discourse discussion.
π A ParallelizeImageRegion method allows multi-threaded processing without writing a full-blown filter class. As evident in this example, multiple parallelized operations of arbitrary complexity can now be concisely specified and executed with C++11 lamda's or std::function's.
The new itk::UnaryGeneratorImageFilter and itk::BinaryGeneratorImageFilter's allow per-pixel operations to be specified in several ways: 1) traditional "Functor", with
operator()
, 2) C++11 lambda functions, with closures, 3) C++11 std::function 4) C-style function pointers.New, experimental classes for C++11 iteration in range-based for loops, e.g. itk::Experimental::ShapedImageNeighborhoodRange, provide a modern, convenient syntax for image pixel iteration, and dramatic performance improvements.
Furthmore, ITK 5 improves performance by leveraging Rvalue references to implement move semantics and perfect forwarding.
π
π ITK 5 Performance 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: Add ITK_ITERATOR_FINAL 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 itkBase.py 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!
-
v4.13.3 Changes
August 03, 2020π On behalf of the Insight Toolkit (ITK) Community, we are happy to announce the release of ITK 4.13.3! ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
π Release files can be downloaded from
π This purpose of this release is to provide updated compiler support as projects continue the transition to ITK 5. Only updated source code and testing data tarballs are provided in this release.
π This release includes fixes for GCC 9, 10, Visual Studio 2019 and fixes in GDCM for improved DICOM support. For more details, please see the log below.
π This is the last anticipated release in the ITK 4 series. Projects are encourage to migrate to ITK 5 following the migration guide.
Enjoy ITK!
ITK changes from v4.13.2 to v4.13.3:
Bradley Lowekamp (7): BUG: Patch missing const qualifier to GDCM dircos_comp comparison BUG: Address bug with small size in output of SliceImageFilter BUG: Update CI scripts from current ITK master ENH: Update GDCM to latest on the release-2.8 branch BUG: update CircleCI configuration with selections from master BUG: Don't use InsertElement which modifies MTime BUG: Address buffer overflow with deprecated GDCM1 interface DΕΎenan ZukiΔ (4): ENH: use double-conversion's CMake targets COMP: a fix for non-system double-conversion build ENH: back-porting #1165 to support Visual Studio 2019 COMP: update download location for pre-built ICU for Visual Studio GDCM Upstream (1): GDCM 2019-11-04 (7e3be76f) Jerome Schmid (1): COMP: VtkGlue module-Provide support for VTK new cmake targets Marco Nolden (1): COMP: added vcl compiler detection for GCC 10.x Matthew McCormick (3): COMP: Prevent duplicate wrapping ouput file specification COMP: Add VXL support for GCC 9 ENH: Bump CMakeLists.txt version to 4.13.3
-
v4.13.2 Changes
March 22, 2019π On behalf of the Insight Toolkit (ITK) Community, we are happy to announce the release of ITK 4.13.2!
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 itk
π This is a patch release that fixes critical issues, regressions, documentation, and compiler support. This release includes a number of fixes for GDCM for improved DICOM support. The build system is updated for compatibility with newer CMake. Continuous integration testing is also improved following our migration to GitHub.
π The next feature pre-release for ITK 5, ITK 5 Release Candidate 2, is anticipated in a few weeks.
Enjoy ITK!
ITK changes from v4.13.1 to v4.13.2:
Bai Shi (1): COMP: To fix compilation error of "cannot dynamic_cast 'x' Bradley Lowekamp @blowekamp (10): BUG: Support ITK transform files with corrected group names BUG: Update SCIOFIO to ITKv4.13 branch BUG: Handle boundary case with max metric BUG: Remove static member function variable BUG: Synchronize BSpline MeshDomain parameters from fixed params COMP: Address CMake policy warnings in ThirdParty libraries ENH: Update AzurePipelines configuration from master ENH: Explicitly set the XCode version used in Azure COMP: Use CMP0048 new for wrapping COMP: Set CMP0048 to new in ITK (Remote) Modules DΕΎenan ZukiΔ @dzenanz (2): STYLE: fixing 'No new line at the end of file' ENH: ITKv5_CONST macro for VerifyPreconditions() and VerifyInputInformation() Francois Budin @fbudin69500 (1): BUG: Disable Python tests if `ITK_BUILD_DEFAULT_MODULES` is OFF GDCM Upstream @malaterre (3): GDCM 2019-02-07 (8e1cfd05) GDCM 2018-10-23 (2e701ed7) GDCM 2019-02-08 (815caa81) Isaiah Norton @ihnorton (2): BUG: prevent segfault when transform reader fails to load .mat BUG: don't quote argument to URL_HASH for FFTW Matthew McCormick @thewtex (9): BUG: Use manylinux to build CastXML linux executable COMP: Address empty _FILE_OFFSET_BITS in tif_config.h with MinGW64 BUG: Remove duplicate ITK version number ENH: Add Azure Pipelines configuration ENH: Add regression test for reading legacy multi-frame DICOM COMP: Set CMP0083 for PIE flags ENH: Bump CMakeLists.txt version to 4.13.2 ENH: Add missing SHA512 content link ENH: Explicitly use Python 3.7 in Azure builds Niels Dekker @N-Dekker (2): COMP: Fixed GDCM OpenJPEG name mangling PERF: Remove SystemInformation data from ResourceProbe, fix issue #350
-
v4.13.1 Changes
August 09, 2018π 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 http://itk.org/ITK/resources/software.html
β¬οΈ 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 midas3.kitware.com to data.kitware.com 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