一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种矢量图形的栅格化方法与流程

2021-11-03 21:16:00 来源:中国专利 TAG:


1.本发明属于计算机图形处理技术领域,具体涉及一种矢量图形的栅格化方法。


背景技术:

2.在使用直写式光刻系统进行印制电路板、半导体芯片的生产时,光刻系统的计算机需要从外部接收cam(computer aided manufacturing,计算机辅助制造)图形,cam图形通常为矢量图形,计算机需要将矢量图形进行栅格化处理。在进行栅格化处理前,计算机会根据实际应用的需要对图形进行平移、旋转、缩放、对称等操作,由于计算机采用的是浮点计算,存在一定的计算误差,容易出现图形边界点坐标的计算结果实际是在真实点附近震动的情况,这就可能导致图形产生缺陷。这种缺陷多以边界自相交为主,如图1所示,1

a为原始的正确图形,在经计算机处理后可能成为1

b示出的缺陷图形。虽然图形缺陷一般都非常小,在面积层面上可能还不到e

10mm2,但是这个缺陷的存在,却会对后续的栅格化操作会产生较大的影响,在考虑不周时会出现计算错误甚至导致程序崩溃。
3.传统的基于扫描线法进行栅格化处理的方法是:

先对所有边线设置好进入点和超出点,所有点均为需要处理的事件,建立点事件的有序表,然后用一个线段的链表来表示与当前扫描线存在相交的图形边线;

对于每条栅格化的扫描线,求其与当前状态表中线段的交点,并按交点x值大小进行排序(同时更新当前状态表中的边线顺序),最后按顺序两两结合进行栅格化填充

当扫描线新越过线段的进入点时,将这条线段加入到当前状态表中

当扫描线新越过线段的超出点时,将这条线段从当前状态表中删除。
4.其对图形缺陷的处理思想是:每次扫描完毕,就对所有交点进行排序,栅格化其图形内部的部分。由于每次都需要进行排序操作,可以适时修正当前线段表的顺序,也就没有必要对新加入的线段进行定位,无需维护一个有序的当前状态线段表。但此种方法的缺点是:每次扫描都需要对所有交点进行一次排序,由于栅格化扫描线本身是非常密集的,所以排序操作耗时很长,尤其是当图形比较大且复杂时则更加明显,其时间复杂度可以到o(m*nlog(n)),其中m是扫描线条数。


技术实现要素:

