一种单连通的任意多边形区域填充方法及系统技术方案

技术编号:17112158 阅读:55 留言:0更新日期:2018-01-24 23:02
本发明专利技术涉及图形处理技术领域,具体为一种单连通的任意多边形区域填充方法及系统,按如下步骤进行:步骤S1,将原始多边形的凹角进行填补,形成所述原始多边形的外接凸包络;步骤S2,对所述外接凸包络进行填色,处理简单又效率高。

A single connected area filling method and system for arbitrary polygon

The present invention relates to the technical field of graphics processing, in particular to a single connected arbitrary polygon area filling method and system, comprising the following steps: step S1, the original polygon concave filling and the formation of the original polygon external convex envelope; step S2, of which the external convex envelope of coloring treatment simple and high efficiency.

【技术实现步骤摘要】
一种单连通的任意多边形区域填充方法及系统
本专利技术涉及图形处理
,具体为一种单连通的任意多边形区域填充方法及系统。
技术介绍
多边形的区域填充算法,目前基本分为两类:一类是扫描线算法(Scan-LineFilling)。这类算法建立在多边形边边界的矢量形式数据之上,可用于程序填色,也可用交互填色,算法的基本思路是通过水平的扫描线,与多边形区域求交,将属于区域内部的线段着色,针对凹多边形,要区分多边形内外,为了减少扫描线与多边形各边求交的次数,发展了使用边表(ET)和活动边表(AET)的快速算法;另一类是种子填色(SeedFilling)算法。这类算法建立在多边形边边界的图象形式数据之上,并还需提供多边形界内一点的坐标。所以,它一般只能用于人机交互填色,而难以用于程序填色。从种子点开始,使用四连通或八连通区域,搜索周边像素点,并进行着色,其中四个方向搜索算法,有一定的局限。针对下列八连通区域,不能充分着色,扫描线算法处理速度快,但是针对凹多边形的情况,稍微显得复杂。种子点算法效率要低一些,且如果着色区域很大是,压缩堆栈的点数目增长很快,容易导致堆栈溢出。现有很多相关的技术存在,如公开号为102376099A的专利公开了一种改善矢量图形填充效果的方法,其包括下述步骤:1)基于扫描线而检测所述矢量图形中是否存在待弥补区域;2)基于丢点笔划表而判断所存在的待弥补区域是否为交点凹陷,并对确认为交点凹陷的待弥补区域进行填充,还提供一种改善矢量图形填充效果的系统,且提供的系统和方法能够消除因交点凹陷而带来的各种图形畸变,从而大大改善低分辨率下的诸如矢量字形的矢量图形的填充效果,并使文字/图形的可辨识度得到提升,但是这种方式同样存在上述的缺陷,处理起来不够简单,效率也较低。
技术实现思路
本专利技术的一个目的是提供一种处理简单又效率高的单连通的任意多边形区域填充方法及系统。本专利技术的上述技术目的是通过以下技术方案得以实现的:一种单连通的任意多边形区域填充方法,按如下步骤进行:步骤S1,将原始多边形的凹角进行填补,形成所述原始多边形的外接凸包络;步骤S2,对所述外接凸包络进行填色。作为对本专利技术的优选,在对步骤S1中的凹角进行填补之前,判断所述原始多边形是否存在自交边,若存在自交边,则将自交点作为新的顶点并将所述原始多边形分裂成若干子原始多边形,然后对子原始多边形分别进行凹角的填补,形成若干与所述子原始多边形相对应的外接凸包络。作为对本专利技术的优选,在步骤S2中,填色方法具体为:步骤S21,使用目标色对所述外接凸包络进行着色;步骤S22,使用目标色的反色对凹角填补后形成的新多边形进行着色。作为对本专利技术的优选,在步骤S22中,填补形成的新多边形的算法如下:设起点为Pi点(0<=i<n-1),终点为Pj点(i<j<n+i-1),判断线段PiPj在不在即将形成的外接凸包络的内部,判断的方法为:计算PiPj连线的直线方程,得到直线方程L(x,y)=ax+by+c,依次将Pj+1点开始的后续各点坐标代入直线方程,得到一系列值{Lk},根据{Lk}的取值,计算出填补形成的新多边形。作为对本专利技术的优选,步骤S2的填色过程通过若干轮目标色和目标色的反色循环着色完成。作为对本专利技术的优选,使用列表A保存需要填补处理的子原始多边形,使用列表B保存填补处理后产生的对应的外接凸包络,使用列表C保存处理后产生的填补形成的新多边形。作为对本专利技术的优选,着色使用种子点扫描线算法。作为对本专利技术的优选,种子点为外接凸包络的重心。一种单连通的任意多边形区域填充系统,包括填补单元、填色单元,所述填补单元用于对原始多边形的凹角进行填补并形成外接凸包络,所述填色单元用于对所述外接凸包络进行填色。作为对本专利技术的优选,该系统还包括判断单元、计算单元、存储单元。本专利技术将复杂多边形转换为凸多边形,而凸多边形的着色方法相对简单,提高算法效率。附图说明图1是本专利技术实施例1的总的流程图;图2是本专利技术实施例1的填补算法的第一个实例图;图3是本专利技术实施例1的填补算法的第二个实例图;图4是本专利技术实施例1的填补算法的第三个实例图;图5是本专利技术实施例1的填补算法的第四个实例图;图6是本专利技术实施例1的填补算法的第五个实例图;图7是本专利技术实施例1的填补算法的第六个实例图;图8是本专利技术实施例1的一个多边形填充实例的原始多边形图;图9是本专利技术实施例1的第一轮填色的实例图;图10是本专利技术实施例1的第二轮填色的实例图;图11是本专利技术实施例1的第三轮填色的实例图;图12是本专利技术实施例2的系统模块图。具体实施方式以下具体实施例仅仅是对本专利技术的解释,其并不是对本专利技术的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本专利技术的权利要求范围内都受到专利法的保护。实施例1本专利技术提供一种适用单连通的任意多边形区域填充的方法。单连通的任意多边形,包括凸多边形和凹多边形。区域填充算法,是计算机图形学上的基本算法。所谓单连通,即区域内没有空洞。该方法的总流程如下:按如下步骤进行:步骤S1,将原始多边形的凹角进行填补,形成所述原始多边形的外接凸包络;步骤S2,对所述外接凸包络进行填色。总的流程图如图1所示。现有的技术缺点在于:1.扫描线算法处理速度快,但是针对凹多边形的情况,稍微显得复杂;2.种子点算法效率要低一些,且如果着色区域很大是,压缩堆栈的点数目增长很快,容易导致堆栈溢出。本专利技术的思路是将任意多边形的填色转换为若干个凸多边形的填色,也即外接凸包络,外接凸包络可以理解为凸多边形,然后对这些凸多边形进行颜色填充,可以使用种子点扫描线算法进行区域填充。进一步,在对步骤S1中的凹角进行填补之前,判断所述原始多边形是否存在自交边,若存在自交边,则将自交点作为新的顶点并将所述原始多边形分裂成若干子原始多边形,然后对子原始多边形分别进行凹角的填补,形成若干与所述子原始多边形相对应的外接凸包络。因为原始多边形可能是由很多多边形依次连起来的,需要将他们区分开。在步骤S2中,填色方法具体为:步骤S21,使用目标色对所述外接凸包络进行着色;步骤S22,使用目标色的反色对凹角填补后形成的新多边形进行着色。这里需要指出的是,新多边形也可能是有凹角的多边形,则这些新的有凹角的多边形也要处理成外接凸包络,所以该填色方案来说,是一个循环填色的方法,也即对于新的填补的多边形,迭代使用多边形填补算法,直到不再增加新的多边形,下面回具体介绍一种循环填色的方法。而其中,在步骤S22中,填补形成的新多边形的算法如下:设起点为Pi点(0<=i<n-1),终点为Pj点(i<j<n+i-1),判断线段PiPj在不在即将形成的外接凸包络的内部,判断的方法为:计算PiPj连线的直线方程,得到直线方程L(x,y)=ax+by+c,依次将Pj+1点开始的后续各点坐标代入直线方程,得到一系列值{Lk},根据{Lk}的取值,计算出填补形成的新多边形。另外,步骤S2的填色过程通过若干轮目标色和目标色的反色循环着色完成;使用列表A保存需要填补处理的子原始多边形,使用列表B保存填补处理后产生的对应的外接凸包络,使用列表本文档来自技高网
...
一种单连通的任意多边形区域填充方法及系统

