DistanceTransforms.jl is a Julia package that provides efficient distance transform operations on arrays (CPU & GPU).
using Pkg
Pkg.add("DistanceTransforms")
using DistanceTransforms
# Create a simple binary array
arr = [
0 1 1 0
0 0 0 0
1 1 0 0
]
# Apply distance transform
result = transform(boolean_indicator(arr))
- Fast CPU implementation using the Felzenszwalb algorithm
- Multi-threading support for enhanced CPU performance
- GPU acceleration for NVIDIA (CUDA), AMD (ROCm), and Apple (Metal)
- Simple API with unified transform interface
- Multi-dimensional support for 1D, 2D, and 3D arrays
# Compare single vs multi-threaded performance
result = transform(arr; threaded = true) # default
result = transform(arr; threaded = false) # single-threaded
using CUDA
# Automatically uses GPU implementation for CUDA arrays
x_gpu = CUDA.CuArray(boolean_indicator(rand([0, 1], 100, 100)))
gpu_result = transform(x_gpu)
For Python users, check out distance_transforms, a Python wrapper providing the same functionality.
import numpy as np
import distance_transforms as dts
arr = np.random.choice([0, 1], size=(10, 10)).astype(np.float32)
result = dts.transform(arr)
If you use DistanceTransforms in your research, please cite:
@ARTICLE{10912438,
author={Black, Dale and Li, Wenbo and Zhang, Qiyu and Molloi, Sabee},
journal={IEEE Access},
title={Accelerating Euclidean Distance Transforms: A Fast and Flexible Approach with Multi-Vendor GPU, Multi-Threading, and Multi-Language Support},
year={2025},
volume={},
number={},
pages={1-1},
keywords={Transforms;Graphics processing units;Benchmark testing;Euclidean distance;Three-dimensional displays;Image segmentation;Hardware;Python;Metals;Arrays;Distance Transform;Hardware Acceleration;Hausdorff Distance;High Performance Computing;Image Processing;Medical Image Analysis;Parallel Computing;Segmentation;Skeletonization},
doi={10.1109/ACCESS.2025.3548563}}
For comprehensive documentation and examples, visit our documentation site.