本发明涉及激光振镜图形校正算法领域,具体涉及到一种基于双线性插值法的激光振镜图形校正算法。
背景技术:
振镜扫描式打标头主要由XY扫描镜(反射镜)、场镜、振镜及计算机控制的打标软件等构成,其工作原理是:激光器是将激光束入射到2面XY扫描镜(反射镜)上,计算机控制XY扫描镜(反射镜)的反射角度,使光束经过这2个XY扫描镜(反射镜)的发射可分别沿X、Y轴进行扫描,即使激光束实现偏转,也即使有一定功率密度的激光聚的焦点落在打标材料上,并可使该焦点可按要求进行运动,从而能够利用激光束在目标材料表面上留下永久的标记。聚焦的光斑可以是圆形或矩形。理论上,通过控制振镜式激光扫描系统镜片的相互协调偏转来可以实现平面上任意复杂图形的扫描。
另外,根据激光波长的不同,还可选用相应的光学元器件,包括激光扩束镜、动态聚焦系统等。经过扩束镜之后,激光器发射的光束可形成均匀的平行光束;在大视场扫描中,为了纠正扫描平面上点的聚焦误差,通常需要在振镜系统前端加入动态聚焦系统。激光束经过扩束镜,再经过动态聚焦镜聚焦后,可依次投射到X、Y轴振镜上,最后经过2个振镜,2次反射到工作台面上,最终形成扫描平面上的扫描点。
然而,振镜式激光扫描仍存在着原理性的误差,即扫描畸变。
镜头畸变是光学透镜固有的透视失真的总称,这种失真对于照片的成像质量是非常不利的。由于是由透镜的固有特性(凸透镜汇聚光线、凹透镜发散光线)所造成的,所以镜头畸变是所以无法消除,只能通过其他方式予以校正。
与球差和像散不同,透视失真是由于光线的倾斜度大引起的,主要表现在像平面内图形的各部分与原物不成比例,但其不破坏光束的同心性,即不影响像的清晰度。镜头畸变的情况与光阑的位置有关。
镜头畸变常见有枕形、桶形和线性等几种。
枕形畸变(Pincushion Distortion),又称枕形失真,它是由镜头引起的,具体特点为画面向中间“收缩”。该现象是使用长焦镜头或变焦镜头的长焦端时,最容易被察觉的一种失真现象。
桶形畸变(Barrel Distortion),又称桶形失真,是由镜头中透镜物理性能以及镜片组结构引起的畸变现象,具体特点为成像画面呈桶形膨胀状。
线性畸变(Linear Distortion),又叫线性失真。当试图近距离拍摄高大的直线结构,比如建筑物或树木等时,经常出现的一种失真现象。假设使用的是广角镜头,并且认为只把照相机稍微向上瞄准一点,就可以离得很近也能把整个高大直线结构拍摄下来。但是由于实际上平行的线条显得并不平行了,结果是建筑物或树木好像要倾倒下来似的,这种失真现象即被称为线性畸变。
此外,振镜式激光扫描系统的扫描精度还受到机械安装误差和控制系统的影响。其中控制系统本身因素主要包括噪声干扰、系统响应性能、控制算法以及控制信号输出量与扫描角度之间存在的非线性等。机械安装误差主要是振镜、激光器、动态聚焦和安装基准面的平行度问题以及机械加工结构变形,它们都可能造成振镜系统扫描时产生图形畸变。
技术实现要素:
本发明所要解决的技术问题是:提供一种基于双线性插值法的激光振镜图形校正算法,其核心是双线性插值法。在数学上,双线性插值法是有2个变量的插值函数的线性插值扩展,其核心思想是在2个方向分别进行一次线性插值。通过本校正算法,激光振镜图形中的任何1点均可以得到校正,因此整个图形就可以完成符合要求的校正效果。
为解决上述技术问题,本发明提供的技术方案是:
提供一种基于双线性插值法的激光振镜图形校正算法,具体为:
一、将边长为m的正方形,共分成(2n+1)行(2n+1)列,也就是从第0行到第2n行,从第0列到第2n列;设定第n行为X轴,第n列为Y轴,则第n行和第n列的交点为坐标原点,从而建立坐标系。
二、在未校正的情况下,进行激光打标,再按照从左到右,从上到下的顺序,测量打标后各点的坐标;根据测量的各点坐标,分别建立对应X轴坐标,Y轴坐标的数组(和网格区域),其中数组长度为length=(2*n+1)*(2*n+1),对应X轴坐标数组为real_x[length],对应Y轴坐标数组为real_y[length]。
三、坐标校正。
第一步:求坐标为(x,y)的点所在的网格区域。
设定坐标为(x,y)的点,对应为第i行第j列。
坐标为(x,y)的点,对应网格区域4个顶点有X轴坐标数组real_x[length],及Y轴坐标数组real_y[length]中的元素索引分别为index_0,index_1,index_2,index_3。
index_0=i*(2*n+1)+j
index_1=i*(2*n+1)+j+1
index_2=(i+1)*(2*n+1)+j+1
index_3=(i+1)*(2*n+1)+j
第二步:设定坐标为(x,y)的点,其对应X轴所需的校正补偿值为Δx,对应Y轴所需的校正补偿值为Δy;根据坐标点(x,y)所在区域在坐标平面上的位置,分4种情况进行讨论。
情况一:当且时。
情况二:当时;对应网格区域,只有索引为index_0,index_3的2个点;其中索引为index_0的点坐标为(x0,y0),其对应X轴所需的校正补偿值为Δx0,对应Y轴所需的校正补偿值为Δy0;索引为index_3的点坐标为(x0,y1),其对应X轴所需的校正补偿值为Δx3,对应Y轴所需的校正补偿值为Δy3。
Δx0=real_x[index_0]-x0
Δy0=real_y[index_0]-y0
Δx3=real_x[index_3]-x0
Δy3=real_y[index_3]-y1
Δx=Δx0+(Δx3-Δx0)*(y-y0)/(y1-y0)
Δy=Δy0+(Δy3-Δy0)*(y-y0)/(y1-y0)
情况三:当时;对应网格区域,有索引为index_0,index_1两个点;其中索引为index_0的点坐标为(x0,y0),其对应X轴所需的校正补偿值为Δx0,对应Y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应X轴所需的校正补偿值为Δx1,对应Y轴所需的校正补偿值为Δy1。
Δx0=real_x[index_0]-x0
Δy0=real_y[index_0]-y0
Δx1=real_x[index_1]-x1
Δy1=real_y[index_1]-y0
Δx=Δx0+(Δx1-Δx0)*(x-x0)/(x1-x0)
Δy=Δy0+(Δy1-Δy0)*(x-x0)/(x1-x0)
情况四:其余区域;对应网格区域,有索引为index_0,index_1,index_2,index_3四个点;其中索引为index_0的点坐标为(x0,y0),其对应X轴所需的校正补偿值为Δx0,对应Y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应X轴所需的校正补偿值为Δx1,对应Y轴所需的校正补偿值为Δy1;索引为index_2的点坐标为(x1,y1),其对应X轴所需的校正补偿值为Δx2,对应Y轴所需的校正补偿值为Δy2;索引为index_3的点坐标为(x0,y1),其对应X轴所需的校正补偿值为Δx3,对应Y轴所需的校正补偿值为Δy3;首先在x方向进行线性插值,得到点k1的坐标为(x,y0),其对应X轴所需的校正补偿值为Δxk1,对应Y轴所需的校正补偿值为Δyk1;又得到点k2的坐标为(x,y1),其对应X轴所需的校正补偿值为Δxk2,对应Y轴所需的校正补偿值为Δyk2;然后在y方向进行线性插值,得到坐标点(x,y)在X轴上所需的校正补偿值为Δx,在Y轴上所需的校正补偿值为Δy。
Δx0=real_x[index_0]-x0
Δy0=real_y[index_0]-y0
Δx1=real_x[index_1]-x1
Δy1=real_y[index_1]-y0
Δx2=real_x[index_2]-x1
Δy2=real_y[index_2]-y1
Δx3=real_x[index_3]-x0
Δy3=real_y[index_3]-y1
则有:
Δxk1=Δx0+(Δx1-Δx0)*(x-x0)/(x1-x0)
Δxk2=Δx3+(Δx2-Δx3)*(x-x0)/(x1-x0)
Δx=Δxk1+(Δxk2-Δxk1)*(y-y0)/(y1-y0)
Δyk1=Δy0+(Δy1-Δy0)*(x-x0)/(x1-x0)
Δyk2=Δy3+(Δy2-Δy3)*(x-x0)/(x1-x0)
Δy=Δyk1+(Δyk2-Δyk1)*(y-y0)/(y1-y0)
第三步:设定激光打标指令位置为(x,y),对应校正补偿值为(Δx,Δy),则校正补偿值应是打标后的点的实际位置减去打标指令位置之差;现在要求激光打标到的点的实际位置为(x,y),则打标应发的指令位置的坐标用下式计算。
x=x-Δx
y=y-Δy。
采用了上述技术方案后,本发明的效果是:
相对于已披露的技术方案,通过本基于双线性插值法的激光振镜图形校正算法,激光振镜图形中的任何一点均可以得到校正,因此整个图形就可以完成符合要求的校正效果。实验表明,本校正算法既可以消除激光振镜在图形扫描中出现的线性失真和非线性失真,又可以校正激光振镜扫描过程中产生的综合误差,为激光打标图形校正提供了满意的校正效果。
附图说明
图1是将边长为m的正方形分成(2n+1)行(2n+1)列,其中n为2,原点坐标为(m/2,-m/2)。
图2是坐标为(x,y)的点所对应网格区域4个顶点在x轴坐标数组real_x[length],及y轴坐标数组real_y[length]中的元素索引分别为index_0,index_1,index_2,index_3;
图3是计算校正补偿值,根据打标点所在位置分别进行讨论的4种情况,其中①区域代表当且时,②区域代表当且时,③区域代表当且时,④区域代表当且时,⑤区域代表当且时,⑥区域代表当且时,⑦区域代表当且时,⑧当区域代表且时,其余区域代表情况四。
图4是当且时,打标点对应的网格区域所涉及的索引为index_0,index_3的2个点。
图5是当且时,打标点对应的网格区域所涉及的索引为index_0,index_1的2个点。
图6在上述其余区域,坐标为(x,y)的点对应网格区域涉及索引为index_0,index_1,index_2,index_3的4个点。
图7是校正逻辑流程图
图8是校正前的打标效果
图9是经过校正的打标效果
具体实施方式
下面通过具体实施例和附图1至9对本发明进行详细描述,但不作为对本发明的限定。
提供一种基于双线性插值法的激光振镜图形校正算法,校正逻辑流程如图图7。
具体为步骤如下:
一、将边长为m的正方形,共分成(2n+1)行(2n+1)列,也就是从第0行到第2n行,从第0列到第2n列;则以第n行和第n列的交点为坐标原点,建立坐标系;(如附图1所示)
二、在未校正的情况下,进行激光打标;再根据从左到右,从上到下的原则,测量打标后各点的坐标,并分别建立经测量的各交点对应的x轴坐标,y轴坐标的数组,数组长度为length=(2*n+1)*(2*n+1);假设其中对应x轴坐标数组为real_x[length],其中对应y轴坐标数组为real_y[length];
三、坐标校正:
第一步:求坐标为(x,y)的点,所在的网格区域;
假设坐标为(x,y)的点,对应为第i行第j列;
ifthen
ifthen
ifthen
ifthen
其余情况,x′=x y′=y
则有:
坐标为(x,y)的点所对应网格区域4个顶点,所述4个顶点在x轴坐标数组real_x[length],及y轴坐标数组real_y[length]中的元素索引分别为index_0,index_1,index_2,index_3;(如附图2所示)
index_0=i*(2*n+1)+j
index_1=i*(2*n+1)+j+1
index_2=(i+1)*(2*n+1)+j+1
index_3=(i+1)*(2*n+1)+j
第二步:假设坐标为(x,y)的点,对应x轴所需的校正补偿值为Δx,对应y轴所需的校正补偿值为Δy;根据坐标点(x,y)所在区域在坐标平面上的位置分4种情况进行讨论;
情况一:当且时;(如附图3所示,对应区域①)
当且时;(如附图3所示,对应区域②)
当且时;(如附图3所示,对应区域③)
当且时;(如附图3所示,对应区域④)
情况二:当且时,(如附图3所示,对应区域⑤);根据附图4,坐标为(x,y)的点所对应网格区域涉及索引为index_0,index_3的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_3的点坐标为(x0,y1),其对应x轴所需的校正补偿值为Δx3,对应y轴所需的校正补偿值为Δy3:
Δx0=real_x[index_0]-x0
Δy0=real_x[index_0]-y0
Δx3=real_x[index_3]-x0
Δy3=real_x[index_3]-y1
Δx=Δx0+(Δx3-Δx0)*(y-y0)/(y1-y0)
Δy=Δy0+(Δy3-Δy0)*(y-y0)/(y1-y0)
当且时,(如附图3所示,对应区域⑥);根据附图4,坐标为(x,y)的点所对应区域涉及索引为index_0,index_3的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_3的点坐标为(x0,y1),其对应x轴所需的校正补偿值为Δx3,对应y轴所需的校正补偿值为Δy3;
Δx0=real_x[index_0]-x0
Δy0=real_x[index_0]-y0
Δx3=real_x[index_3]-x0
Δy3=real_x[index_3]-y1
Δx=Δx0+(Δx3-Δx0)*(y-y0)/(y1-y0)
Δy=Δy0+(Δy3-Δy0)*(y-y0)/(y1-y0)
情况三:当且时,(如附图3所示,对应区域⑦);根据附图5,坐标为(x,y)的点对应网格区域涉及索引为index_0,index_1的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应x轴所需的校正补偿值为Δx1,对应y轴所需的校正补偿值为Δy1;
Δx0=real_x[index_0]-x0
Δy0=real_x[index_0]-y0
Δx1=real_x[index_1]-x1
Δy1=real_x[index_1]-y0
Δx=Δx0+(Δx1-Δx0)*(x-x0)/(x1-x0)
Δy=Δy0+(Δy1-Δy0)*(x-x0)/(x1-x0)
当且时,(如附图3所示,对应区域⑧);根据附图5,坐标为(x,y)的点对应网格区域涉及索引为index_0,index_1的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应x轴所需的校正补偿值为Δx1,对应y轴所需的校正补偿值为Δy1;
Δx0=real_x[index_0]-x0
Δy0=real_x[index_0]-y0
Δx1=real_x[index_1]-x1
Δy1=real_x[index_1]-y0
Δx=Δx0+(Δx1-Δx0)*(x-x0)/(x1-x0)
Δy=Δy0+(Δy1-Δy0)*(x-x0)/(x1-x0)
情况四:其余区域,根据附图6坐标为(x,y)的点对应网格区域涉及索引为index_0,index_1,index_2,index_3的4个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应x轴所需的校正补偿值为Δx1,对应y轴所需的校正补偿值为Δy1;索引为index_2的点坐标为(x1,y1),其对应x轴所需的校正补偿值为Δx2,对应y轴所需的校正补偿值为Δy2;索引为index_3的点坐标为(x0,y1),其对应x轴所需的校正补偿值为Δx3,对应y轴所需的校正补偿值为Δy3;首先在x方向进行线性插值,得到点k1的坐标为(x,y0),其对应x轴所需的校正补偿值为Δxk1,对应y轴所需的校正补偿值为Δyk1;又得到点k2的坐标为(x,y1),其对应x轴所需的校正补偿值为Δxk2,对应y轴所需的校正补偿值为Δyk2;然后在y方向进行线性插值,得到坐标点(x,y)在x轴上所需的校正补偿值为Δx,在y轴上所需的校正补偿值为Δy;
Δx0=real_x[index_0]-x0
Δy0=real_y[index_0]-y0
Δx1=real_x[index_1]-x1
Δy1=real_y[index_1]-y0
Δx2=real_x[index_2]-x1
Δy2=real_y[index_2]-y1
Δx3=real_x[index_3]-x0
Δy3=real_y[index_4]-y1
则有:
Δxk1=Δx0+(Δx1-Δx0)*(x-x0)/(x1-x0)
Δxk2=Δx3+(Δx2-Δx3)*(x-x0)/(x1-x0)
Δx=Δxk1+(Δxk2-Δxk1)*(y-y0)/(y1-y0)
Δyk1=Δy0+(Δy1-Δy0)*(x-x0)/(x1-x0)
Δyk2=Δy3+(Δy2-Δy3)*(x-x0)/(x1-x0)
Δy=Δyk1+(Δyk2-Δyk1)*(y-y0)/(y1-y0)
第三步:假设激光打标指令位置为(x,y),对应校正补偿值为(Δx,Δy),则校正补偿值应是打标后的点的实际位置减去打标指令位置之差;现在要求激光打标到的点的实际位置为(x,y),则打标应发的指令位置的坐标(cx,cy)用下式计算;
通过本校正算法,激光打标图形中的任何一点均可以得到校正,如附图8中所示的打标图形出现了枕形失真,经校正后,如附图9所示的图形已克服了原有的问题,实现了校正效果。实验表明,本校正算法既可以消除激光振镜在图形扫描中出现的线性失真和非线性失真,又可以校正激光振镜扫描过程中产生的综合误差,为激光打标图形校正提供了满意的校正效果。
由技术常识可知,本技术方案可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。