一种基于MATLAB的激光标记阴影的自动生成方法

文档序号:25806058发布日期:2021-07-09 13:00阅读:208来源:国知局
一种基于MATLAB的激光标记阴影的自动生成方法
一种基于matlab的激光标记阴影的自动生成方法
技术领域
1.本发明属于激光标记技术领域,涉及一种基于matlab的激光标记阴影的自动生成方法,具体来说是根据线性插值后的多连通域图形的边界坐标集合,基于多边形等距偏移和等距平行线切割算法,在matlab上实现对任意多连通域图形的等高线和“之”字形阴影填充,并将该功能开源化。


背景技术:

2.激光标记作为一种现代精密加工方法,常用于对模型或产品上文字,符号,图像等信息进行标注,与传统的腐蚀加工法和气动加工法相比,具有工件无接触,轨迹高精细,标记强耐久等优势,标记的过程中不会对环境产生污染。目前,激光标记技术已广泛用于各行各业,为优质、高效、无污染和低成本的现代加工生产开辟了广阔的前景。
3.激光标记的基本原理是在高能激光束的照射下,沿着特定的轨迹,在工件表面留下一定的熔化、汽化、加热变色等物理化学痕迹,从而实现工件表面的信息标注。激光打标机的核心系统是激光控制系统,而绘图系统又是控制系统的关键分支系统。激光标记首先要解决的问题就是对图案的二维轮廓进行识别,在此基础上生成轮廓内的一系列等距照射轨迹,激光沿轨迹照射便形成了清晰醒目的阴影标记。目前,激光标记常用的轮廓填充方案包括封闭曲线填充,对角线填充,交叉影线填充,等高线填充和之字形填充等。其中,等高线和之字形填充是最常见的两种填充方式:之字形填充的基本原理是利用等距平行线切割轮廓线形成一系列的平行线段,再将这些线段按照之字形顺序首尾相连,得到离散的激光轨迹。平行等高线填充的基本原理是利用多边形向内等距偏移,自外轮廓不断向内衍生新的子边界,直到等距等高线覆盖整个图形。实际应用中,选择何种填充方案很大程度上取决于标记材料的理化性质和标记过程对加工任务的影响。
4.激光标记常见的绘图模块主要有两种:一种是机器自带的绘图软件,程序, app等,通过一定的算法自动识别物体的轮廓,颜色等特征信息,通过比对软件自带的图库,批量生成不同类型的填充阴影。优点是能在短时间内完成轨迹文件制作并上传控制中心,不仅效率高,而且实现了自动化。但最大的缺点是不能对打印对象进行实时处理,可塑性弱,比如标记镭雕logo等复杂图案时仍需外源软件再加工,一旦绘图软件出现故障,整个激光打标机都会停止运作,设备维修方面也必须考虑拆解组装打标机造成的成本问题和安全问题。另一种是借助外源绘图软件辅助制作阴影文件,常见的有coreldraw,cad等,能够在打标机外部生成阴影并规划激光轨迹,再将输出的阴影文件(通常是pdf或者jpg等图片格式)传回控制系统并执行后续操作。这类软件大多是国外研发的非开源软件,需要购买使用权,且软件内部代码无法或者很难更改,程序可塑性不高。此外,绝大多数软件对输入和输出数据的文件格式也有一定的要求,不兼容现象时常存在。当前,我国在激光标记绘图软件和程序的开发方面仍属空白,随着激光标记技术的不断推广,面向多种编程语言的阴影自动生成程序已成为潜在需求。
5.目前,激光标记阴影的自动生成模块仍以打标机自带的图形处理程序为主,暂时
没有共享的开源程序,且处理速度不理想。matlab自带的polygon程序包可以完成多边形的等距偏移,理论上可以实现等距等高线的阴影生成,但偏移后的多边形阴影曲线仍然存在终点位置开口,端点连接混乱,过量偏移等问题,尤其针对多连通域图形来说,仍需进一步的优化处理。之字形阴影暂无matlab命令可以一键生成,需要手动编程实现。总的来说,基于matlab等各类编程语言的激光标记阴影程序设计还有很大发展空间。
6.为解决开源绘图程序短缺问题,并实现激光标记阴影的高效、快速生成,本发明引入多边形等距偏移和等距平行线切割两种算法,根据matlab的图形处理命令和编程特点,建立多连通域图形平行线与等高线激光标记阴影自动生成模型和程序。首先读取多连通域图形数据并将二维分辨率插值至1/5间距,通过最大次数等距偏移,去除叠边,断点识别重连和删除错位连接四个步骤实现等高线阴影的自动生成,并通过单次等距偏移,等距线切割,交点排序,奇偶边处理和非单调边去除五个步骤实现“之”字形阴影的自动生成。


