掌桥专利:专业的专利平台
掌桥专利
首页

一种基于最大纵深的道格拉斯-普克算法的改进方法

文献发布时间:2024-04-18 19:58:21


一种基于最大纵深的道格拉斯-普克算法的改进方法

技术领域

本发明涉及地图线要素化简技术领域,尤其涉及一种基于最大纵深的道格拉斯-普克算法的改进方法。

背景技术

在地图输出显示的过程中,通过采用多种比例尺输出以满足不同的制图需求,当进行小比例尺输出显示时,如果数据节点太过密集,不仅影响图形的美观,而且不利于后续的数据分析处理。所以,对线进行简化处理是很有必要的。在实践中,地图是供使用者目视阅读的,所以对矢量线进行简化时,未有特别的简化需求时,我们应当尽可能多的保留可分辨的细节,则应当考虑读图者0.1mm人眼最小分辨尺度这一生理限制。根据不同的数据类型和比例尺,可以依照这一准则进行简化程度的调整,以平衡细节和效率之间的关系,从而使地图呈现出更好的可读性和美观性。

线的简化是指通过消除线条上的某些点,简化或概化线条的过程。道格拉斯-普克算法是矢量线化简中应用最广泛的方法之一,是广泛应用于数据压缩和地理测绘行业的经典抽稀算法,既可以达到精简数据减少运算量的目的,又可以在此过程中尽可能保留曲线的几何形状。道格拉斯-普克算法之所以广泛应用于各行各业,离不开其以下优点:具有平移、旋转的不变性,给定曲线与限差后,抽样结果一致;算法结构简单,效率相对较高;操作简单、直观形象;编程简单,曲线起伏较小,速度快;对于急剧变化、棱角突出的曲线压缩效果明显;在一般情况下可保留较大弯曲形态上的特征点,可准确删除小弯曲上的定点。

但因为道格拉斯-普克算法中存在迭代,所以处理大量数据点的曲线时,可能会出现算法效率较低的情况。而且,道格拉斯-普克算法实现的高压缩伴随着较差的精度,其更注重数据的约简,而不是形状的简化。对此,许多学者对其进行了改进。但是众多道格拉斯-普克算法的改进研究难以同时兼顾效率和精度。

发明内容

本发明针对上述问题,提出一种基于最大纵深的道格拉斯-普克算法的改进方法,基于0.1mm可分辨细节这一最小尺度作为算法简化的距离阈值选取指标,从“算法效率”和“算法精度”两方面,同时对经典方法进行优化改进。与经典方法比较,本发明的改进方法以牺牲较少压缩率的代价,使得算法的运算更快速,也使最终简化结果具有较丰富的可分辨细节。而且,与其他大部分改进方法不同,本发明的改进方法继承了经典方法的所有优点。

为了实现上述目的,本发明采用以下技术方案:

本发明一方面提出一种基于最大纵深的道格拉斯-普克算法的改进方法,包括:

步骤1:连接待简化曲线的首末端点作为趋势线Ax+By+C=0,用公式

步骤2:若d

步骤3:若d

步骤4:若d

步骤5:最终处理完曲线后,依次按照顺序连接所有保留的点,得到待简化曲线简化后的趋势线。

进一步地,所述条件判断具体指是否符合下列情况:

1)所有中间点的d

2)所有中间点的d

3)中间点的d

进一步地,若所有中间点的d

进一步地,若所有中间点的d

进一步地,若中间点的d

进一步地,所述中间点的d

进一步地,所述步骤2-步骤4中,对于曲线划分后的各部分曲线,若不存在中间点,则对该部分曲线的趋势线的简化处理结束。

进一步地,该方法基于0.1mm可分辨细节这一最小尺度作为算法简化的距离阈值选取指标。

本发明还提出任意一种上述方法在地图上河流曲线简化处理的应用。

与现有技术相比,本发明具有的有益效果:

