基于LR序列的简单多边形的中轴线计算方法与流程

文档序号:13812110阅读:1218来源:国知局

本发明涉及计算机数字图像及其处理的工程领域,涉及目标物体实时识别,具体涉及一种基于lr序列的简单多边形中轴线计算方法。



背景技术:

中轴线又称为骨架线,最早是由blum在1967年提出用来描述生物形态的。中轴线可被定义为所有最大圆盘圆心的有序集合,其中最大圆盘完全包含在封闭轮廓内部,并且至少与物体边界相切于两点。很多应用对于中轴计算提出了越来越高的要求,最近两年内引起了近百篇相关文献的关注,甚至中轴计算重新成为热点之一。中轴计算的效率是制约其应用的瓶颈之一。简单多边形的中轴计算,理论上可以精确求解,最大的瓶颈是能否有线性复杂度的算法,现有方法最好的结果是chin等人提出的基于柱状图的方法,其线性复杂度受到质疑。



技术实现要素:

本发明的目的是针对现有技术的不足,提出基于lr序列的简单多边形的中轴线计算方法,该方法利用中轴线自身树的结构,利用两条边每次生长变为一条边的特点,提高计算中轴线的效率。

本发明的具体步骤如下:

步骤1、初始化由边组成的序列,在初始化状态下包括简单多边形p内每个内角的角平分线,这些在中的边按照其所属内角在p中的顺时针顺序排列,对中的每条边,计算边的endpoint。

步骤2、设顺时针方向为正,逆时针方向为负,利用每条边与其正方向和逆方向的相邻边的相交情况和endpoint确定其l和r标记。

步骤3、对所有边进行分组,根据每条边的lr标记进行分组,拥有边标记的排列符合正则表达式(r*)(l*)的边构成的序列分成一组。

步骤4、对每组内部的边运用生长算法,在生长的过程中要注意干涉处理,首先对每组唯一的rl对进行生长算法,该rl对称为根对。两条边生长后得到一条新的边,根据新的边和其正方向和逆方向边的相交情况以及它们的endpoint计算新得到的边的l和r标记,将参与生长的边从分组中剔除,将新得到的边加入分组。

步骤5、对每一组重复步骤4。假如这时只剩下一个组,则对这一组不断执行步骤4,直到这一组内的边全部交于同一点为止。假如存在多个组,则对每一组执行步骤4,直到生长得到的边在组内其正方向或者是逆方向不存在其它边,将这条边记为b,若b在组内其正方向不存在其它边,逆方向存在其他边,则重判b正方向相邻组外边的标记,若其变为l,则将其加入b所在的分组,继续步骤4;若b在组内其正方向存在其它边,逆方向不存在其他边,则重判b负方向相邻组外边的标记,若其变为r,则将其加入b所在的分组,继续步骤4;若b在组内其正方向不存在其它边,逆方向不存在其他边,则重判b正方向相邻组外边和b负方向相邻组外边的标记,若正方向相邻组外边变为l或者是负方向相邻组外边变为r,都需要将其加入b所在的分组,继续步骤4;若b在组内其正方向不存在其它边,或b在组内其负方向不存在其它边,且没有新的边被加入b,则b停止生长,对其他组执行生长算法。

若对所有组都执行了生长算法且每一组都停止了生长,当发现剩下的边交于同一点的时候,算法结束,若不交于同一点,则回到步骤3。

边的定义:设多边形p的边缘为∂,∂由点和直线构成,从p的内部任意一点离开p的最短路径必然与∂交于一点,记为点a,把p的内部划分为多个区域,每个区域由通过最短路径离开多边形经过∂上同一条线段或者是同一个点的全部点构成,这些区域的边缘由直线和抛物线构成,每条直线或者是抛物线称为边。可知,对于每个区域内部的点而言,以最短路径离开多边形必然经过∂上同一条线段或者是同一个点,这条线段或者是这个点统一称为这个区域的特征边。