技术实现要素:

7.本发明解决的技术问题在于提供一种多连通域图形平行线与等高线激光标记阴影自动生成方法,并利用matlab开源编程语言对算法进行包装实现。
8.一种基于matlab的激光标记阴影的自动生成方法,包括以下步骤:
9.步骤1:图形边缘数据的提取与插值处理;
10.步骤2:多边形等距偏移;
11.步骤3:建立等高线阴影填充模型;
12.步骤4:建立等距平行线阴影填充模型;
13.步骤5:基于matlab开源编程语言进行包装实现。
14.所述步骤1具体包括:
15.利用matlab自带的incontour或edge函数,或者借助其他图形学方法,获取给定图形的轮廓边界坐标集,通过interp函数对边界坐标线性插值,将各个点之间的水平和垂直距离控制在偏移间距的1/4以内。
16.matlab是美国mathworks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
17.所述步骤2具体包括:
18.首先,根据轮廓边界坐标数据集求解目标轮廓的曲线方程;目标轮廓曲线实质上并不是光滑曲线,而是由多条直线首尾相连构成的多边形;在笛卡尔坐标系下,以一个简单的多边形为例,假设外轮廓上有两点坐标为(xa,ya)和(xb,yb),如图1所示,直线ab的斜率k可以表示成:
[0019][0020]
设直线ab的方程为:y=kx+b,将点a或点b的坐标带入直线方程,得到:
[0021][0022]
因此,任意一条直线的方程可以表示为:
[0023][0024]
假设内轮廓上两点坐标为p1和p2,则p1p2线段就是我们需要生成的等距内轮廓线段;与直线ab相比,p1p2在y轴上产生一个增量δb,p1p2方程为:
[0025][0026][0027]
其中,d的符号由斜率k和x轴增量决定;把δb带回方程,p1p2方程变成:
[0028][0029]
同理,对于另一条相邻的内轮廓线段p2p3,其与p1p2的交点为:
[0030][0031][0032]
联立上述两方程得到交点坐标,连接所有交点即可得到下一阶等距偏移轮廓;在matlab中,该方法可以利用polybuffer命令自动实现,而在python、c++, java等语言中,可以根据上述方案逐步编程实现。
[0033]
所述步骤3具体包括:在多边形等距偏移算法的基础上,建立等高线阴影填充模型;
[0034]
单连通图形的等高线填充只需要多次重复多边形等距偏移过程,直到空白区域完全被覆盖,对于多连通图形,则可以视为多个单连通图形的交集区;
[0035]
设最外层图形为第一层,向内依次为第二、第三层
……
,其中奇数层的图形向内偏移,偶数层图形向外偏移;与单连通图形相比,多连通图形的等距偏移在交点、拐点等位置容易出现中断、重叠、错位等现象,使得运算效率大幅降低,甚至产生算法漏洞;因此,多连通图形的阴影生成算法需要在单连通的基础上进一步优化;
[0036]
当ab两个单连通图形的阴影出现重叠时:
[0037]
首先,利用inpolygon函数判断同层轮廓的两条闭合阴影曲线之间的重叠部分;
[0038]
其次,取重叠线段的起点和终点,按照最小距离原则配对后重新连接,去除两点之间的重叠曲线;
[0039]
之后,在复合图形的基础上做等距偏移,偏移的过程中如果图形断裂为两个或两个以上的子图形,则会在下一步分别独立进行等距偏移,不会产生相互影响,直到空白区域被完全覆盖;
[0040]
最后,设定阈值为偏移间距的1/3倍,检测长度超过阈值的曲线,即误连线段,并删除,最终形成完整平滑的等距等高线填充阴影。
[0041]
所述步骤4具体包括:
[0042]
首先,根据平行线间距要求对原始坐标集进行插值,将水平和垂直分辨率保持在
平行线间距的1/4以上。
[0043]
然后利用等高线阴影填充模型实现外围曲线的一阶等距偏移,最后在一阶子轮廓的基础上生成“之”字平行线阴影;
[0044]
与等高线阴影填充方案不同,多连通图形的平行线阴影填充算法也适用于单连通域图形:以x方向为平行线所指方向,y方向为垂直平行线方向;利用max函数和min函数分别求图形在y方向的上边界y
max
和下边界y
min
,此时对图形边界进行适当扩充,指定y
max
+0.2*(y
max

y
min
)为图形顶边界,y
min

