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

一种自动生成打印路径的激光打标方法

2022-11-09 22:21:23 来源:中国专利 TAG:


1.本发明涉及激光打标领域,具体涉及一种自动生成打印路径的激光打标方法。


背景技术:

2.激光打标机是用激光束在各种不同物质表面上进行图案标记的一种装置,对于激光打标而言,图案的填充方式和填充路径的孵化也是至关重要的,现有的路径孵化算法尽管可以满足实际需求,但是在速度以及生成效果上仍然有很大优化空间。
3.例如使用平行线段簇填充图案且首末段无连接的方式进行图案的路径孵化是最为简单的一种算法,但是此算法会导致整个激光照射点空转运行路程较长,打出来的图案边界也不明显,比较模糊。
4.现有同类方法对于图案生成速度以及生成质量把握不佳,且规划路径时连接最大长度较短,不能够有效利用激光连续照射时间,且对于图案边缘的刻画较差。


技术实现要素:

5.本发明的是提供一种自动生成打印路径的激光打标方法,用以优化打标路径的生成速度,同时保证每次打标路径路程尽可能长且连续。
6.为了实现上述任务,本发明采用以下技术方案:
7.一种自动生成打印路径的激光打标方法,包括:
8.一、预处理步骤
9.步骤1.1,点集预处理
10.步骤1.1.1,将输入的待打印的图形符号点集,按照是否属于一个封闭环分成不同点集,形成点集结构体数组orgs;orgs中所有环的点集即构成需要绘制的图像;
11.其中,点集结构体数组的属性段包括:
12.orgs(i).data,表示点集坐标集合,使用结构体m作为元素,按顺序存储;orgs(i).mod,表示点属于内环还是外环;orgs(i).layer表示环为第几层,i表示数组索引;
13.其中,将每个点集数据的坐标点都定义为一个结构体m,结构体m的属性包括:
14.m.data,表示点坐标;m.datapro,同一环中的上一个点坐标;m.datanext,同一环中下一个点坐标;m.layer,表示点属于第几层环;m.mod,表示点属于内环还是外环;m.index,表示点属于某个环;m.ii,表示点属于某个环的第几个点;
15.步骤1.1.2,将orgs中的点按网格切分存储到一个二维结构体中dotssplit,其中结构体dotssplit的行列索引i,j分别对应点的x,y坐标的十倍最接近的整数;
16.步骤1.2,内外环区分
17.步骤1.2.1,遍历所有orgs内的所有环的点集,每个环取其中任意四个点得其y坐标的均值存入数组ys;
18.步骤1.2.2,对于ys中每一个y坐标都做一条穿过该y坐标的直线横穿需要绘制的图像,同时从dotssplit中得到对应与直线最近的上方和下方两个网格行upgrids和
downgrids;
19.步骤1.2.3,遍历upgrids和downgrids寻找和直线y相交的所有线段对应的点,并按照x大小进行排序;
20.步骤1.2.4,从左向右按顺序查看,若点排序位置为奇数,那么点所属的环即为内环,否则为外环;同时如果一个环已经被判定结束,则后边再次查看到此环上另外的点则直接跳过;
21.步骤1.3,获取内外环拓展轮廓
22.步骤1.3.1,对点集结构体数组orgs中的环的点集进行遍历,利用中点垂直延伸法,如果是内环就进行内扩获得拓展轮廓,如果是外环就外扩获得拓展轮廓;
23.步骤1.3.2,将拓展轮廓的轮廓线的点存入到点集结构体数组orgs和dotssplit中;根据是第几次扩展,同时设置点在结构体m中的属性m.layer;
24.二、锯齿平行打标
25.步骤2.1,生成平行线段
26.步骤2.1.1,获取点集结构体数组orgs中所有坐标点的最大、最小y坐标,在最大的y坐标和最小的y坐标之间开始生成多条间隔为l的直线,对于每条直线从dotssplit中得到与该直线最近的上方和下方两个网格行upgrids downgrids;
27.步骤2.1.2,遍历upgrids和downgrids寻找层数为1且和直线y相交的坐标点,并构成交点坐标集dotcros;并将dotcros中的交点按照其x坐标大小进行排序;
28.步骤2.1.3,遍历交点坐标集dotcros,其中遍历时交点的索引i从1开始累加,只要i为偶数便将索引i-1的点,以及索引为i的点组成一条线段保存至seglines;
29.步骤2.1.4,对于每个步骤2.1.1中得到的upgrids和downgrids重复2.1.2和2.1.3都将获得一个seglines,将所有seglines按先后顺序放入seglineslist;
30.步骤2.2,连接线段形成路径
31.步骤2.2.1,遍历seglineslist,对于每一个seglines获取其第一个线段的右端点pror并将其对应线段存储到roads后将pror所属的线段从此seglines中删去;
32.步骤2.2.2,获取下一个seglines,查看其中所有线段并找出右端点所属的环与上一个线段右端点所属环相同的点组成点集nextrs,遍历nextrs,找出所有nextr.ii》pror.ii且pror.ii-nextr.ii大于预设阈值的nextr;其中:
33.pror.ii、nextr.ii表示点pror、nextr属于某个环的第几个点,nextr为nextrs中的一个点;
34.步骤2.2.3,从所有步骤2.2.2中选出的nextr中筛选pror.ii-nextr.ii最小的nextr作为连接点,并将nextr对应的线段以及pror.ii到nextr.ii中间所有弧点存储到roads后将nextr对应的线段从此seglines中删去,如果没有符合条件的点则重新遍历seglineslist;
35.步骤2.2.4,循环步骤2.2.1至步骤2.2.3,直至seglineslist全部为空即可得到多个完整的路径将图案完全填充;将路径发送给激光打标机后,即可按照该路径进行打标。
36.进一步地,所述每个点集数据的坐标点被结构体m定义后,结构体m中记录了该点m.data、上一个点坐标m.datapro、下一个点坐标m.datanext共三个坐标点,这三个坐标点依次连接会构成两个线段。
37.进一步地,交点的坐标及中的交点的属性也通过结构体m来进行定义;其中其中m.datapro和m.datanext两个属性设置为交点所在线段前后的两个端点。
38.进一步地,弧点为构成pror与nextr之间的那部分圆弧的点;所述连接点即转折点,用于将nextr所在的线段与pror所在的线段进行连接。
39.与现有技术相比,本发明具有以下技术特点:
40.1.尽可能使用数学方法对于路径生成方法进行优化,保证计算量可控。
41.2.路径生成速度快,生成质量高。
42.3.对于不同图案的适应力强,通用性高。
43.4.路径的平均单次路程较长,可以充分利用激光开启时间。
44.5.图案轮廓明显,图案填充效果清晰可辨。
附图说明
45.图1为本发明方法的流程示意图;
46.图2为锯齿平行打标的示意图;
47.图3为本发明实施例中寻找和直线y相交的所有线段对应的点的示意图;
48.图4为内外环拓展轮廓的一个示意图;
49.图5为轮廓扩展的几何原理图;
50.图6为展示内外环以及线段相交点的一个示意图;
51.图7中为不设置阈值可能出现的超长弧线连接的示意图;
52.图8为从nextr中筛选连接点的示意图。
具体实施方式
53.参见附图,本发明提供的一种自动生成打印路径的激光打标方法,包括以下步骤:
54.一、预处理步骤
55.步骤1.1,点集预处理:获取待处理的图像点集,定义相关数据结构
56.步骤1.1.1,将输入的待打印的图形符号点集按照是否属于一个封闭环分成不同点集,形成点集结构体数组orgs,属性如下,其中点集数据应为连续的点且首尾连接,i代表数组索引;orgs中所有环的点集即构成需要绘制的图像。
57.orgs(i).data:点集坐标集合(使用结构体m作为元素,按顺序存储);
58.orgs(i).mod:内外环(1为内环,0为外环);
59.orgs(i).layer:环为第几层(0即指初始环,1指第一次拓展的紧贴着0的轮廓环)。
60.将每个点集数据的坐标点都定义为一个结构体m,包含以下部分:
61.m.data:点坐标;
62.m.datapro:同一环中上一个点坐标(用于连接为线段做相交检测);
63.m.datanext:同一环中下一个点坐标;
64.m.layer:点属于第几层环;
65.m.mod:内外环(1为内环,0为外环);
66.m.index:属于某个环(上述orgs中的i索引);
67.m.ii:属于某个环的第几个点(按顺序)。
68.步骤1.1.2,将orgs中的点按网格切分存储到一个二维结构体中dotssplit,其中结构体dotssplit的行列索引i,j分别对应点的x,y坐标的十倍最接近的整数(四舍五入),按照步骤1.2所述的结构体m进行表示后存入dotssplit中。比如一个点a(0.26,0.09),b(2.31,1.09)那么先将两者坐标各自扩大十倍为a(2.6,0.9),b(23.1,10.9),然后进行四舍五入得a(3,1),b(23,11),此时可知a坐标需要存入dptssplit[3][1],b坐标需要存入dptssplit[23][11],扩大十倍是为了提高坐标搜索精度,否则a在[0][0],b在[2][1]将会造成很多坐标拥挤在一起。
[0069]
在该步骤中的按网格切分其实就是后边的x,y坐标就近原则找索引,以此得到按照网格切分的数据,可以极大的加快后期查找速度(值得注意的是后期处理产生的每个子轮廓都要单独进行切分存储),而对于每个点的结构体定义很好的保存了点自身以及周围的信息,对于后期进行相交判断以及内外环判断十分方便,克服了点信息不足时编码困难的缺点。
[0070]
步骤1.2,内外环区分:利用奇偶交点法确定环是内环还是外环,如图3所示。
[0071]
步骤1.2.1,遍历所有orgs内的所有环的点集,每个环取其中任意四个点得其y坐标的均值存入数组ys。
[0072]
步骤1.2.2,对于ys中每一个y坐标都做一条穿过该y坐标的直线横穿需要绘制的图像,同时从dotssplit中得到对应与直线最近的上方和下方两个网格行upgrids downgrids。
[0073]
步骤1.2.3,遍历upgrids和downgrids寻找和直线y相交的所有线段对应的点,并按照x大小进行排序,按图3则为abcdef。由于每个点集数据的坐标点被结构体m定义后,结构体m中记录了该点m.data、上一个点坐标m.datapro、下一个点坐标m.datanext共三个坐标点,这三个坐标点依次连接会构成两个线段,该线段可能与直线y相交。
[0074]
参见图3,a点所在的环为内环,b点及d点所在环为外环(下方小圆环也是外环),整个需要填充的区域就是外环和内环之间的灰色区域。
[0075]
步骤1.2.4,从左向右按顺序查看,若点排序位置为奇数(a为1),那么点所属的环即为内环,否则为外环。同时如果一个环已经被判定结束,则后边再次查看到此环上另外的点则直接跳过,例如从b可以判断是外环,那么直接跳过c判断d也是外环,如图3所示,判定结束后将点集预处理模块中得到的所有点都打上对应的内外环标记,并将内环按照顺时针将点排序,外环按照逆时针排序。
[0076]
在该步骤中,本发明设计了一种通过交点奇偶次序判断环的封闭方向的算法,通过此方式本方案可以快速得到每个封闭环应该拓展轮廓的方向,使得后续生成轮廓平行路径结果更加可靠,克服了轮廓扩展方向错误的问题。
[0077]
步骤1.3,获取内外环拓展轮廓:利用中点垂直延伸法确定内外环对应方向的拓展轮廓,如图4和图5所示。
[0078]
步骤1.3.1,对所有步骤1.1中点集结构体数组orgs中的环进行遍历,如果是内环就进行内扩获得,如果是外环就外扩获得,获得方式是通过如图5所示相邻两个点ac,作ac中点m,作垂线并延长到a’,值得注意的是如果是外环,a’应该在线段方向的左侧,否则在右侧。
[0079]
图4为本方案需要获取到一个和环具有相同轮廓且平行的另一个轮廓,如果b是内
环,那本方案需要的轮廓就是a,如果a是外环,那么本方案需要的轮廓就是b(内外指的是内侧或外侧为待填充区域)。
[0080]
步骤1.3.2,将获取的轮廓线的点存入orgs以及dotssplit中,存储方式参见《一、预处理步骤》中的步骤1.1.1和1.1.2,同时勿忘设置layer为1(表明是第一次扩充形成的轮廓线)。
[0081]
在该步骤中,得到的轮廓线主要用于锯齿平行打标时对于边界的界定以及连线方向的获取,且生成环的方向与父环相同,该方法的优势在于简单易实现,并且生成效果好,轮廓线平行度高。
[0082]
二、锯齿平行打标
[0083]
步骤2.1,生成平行线段:生成等间隔直线并利用交点奇偶数次序切割为平行线段
[0084]
步骤2.1.1,获取点集结构体数组orgs中所有坐标点的最大、最小y坐标,在最大的y坐标和最小的y坐标之间开始生成多条间隔为l的直线,对于每条直线从dotssplit中得到与该直线最近的上方和下方两个网格行upgrids downgrids。
[0085]
步骤2.1.2,遍历upgrids downgrids寻找层数(m.layer)为1且和直线y相交的坐标点,并构成交点坐标集dotcros;其中交点坐标及中的交点的属性也通过结构体m来进行定义;其中其中m.datapro和m.datanext两个属性设置为交点所在线段前后的两个端点,并将dotcros中的交点按照其x坐标大小进行排序。
[0086]
步骤2.1.3,遍历dotcros,其中遍历时交点的索引i从1开始累加,只要mod(i,2)==0即i为偶数便将索引i-1的点,以及索引为i的点组成一条线段保存至seglines(此过程获取一条直线中应保留哪几个线段),如图6一共与layer为1的环有四个交点abcd,其中ab和cd可以保留,其余全部舍去;图6中,layer表示从外到内的第几层轮廓,
[0087]
原始环代表是最开始给定的轮廓数据,内扩环表示向内拓展的一个环。
[0088]
步骤2.1.4,对于每个步骤2.1.1中得到的upgrids downgrids重复2.1.2和2.1.3都将获得一个seglines,将所有seglines按先后顺序放入seglineslist。
[0089]
在该步骤中,从最大y坐标开始生成直线,使用端点的奇偶交点次序以及封闭环的层layer的判断进行点的切分,切分效果优秀。同时得益于点周围空间信息的良好保留,线段生成速度也很快,有效提升了整体路径生成速度。
[0090]
步骤2.2,连接线段形成路径:使用同方向端点距离最小以及阈值法判断是否连接两个线段
[0091]
步骤2.2.1,遍历seglineslist:对于每一个seglines获取其第一个线段的右端点pror并将其对应线段存储到roads后将pror所属的线段从此seglines中删去,并获取此点在orgs中对应的环以及对应环上的点索引。
[0092]
步骤2.2.2,获取下一个seglines,查看其中所有线段并找出右端点所属的环与上一个线段右端点所属环相同的点组成点集nextrs,遍历nextrs,找出所有nextr.ii》pror.ii且pror.ii-nextr.ii大于一定阈值的nextr(设置阈值为防止线的乱飞),如图7所示。其中,点结构体m内有一个index属性表示此环是orgs中的索引,每个环都不相同,只需要判断index是否相同即可判断两个点是否同属于一个环。其中,pror.ii表示点pror属于某个环的第几个点(即结构体m中的m.ii属性),nextr为nextrs中的一个元素,即遍历nextrs时每个循环中需要操作的元素对象。
[0093]
对于外环点的存储顺序是逆时针,内环存储数据是顺时针,对于外环nextr.ii》pror.ii意味着下一个点位于上一个点的逆时针方向上,对于内环nextr.ii》pror.ii意味着下一个点位于上一个点的顺时针方向上。可以想到右端点在都位于内环的右侧,位于外环的左侧,所以按照此规则得到的nextr都应在pror的下方,此判断是为了做校验;pror.ii-nextr.ii可以理解为表示上下两个点之间的距离,距离不能过大,这里的阈值设置为用户所指定的参数。
[0094]
步骤2.2.3,从所有步骤2.2.2中选出的nextr中筛选pror.ii-nextr.ii最小的nextr作为连接点,并将nextr对应的线段以及pror.ii到nextr.ii中间所有弧点存储到roads后将nextr对应的线段从此seglines中删去,如果没有符合条件的点则重新遍历seglineslist,如图8所示。
[0095]
其中,弧点即圆环的一部分,因为不是直线所以称为构成弧线的点,具体为构成pror与nextr之间的那部分弧的点。
[0096]
其中,连接点即转折点,可以理解为将这个nextr所在的线段与pror所在的线段进行连接,而连接方式就是加入pror与nextr之间的所有点(即圆环的一小部分)构成一个连续路径,所以两个连接点的字面意思就是pror与nextr,因为pror是已经确定了的,所以就称nextr为下一个连接点(参见图8左边两个线段,右端两个点之间的连接即为此描述,从nextr与nextr2之间选择了nextr作为pror的下一个连接点)。
[0097]
步骤2.2.4,循环步骤2.2.1至步骤2.2.3,直至seglineslist全部为空即可得到多个完整的路径将图案完全填充;将路径发送给激光打标机后,即可按照该路径进行打标。其中,循环完右端点后,要重新转到下一条线段的左端点进行,最终得到所有的路径。
[0098]
在该步骤中,本方案对已生成的平行线段簇利用同方向端点距离最小以及阈值法进行连接以生成尽可能长的路径,有效避免了连接线的错乱,提高了路径生成结果的稳定性。
[0099]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献