一种基于双线性插值法的激光振镜图形校正算法.pdf

上传人:1****2 文档编号:6020903 上传时间:2019-04-03 格式:PDF 页数:21 大小:1.13MB
返回 下载 相关 举报
摘要
申请专利号:

CN201710072867.1

申请日:

2017.01.30

公开号:

CN106815822A

公开日:

2017.06.09

当前法律状态:

实审

有效性:

审中

法律详情:

专利申请权的转移IPC(主分类):G06T 5/00登记生效日:20180312变更事项:申请人变更前权利人:龙兵变更后权利人:深圳市神臂智能科技有限公司变更事项:地址变更前权利人:518000 广东省深圳市南山区高新南四道10号变更后权利人:518000 广东省深圳市龙岗区龙岗街道龙升路16号龙岗电商大厦602室|||实质审查的生效IPC(主分类):G06T 5/00申请日:20170130|||公开

IPC分类号:

G06T5/00

主分类号:

G06T5/00

申请人:

龙兵

发明人:

龙兵

地址:

518000 广东省深圳市南山区高新南四道10号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明涉及一种基于双线性插值法的激光振镜图形校正算法,其核心是双线性插值法。在数学上,双线性插值法是有2个变量的插值函数的线性插值扩展,其核心思想是在2个方向分别进行一次线性插值。实验表明,本校正算法既可以消除激光振镜在图形扫描中出现的线性失真和非线性失真,又可以校正激光振镜扫描过程中产生的综合误差,为激光打标图形校正提供了满意的校正效果。

权利要求书

