一种基于点删除算法的多边形简化方法与流程

文档序号:17732860发布日期:2019-05-22 02:58阅读:689来源:国知局
一种基于点删除算法的多边形简化方法与流程

本发明涉及计算机图形学相关领域,尤其涉及一种基于点删除算法的多边形简化方法。



背景技术:

在工程领域中,经常对图形进行处理,尤其是对多边形的处理。在实际的生产过程中,多边形的复杂程度往往会对工程产生一定影响,因此,为了工程的需要,通常需要对多边形进行简化处理。而目前多边形简化,主要是通过对删除顶点后的多边形面积以及原多边形面积的比较,来达到简化的效果。但是这种方法不仅计算相对复杂,而且速度相对较慢,无法知道在达到简化效果的同时,删除哪些顶点后,对图形的影响最小。



技术实现要素:

为了解决上述的问题,本发明提供了一种基于点删除算法的多边形简化方法,运算量较小,可进行多次的优化运算,可以最大程度的保留多边形的特征点。

本发明的一种基于点删除算法的多边形简化方法,包括以下步骤:

步骤1、计算每个顶点所对应顶点夹角和顶点面积;

步骤2、将计算出的所述顶点夹角和顶点面积带入目标函数,得到大小不同的目标函数值;

步骤3、删除目标函数值最大的顶点,计算被删除点的前一个顶点和后一个顶点的新的目标函数值;

步骤4、判断删除后多边形顶点数是否等于顶点阈值数a,如果否,则重复步骤3,直到删除后剩余的顶点个数等于顶点阈值数a为止。

步骤1中,将多边形的所有顶点按照相邻的关系排列成顶点队列p1(x1,y1),p2(x2,y2),p3(x3,y3)……pn(xn,yn),其中,n>3,二维多边形中的第m个顶点pm与它相邻的两条边组成的夹角即为顶点夹角anglem其中,0<anglem<180°;

二维多边形中的第m个顶点与它相邻的两个顶点所组成的三角形的面积即为顶点面积aream。

已知顶点坐标计算顶点面积:计算pm对应的顶点面积aream;

aream=|((xm-xm-1)*(ym+1-ym-1)-(ym-ym-1)*(xm+1-xm-1))/2|

由此公式计算出各个顶点面积area1,area2,area3……arean。

计算顶点夹角:计算pm对应的顶点夹角anglem;

anglem=cos-1(cos(anglem))

由上述两个公式计算出各个顶点夹角angle1,angle2,angle3……anglen。

步骤2具体方法如下:设定夹角权重值w1,面积权重值w2,设置顶点阈值数a,其中,a>3;

设置目标函数f(anglen,arean)=w1*anglen+w2*(1/arean),将计算出的顶点夹角和顶点面积带入目标函数,得到大小不同的目标函数值f1、f2……fn,第m个顶点pm对应的函数值是fm,其中,1≤m≤n。

步骤3具体方法如下:将各点的目标函数值结果按从大到小排序,删除目标函数值最大的顶点,得到一个新的多边形;此时被删除点的前一个点和后一个点的目标函数值发生变化;计算删除点的前一个点顶点夹角和顶点面积,再次算出新的目标函数值;计算删除点的后一个点顶点夹角和顶点面积,再次算出新的目标函数值。

本发明通过计算不同顶点对应不同的目标函数值,删除目标函数值最大的顶点,达到多边形简化的目的;本发明的方法不仅运算量小,而且可以进行多次运算,可以最大程度的保留多边形的特征点。

附图说明

图1是本发明所涉及的方法总体流程图;

图2是十一边形简化实施例示意图。

具体实施方式

下面结合附图对本发明进一步说明。

如图1所示,一种基于点删除算法的多边形简化方法,包括以下步骤:

步骤1、将多边形的所有顶点按照相邻的关系排列成顶点队列p1(x1,y1),p2(x2,y2),p3(x3,y3)……pn(xn,yn)(n>3),二维多边形中的第m个顶点pm与它相邻的两条边组成的夹角叫顶点夹角anglem(0<anglem<180°);二维多边形中的第m个顶点与它相邻的两个顶点所组成的三角形的面积叫顶点面积aream。计算每个顶点所对应顶点夹角和顶点面积。计算aream和anglem的值如下:

aream=|((xm-xm-1)*(ym+1-ym-1)-(ym-ym-1)*(xm+1-xm-1))/2|

anglem=cos-1(cos(anglem))

可以根据以上的公式计算出各个顶点的顶点夹角和顶点面积。

步骤2、设定夹角权重值w1,面积权重值w2,设置顶点阈值数a,设置目标函数f(anglen,arean)=w1*anglen+w2*(1/arean),将计算出的顶点夹角和顶点面积带入目标函数,可得到大小不同的目标函数值。

步骤3、将各点的目标函数值结果按从大到小排序,删除目标函数值最大的点,然后计算被删除点的前一个点和后一个点的目标函数值。

步骤4、如果新产生的顶点数不等于顶点阈值数a,则重复步骤3,直到删除后剩余的顶点个数等于顶点阈值数a为止。

以图2的十一边形为例,对十一边形进行简化,顶点阈值数a=9。(设顶点删除后新产生的多边形相应顶点名称没有改变)

十一边形顶点序列依次是p1(x1,y1),p2(x2,y2),p3(x3,y3)……p11(x11,y11),计算出p1、p2……p11对应的顶点面积area1、area2……area11和顶点夹角angle1、angle2……angle11,分别带入目标函数f(anglen,arean)=w1*anglen+w2*(1/arean),可计算出各个顶点的目标函数值f1,f2,f3……f11,其中f2最大,删除顶点p2,得到十边形,计算顶点p1和p3顶点面积area1、area3和顶点夹角angle1、angle3。此时顶点数不等于9,继续进行简化。将顶点p1和p3顶点面积area1、area3和顶点夹角angle1、angle3分别带入目标函数f(anglen,arean)=w1*anglen+w2*(1/arean),可计算出两个顶点的目标函数值f1,f3,并与其它的目标函数值比较,其中f6最大,删除顶点p6,得到九边形,计算顶点p5和p7顶点面积area5、area7和顶点夹角angle5、angle7。此时顶点数等于9,结束多边形简化。此时的九边形是十一边形简化的结果。

本发明通过计算不同顶点对应不同的目标函数值,删除目标函数值最大的顶点,达到多边形简化的目的。这种方法不仅运算量小,而且可以进行多次运算,可以最大程度的保留多边形的特征点。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1