Dưới đây là mã C # cho phép biến đổi khoảng cách euclide bình phương 1D theo bài báo của Felundredzwald & Huttenlocher's :
private static void DistanceTransform(double[] dataInput, ref double[] dataOutput)
{
int n = dataInput.Length;
int k = 0;
int[] v = new int[n];
double[] z = new double[n + 1];
v[0] = 0;
z[0] = Double.NegativeInfinity;
z[1] = Double.PositiveInfinity;
double s;
for (int q = 1; q < n; q++)
{
while (true)
{
s = (((dataInput[q] + q * q) - (dataInput[v[k]] + v[k] * v[k])) / (2.0 * q - 2.0 * v[k]));
if (s <= z[k])
{
k--;
}
else
{
break;
}
}
k++;
v[k] = q;
z[k] = s;
z[k + 1] = Double.PositiveInfinity;
}
k = 0;
for (int q = 0; q < n; q++)
{
while (z[k + 1] < q)
{
k++;
}
dataOutput[q] = ((q - v[k]) * (q - v[k]) + dataInput[v[k]]);
}
}
Điều này có thể dễ dàng được sử dụng cho hình ảnh nhị phân và thang độ xám bằng cách áp dụng nó đầu tiên trên các cột hình ảnh và sau đó là hàng (hoặc ngược lại, tất nhiên).
Việc chuyển đổi thực sự rất nhanh.
Dưới đây là hình ảnh nguồn và đầu ra:


Các pixel đen có giá trị 0 và màu trắng có một số giá trị lớn (phải lớn hơn khoảng cách bình phương lớn nhất có thể có trong ảnh nhưng không phải là vô cực) để biến đổi trả về khoảng cách từ các pixel đen và các pixel trắng được sử dụng.
Để có được biến đổi khoảng cách euclide thực sự, chỉ cần lấy căn bậc hai của mỗi pixel từ hình ảnh đầu ra.