0 前言
欧几里得距离转换(Euclidean Distance Transform, EDT)简单的说即是以最常用的欧几里得距离作为
距离度量,找到每一个前景点到最近的背景点之间的距离。文中提及所有的算法中,均是将二维图片
转为两个一维向量的方式进行。
一些基本定义:
背景点为0,黑色,为感兴趣点,Voronioi elements,sites;
前景点为1:白色;
VR:某一背景点的VR指的前景点集合,这些前景点到此背景点的距离比到其他背景点距离都要短。
VS:某一前景点的VS指的是背景点的集合,这些背景点到此前景点距离比到其他前景点距离都要短。
1. Saito的算法:
step1:1-D Transformation
上到下,计算每一行中前景点到本行背景点距离最近的平方,得到中间结果G;
如下图,(a)为原图(b)为同一行的距离平方图,即G,公式如下:
step2:2-D Transformation
从左到右,对每一列,对中间结果G进行操作,计算本列背景点与本行背景点距离平方和的最小值,得到距离图(Distance Map)H;
如下图(4即使最近距离的平方)。
2. Maurer的算法对Saito改进:
第一步中的1-D Transformaion是一样的。只不过由先行后列改为先列后行。
第二步的改进基于一个事实:
对于每一列来说,并不是所有的sites(背景)都对Distance Map起到关键作用,而仅仅取决于与这一行有交集的VR,这里用到VR的概念。
先列后行,在经过列的1-DT后,找到与当前行有交集的VD,这些对Distance Map有作用,其他的删除。并只保留最近的VR。
如图,这样与step2相比,每一行需要计算的前景点数量由图(a)变为最终的图(c)
判断哪个VR与这一行R有交集的标准如下两条(相关VR的选取):
1. 在每一列的背景点(sites)中,只保留这一列与R最近的sites,如上图(a)到(b)的变化;
2. 在第一步保留的点中,有三点u、v、w按照横坐标由小到大排列,即:。
是在R与u和v垂直平分线的交点,同理,如下图所示。如果,即在的右
侧,则删除v,参照上图(b)到(c)的变化。
保留下的背景点可以按照从左至右的顺序排列保存。算法复杂度为:。
3. Felzenszwalb算法[3]
该算法可以在线性的时耗进行,推荐。
表示p点EDT的计算,此处已转换为一维空间,对于一行n个点,计算p
的EDT公式如下:
q也是此列中的一点,f(q)可以看做是q点的消耗函数(对于二维图像,可以认为是
上面所述的1-D Transformation)。是一个以( q, f(q) )为最小值的抛物线。对
于n个q点,即有n个以( q, f(q) )为最小值的抛物线,如下图。
因此,对于属于[0, n-1]的p来说,其EDT就是这些抛物线的下包络(lower envelope)。
算法的步骤就是首先计算这些抛物线的下包络,然后根据下包络得到没一点p的EDT。
这个算法最重要的步骤就是下包络的计算。
在此,有一个事实是:图中任意两个抛物线有且仅有一个交点(intersect point)。这个
交点在一维坐标轴的投影位置s计算如下式:
其中,r,q为两个抛物线的凹点。可以看到若q<r,在交点的左侧,q所属抛物线低于r的,在交点右侧反之。
这里,用两个数组来从左至右顺序的得到下包络。
下包络中,第i个抛物线的水平位置(凹点)保存在数组v[i];下包络中第i个个抛物线的范围保存在z[i]和z[i+1](每个z[i]保存的是交点),k表
示下包络中包含的抛物线个数。
现有一新的抛物线,与v中最右侧的抛物线k比,只有两种可能,交点s在z[k]左边或z[k]右面,如下图所示。
若:
1:新抛物线q与队列中最后一个抛物线v[k]的交点s在z[k]右侧,则下包络添加q为最后一个抛物线,k=k+1,
z[k]指向s,v[k]指向q的凹点。如图(a)。
2:s在z[k]左侧,则v[k]不再属于下包络,更新z[k]为s,v[k]为q的凹点,如图(b)。
其排列好后每一点对应下包络的y值极为EDT,算法伪代码如下所示。
参考文献:
[1] Fabbri R, Costa L D F, Torelli J C, et al. 2D Euclidean distance transform algorithms: A comparative survey[J]. ACM Computing Surveys (CSUR), 2008, 40(1): 2.
[2] Meijster A, Roerdink J B T M, Hesselink W H. A general algorithm for computing distance transforms in linear time[M]//Mathematical Morphology and its applications to image and signal processing. Springer US, 2000: 331-340.
[3] Felzenszwalb P F, Huttenlocher D P. Distance Transforms of Sampled Functions[J]. Theory of computing, 2012, 8(1): 415-428.