Insight Toolkit for N-dimensional image processing, segmentation, and registration in medical and scientific applications
—
Compute distance maps, signed distance functions, and distance-based operations.
def danielsson_distance_map_image_filter(input):
"""
Danielsson distance map computation.
Parameters:
- input: itk.Image - Binary input image
Returns:
itk.Image - Distance map
"""
class DanielssonDistanceMapImageFilter:
"""Exact Euclidean distance map using Danielsson's algorithm."""
def signed_danielsson_distance_map_image_filter(input, inside_is_positive=False):
"""
Signed distance map.
Parameters:
- input: itk.Image - Binary input image
- inside_is_positive: bool - Sign convention
Returns:
itk.Image - Signed distance map
"""
def signed_maurer_distance_map_image_filter(input, squared_distance=False, use_image_spacing=True, inside_is_positive=False):
"""
Maurer signed distance map (more efficient for large images).
Parameters:
- input: itk.Image - Binary input image
- squared_distance: bool - Compute squared distances
- use_image_spacing: bool - Account for image spacing
- inside_is_positive: bool - Sign convention
Returns:
itk.Image - Signed distance map
"""def hausdorff_distance_image_filter(input1, input2):
"""
Compute Hausdorff distance between binary images.
Parameters:
- input1: itk.Image - First binary image
- input2: itk.Image - Second binary image
Returns:
float - Hausdorff distance
"""
class HausdorffDistanceImageFilter:
"""Compute Hausdorff distance between segmentations."""
def GetHausdorffDistance(self):
"""Get the computed Hausdorff distance."""
def GetAverageHausdorffDistance(self):
"""Get the average Hausdorff distance."""
def contour_directed_mean_distance_image_filter(input1, input2):
"""Directed mean distance between contours."""
def contour_mean_distance_image_filter(input1, input2):
"""Mean distance between contours."""import itk
binary = itk.imread('binary.png', itk.UC)
# Distance map
distance_map = itk.signed_maurer_distance_map_image_filter(
binary,
use_image_spacing=True,
inside_is_positive=False
)
itk.imwrite(distance_map, 'distance.png')
# Hausdorff distance between two segmentations
seg1 = itk.imread('seg1.png', itk.UC)
seg2 = itk.imread('seg2.png', itk.UC)
ImageType = itk.Image[itk.UC, 2]
hausdorff_filter = itk.HausdorffDistanceImageFilter[ImageType, ImageType].New()
hausdorff_filter.SetInput1(seg1)
hausdorff_filter.SetInput2(seg2)
hausdorff_filter.Update()
distance = hausdorff_filter.GetHausdorffDistance()
print(f"Hausdorff distance: {distance}")Install with Tessl CLI
npx tessl i tessl/pypi-itkdocs
guides
reference