【技术保护点】
一种单连通的任意多边形区域填充方法,其特征在于,按如下步骤进行:步骤S1,将原始多边形的凹角进行填补,形成所述原始多边形的外接凸包络;步骤S2,对所述外接凸包络进行填色。

【技术特征摘要】
1.一种单连通的任意多边形区域填充方法,其特征在于,按如下步骤进行:步骤S1,将原始多边形的凹角进行填补,形成所述原始多边形的外接凸包络;步骤S2,对所述外接凸包络进行填色。2.根据权利要求1所述的一种单连通的任意多边形区域填充方法,其特征在于,在对步骤S1中的凹角进行填补之前,判断所述原始多边形是否存在自交边,若存在自交边,则将自交点作为新的顶点并将所述原始多边形分裂成若干子原始多边形,然后对子原始多边形分别进行凹角的填补,形成若干与所述子原始多边形相对应的外接凸包络。3.根据权利要求1所述的一种单连通的任意多边形区域填充方法,其特征在于,在步骤S2中,填色方法具体为:步骤S21,使用目标色对所述外接凸包络进行着色;步骤S22,使用目标色的反色对凹角填补后形成的新多边形进行着色。4.根据权利要求3所述的一种单连通的任意多边形区域填充方法,其特征在于,在步骤S22中,填补形成的新多边形的算法如下:设起点为Pi点(0<=i<n-1),终点为Pj点(i<j<n+i-1),判断线段PiPj在不在即将形成的外接凸包络的内部,判断的方法为:计算PiPj连线的直线方程,得到直线方程L(x,y)=ax+by+c...

【专利技术属性】
技术研发人员:郑晟
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1