原文地址:http://blog.sina.com.cn/s/blog_6c5a47d30102uxu3.html
最近用到了距离变换。
OPENCV 函数:void distanceTransform(InputArray src, OutputArray dst, int distanceType, int maskSize)
When maskSize == CV_DIST_MASK_PRECISE and distanceType == CV_DIST_L2 , the function runs the algorithm described in [Felzenszwalb04].In other cases, the algorithm [Borgefors86]
Intel ipp函数:
IppStatus ippiDistanceTransform_3x3_<mod>(const Ipp8u* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize, Ipp32s* pMetrics);
IppStatus ippiDistanceTransform_5x5_<mod>(const Ipp8u* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize, Ipp32s* pMetrics);
ippiNormInf(0) L∞, Δ = max(|x1 - x2|, |y1 - y2|),
ippiNormL1(1) L1, Δ = |x1 - x2| + |y1 - y2|,
ippiNormL2(2) L2, Δ = sqrt((x1 - x2)2 + (y1 - y2)2)
------------------------------------------------------------------------------------------------------------------
定义:二值图像,任意点到最近背景点的距离,一般为非零点到最近零点的距离。
例如下图,左为原图,F表示0,-表示255,为二值图像,右边给出了距离变换后各点的值。
L1,L2,∞的选择只是计算距离的方法不同而已。
DT计算已经有一些快速的成型的算法,不过对我而言只需要理解其含义,然后调用工具包接口即可。
------------------------------------------------------------------------------------------------------------------
Matlab也有相应的函数:
bwdist :Distance transform of binary image
但有更丰富的距离计算方法:
参考文献:
[Borgefors86]:Borgefors, Gunilla, Distance transformations in digital images. Comput. Vision Graph. Image Process. 34 3, pp 344–371 (1986)
[Felzenszwalb04]:Felzenszwalb, Pedro F. and Huttenlocher, Daniel P. Distance Transforms of Sampled Functions, TR2004-1963, TR2004-1963 (2004)