5.本发明的目的在于提供一种矢量图形的栅格化方法,以克服或减少现有技术存在的上述问题或缺陷。为实现上述目标,本发明采用如下的技术方案:一种矢量图形的栅格化方法,其特征在于,包括以下步骤:(1)建立坐标单调链,具体是对图形的内部和/或外部边界均建立坐标单调链;(2)单调链排序,具体是在第一次扫描时按照扫描线与单调链的交点出现的先后顺序对相应单调链进行排序;(3)图形栅格化,具体是建立单调链使用情况表,在第二次扫描时根据单调链使用情况表进行超越进入点,超越内部点,超越超出点。
6.优选地,所述建立坐标单调链通过以下方式进行:确定相互垂直的扫描方向和扫描前进方向,将平行于扫描方向的边界舍弃,其余边界根据按预定方向环绕时在扫描前进
方向的坐标值的变化,将相邻且扫描前进方向坐标正负变化一致的边界组合到一起,建立多个单调链,其中,边界点坐标采用连续存储,单调链记录起止点的偏移值。
7.优选地,所述单调链排序通过以下方式进行:首先将所有单调链的进入点和超出点均作为点事件,排序确定点事件的前后顺序以完成数据准备,在第一次扫描过程中依次处理点事件,用平衡树来存储与当前扫描线相交的所有单调链,用链表存储排序结果。
8.优选地,所述依次处理点事件包括多次进行处理进入点和处理超出点。
9.进一步优选地,所述处理进入点是指依次处理点事件时,当遇见某些单调链的进入点,则将对应的单调链加入到平衡树中,并且找到其在平衡树中的后继节点,在链表中其对应节点位置之前插入当前的单调链,如在平衡树中没有找到后继节点,则寻找其前驱节点,在链表中其对应节点位置之后插入当前的单调链。
10.进一步优选地,所述处理超出点是指依次处理点事件时,当遇见某些单调链的超出点,则尝试将对应的单调链从平衡树中删除。
11.优选地,所述建立单调链使用情况表是指根据单调链的数量,分别建立索引值、前点索引、后点索引的数组,其中,所述索引值分为正常值和标记值两种类型,正常值用于表示单调链的索引,标记值用于标记此单调链未出现或已超出。
12.优选地,所述超越进入点是指在扫描过程中,针对标记为未出现的单调链,将索引值数组中相同索引处的值设置成单调链索引。
13.优选地,所述超越内部点是指在扫描过程中,扫描位置超过了单调链前点索引指向的点,则将后点索引的值设置为前点索引,前点索引再往前一步,如此进行下去直至找到满足要求的前点索引。
14.优选地,所述超越超出点是指在扫描过程中,扫描位置超过了单调链前点索引指向的点,且前点索引指向的是超出点,就将索引值处设置为超出标记值。
15.与现有技术相比,本发明通过对图形边界建立单调链,并利用扫描线法所需的数据结构,采用两次扫描的方式,即第一次扫描完成对单调链的排序,第二次扫描完成图形栅格化计算,实现过程简单明了,针对有缺陷的图形计算量与耗时无明显增加。通过选取图形模型进行实验测试,与传统方法比较,栅格化加填充结果内存的总体操作耗时能够缩短25%,考虑后者(填充结果内存)公共操作耗时占比超过80%,因此采用本发明的栅格化方法能够使栅格化效率提高1.5倍以上。
附图说明
16.图1为本发明示例性正确图形与缺陷图形。
17.图2为本发明示例性图形栅格化方法流程图。
18.图3为本发明示例性带孔多边形。
19.图4为示例性带孔多边形x方向单调链。
20.图5为示例性缺陷图形扫描示意图。
具体实施方式
21.为使本发明的技术方案更加清楚明了,下面将结合附图来描述本发明的实施例。应当理解的是,对实施方式的具体说明仅用于示教本领域技术人员如何实施本发明,而不
是用于穷举本发明的所有可行方式,更不是用于限制本发明的具体实施范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
22.图2示出本发明的矢量图形栅格化方法流程图,该栅格化方法具体包含以下几个步骤: 1)建立坐标单调链;2)单调链排序;3)图形栅格化。以下针对每个步骤作进一步说明。
23.步骤1建立坐标单调链,具体是对图形的内部边界和/或外部边界均建立坐标单调链,即针对有孔图形建立内部和外部边界单调链,而无孔图形则仅需建立外部边界单调链。如图3所示,该图形为带孔多边形,外部轮廓线为外边界,内部孔的轮廓线为内边界,图形覆盖的内部区域即为内边界与外边界中间部分,此部分即为需要栅格化的区域。建立单调链的具体方式为:首先取坐标轴y方向为扫描方向,坐标轴x方向为扫描前进方向,将平行于扫描方向(y方向)的边界舍弃,其余边界根据按预定方向环绕时x坐标值的变化,将相邻且x坐标正负变化一致的组合到一起,建立x坐标单调链。其中,预定方向可以是顺时针方向也可以是逆时针方向,可以根据实际情况进行选择,而坐标正负变化一致是指边界在环绕时x坐标均为逐渐增加或逐渐减小。此外,本实施例中将x方向定为扫描前进方向,y方向定为扫描方向只是一种示例性的选择,在实际中也可将y方向定为扫描前进方向,x方向定为扫描方向。进一步地,为方便后续计算,边界点坐标采用连续存储,单调链记录起止点的偏移值即可。图3所示的多边形外部边界有a至l共12个顶点,内部边界有m至p共4个顶点,按照顺时针环绕方向建立的单调链为abcdef、fg、gh、hijkla、mnop、pm。图4示出了单调链abcdef在坐标系中的示意图,按这种方式建立的单调链,由于在x方向单调变化,因此每个单调链与等x扫描线最多只有一个交点,便于后续的求交运算。其中,设定沿扫描前进方向,单调链上的第一个点为进入点,最后一个点为超出点,中间其它点为内部点,即a为进入点,f为超出点,b、c、d、e、f为内部点。
24.步骤2单调链排序,具体是在第一次扫描时按照扫描线与单调链的交点出现的先后顺序对相应单调链进行排序。应当理解的,当扫描前进方向为y方向时,按所述交点从左到右的出现顺序对相应单调链进行排序,也可以是按从右到左的出现顺序对相应单调链进行排序;当扫描前进方向为x方向时,按所述交点从下到上的出现顺序对相应单调链进行排序,或是按从上到下的出现顺序对相应单调链进行排序。例如,图3中扫描线l0从上到下先后与单调链af、mp、pm、ha相交,则此时排序结果即为af

mp

pm