本发明的改进方法基于0.1mm可分辨细节这一最小尺度作为算法简化的距离阈值选取指标,从“算法效率”和“算法精度”两方面,同时对经典方法进行优化改进,其不但继承了经典道格拉斯-普克算法的所有优点,还通过引入“最大纵深”(即d

附图说明

图1为经典道格拉斯-普克算法忽略重要细节演示;

图2为待简化的常见线段示例;

图3为经典道格拉斯-普克算法简化结果示例;

图4为上下区域划分示例;

图5为趋势线两侧均有大于距离阈值的中间点示例;

图6为对上述图5处理后的结果图;

图7为本发明一种基于最大纵深的道格拉斯-普克算法的改进方法的流程图;

图8为本发明改进的道格拉斯-普克算法保留经典算法忽略的细节示例;

图9为黄河数据1:300万比例尺显示下,两种方法的结果对比;

图10为黄河数据两种方法的特征点个数、运算时间、最大位移距离、位移距离之和、RMS、偏差面积的折线图对比;

图11为徒骇河数据两种方法的特征点个数、运算时间、最大位移距离、位移距离之和、RMS、偏差面积的折线图对比;

图12为111条河流的“算法效率提高率”和“特征点数提取提高率”联合对照;

图13为111条河流的改进方法在经典方法基础上的算法效率的提高率情况;

图14为111条河流的改进方法在经典方法基础上的提取的特征点数量的提高率情况。

具体实施方式

下面结合附图和具体的实施例对本发明做进一步的解释说明:

一、道格拉斯-普克算法的简介及缺陷分析

1道格拉斯-普克算法的原理

道格拉斯-普克算法(Douglas-Peucker Algorithm)通过连结线的两个端点得到趋势线,计算出两端点之间的所有中间点到该连线的距离,提取所有距离中的最大值D

2道格拉斯-普克算法的局限性

2.1算法效率

道格拉斯-普克算法是一个从整体到局部,即由粗到细的方法来确定曲线压缩后保留点的过程。需要对整条曲线的节点进行垂距计算,并相互比较后,才能进行简化。但是,当曲线弯曲起伏大、相互间关系复杂时,道格拉斯-普克算法重复判断次数多,造成算法的处理速度变慢。

2.2中间点的相互影响

(1)曲线弯曲起伏较大

当压缩的曲线相对于起始结点弯曲起伏较大,而且这些曲率变化的特征点到虚直线的最大距离D

(2)最大纵深的需求

有待简化的常见线段ABCDEF,如图2所示。

其中:A、B、E、F在同一条直线上,设定道格拉斯-普克算法的距离阈值为d=0.1mm,C、D两点到AF的距离为0.9d=0.09mm。

根据道格拉斯一普克算法简化线段,连结AF,因为B、C、D、E到AF的距离小于阈值0.1mm,所以省去B、C、D、E点,得到线段ABCDEF的简化结果(图3所示)。

分析:C、D两点至趋势线AF的垂直距离之和为0.18mm>0.1mm,即关于趋势线AF的最大纵深为0.18mm,则线段CD必大于0.1mm,所以人的肉眼能够对CD线段进行识别。又C、D两点整体偏移趋势线AF为0.18mm>0.1mm,则CD线段对于趋势线AF的偏移也是可分辨的。所以基于可分辨细节的需求时,C、D两点应当进行保留,但经典算法却对其舍去;若C、D两点至趋势线AF的垂直距离之和小于0.1mm时,人眼看来,C、D两点便会在趋势线AF上,即不可分辨。此处距离阈值取0.1mm(人眼的最小可分辨距离)是为了说明:因为经典算法忽略了中间点自身的关联影响,从而舍去了在设定距离阈值d确切值时希望保留的细节,即符合条件的最大纵深(最高和最低中间点)。

二、优化改进

经典道格拉斯-普克算法在连接曲线首尾两端点得到趋势线后,中间点与趋势线会出现三种情况:(1)全部中间点在趋势线的上方;(2)全部中间点在趋势线的下方;(3)趋势线的上下方都有中间点。本发明主要针对情况(3)进行改进,因为它是导致经典算法上述两个缺陷的主要方面。

1算法效率优化

如图4,点A、B为化简线的两个端点,连接两端点A、B得到具有方向的矢量AB,AB的上侧定义为上区域,AB下侧定义为下区域,上区域内的中间点与下区域内的中间点相互独立,点H1是上区域中离趋势线AB最远的中间点(d1是点H1至线AB的距离),点H2是下区域中离趋势线AB最远的中间点(d2是点H2至线AB的距离)。如果d1、d2都大于距离阈值d,则两个中间点H1、H2同时保留。

这两个区域各自进行内部距离与距离阈值的比较,上下两个区域独立比较可实现一次得到两个所需点的可能,提高了经典算法的时间效率,尤其是改善经典道格拉斯-扑克算法的一个局限性:当曲线弯曲起伏大,重复判断次数多,造成速度较慢。经典算法是一次趋势线的所有中间点进行比较,不区分上下区域单独比较,经典算法一次遍历最多只能获取一个特征点。

1.1算法效率优化的原理依据

如图5所示,其中:AB为分界线,H1为AB上端的最远点,H2为AB下端的最远点,d1、d2为距离,d1>d2>d,d是距离阈值。

(1)命题:

运用经典方法简化A、B、H1、H2四点,连接A、B为分界线,在AB分界线上下两边存在满足条件(大于限差d)的中间点H1、H2时,则上下两端的最远点都有保留的价值。这样能同时得到两个需要的点(原有算法一次只能得到一个需要的点),从而实现算法效率的优化。

(2)证明命题:

在图5中,连接AH1、H1B、H2B,过点H2作H2D垂直于H1B交H1B于点D,取H2B的中点C,连接CE、CD,如图6所示:

则点H2、E、D、B在以点C为圆心、CB为半径的圆上。∠ECH2和∠H2CD为圆心角,H2E、H2D分别为它们的弦长。因为∠H2CD>∠ECH2,所以H2D>H2E>d,则在点H1保留的前提下,点H2也保留。即:命题正确,两端的最远点保留。

1.2区域构建与分析

(1)上下区域的构建方法

基于平面上,点到线的距离公式。对线Ax+By+C=0,点(a,b)到线的距离公式为:

去掉以上公式中分子的绝对值,h就会出现正负值。正值表示“点在线的上方”,即定义的上区域;负值表示“点在线的下方”,即定义的下区域。所以,通过去掉距离公式分子的绝对值符号,实现了上下区域的定义。

(2)构建上下区域效率分析

上下区域的构建是原有算法求解距离过程中的一个中间步骤,即没有对原有算法进行额外的步骤添加,所以只会提高原有算法的效率。

2细节优化

在定义的上下区域的基础上得到一系列中间点的d

经典算法忽略的部分细节,是能够满足条件:d

3融合“算法效率优化”和“细节优化”的改进方法

3.1改进方法的原理

用笔直的虚线连结曲线的首末端点作为趋势线,用公式

①所有中间点的d

②所有中间点的d

③中间点的d

(1)对情况①,d

(2)对情况②,d

(3)对情况③,d

3.2改进方法的实现流程

如图7所示,一种基于最大纵深的道格拉斯-普克算法的改进方法的实现流程为以下步骤:

(1)距离阈值为d,连接待简化曲线的首末端点作为趋势线Ax+By+C=0,用公式

(2)若d

(3)若d

(4)若d

(5)最终处理完曲线后,依次按照顺序连接所有保留的点,得到简化的趋势线。

进一步地,所述条件判断具体指是否符合下列情况:

1)所有中间点的d

