SimpleITK is a simplified interface to the Insight Toolkit (ITK) for image registration and segmentation
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
SimpleITK is a simplified interface to the Insight Toolkit (ITK) for medical and scientific image analysis. It provides 297+ image filters for registration, segmentation, filtering, and I/O operations with extensive NumPy integration.
pip install SimpleITKimport SimpleITK as sitk
import numpy as np
# Read, process, and write an image
image = sitk.ReadImage('input.png')
smoothed = sitk.SmoothingRecursiveGaussian(image, sigma=[2.0, 2.0])
sitk.WriteImage(smoothed, 'output.png')
# NumPy integration
array = sitk.GetArrayFromImage(image)
result = sitk.GetImageFromArray(array * 1.5)
result.CopyInformation(image) # Preserve metadataCentral data structure for n-dimensional images (2D, 3D, 4D) with pixel data and spatial metadata (origin, spacing, direction).
# Image properties
size = image.GetSize() # Dimensions
spacing = image.GetSpacing() # Physical spacing
origin = image.GetOrigin() # Physical originTwo interfaces for all operations:
FilterNameImageFilter() with SetParameter() and Execute()FilterName(image, param=value) convenience functionsBidirectional conversion with dimension order reversal: - SimpleITK: (width, height, depth) = (X, Y, Z) - NumPy: (depth, height, width) = (Z, Y, X)
| Operation | Function | Purpose |
|---|---|---|
| I/O | ReadImage(), WriteImage() | File operations |
| Smoothing | SmoothingRecursiveGaussian(), Median() | Noise reduction |
| Segmentation | BinaryThreshold(), ConnectedThreshold() | Region extraction |
| Registration | ImageRegistrationMethod | Image alignment |
| Morphology | BinaryErode(), BinaryDilate() | Shape operations |
| Transforms | Resample(), AffineTransform | Geometric operations |
sitkUInt8, sitkInt8, sitkUInt16, sitkInt16, sitkUInt32, sitkInt32
sitkFloat32, sitkFloat64
sitkVectorUInt8, sitkVectorFloat32 # Multi-component
sitkLabelUInt8, sitkLabelUInt16 # Segmentation maskssitkNearestNeighbor # No interpolation
sitkLinear # Linear interpolation
sitkBSpline # Cubic B-spline
sitkGaussian # Gaussian interpolationgaussian = sitk.DiscreteGaussianImageFilter()
gaussian.SetVariance(2.0)
output = gaussian.Execute(image)output = sitk.DiscreteGaussian(image, variance=2.0)image = sitk.ReadImage('input.dcm')
image = sitk.SmoothingRecursiveGaussian(image, sigma=[1.5, 1.5, 1.5])
image = sitk.RescaleIntensity(image, outputMinimum=0, outputMaximum=255)
image = sitk.Cast(image, sitk.sitkUInt8)
sitk.WriteImage(image, 'output.png')def progress_callback():
print(f"Progress: {filter.GetProgress():.1%}")
filter = sitk.DiscreteGaussianImageFilter()
filter.AddCommand(sitk.sitkProgressEvent, progress_callback)
output = filter.Execute(image)# Arithmetic (also available as Add(), Subtract(), etc.)
result = image1 + image2
result = image1 - image2
result = image1 * image2
result = image1 / image2
# In-place operations
image += 10
image *= 1.5
# Logical operations
result = image1 & image2
result = image1 | image2
result = ~image
# Comparison operations
mask = image > threshold
mask = (image >= lower) & (image <= upper)SmoothingRecursiveGaussian() for large sigma values (faster than DiscreteGaussian())GetArrayViewFromImage() for read-only NumPy access (no copy)SetGlobalDefaultNumberOfThreads() to control parallelizationCopyInformation() after NumPy processingCast() to convert between pixel typesGetArrayViewFromImage()Install with Tessl CLI
npx tessl i tessl/pypi-simpleitk@2.5.1