欧几里得距离转换(EDT)算法

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.

本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。. 本书内容丰富,对本科生的数据结构课程和研究生的算法课程都是很实用的教材。本书在读者的职业生涯中,也是一本案头的数学参考书或工程实践手册。 在有关算法的书中,有一些叙述非常严谨,但不够全面,另一些涉及了大量的题材,但又缺乏严谨性。《算法导论》将严谨性和全面性融为一体。.. 本书深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。各章自成体系,可以作为独立的学习单元。算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂。说明和解释力求浅显易懂,不失深度和数学严谨性。 本书自第1版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考书。第2版增加了论述算法作用、概率分析与随机算法、线性规划等几章。同时,对第1版的几乎每一节都作了大量的修订。一项巧妙而又重要的修改是提前引入循环不变式,并在全书中用来证明算法的正确性。在不改变数学和分析重点的前提下,作者将许多数学基础知识从第一部分移到了附录中,并在开始部分加入了一些富有诱导性的题材。...
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值