1.一种基于双线性插值法的激光振镜图形校正算法,其特征在于:
一、将边长为m的正方形,共分成(2n+1)行(2n+1)列,也就是从第0行到第2n行,从第0列
到第2n列;则以第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列;
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>&gt;</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>n</mi> </mrow> </mtd> <mtd> <mrow> <msup> <mi>x</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>&lt;</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>n</mi> </mrow> </mtd> <mtd> <mrow> <msup> <mi>x</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> <mrow> <mo>(</mo> <mrow> <mi>y</mi> <mo>&gt;</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>n</mi> </mrow> </mtd> <mtd> <mrow> <msup> <mi>y</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>&lt;</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>n</mi> </mrow> </mtd> <mtd> <mrow> <msup> <mi>y</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
其余情况,x′=x y′=y
则有:
<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>int</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <mfrac> <mrow> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <msup> <mi>y</mi> <mo>&prime;</mo> </msup> </mrow> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mfrac> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>j</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>int</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <mfrac> <mrow> <msup> <mi>x</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mfrac> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced>
坐标为(x,y)的点所对应网格区域4个顶点,所述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种情况进行讨论;
情况一:当且时;
<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>x</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>x</mi> <mrow> <mo>&lsqb;</mo> <mrow> <mi>l</mi> <mi>e</mi> <mi>n</mi> <mi>g</mi> <mi>t</mi> <mi>h</mi> <mo>-</mo> <mn>1</mn> </mrow> <mo>&rsqb;</mo> </mrow> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>y</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>y</mi> <mrow> <mo>&lsqb;</mo> <mrow> <mi>l</mi> <mi>e</mi> <mi>n</mi> <mi>g</mi> <mi>t</mi> <mi>h</mi> <mo>-</mo> <mn>1</mn> </mrow> <mo>&rsqb;</mo> </mrow> <mo>+</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
当且时;
<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>x</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>x</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>*</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>*</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> <mo>&rsqb;</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>y</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>y</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>*</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>*</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> <mo>&rsqb;</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
当且时;
<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>x</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>x</mi> <mrow> <mo>&lsqb;</mo> <mrow> <mi>i</mi> <mo>*</mo> <mrow> <mo>(</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> </mrow> <mo>&rsqb;</mo> </mrow> <mo>+</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>y</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>y</mi> <mrow> <mo>&lsqb;</mo> <mrow> <mi>i</mi> <mo>*</mo> <mrow> <mo>(</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mi>j</mi> </mrow> <mo>&rsqb;</mo> </mrow> <mo>+</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
当且时;
<mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>x</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>x</mi> <mo>&lsqb;</mo> <mn>0</mn> <mo>&rsqb;</mo> <mo>+</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>&Delta;</mi> <mi>y</mi> <mo>=</mo> <mi>r</mi> <mi>e</mi> <mi>a</mi> <mi>l</mi> <mo>_</mo> <mi>y</mi> <mo>&lsqb;</mo> <mn>0</mn> <mo>&rsqb;</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced>
情况二:当且时,坐标为(x,y)的点所对应网格区域涉及索引为
index_0,index_3的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正
补偿值为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_3的点坐标为(x0,y1),其对
应x轴所需的校正补偿值为Δx3,对应y轴所需的校正补偿值为Δy3;
<mrow> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>0</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mi>i</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mrow> <mo>(</mo> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
Δ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)
当且时,对应坐标为(x,y)的点所对应区域涉及索引为index_0,
index_3的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为
Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_3的点坐标为(x0,y1),其对应x轴所
需的校正补偿值为Δx3,对应y轴所需的校正补偿值为Δy3;
<mrow> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>0</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mi>i</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mrow> <mo>(</mo> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
Δ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)
情况三:当且时,坐标为(x,y)的点对应网格区域涉及索引为index_
0,index_1的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值
为Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应x轴
所需的校正补偿值为Δx1,对应y轴所需的校正补偿值为Δy1;
<mrow> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>j</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>0</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mi>j</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
Δ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)
当且时,坐标为(x,y)的点对应网格区域涉及索引为index_0,
index_1的2个点;其中索引为index_0的点坐标为(x0,y0),其对应x轴所需的校正补偿值为
Δx0,对应y轴所需的校正补偿值为Δy0;索引为index_1的点坐标为(x1,y0),其对应x轴所
需的校正补偿值为Δx1,对应y轴所需的校正补偿值为Δy1;
<mrow> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>j</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>0</mn> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mrow> <mi>j</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
Δ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)
情况四:其余区域,坐标为(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;
<mrow> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>j</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mi>j</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>0</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mi>i</mi> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
<mrow> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mrow> <mo>(</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>*</mo> <mfrac> <mi>m</mi> <mn>4</mn> </mfrac> </mrow>
Δ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)用下式计算;
<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>c</mi> <mi>x</mi> <mo>=</mo> <mi>x</mi> <mo>-</mo> <mi>&Delta;</mi> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>x</mi> <mi>y</mi> <mo>=</mo> <mi>y</mi> <mo>-</mo> <mi>&Delta;</mi> <mi>y</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>.</mo> </mrow>

说明书

一种基于双线性插值法的激光振镜图形校正算法

技术领域

本发明涉及激光振镜图形校正算法领域,具体涉及到一种基于双线性插值法的激
光振镜图形校正算法。

背景技术

振镜扫描式打标头主要由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所示的图形已克服了原有的问题,实现了校
正效果。实验表明,本校正算法既可以消除激光振镜在图形扫描中出现的线性失真和非线
性失真,又可以校正激光振镜扫描过程中产生的综合误差,为激光打标图形校正提供了满
意的校正效果。

由技术常识可知,本技术方案可以通过其它的不脱离其精神实质或必要特征的实
施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有
的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。

一种基于双线性插值法的激光振镜图形校正算法.pdf_第1页
第1页 / 共21页
一种基于双线性插值法的激光振镜图形校正算法.pdf_第2页
第2页 / 共21页
一种基于双线性插值法的激光振镜图形校正算法.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《一种基于双线性插值法的激光振镜图形校正算法.pdf》由会员分享,可在线阅读,更多相关《一种基于双线性插值法的激光振镜图形校正算法.pdf(21页珍藏版)》请在专利查询网上搜索。

本发明涉及一种基于双线性插值法的激光振镜图形校正算法,其核心是双线性插值法。在数学上,双线性插值法是有2个变量的插值函数的线性插值扩展,其核心思想是在2个方向分别进行一次线性插值。实验表明,本校正算法既可以消除激光振镜在图形扫描中出现的线性失真和非线性失真,又可以校正激光振镜扫描过程中产生的综合误差,为激光打标图形校正提供了满意的校正效果。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1