2)所有中间点的d

3)中间点的d

进一步地,若所有中间点的d

进一步地,若所有中间点的d

进一步地,若中间点的d

具体地,所述步骤(2)-步骤(4)中,对于曲线划分后的各部分曲线,若不存在中间点,则对该部分曲线的趋势线的简化处理结束。

3.3改进方法的实践

对图1中的“(a)需要化简的曲线”进行本发明改进方法的实际运用,处理过程如图8所示,图8对应的文字步骤如下:

(1)用虚线连接点1、点8两端点得到趋势线,计算点2至点7所有中间点对应的d

(2)用虚线连接点1、点2两端点得到趋势线1,用虚线连接点2、点7两端点得到趋势线2,用虚线连接点7、点8两端点得到趋势线3,因趋势线1、趋势线3都无中间点,则对这两条趋势线的简化处理结束。计算趋势线2中点3至点6所有中间点对应的d

(3)用虚线连接点2、点5两端点得到趋势线4,用虚线连接点5、点7两端点得到趋势线5。在趋势线4中,点3、点4对应的d

(4)所有中间点处理完毕,最后保留了点1、2、5、6、7、8,依次连接,得到原曲线满足距离阈值d的最终趋势线。

三、实验与分析

本发明选用黄河干流下游河道数据和徒骇河数据作为实验数据,通过设定一系列的距离阈值d的确切值,分别运用经典道格拉斯-普克算法、改进算法进行处理,然后直接在对应比例尺视角下,肉眼观察算法结果的可分辨细节保留情况。最后,基于“处理时间、压缩率、最大位移距离、位移距离之和、RMS、偏差面积”这6个评价指标,对两个方法处理的结果进行对比评价。用真实数据去验证改进算法对经典方法的效率优化和精度优化,以及基于最大纵深的可分辨细节的保留。

1化简质量评价指标

(1)处理时间:

电脑信息:笔记本电脑;处理器lntel(R)Core(TM)i7-6700HQ CPU@2.60GHz2.60GHz。算法实现软件:MATLAB2018a。取值方法:基于一个距离阈值,进行22次单独处理,统计这22次的处理时间,去掉一个最大值、一个最小值,对剩余20个值取平均值。