ha。优选地,单调链排序通过以下方式进行:首先将所有单调链的进入点和超出点均作为点事件,排序确定点事件的前后顺序以完成数据准备,然后在扫描过程中依次处理点事件,用平衡树来存储与当前扫描线相交的所有单调链,用链表存储排序结果。其中,依次处理点事件包括多次进行处理进入点和处理超出点。具体地,处理进入点是指依次处理点事件时,当遇见某些单调链的进入点,则将对应的单调链加入到平衡树中,并且找到其在平衡树中的后继节点,在链表中其对应节点位置之前插入当前的单调链;如在平衡树中没有找到后继节点,则寻找其前驱节点,在链表中其对应节点位置之后插入当前的单调链;处理超出点是指依次处理点事件时,当遇见某些单调链的超出点,则尝试将对应的单调链从平衡树中删除。其中,处理进入点和处理超出点会根据实际的图形情况多次重复进行。平衡树可以根据实际选择,诸如avl树(二叉平衡搜索树)、b树(多路平衡搜索树)、红黑树等。
25.容易理解的,在一个正确图形中将存在一个排序,在扫描该正确图形的过程中,扫描线按这个顺序与能够相交的单调链求交,得到的交点是按顺序排列的;但在模型出错时,由于图形的环路上存在自相交的情况,这样会导致求得的交点顺序出现变化。在上述单调链排序过程中,当图形存在缺陷时,会存在当需要删除单调链时,在平衡树中无法找到对应的节点,此时无需处理,当插入单调链时,如遇见早该被删除的单调链,则先删除此单调链,再插入当前单调链。
26.步骤3图形栅格化,是指通过第二次扫描将整个图形进行栅格化,首先需要建立单调链使用情况表,在第二次扫描过程中根据单调链使用情况表进行超越进入点,超越内部点,超越超出点,从而完成栅格化。具体地,建立单调链使用情况表是指根据单调链数量,分别建立索引值、前点索引、后点索引的数组。其中,索引值分为正常值和标记值两种类型,正常值用于表示单调链的索引,标记值用于标记此单调链未出现或已超出;后点索引是单调链中已被超越的内部点中最后被超越的那个内部点索引;前点索引是单调链中下一个将会超出的内部点。对单调链而言,与当前扫描线的交点就处在前点与后点之间。进一步地,超越进入点是指在扫描过程中,针对标记为未出现的单调链,将索引值数组中相同索引处的值设置成单调链索引。超越内部点是指在扫描过程中,扫描位置超越了单调链前点索引指向的点,则将后点索引的值设置为前点索引,前点索引再往前一步,如此进行下去直至找到满足要求的前点索引。超越超出点是指在扫描过程中,扫描位置超越了单调链前点索引指向的点,且前点索引指向的是超出点,就将索引值处设置为已超出标记值。
27.对一个正确图形而言,扫描线按照单调链顺序依次求交得到的即为正确的交点序列,但是缺陷图形中可能出现最新求得的交点坐标比之前交点的坐标更先出现,这时的处理方法是:将这个相交值向前进行冒泡交换,同时将索引值数组中对应的索引值也根据这个顺序向前冒泡交换,这样得到的交点序列即是正确的求交顺序。
28.如图5,设定取x方向为扫描方向,y正方向为扫描前进方向,此时扫描线平行于x方向,从下向上进行扫描。针对1

b的缺陷图形,经步骤2单调链排序后的结果是a(e)d

ba

dc

cb,则从a点开始向上扫描,如图中虚线l1,此时仅有a(e)d和ba对应的索引为正常值,且a(e)d在前;当扫描至点c时,如图中虚线l2,此时链cb与dc对应的索引值由未出现标记值(例如为

1,表示未出现)改为正常值,扫描线与链ba交点的x坐标比与链dc交点的x坐标要小,此时链dc应插入到链ba之后,这时的排序就是a(e)d

ba

dc

cb,这样单调链a(e)d与ba之间、dc与cb之间属于图形内部,进行栅格化,符合图形实际;当扫描线超出点e时,如图中虚线l3,链a(e)d对应的前点由e变为d,后点由a变为e,通过普通内部点不改变单调链顺序,仍为a(e)d

ba

dc

cb;当扫描线超越ab与cd相交位置o时,如图中虚线l4,扫描线与链ba交点的x坐标比与链dc交点的x坐标要大,此时交换这两条单调链的顺序,排序回复为a(e)d

dc

ba

cb,这样单调链a(e)d与dc之间、ba与cb之间属于图形内部,符合图形实际;扫描线超越点b时,链ba与dc对应的索引由正常值改为超出标记值(例如为

2,表示已超出),此局部区域栅格化完毕,然后继续向上扫描至d点结束。
29.最后需要指出的是,由于文字表达的有限性,上述说明仅是示例性的,并非穷尽性的,本发明并不限于所披露的各实施方式,在不偏离上述示例的范围和精神的情况下,对于本领域的技术人员来说还可以作若干改进和修饰,这些改进和修饰也应视为本发明的保护范围。因此本发明的保护范围应以权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献