0.2*(y
max

y
min
)为图形底边界,根据用户指定的平行线间隔,在顶底边界之间绘制等间距的平行线与子轮廓相交,并得到交点集i
inter

[0045]
然后利用inpolygon函数判断和去掉奇数层轮廓以外、偶数层轮廓以内的线段;剩余线段中的点存储在点集i
seg
中,存储时按照“之字形”的走向顺序依次排列,即奇数行从左到右排列,偶数行从右到左排列;
[0046]
得到点集i,j之后,循环寻找点集j中存在y方向位移的所有相邻点,组成跳跃点集i
jump
,点集i
jump
所有相邻跳跃点之间的外轮廓点构成点集i
boundary

[0047]“之字形”阴影的特点是在奇数行连接保留左边界,去掉右边界,在偶数行保留右边界,去掉左边界;
[0048]
按此规律,首先将i
boundary
中的所有点进行归类,构成同一条边的全部点归为一类;此时,由于图形轮廓可能在某一两条平行线之间发生转弯,形成不单调的弯曲线段,从而打乱了点类的奇偶排序;因此,需要对每一类点进行单调性检验,将开头两点的纵坐标之差与末尾两点的纵坐标之差相乘,若为负数,则去掉该类所有点,得到优化后的点集i
boundary
‑1;
[0049]
然后,依次对i
boundary
‑1中的各个点类进行循环判断,若该类点属于奇数行的右边界或偶数行的左边界,则将该类的所有点其从i
boundary
‑1中移除;
[0050]
最后,将剩下的每一类点连接起来,就得到“之”字形阴影。
[0051]
所述步骤5具体包括:将两种填充方法通过matlab进行包装实现,图形外轮廓数据通过指定文件输入,能够兼容表格、文本文档、mat文件、数据流文件,还可以直接读取图片文件并转化为灰度值矩阵。
[0052]
本发明实现了激光标记阴影生成程序的开源,将激光标记功能开源化使得用户可以随时根据实际情况对标记算法进行更改,提高了绘图程序的算法可塑性以及数据类型和编程语言的兼容性;实现了基于matlab的等高线和平行线阴影填充,算法简单易行,计算速度快,适用于所有多连通域图案的激光标记,克服了阴影曲线断点、误连、过量偏移等问题,填补了与激光打标机适配的开源程序短缺问题。本方法简单、高效,充分利用了matlab自带的程序功能,并且解决了传统填充曲线终点位置开口,端点误连,等距线过量偏移等问题。设计的 matlab开源程序适用于更复杂的图形,并可以按照其他编程语言进行改写,实现了阴影生成的开源化,为激光标记的阴影生成模块提供了更多平台选择,应用前景广泛。
附图说明
[0053]
图1为本发明步骤1图形边缘数据的提取与插值处理的等距偏移方法示意图;
[0054]
图2为本发明等距等高线填充方法在多连通图形应用时的优化方案;
[0055]
图3为本发明在1mm和0.1mm间距下的填充结果。
具体实施方式
[0056]
下面结合附图和实施例对本发明进行详细的描述,但并不以此作为对本申请保护范围的限定。
[0057]
基于matlab的多连通域图形平行线与等高线激光标记阴影自动生成方法通过如下步骤进行实施:
[0058]
第一步:通过matlab自带的图形和数据读取功能,或通过其他图形边缘检测方法提取目标图案的外轮廓数据集i
outline
[0059]
第二步:通过线性插值方法,将外轮廓数据集的x方向和y方向分辨率控制在0.2倍线间距以上,得到插值后的轮廓数据集i
interp
[0060]
第三步:多边形等距偏移
[0061]
根据轮廓边界坐标数据集求解目标轮廓的曲线方程。在笛卡尔坐标系下,对于任意图形,将其看作一系列直线构成的多边形,在两相邻点坐标(x
a
,y
a
) 和(x
b
,y
b
)已知的情况下,计算两点所连直线的斜率k:
[0062][0063]
设ab的方程为:y=kx+b,将点a或点b的坐标带入直线方程,得到:
[0064][0065]
从而任意一条直线的方程可以表示为:
[0066][0067]
内轮廓上两点坐标假设为p1和p2,则p1p2线段就是我们需要生成的等距内轮廓线段。与ab线相比,p1p2在y轴上产生一个增量δb,p1p2方程为:
[0068][0069][0070]
d的符号由斜率k和x轴增量决定。把δb带回方程,p1p2方程变成:
[0071][0072]
对于另一条相邻的内轮廓线段p2p3,其与p1p2的交点为:
[0073][0074]
联立上述两方程得到交点坐标,连接所有交点得到下一阶等距偏移轮廓。在 matlab中可以利用polybuffer命令实现该算法,而在python、c++,java等其他编程平台上,只需根据上述步骤编程实现。
[0075]
第四步:建立多连通图案的等距平行线阴影填充模型
[0076]
在多边形等距偏移算法的基础上,建立等高线阴影填充模型。单连通图形的等高
线填充只需要多次重复多边形等距偏移过程,直到空白区域完全被覆盖,对于多连通图形,则可以视为多个单连通图形的交集区。设最外层图形为第一层,向内依次为第二、第三层
……
,其中奇数层的图形向内偏移,偶数层图形向外偏移。与单连通图形相比,多连通图形的等距偏移在交点、拐点等位置容易出现中断、重叠、错位等现象,使得运算效率大幅降低,甚至产生算法漏洞。因此,多连通图形的阴影生成算法需要在单连通的基础上进一步优化。
[0077]
当ab两个单连通图形的阴影出现重叠时,首先,利用inpolygon函数判断同层轮廓的两条闭合阴影曲线之间的重叠部分。其次,取重叠线段的起点和终点,按照最小距离原则配对后重新连接,去除两点之间的重叠曲线。之后,在复合图形的基础上做等距偏移,偏移的过程中如果图形断裂为两个或两个以上的子图形,则会在下一步分别独立进行等距偏移,不会产生相互影响,直到空白区域被完全覆盖。最后,设定阈值为偏移间距的1/3倍,检测长度超过阈值的曲线(误连线段)并删除,最终形成完整平滑的等距等高线填充阴影。
[0078]
第五步:建立“之”字形阴影填充模型;
[0079]
首先利用等高线阴影填充模型实现外围曲线的一阶等距偏移,之后,以x方向为平行线所指方向,y方向为垂直平行线方向。在matlab中利用max函数和min 函数分别得到图形在y方向的上边界y
max
和下边界y
min
,指定y
max
+0.2*(y
max

y
min
)为图形顶边界,y
min

