Insight Toolkit (ITK) -- Official Repository. ITK builds on a proven, spatially-oriented architecture for processing, segmentation, and registration of scientific images in two, three, or more dimensions.
We are happy to announce the Insight Toolkit (ITK) 5.4 Release Candidate 2 is available for testing! :tada: ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.4 marks a significant feature update aimed at bolstering the project's long-term sustainability. Specifically, this release harnesses the power of Web3 technology to enhance the process of contributing new data for collaborators, streamline software release management for quicker and more efficient rollouts, and facilitate decentralized, cost-efficient, and redundant data storage for extended distribution purposes.
Since every local Git repository contains a copy of the entire project history, it is important to avoid adding large binary files directly to the repository. Large binary files added and removed throughout a project's history will cause the repository to become bloated, take up too much disk space, require excessive time and bandwidth to download, etc.
A solution to this problem which has been adopted by ITK is to store binary files, such as images, in a separate location outside the Git repository, then download the files at build time with CMake.
A "content link" file contains an identifying cryptographic hash or Content Identifier (CID). The content link is stored in the Git repository at the path where the file would exist, but with a .cid
extension appended to the file name. CMake will find these content link files at build time, download them from a list of server resources, and create symlinks or copies of the original files at the corresponding location in the build tree.
The CID is a self-describing hash following the multiformats standard created by the InterPlanetary Filesystem (IPFS) community. A file with a CID for its filename is content-verifiable. Locating files according to their CID makes content-addressed, as opposed to location-addressed, data exchange possible. This practice is the foundation of the decentralized web, also known as the dWeb or Web3. By adopting Web3, we gain:
Contributors to ITK can upload their data through a simple web app, (alt web3 link) that utilizes a free CID pinning service, web3.storage.
Data used in the ITK Git repository is periodically tracked in a dedicated Datalad repository, the ITKData DataLad repository. DataLad is a free and open source, Git-based distributed data management system that keeps track of data, ensures reproducibility, and supports collaboration. Versioned testing data trees can be browsed in a natural, nested directory / file layout, either via DataLad or IPFS's UnixFS storage.
The tracked data is stored across redundant locations so it can be retrieved from any of the following:
Testing data workflow. Testing or example data is uploaded to IPFS via the content-link-upload.itk.org web app. This pins the data on multiple servers across the globe. At release time, the data is also pinned on multiple servers in the USA and France and community pinners. At release time, the data is also stored in the DataLad Git repository, served on an Apache HTTP server, and served on the GitHub Pages CDN. At test time an ITK build can pull the data from a local cache, archive tarball, the Apache HTTP server, GitHub Pages CDN, or multiple IPFS HTTP gateways.
For more information, see our testing data documentation.
ITK 5.4 contains many additional improvements; highlights can be found below along with a more detailed changelog. For a summary of changes that continues our modern C++ evolution see our 5.4 Release Candidate 1 release notes.
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
itk.PhasedArray3DSpecialCoordinatesImage
image_from_vtk_image
itk.imread
supports a series_uid
kwarg for DICOM series selectionMANGLE_PREFIX
CMake variableitkTypeMacro
with itkOverrideGetNameOfClassMacro
Updated modules:
Congratulations and thank you to everyone who contributed to this release.
Of the 43 authors who contributed since v5.3.0, we would like to specially recognize the new contributors:
Nicklas Larsson, huangjxbq, Sankhesh Jhaveri, adrinkwater, FabioLolix, Vaibhaw, Ningfei Li, Max Aehle, Noah Egnatis, Federico Zivolo, Patrick Linnane, LAURENDEAU Matthieu, Shreeraj Jadhav, Shengpeng YU, Fernando Bordignon, and Andras Lasso.
Process improvements in this release will ensure more regular and frequent releases in the future. Listening to feedback from the community, we anticipate one additional 5.4 release candidate to enable testing of critical DICOM improvements. Our next release candidate will include improvements based on experiences with 5.4 RC 2. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
RegularStepGradientDescentBaseOptimizer
(1312fca3d2)Optimizers
classes coverage: get cost function derivate (bec6a42b7e)const
point iterators in itk::QuadEdgeMeshPolygonCell
(46c47e08b3)PrintSelf
implementation (3a73368734)itkCellInterfaceTest
to run as long as possible (e09713fbe9)itk::MRFImageFilter::PrintSelf
(a7a8254fe2)itk::Statistics::Histogram::ClipBinsAtEnds
(4179d83534)itkPrintSelfObjectMacro
to print smart pointers (20225e5b7a)itk::RGBGibbsPriorFilter
ivars (d28311fb8e)\sa
command (3ed75247e6)itk::ConformalFlatteningMeshFilter
Doxygen documentation (3a542d0d19)Video
(a22d0a840f)README
about issues vs. questions (27f450358c)MetaDataObject::EncapsulateMetaData
empty return doc warning (68ab83372a)MetaDataObject::EncapsulateMetaData
parameters (0595670b96)itk::Indent
class methods in header file only (3eb8fd7cdf)itk::Math
function parameter documentation (b87ed30059)RGBGibbsPriorFilter
class methods in header file only (4e5be8334d)RGBGibbsPriorFilter
(309a0535de)itkHistogramTest.cxx
(657b793d97)ITKIOTransformMINC
README
files (89e00d7ac8)ITKIOTransformMINC
class documentation (7caf7e3c70)itk::VertexCell
(2338bdc487)itk::LabelStatisticsImageFilter::PrintSelf
consistency (20124626ae)itk::TriangleCell
implementation (16f42267a0)ITK_TRY_EXPECT
macros in test (eacd1d24fa)itkNameOfTestExecutableMacro
macro in tests (395c8f44ea)constexpr
(8bc48815e5)ITK_TRY_EXPECT_NO_EXCEPTION
macro in IOTransformMINC
test (204d23a7e8)ITK_TEST_EXPECT_EQUAL
lh and rh comparison macro (56bd332807)itk::Math::FloatAlmostEqual
in comparisons (93d3d88c76)itkIOTransformMINCTest
(47df4f3567)itk::RGBGibbsPriorFilter
classname in its test filename (86e2e937c0)itk::RGBGibbsPriorFilter
ivar (452cb3f971)constexpr <type>
over struct
for image dimension (eaf25ef26b)itk::SLICImageFilter
basic methods (df51b3ffa2)itk::SLICImagetFilter
test (8930ed2da3)itk::fem
RTTI (9f1d99077f)itkHistogramTest.cxx
(397278f75f)this
to address self methods in RGBGibbsPriorFilter
(034cd067bb)vector
types (dc641cd7d7)MersenneTwisterRandomVariateGenerator::ResetNextSeed()
(ecd7bdae82)CreateInstance
has reference count 2 (f981aae69d)SetGlobalInstance
always returns true (9da299b85c)lock_guard<mutex>
in FFT configuration to deal with exception (a00eb3914d)lock_guard<mutex>
in FEMFactoryBase to deal with exception (c1e15a36d0)TransformFactory
(9baa34b699)ProcessObject
(997aa169a2)ProcessObject::VerifyPreconditions()
(c3ee320bf8)std::unique_lock
with std::lock_guard
in ThreadPool (1094cdde9a)threadId
, just pass nullptr
to _beginthreadex
(2ee34dde73)lock_guard<mutex>
in PlatformMultiThreader
classes (c4c3710d5f)lock_guard<mutex>
in PlatformMultiThreader::TerminateThread (e56c7bdf20)lock_guard<mutex>
in ParallelSparseFieldLevelSetImageFilter (5e1f0cf1c0)lock_guard<mutex>
in PDEDeformable Registration classes (873a724b92)std::clamp
(0c31b223ed)ITK_X_ASSERT
, just use assert
in constexpr
functions (e888f7bc2d)insert_or_assign
in SingletonIndex SetGlobalInstancePrivate (5c14067e53)SetGlobalInstancePrivate
return void
, instead of true
(eadc465c3f)Singleton
assume that SetGlobalInstance always returns true (6ec6328ed2)func
parameter (6d1c4c7ab7)SetGlobalInstance
and Singleton
(8598841db5)std::lock_guard
variables "lockGuard" (04100e62e0)InitializeFactoryList()
(82d7060408)std::bind
in ThreadPool::AddWork with lambda expression (75b99671a8)RegisterInternal()
(427972e600)MersenneTwisterGlobals
(89d4735e05)PrintSelf
(8f61111)itkTypeMacro
with itkOverrideGetNameOfClassMacro
(5428594)We are happy to announce the Insight Toolkit (ITK) 5.3 Release Candidate 2 is available for testing! :tada: ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
ITK 5.3 is a feature release that accelerates performance, provides new segmentation and shape analysis algorithms, and makes over 200 more improvements. For more information about performance improvements, see the 5.3 RC 1 Release Notes.
ITK 5.3 RC 2 highlights a new remote module, ITKGrowCut, which segments a 3D image from user-provided seeds. This method was popularized by 3D Slicer and was improved for inclusion in Seg3D with support from the National Institute of General Medical Sciences (NIGMS) of the National Institutes of Health (NIH) under grant numbers P41 GM103545 and R24 GM136986. This module can also be scripted in Python through a package installed with:
pip install itk-growcut
Seeds for ITKGrowCut module.
Results produced by ITKGrowCut module.
Python Packages
Install ITK Python packages with:
pip install --upgrade --pre itk
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
TransformToDisplacementField
is now available in Python.itk.imread
understands pathlib.Path
'srepr
for itk.Matrix
np.asarray
works on itk.Matrix
DCMTKImageIO
wrapping addressedMakePoint
, MakeVector
, MakeIndex
, MakeSize
.itk::mpl
meta-programming functions replaced by C++14 equivalentsconstexpr
, auto
itk::TransformGeometryImageFilter
: applies a rigid transform to an Image
's metadata.New remote modules:
Updated modules: AdaptiveDenoising, AnisotropicDiffusionLBR, BSplineGradient, BoneEnhancement, BoneMorphometry, Cuberille, GrowCut, HASI, HigherOrderAccurateGradient, IOFDF, IOScanco, IsotropicWavelets, MinimalPathExtraction, Montage, MorphologicalContourInterpolation, RTK, SimpleITKFilters, SkullStrip, SplitComponents, Strain, TextureFeatures, Thickness3D, TotalVariation, TubeTK, and Ultrasound.
Congratulations and thank you to everyone who contributed to this release.
Of the 41 authors who contributed since v5.2.0, we would like to specially recognize the new contributors:
Pranjal Sahu, Darren Thompson, Tomoyuki SADAKANE, Oleksandr Zavalistyi, Jose Tascon, Kian Weimer, Michael Kuczynski, Ebrahim Ebrahim, Philip Cook, ambrozicc1, Jason Rudy, josempozo, Andreas Gravgaard Andersen, and Hastings Greer.
We anticipate an additional release candidate following community testing before the 5.3.0 release. The following release candidate(s) will improve related documentation and make further improvements. Please try out the current release candidate, and discuss your experiences at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
Enjoy ITK!
override
(1daf2182f8)override
(7ef2496a26)itk::SimilarityIndexImageFilter
class test file style (ada00b5a00)PrintSelf
methods (286fca2694)itkLabelImageToLabelMapFilterTest
style consistent (014c08fc68)PrintSelf
methods (ef5a73456a)IODCMTK
module test style consistent (9cf28765c8)FFT
module test style consistent (59f16e7094)FastEvaluate(u)
to BSplineDerivativeKernelFunction
(760ae1246c)RegisterInternalFactoryOnce<TFactory>()
to ObjectFactoryBase (9f29a52d6c)IdentityTransform::m_ZeroJacobian
(eec9fe6705)itk::Transform
data member m_DirectionChange
(0539a2c4dd)typename
+ dependent type (c54ad6715a)IOFactoryRegisterManager
constructors explicit
(72782b8f01)IOFactoryRegisterManager
(49c910a1fe)IOFactoryRegisterManager
implementations (f56cc7ef17)TRealValueType{ x }
syntax (c9b05ab2f9)auto
for declaration of variables initialized by New()
(828453d1bf)override
(eb6001490b)auto
section (fb9eb1e)auto
for variables initialized by New()
(49c2bf0)auto
for declaration of variables initialized by New()
(d7f79dc)We are happy to announce the Insight Toolkit (ITK) 5.2.1! :tada: ITK is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration.
Python Packages
Install ITK Python packages with:
pip install --upgrade itk
Guide and Textbook
Library Sources
Testing Data
Unpack optional testing data in the same directory where the Library Source is unpacked.
Checksums
ITK 5.2.1 is a patch release that makes improvements to issues found in the 5.2.0 release. For more details on ITK 5.2, see the ITK 5.2.0 Release Notes.
This release addresses various issues like improved combination of itk
's native thread pool with Python's multiprocessing
module in contexts like MONAI and Dask. Other improvements include more robust label map statistic computation, expanded Python support for additional datatypes, fixes for tube spatial objects when processing with the TubeTK module, support for GCC 11, and compatibility with the C++20 and C++23 standards. A detailed list can be found in the changelog below.
Join us in the creation of advanced, open source scientific image analysis tools. Take part in the community discussion at discourse.itk.org. Contribute with pull requests, code reviews, and issue discussions in our GitHub Organization.
The first release candidate for ITK 5.3, the next feature release, is anticipated in September.
Enjoy ITK!
Similarity3DTransform::SetScale
should recompute m_Offset
(dd893faf8a)float
wrappings for itkSymmetricSecondRankTensor (5378dae447)long long
specifier C++ and mangling types (cf51385)itkNameOfTestExecutableMacro
macro for test names (e116243)