(2)压缩率:

压缩率=(总点数-提取的特征点数)/总点数*100%。

(3)最大位移距离:

最大位移距离是指简化前曲线上的点到简化后对应的趋势线的最大距离。

(4)位移距离之和:

位移距离之和是指简化前曲线上的点到简化后对应的趋势线的距离之和。

(5)RMS:

均方根误差:

(6)偏差面积:

偏差面积是指简化前的曲线与简化后对应的趋势线组成封闭图形的面积。

(7)距离阈值d:

d=0.1÷10×M÷100,M是地图显示的比例尺分母,距离阈值d的单位是m。对于1:100万的比例尺图像,则线要素简化的距离阈值选取为100m。

2实验结果对比

如图9所示,它是黄河数据1:300万比例尺显示下,基于300m的距离阈值,改进方法和经典方法处理结果的展示,并在开头、中间、结尾有差异的位置截取三个区域进行局部放大,可以看出:

(1)改进方法在经典方法的基础上完整提取了可分辨细节。因为本发明是基于可分辨细节需求而进行矢量线的简化,而计算机屏幕显示是基于栅格形式,即矢量线的显示是由像素构成,这样会对不同比例尺下的可分辨细节显示造成一定程度的变形失真,但是计算机还是会对经典算法忽略的可分辨细节显示出大致位置。值得注意的是,我们提取的矢量线特征点是其准确的(x,y)坐标值,从而保证了改进算法提取可分辨细节的准确性,削弱了因设备的栅格显示造成细节失真的影响。

(2)改进方法相对经典方法存在部分细节点的错位问题。因为改进方法基于最大纵深指标取舍,对于“中间点在趋势线两侧分布”的情况,是一次整体选取两个点A、B,经典方法只选取一个点A,而改进方法是默认两个点中的B点是经典方法下一次遍历必选的,但现实中不一定是这样,可能经典方法下一次不是选取的B点,而是选取了C点。这就可能导致了两种方法局部上的错位差异。但要注意到:B点是改进方法一次整体选择出来的,而C点是在经典方法经过A点划分曲线后的第二次遍历中选取出来的,所以B点应当比C点更具整体性,C点比B点更具局部性。经过实验对比,这种错位在整体上的精度影响很小,两者并无明显的好坏之分。

黄河数据和徒骇河数据两种方法处理结果的特征点数、处理时间、最大位移距离、距离之和、RMS、偏差面积的对比如图10和图11所示。可以看出,改进方法的相关指标均优于经典方法。

3实验结果分析与总结

分别计算黄河数据、徒骇河数据的改进方法处理结果在其经典方法的基础上的变化情况,如表1、表2所示,对这两对8组距离阈值对应的处理结果平均来看,可明显看出:

(1)对黄河数据而言,改进方法能够多提取高达19.75%的特征点的同时,算法效率还能提高14.61%。对徒骇河数据而言,改进方法能够多提取高达30.87%的特征点的同时,算法效率还能提高10.51%。

(2)对黄河数据而言,位移距离之和降低了18.83%,RMS降低了16.41%,偏差面积降低了18.51%,最大位移距离降低了3.38%,压缩率也只降低了2.07%。对徒骇河数据而言,位移距离之和降低了21.68%,RMS降低了18.68%,偏差面积降低了17.77%,最大位移距离降低了3.05%,压缩率也只降低了2.03%。

所以,改进方法基于最大纵深的处理结果较经典方法而言,其以较小的压缩率损失,完整提取趋势线相对于原始曲线的可分辨细节,显著提升经典方法处理结果的算法精度的同时,也具有可观的算法效率提升。

表1:黄河数据的改进方法在经典方法的基础上的结果变化情况

表2:徒骇河数据的改进方法在经典方法的基础上的结果变化情况

3.1分析与讨论

(1)改进方法获取了更多需要的细节特征点,但运行速度反而有所提高。

尽管改进方法获取的特征点数多于经典方法,但因为改进方法能够实现一次获取两个点的可能,尤其是对起伏较大的数据而言,简化过程的前期很容易满足相应条件,从而一次就同时提取两个特征点。简化过程的前期提前一次多提取一个特征点,意味着省去了很多的中间点距离计算步骤,而改进方法多提取出来的细节特征点,更多的是在简化过程的末期,在这一阶段的中间点距离计算步骤,相对前期是很少的。所以,改进方法虽然提取更多的特征点,但最后的整体计算时间低于经典方法。

(2)改进方法与经典方法的异同。

