Distance Transforms
DistanceTransforms.jl
and distance_transforms
provides efficient, GPU-accelerated, distance transform operations for arrays in both Julia and Python. Distance transforms are essential in computer vision, image processing, and machine learning tasks.
Features
Feature | Description |
---|---|
๐ High Performance | Optimized algorithms for CPU and GPU |
๐งต Multi-threading | Parallel processing on CPU |
๐ฅ๏ธ GPU Acceleration | Support for NVIDIA (CUDA), AMD (ROCm), Apple (Metal), and Intel (oneAPI) |
๐ Python Integration | Full Python support via distance_transforms |
๐ Versatile Dimensions | Works with 1D, 2D, and 3D arrays |
๐ Well Documented | Comprehensive guides and examples |
Acknowledgements
This project would not be possible without several excellent Julia packages:
- KernelAbstractions.jl: Provides hardware-agnostic GPU code that runs across different GPU platforms
- AcceleratedKernels.jl: Makes it dead simple to write GPU kernels with normal Julia code
- PythonCall.jl: Powers the Python interoperability layer for seamless integration
- DLPack.jl: Enables zero-copy tensor sharing with PyTorch for efficient GPU operations
Why This Library?
Distance Transforms | ImageMorphology.jl | SciPy | |
---|---|---|---|
Fast Distance Transform | โ โ | โ | โ |
CPU Single-Threaded Support | โ | โ | โ |
CPU Multi-Threaded Support | โ | โ | โ |
NVIDIA/CUDA Support | โ | โ | โ |
AMD/ROCM Support | โ | โ | โ |
Apple/Metal Support | โ | โ | โ |
Intel/oneAPI Support | โ | โ | โ |
Python Integration | โ | โ | โ |
Choose Your Language
Julia
using DistanceTransforms
= rand([0, 1], 10, 10)
arr = transform(boolean_indicator(arr)) result
Python
import numpy as np
import distance_transforms as dts
= np.random.choice([0, 1], size=(10, 10)).astype(np.float32)
arr = dts.transform(arr) result
Installation
Julia
using Pkg
Pkg.add("DistanceTransforms")
Python
pip install distance_transforms
Citation
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}}
License
DistanceTransforms is available under the MIT License.