0.2*(y
max

y
min
)为图形底边界,根据用户指定的平行线间隔,在顶底边界之间绘制等间距的平行线与子轮廓相交,并得到交点集i
inter
。然后利用inpolygon函数判断和去掉奇数层轮廓以外、偶数层轮廓以内的线段。剩余线段中的点存储在点集i
seg
中,存储时按照“之字形”的走向顺序依次排列,即奇数行从左到右排列,偶数行从右到左排列。得到点集i,j之后,循环寻找点集j 中存在y方向位移的所有相邻点,组成跳跃点集i
jump
,点集i
jump
所有相邻跳跃点之间的外轮廓点构成点集i
boundary
。最后,将i
boundary
中的所有点进行归类,构成同一条边的全部点归为一类。将开头两点的纵坐标之差与末尾两点的纵坐标之差相乘,若为负数,则去掉该类所有点,得到优化后的点集i
boundary
。最后,依次对i
boundary
中的各个点类进行循环判断,若该类点属于奇数行的右边界或偶数行的左边界,则将该类的所有点其从i
boundary
中移除。最后,将剩下的每一类点连接起来,就得到“之”字形阴影,如图3所示。
[0080]
第六步:基于matlab开源编程语言进行包装实现
[0081]
将上述两种方法按照计算顺序,通过matlab编程语言逐步编程实现,每次循环之前都将本轮所得轮廓坐标集的空间分辨率稀疏至等距线间距的0.2倍,减少不必要的运算。图形外轮廓数据通过指定文件类型输入,兼容excel表格、文本文档、mat矩阵数据文件、dat数据流文件等多种文件形式,还可以直接读取图片文件并转化为灰度值矩阵。输出数据也兼容上述格式。
[0082]
最终多连通图形在1mm和0.1mm分辨率下等距等高线填充和“之”字形等距线填充效果如图3所示。图案清晰,曲线距离均等,且无断点。
[0083]
本发明构建了基于matlab的多连通图形等距等高线和“之”字形阴影填充方法,能够实现对多连通图形的高效、快速填充,解决了激光标记绘图程序可塑性差,计算速度慢,结果出现断点、误连、偏移次数过量等问题。
[0084]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明
的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1