对于中间点都分布在趋势线一侧的情况,改进方法的“最大纵深”指标的绝对值与经典方法的“最大垂距”指标是相同的;对于中间点分布在趋势线两侧的情况,两种指标则不同,“最大纵深”指标考虑了中间点之间的相互影响,“最大垂距”指标则忽视了这种影响。

基于同一距离阈值d,改进方法在经典方法基础上的精度提高,尽管经典方法能够通过减小距离阈值实现精度的提高,但是基于减小后的距离阈值,经典方法也会存在与新的较小距离阈值对应的局限性,改进方法又能在基于新的较小距离阈值基础上,对经典方法进行改进。所以,改进方法实质是在基于同一距离阈值对经典方法的“简化分辨率”进行提高。

3.2实验结论

综合分析黄河数据、徒骇河数据的实验结果,结论如下:

(1)改进方法的计算速度更快。对100m至800m的距离阈值平均来看,改进方法对黄河数据的处理的花费时间,较经典方法少了14%多;改进方法对徒骇河数据的处理的花费时间,较经典方法少了10%多。

(2)改进方法能完整提取矢量线相对趋势线的可分辨细节,且改进方法的简化精度显著提高。因为改进方法获取需要的可分辨细节特征点数明显更多、位移距离之和明显更小、RMS明显更小、偏差面积明显更小、最大位移距离也略微较小。

(3)改进方法的压缩率要低于经典方法。但依托于道格拉斯-普克算法本身是一种高效的简化算法,所以改进方法的压缩率也是可观的。

综合以上三个结论,改进方法的处理时间较少,说明其算法效率较好;改进方法的最大位移距离、位移距离之和、RMS、偏差面积都较小,说明其处理结果偏离原始曲线的程度较小,即改进方法的精度较好;经典方法提取的特征点个数较少,说明其数据压缩能力较好。为直观、简洁的展现两种方法的优缺点,制成如表3所示的评价表。

表3:评价表

4改进方法对河流简化处理的普适性研究

联系现实生活中的河流情况,分别运用本发明的改进方法和经典方法处理111条不同的河流,以河流长度划分为11个区间:0-40,40-60,60-80,80-100,100-120,120-140,140-160,160-180,180-200,200-300,300以上(km)。每个区间尽量均匀选取约10条河流。处理每一条河流时,设定5-10个较合理的距离阈值,对每个距离阈值对应的算法效率的提高率进行求和、平均处理,提取特征点数的提高率也进行求和、平均处理。每个距离阈值单独处理22次(去掉最大花费时间、最小花费时间),求20次的均值作为该距离阈值下对应的处理时间,再进行算法效率提高率的计算。

如图12所示,它是对每条河流简化处理时,改进方法在经典方法基础上的“算法效率”和“提取的特征点数”的提高率的联合展示。图13、图14是分别对“算法效率”和“提取的特征点数”的提高率情况的单独统计。可以看出:基于本发明的改进方法处理河流数据,能够在经典方法基础上,普遍多保留约15%的特征点数量的同时,还能普遍提高约16%的算法效率。

本发明结合地图使用以目测为主这一特点,依照0.1mm人眼最小分辨尺度这一生理限制,提出与不同比例尺地图输出显示相对应的矢量线要素简化的距离阈值选取规则,其更加契合人眼读图这一现实情况。本发明的改进算法继承了经典道格拉斯-普克算法的所有优点,通过引入“最大纵深”这一取舍指标,考虑了中间点之间的相互影响,以较小的压缩比性能损失为代价,弥补了经典算法损失较多可分辨细节、算法运行速度较慢的缺陷,显著提升曲线整体的简化精度。实践表明,本发明的改进算法对矢量曲线进行数据压缩和可分辨特征提取是行之有效的。

值得说明的是,可以将本发明的改进思想延用至三维,通过“去掉点到面的距离公式的分子绝对值符号”构建“面的上下区域”求取最大纵深,再进行相应取舍,从而实现一次获取两个中间点的可能,进而提升三维道格拉斯-普克算法及其相关改进算法的效率。并且,“最大纵深”作为三维数据取舍指标比“最大垂距”更贴合现实情况,如:基于水平面为起始趋势面简化某一地形中的三维特征点数据,本发明的改进思想可以同步一次准确获取该地形中最高点、最低点这一重要的地理信息,而经典方法则是分步进行,这导致经典方法可能在第二步基于新的趋势面获取了其他的点,从而忽略了地形的最高(最低)这一重要的地理信息。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种基于道格拉斯-普克算法的图形拟合算法
  • 一种基于道格拉斯—普克算法的航带划分方法
技术分类

06120116482975