Releases: InsightSoftwareConsortium/ITK
ITK 5.1 Beta 1: NumPy Interface, Part 1
ITK 5.1 Beta 1 Release Notes
We are happy to announce that the Insight Toolkit (ITK) 5.1 Beta 1 is available for testing! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.1 Beta 1 is a pre-release to enable testing of major improvements to ITK's NumPy interface.
Python Packages
ITK Python packages can be installed by running:
pip install --upgrade --pre itk
The --pre
flag will install the beta pre-release.
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Pass NumPy Array's to ITK Image Filters
The Pythonic, functional-like interface to all ITK image-to-image-filters now directly supports operation on NumPy array's, i.e. numpy.ndarray
. If a ndarray
is passed as an input, a ndarray
is returned as an output.
For example,
smoothed = itk.median_image_filter(array, radius=2)
Previously, explicit conversion to / from an itk.Image
was required with itk.array_from_image
and itk.image_from_array
.
We can now also convert an itk.Image
to a numpy.ndarray
with the standard np.asarray
call.
import numpy as np
import itk
image = itk.imread('/path/to/image.tif')
array = np.asarray(image)
Python 3 Only
ITK 5.1 will be the first Python 3-only release. Consistent with most scientific Python packages and CPython's 2020 drop in support, Python 2 support and binaries will no longer be available.
clang-format enforced C++ coding style
ITK has adopted a .clang-format coding style configuration file so a consistent coding style can automatically be applied to C++ code with the clang-format
binary. A consistent coding style is critical for readability and collaborative development.
clang-format
has been applied to the entire codebase. The Whitesmiths style of brace indentation, previously part of the ITK Coding Style Guidelines, is not supported by clang-format, so it has been replaced by a brace style consistent with VTK's current style.
A Git commit hook will automatically apply clang-format
to changed C++ code. We are refining the related documentation and improving automated application of the style.
Point Set Registration Parallelism
ITK provides a powerful registration framework for point-set registration, offering information-theoretic similarity metrics, labeled point-set metrics, and spatial transformation models that range from affine to b-spline to dense displacement fields. ITK 5.1 features enhanced parallelism in point-set metric computation, leveraging the native thread-pool and Threading Building Blocks (TBB) enhancements in ITK 5.
ITK 5 Improvements
Many more improvements and refinements were added since the ITK 5.0.0 release, which are detailed in the change log below. For example, a number of improvements were made to the itk::SpatialObject's.
Congratulations
Congratulations and thank you to everyone who contributed to this release. Of the 25 authors, we would like to specially recognize the new contributors: James Butler, Neslisah Torosdagli, Rinat Mukhometzianov, Genevieve Buckley, and yjcchen091.
What's Next
Additional improvements ITK's NumPy interface are planned for the next pre-release. Try out the current release, and take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
Changes from 5.0.0 to 5.1 Beta 1
Bradley Lowekamp @blowekamp (32):
BUG: Use ProcessObject GetInput to obtain base pointer
BUG: Fix ProcessObject::RemoveOutput for null objects.
COMP: Address missing fftw include in CurvatureRegistrationFilter
BUG: Fix ProcessObject::RemoveOutput for null objects.
BUG: Add casting for vector pixel types
STYLE: Use CTEST_TEST_TIMEOUT
ENH: Add testing for CastImageFilter for more type conversions
BUG: Restore support for Cast between explicitly cast-ed pixel type
BUG: Use ProcessObject GetInput to obtain base pointer
ENH: Add testing for CastImageFilter for more type conversions
BUG: Restore support for Cast between explicitly cast-ed pixel type
BUG: Add DataObject::New method
BUG: Install FFTW headers in same location as ITK
Revert "BUG: InterpolateImageFunction::GetRadius hidden in ITKV4_COMPATIBILITY"
BUG: Preserve Interpolate GetRadius behavior with ITKv4Compatibility
Revert "COMP: forgotten class for ITKV4_COMPATIBILITY in 2aae174"
BUG: HDF5 is clobbering ctest TIMEOUT variables
COMP: Fix not marked 'override' for ImageSink destructor
BUG: Use enable_if with SFINAE to dispatch
ENH: Add Vector constructor from C arrays with cast
COMP: Work around uninitialized value warnings
ENH: Update ITKv4 registration example to use resample over warp
BUG: Specify specific CircleCI docker image with platform
COMP: Address compilation warning with aggregate initializer
BUG: Specify specific CircleCI docker image with platform
ENH: Adding VS2019 v142, VS2017 v140 Azure Pipelines on merge
DOC: Tweak internal documentation in SliceImageFilter
BUG: Address bug with small size in output of SliceImageFilter
ENH: Add more test cases for the SliceImageFilter
COMP: Address internal compiler error on MSVC 19.0.24234.1 (v140)
ENH: Add check expected input in HistogramMatchingImageFilter
COMP: Add missing enum type_name from prior enum declaration style
Csaba Pinter @cpinter (2):
BUG: Fix loading of DICOM files with no preamble
ENH: Add test for DICOM without preamble for DCMTK and GDCM
Davis Vigneault @DVigneault (1):
BUG: Make BuildCellLinks method const
Dženan Zukić @dzenanz (32):
BUG: number of work units was greater than 1 even for 1 thread
BUG: fix a crash with ITK_DEFAULT_MAX_THREADS greater than 250
BUG: resample filter no longer triggers unnecessary exception
COMP: change export specification to template for un-specialized method
COMP: forgotten class for ITKV4_COMPATIBILITY in 2aae174
ENH: use double-conversion's CMake targets
COMP: fix warning about missing override in CastImageFilter
DOC: wrong class name for PlatformMultiThreader
COMP: get rid of MSVC's warning 4661
ENH: enable GaussianInterpolateImageFunction to work with streaming
STYLE: reduce space in ivar declarations
STYLE: ITK indentation style in test
STYLE: invert the name and internal logic of waiting for threads
BUG: ThreadPool::DoNotWaitForThreads did not work properly
STYLE: Add ITK prefix to testing macros in release branch
DOC: invocation of AddWork uses -> because instance is always a pointer
ENH: updating remote modules
ENH: PoolMultiThreader uses one less thread
ENH: documenting supported compilers
ENH: updating remote modules
STYLE: more consistent code formatting in test driver
BUG: offset was not updated after changing Euler angle order (ZYX)
Fix broken link in Data.md
ENH: support RGB image in windowed sinc interpolation
ENH: support RGB image in windowed sinc interpolation
ENH: updating remote modules
ENH: back-porting #1165 to support Visual Studio 2019
ENH: updating remote modules
COMP: fixed enum name error when legacy is OFF and ITK_USE_GPU is ON
ENH: removing deprecated Python functionality: imp
ENH: removing deprecated Python functionality: sys.version_info 2/3
ENH: removing deprecated Python functionality: import print_function
Francois Budin @fbudin69500 (4):
BUG: ImageBase regions and ImageRegion properties are returned as reference
DOC: Add ITK 5.0 release notes
BUG: m_NumberOfPointPixels was set equal to m_NumberOfPoints
ENH: Adds swig include directory to command line
GDCM Upstream (1):
GDCM 2019-05-22 (cc5358a1)
Genevieve Buckley @GenevieveBuckley (1):
BUG: All exceptions must be derived from python's BaseException class
Hans J. Johnson @hjmjohnson (64):
ENH: Update SphinxExamples to lastest master branch
COMP: Add attribute for large do...
ITK 5.0.1
ITK 5.0.1 Release Notes
We are happy to announce the Insight Toolkit (ITK) 5.0.1! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
Python Packages
ITK Python packages can be installed by running:
pip install itk
or to install the conda package, run:
conda install -c conda-forge itk
Software Guide
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
ITK 5.0.1 is the first patch release that addresses issues identified in the major 5.0.0 release. For more details on ITK 5, see the ITK 5.0.0 Release Notes.
This release improves support for ITK's use in Dask, the scientific Python distributed computing library, addresses a number of build and runtime corner cases, and makes updates to the Software Guide for ITK 5. For more details, see the Changelog below. Thank you to everyone who contributed to the release.
What's Next
Join us in the creation of advanced, open source scientific image analysis tools. The ITK Examples are currently undergoing a major integration and update effort lead by community member Hans Johnson -- your participation is welcome. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
We have a soft commitment to backwards compatibility to address any potential API or architectural issues until the next feature release. Stay tuned for upcoming announcements on ITK's integration with modern web technologies and improved support for Remote Module development on GitHub.
Enjoy ITK!
Changes from 5.0.0 to 5.0.1
Bradley Lowekamp (8):
BUG: Fix ProcessObject::RemoveOutput for null objects.
BUG: Use ProcessObject GetInput to obtain base pointer
ENH: Add testing for CastImageFilter for more type conversions
BUG: Restore support for Cast between explicitly cast-ed pixel type
BUG: Install FFTW headers in same location as ITK
COMP: Fix not marked 'override' for ImageSink destructor
BUG: Use enable_if with SFINAE to dispatch
BUG: Specify specific CircleCI docker image with platform
Dženan Zukić (5):
BUG: resample filter no longer triggers unnecessary exception
COMP: forgotten class for ITKV4_COMPATIBILITY in 2aae174
COMP: fix warning about missing override in CastImageFilter
STYLE: Add ITK prefix to testing macros in release branch
ENH: documenting supported compilers
Francois Budin (2):
BUG: ImageBase regions and ImageRegion properties are returned as reference
DOC: Add ITK 5.0 release notes
GenevieveBuckley (1):
BUG: All exceptions must be derived from python's BaseException class
Matthew McCormick (16):
ENH: New content links for ITK 5.0.0
STYLE: DeformableRegistration2 line length warnings
COMP: SpatialObjectsHierarchy Software Guide newline
BUG: Add test/CMakeLists.txt stub to NumPy bridge
COMP: Provide NumericTraits<complex<T>>::ZeroValue() definition
BUG: Do not require PyBUF_WRITABLE in GetArrayViewFromImage
DOC: Update supported Python versions warning
BUG: Add PEP 366 __package__ support to ITKLazyModule
BUG: Release the Python Global Interpreter Lock (GIL) during execution
STYLE: Apply ITK Style Guidelines to itkPyCommand.cxx
BUG: itk::PyCommand ensures the GIL state
BUG: Support pickling LazyITKModule with cloudpickle
BUG: Add Pipeline name to Azure configuration
DOC: Update Azure Pipelines badge URL's
BUG: Add wrapping for TransformMeshFilter
ENH: Bump itkVersion.cmake for 5.0.1
Pablo Hernandez-Cerdan (1):
BUG: Fix COMPILE_DEFINITIONS of castxml
Stephen Aylward (4):
ENH: Updated Spatial Object tex to match ITKv5
BUG: Fixed spelling mistakes and use of plural member functions
BUG: Fix grammar and naming mistakes in SpatialObject documentation
DOC: Fixed expected output of examples and documentation
yjcchen0913 (1):
BUG: Ensure strict weak ordering in HessianToObjectnessMeasure's sort
ITK 5.0.0
ITK 5.0.0 Release Notes
We are happy to announce the Insight Toolkit (ITK) 5.0.0! 🎉 ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.0.0 is a major release that features an incredible number of improvements: This includes major enhancement in the development process, major code refactoring, addition of important features, improvement of ITK Python wrapping, and more.
Python Packages
ITK Python packages can be installed by running:
pip install itk
or to install the conda package, run:
conda install -c conda-forge itk
Software Guide
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Montaging for microscopy imaging files with the new ITKMontage remote module: High-Performance, Open-Source Microscopy Image Montaging. Matthew McCormick , Dženan Zukić , François Budin , Michael Jackson, Dennis Dimiduk , David Rowenhorst , Sean Donegan, and Michael Groeber. WBIR 2018.
ITK on GitHub
An important step has been taken to faciliate participation of the community in the development of ITK: The official repository was moved to GitHub! This move includes ITK's main repository, as well as many other ITK projects such as the ITKExamples, and many ITK remote modules. It is now very easy for anyone to participate in the development of the library. This has already been a success with many new authors getting involved and submitting patches through the GitHub pull-request mechanism. This change also includes moving the issue tracker to the GitHub issue tracker where any problem encountered with ITK should be reported. ITK's GitHub migration was explained in more detail in ITK 5.0 Beta 3: GitHub. Finally, moving ITK to GitHub made it straightforward to use Microsoft Azure Pipeline Continuous Integration platform: Each pull-request is tested on all 3 major platforms (Windows, Linux, MacOS) and Python builds can be requested to ensure that a patch can be integrated.
C++11
Major C++ code refactoring brought dramatic improvements to ITK's API and performance (see ITK 5.0 Alpha 1: Modern C++ for more details). ITK now uses the C++11 standard allowing the developers full access to its new powerful features such as range-based loops, constexpr, lambda expressions, and uniform initialization syntax. Using C++ 11 also removes the necessity of many ITK macros (e.g. ITK_NULLPTR
, ITK_DELETED_FUNCTION
) which have equivalents in the new standard. This also leads to changes in style to match the C++ 11 best practices. This includes replacing typedef
calls with the using
keyword to improve source code readability. ITK's C++ code is easier to read, understand, and maintain!
Thread Pool
This new release of ITK also integrates big performance improvements thanks to the refactoring of the multithreading infrastructure with a thread pool available by default, and the possible usage of the Intel Threading Building Blocks (TBB) threading backend (see ITK 5.0 Alpha 2: Performance for benchmarks).
Spatial Objects
Additionally, a major upgrade of the ITK Spatial Object framework, which provides a representation of objects and the mechanism to specify their spatial relationship relative to other objects in a scene, was integrated in this new version of ITK. The new code improves consistency in the programming interface and simplifies implementation and usage (more details in ITK 5.0 Release Candidate 2: Spatial Object’s.
New Features
Other new features in this ITK release include new algorithms, better mesh support (see ITK 5.0 Release Candidate 1: Meshes), new global variable model using one singleton, and better streaming capabilities.
Third Party Libraries
Eigen, a C++ library for linear algebra, was integrated in ITK and gradual transition from VXL to Eigen for Linear algebra is planned. Many third party libraries were updated: VNL, DCMTK, GDCM, HDF5, KWSys, MetaIO, Zlib, GIFTI, nifti, pygccxml.
Remote Modules
Remote modules, which allow easy integration of new image processing algorithm in ITK, were updated and new Python packages compatible with this new release of ITK were created. Four new remote modules were also added to ITK: PhaseSymmetry, IOOpenSlide, Montage, and BSplineGradient (description of the modules in ITK 5.0 Beta 3: GitHub).
Python
Traditionally, ITK in Python had to be used through an object-oriented interface. In this new release, we have added a functional interface which is more Pythonic and should be more familiar to Python programmers. Examples on how to use this new procedural interface are available in ITK 5.0 Beta 1: Pythonic Interface.
Congratulations
Congratulations and thank you to everyone who contributed to this release. Of the 49 authors, we would like to specially recognize the new contributors, Isaiah Norton, maekclena, Rashad Kanavath, Bai Shi, Hui Xie, Martino Pilia, Ally Warner, pierre33, Chao Wu, Gregory C. Sharp, Bryce A Besler, Kwame Kutten, Mihail Isakov, Jerome Schmid, Roman Grothausmann, Alexis Girault, Gabriel A. Devenyi, Marian Klymov, Thomas Janvier, and Forrest Li.
Migration to ITKv5
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.
What's Next
Join us in the creation of advanced, open source scientific image analysis tools. Get started with the ITK examples. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
We have a soft commitment to backwards compatibility to address any potential API or architectual issues until the next feature release. Stay tuned for upcoming announcements on ITK's integration with modern web technologies and improved support for Remote Module development on GitHub.
Enjoy ITK!
Changes from 5.0 RC 2 to 5.0.0
Alexis Girault @agirault (4):
ENH: Compare images converted from and to VTK in ITKVtkGlue tests
ENH: Pass directions in VTKImage import/export classes
ENH: Throw exception when necessary while importing a vtk image
BUG: Ignore calls to the direction APIs in VTK if lower than 8.90
Bradley Lowekamp @blowekamp (46):
COMP: Address const char[] conversation warning
BUG: Fix leaking PNGIO resources during exception
BUG: Remove redundent fclose on PNG file pointer
ENH: Add Valgrind suppression file for Ubuntu 18.04 LTS
BUG: Update FEM test for new spatial objects
COMP: Correct continuous index type
BUG: Address valgrid defects related to the PointSpatialObject
BUG: Fix ownership of environment variable value
BUG: Fix leak in SpatialObject InternalClone method
ENH: Update a couple example to use the resample instead of warp
BUG: Set all component of 3D points
BUG: Add named output support to StreamingImageFilter
ENH: Deprecate VectorResampleImageFilter
ENH: Consolidating setting compression level interface to ImageIOBase
ENH: Implement InternalSetCompressor method in ImageIOs
DOC: Add compression documentation to ImageIOs
ENH: Use the empty string "" for the default compressor
ENH: Add compression level support to NRRD IO
ENH: Improve TIFF ImageIO compression testing
ENH: Add base class for generic streaming processes
ENH: Add ImageSink base filter class
ENH: Use streaming base class for LabelStatisticsImageFilter
ENH: Use named input in LabelStatisticsImageFilter
ENH: Add streaming support to StatisticsImageFilter
ENH:...
ITK 5.0 Release Candidate 2: Spatial Object's
We are happy to announce the Insight Toolkit (ITK) Release Candidate 2! 🎉 This will be the final release candidate before the 5.0.0 release, and the community is encouraged to adopt 5.0 RC 2 in ITK-based applications.
Python Packages
ITK Python packages can be installed by running:
python -m pip install --upgrade pip
python -m pip install --upgrade --pre itk
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
Image denoising with the new ITKTotalVariation remote module. Left: Transmission electron microscopy image of pectin. Right: Denoised image.
This release features a major upgrade to the ITK Spatial Object framework, led by Stephen Aylward, with contributions from Hastings Greer, Forrest Lee, Niels Dekker, Dženan Zukić, and Hans Johnson. In ITK, a itk::SpatialObject
provides a representation of objects and the mechanism to specify their spatial relationship relative to other objects in a scene. Objects can be images but also abstract, parametric entities, such as a ellipse, box, or arrow, or point-based, such as a tube, contour, or surface. Objects can be organized into spatial hierarchies.SpatialObject
s are key for model-based registration, integration of segmentation results in multiple formats, conversions to and from images, and capturing spatial relationships between structures.
In ITK 5, the SpatialObject
framework was refactored to improve consistency in the the programming interface and simplify implementation and usage. As a result, incorrect or unexpected behaviors are avoided. Complexity and dependency were reduced by removing a dependency on the VNL tree data structures. Additionally, IndexSpace was removed from the API of all SpatialObject
s to prevent ambiguity while providing a consistent and intuitive interface. Only two reference spaces are consistently and explicitly available in the API: ObjectSpace and WorldSpace. ObjectSpace is the space local to each object, where the object's parameters are defined. WorldSpace is the coordinate system defined by the top-level SpatialObject
in a hierachy, which is defined by parent-child object relationships. Only two transforms are now consistently and explicitly available in the API: ObjectToParent transform and ObjectToWorld transform. The ObjectToParent transform moves an object within its parent's ObjectSpace. The ObjectToWorld transform is derived from component ObjectToParent transforms and is provided for convenience and to reduce redundant computations. The API is now more explicit regarding the space that an operation applies to. For instance, IsInside(point)
is now IsInsideInObjectSpace(point)
or IsInsideInWorldSpace(point)
. For more information on the SpatialObject
s changes, see the ITK 5 Migration Guide.
The Python package synchronization infrastructure for static global variables was refactored to support more variables and permit future additions to the singleton. This will prevent the need to rebuild remote module binary Python packages following future releases of ITK 5. However, current remote module Python packages that use ITK 5 should be rebuilt and republished for ITK 5.0 RC 2.
For an overview of ITK 5's transition to modern C++, performance-related changes, the new, Pythonic API, the project's migration to GitHub, and Mesh improvements, see the ITK 5 Alpha 1: Modern C++, ITK 5 Alpha 2: Performance, ITK 5 Beta 1: Pythonic Interface, ITK 5 Beta 3: GitHub and ITK 5 Release Candidate 1: Meshes release announcements.
Tomographic phantom reconstruction with the new Reconstruction Toolkit (RTK) remote module.
New Remote Modules
ITKIOScanco
: read and write Scanco microCT .isq files.ITKTotalVariation
: total variation image denoising.ITKRTK
: the Reconstruction Toolkit provides high performance implementations of advanced tomographic image reconstruction algorithms.ITKThickness3D
: compute the skeleton and thickness transform from 3D images.
Performance Improvements
- Add MetaDataDictionary move support.
- MetaDataDictionary uses copy-on-write.
itk::Barrier
is now deprecated: replace with the new multi-threading functions.- Range-based for loops supported in
itk::FixedArray
. - Major performance improvements to TimeProbe, ResourceProbe constructor (issue #350).
Documentation
- Repository README files were migrated to Markdown.
Infrastructure
- Continuous code coverage builds from Azure Pipelines.
- Better support for unicode in KWSys.
itksys::hash_map
anditksys::hash_set
are deprecated in favor ofstd
equivalents.- New GitHub pull request templates and issue templates.
- New scripts added to update ITK remote modules.
Core
itk::SpatialObject
framework refactored (see release notes introduction).- Initial streaming support added to
itk::ResampleImageFilter
for linear transforms.
Third Party
- Eigen 3 updated to the latest version.
- Better support for building against a system Eigen.
- GDCM updated to the latest version.
- HDF5 updated to 1.10.4.
- ITKVtkGlue support for VTK with
VTK_RENDERING_BACKEND
set toNone
. - KWSys updated to the latest version.
- MetaIO updated to the latest version.
- VXL updated to the latest version.
- MINC updated to the latest version.
Python
- Static variable synchronization method refactored; ITK 5 remote module Python packages need to be rebuilt against 5.0 RC 2.
- Add wrapping for
itk.PCAShapeSignedDistanceFunction
. - Docstrings added to snake case functions.
- Python tests should now be defined in /wrapping/test/CMakeLists.txt to exclude their definition when wrapping is not enabled.
- Conversion between ITK matrices and NumPy arrays is now supported.
- Additional wrapping types for
itk.ImageDuplicator
. - Additional types supported for NumPy <-> ITK Image conversion.
- Additional wrapping and typemaps for
std::vector<itk::Image<...>::Pointer>
. - Add wrapping for
itk.TriangleMeshToBinaryImageFilter
. - Add wrapping for
itk.ExtrapolateImageFunction
. - Add wrapping for
itk.WindowedSincInterpolateImageFunction
.
To install the 5.0 Release Candidate 2 Python packages, run
python -m pip install --upgrade pip
python -m pip install --upgrade --pre itk
What's Next
There are many more 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.
The ITK 5.0.0 final release is scheduled for May.
Enjoy ITK!
Changes from 5.0 RC 1 to 5.0 RC 2
Bradley Lowekamp @blowekamp (14):
ENH: Add move support to the MetaDataDictionary object
PERF: Implement copy on write for MetaDataDictionary
ENH: adding MetaDataDictionary GTests
BUG: Do not modify MetaDataDictionary with operator[] const
ENH: Improve ExposeMetaData efficiency
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
COMP: Address OSX Clang "direct access" linkage warnings
ENH: Add Azure Pipelines script for coverage
BUG: Fix Li threshold calculator for negative image values
...
ITK 4.13.2
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
ITK 5.0 Release Candidate 1: Meshes
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 of Mesh
and PointSet
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 experimental itk::ImageBufferRange
, itk::IndexRange
, and itk::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):
...
ITK 5.0 Beta 3: GitHub
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
and pr
, are provided to submit pull requests for review and download submitted pull requests for local testing.
A new cross platform script, ITK/Utilities/UploadBinaryData.sh
, is available to upload binary testing data. This script, invoked directly or through the data-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
- 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 b...
v5.0b02
ITK 5.0 Beta 1
We are happy to announce the first beta release for ITK 5. This release features an additional, more Pythonic interface to filters. This interface is more familiar in Python and facilitates rapid prototyping. ITK 5.0 Beta 1 also includes many performance-related improvements, such as a pure C++11 thread pool by default, an HDF5 update to 1.10, new frequency domain iterators, new neighborhood range classes, and a new multi-dimensional, multi-component superpixel class.
For an overview of ITK 5 performance-related changes and the transition to modern C++, see the ITK 5 Alpha 1: Modern C++ and ITK 5 Alpha 2: Performance release announcements.
Python Interface
The traditional, object-oriented interface to ITK's Python classes allows the composition of filters in a pipeline. After setting up a chain of filters, Update()
is called at the end of the pipeline. This facilitates streaming of very large images that may exceed the system's memory capacity. For example,
import itk
input_image = itk.imread('input.nrrd')
ImageType = type(input_image)
radius = 2
median_filter = itk.MedianImageFilter[ImageType, ImageType].New()
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 = 2
output_image = itk.median_image_filter(input_image, radius=radius)
itk.imwrite(output_image, 'output.nrrd')
In this case, the type of the filter is implicitly determined by the input image type. Immediately, the filter is executed, and the result is directly returned. Object parameters defined by Set*
methods can be specified in the filter call with keyword arguments. The Pythonic, snake case form of these parameters can also be used.
PEP8 function naming has also been applied to the NumPy bridge.
array = itk.GetArrayFromImage(image)
array = itk.array_from_image(image)
Similar functions names are available when creating NumPy array views, itk.Image
's from NumPy arrays, and converting VNL vector and matrices to NumPy arrays.
To test the 5.0 Beta 1 Python packages, run
python -m pip install --upgrade pip
python -m pip install --upgrade --pre itk
Performance Improvements
Based on experiences since initial changes introduced in ITK 5 Alpha 2, many notable performance improvements have been made.
- The default thread pool is now fully backed by C++11 threading primitives.
- A new
itk::MultiThreaderBase::ParallelizeArray
function is available to quickly and easily dispatch C++11 lamda's or std::function's on linearly indexed containers, similar 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...
ITK 4.13.1
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