对于每条边而言,由于每条边是两个区域的交界线,每个区域有一条对应的特征边,因此从边上的点以最短路径离开多边形可以经过边缘∂上的两条特征边,这两条特征边被称为这条边的轨迹。

确定l,r标记:对于每条边,确定其与其正方向和逆方向的边是否存在endpoint之前的交点,若存在,判断边与正方向和逆方向的边哪条边先相交,若与正方向的边先相交,标记确定为r,若与逆方向的边先相交,标记确定为l,若都不相交,标记确定为3。

所述的边的生长方法,每次对两条边进行生长,这两条边交于同一点,设顺时针方向为正方向,逆时针方向为逆方向,按照正方向排列这两条边,这两条边生长得到的边,其起点为这两条边的交点。

所述的干涉处理方法,假如把每条边看做节点,那么由许多条边生长得到的中轴线可以看做一棵树,假如一条边,将其正方向和逆方向的边看做节点,这条边与其正方向或者是逆方向的边节点的子孙节点相交,那么干涉就发生了。假设边a干涉其旁边的另外一条边b,并和b的子孙节点边c相交,依据步骤4可知,生长是由每个分组最中心的lr对也就是根对开始的,这个lr对称为树的核心节点,假如边c不是核心节点,那么改变其lr标记,并且撤销其全部的祖先节点边,继续进行生长过程,若边c是核心节点,那么撤销其全部祖先节点,改变其lr标记,若c的标记是l,那么把该分组所有r标记全变成l,若c的标记是r,那么把该分组所有l标记全部变成r,然后继续进行生长过程。

本发明的有益效果:本发明利用中轴线自身树的结构,以及每条边和其顺时针方向和逆时针方向边的相交情况,利用两条边每次生长变为一条边的特点,每次生长都会减少一条边,实验表明,本发明可以在线性时间内计算多边形的中轴线,提高了计算多边形中轴线的效率。

具体实施方式

以下结合实施例对本发明作进一步说明:

本实施例的具体步骤如下:

步骤1、初始化由边组成的序列,在初始化状态下包括简单多边形p内每个内角的角平分线,假设p有6个内角,这些在中的边按照其所属内角在p中的顺时针顺序排列,对中的每条边,计算每条边的endpoint。

步骤2、设顺时针方向为正,逆时针方向为负,利用每条边与其正方向和逆方向的相邻边的相交情况和endpoint确定每条边l和r标记并排列,假设为rrlrrl。

步骤3、对所有边进行分组,根据每条边的lr标记进行分组,拥有边标记的排列符合正则表达式(r*)(l*)的边构成的序列分成一组,这里分为两组,第一组rrl,第二组rrl。

步骤4、对每组内部的边运用生长算法,在生长的过程中要注意干涉处理,首先对每组唯一的rl对进行生长,该rl对称为根对。两条边生长后得到一条新的边,根据新的边和其正方向和逆方向边的相交情况以及它们的endpoint计算新得到的边的l和r标记,将参与生长的边从分组中剔除,将新得到的边加入分组。

步骤5、重复步骤4直到生长得到的边在组内其正方向或者是逆方向不存在其它边,并且当其正方向不存在组内边的时候正方向没有新的边加入,当其负方向不存在组内边的时候负方向没有新的边加入,这里假设向左为负方向,向右为正方向,第一组rrl生长后得到rl,这时第一组其正方向不存在组内边,重判第一组其正方向相邻组外边,设这条相邻边为k,k是第二组的组内负方向第一条边,其标记为r,假设其变为l,则k需要被加入第一组,第一组变为rll,第二组变为ll,由于第二组没有rl对,第二组被解散,第一组继续生长,假设第一组变为rl,其生长得到的边记为k2,其标记为r,k2其负方向不存在组内边,第一组停止生长,由于这时候没有组存在,第一轮生长停止;这时所有边不交于同一点,进入步骤3,重新分组。分组后只有一个组,为rlll,对这一组执行步骤4,生长算法,直到该组剩下的所有边交于同一点,算法结束,由初始边以及生长得到的所有边构成的树状结构即为简单多边形p的中轴线。

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