具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种物体轮廓线的识别系统,所述系统包括激光器、图像传感器、存储有计算机程序的存储器和处理器,其中,所述激光器用于发出激光以照射被测物体,所述图像传感器用于基于被测物体反射的激光以获取被测物体的轮廓图像并传输给处理器,存储器中还存储有网格-仿射参数对应表(Oi,fi),其中,Oi是第i个网格,fi是Oi对应的仿射参数,fi={fi1,fi2,…,fij,…,fi6},fij是fi中第j个仿射参数因子,j的取值范围是1到6,如图1所示,当所述处理器执行所述计算机程序时实现如下步骤:
S100,对接收的轮廓图像进行采样,获取轮廓图像中原始轮廓线对应的初始轮廓点列表D={D1,D2,…,Di,…,Ds},Di=(xDi,yDi),Di是对轮廓图像中原始轮廓线进行采样的第i个初始轮廓点,xDi是Di在像素坐标系下x轴的坐标值,yDi是Di在像素坐标系y轴的坐标值,i的取值范围是1到s,s是采样的初始轮廓点的数量。
具体地,本领域技术人员知晓,现有技术中任何一种对轮廓图像进行采样的方法均属于本发明保护范围,此处不再赘述。
进一步地,所述采样的轮廓点的数量s可根据实际需求确定,所述轮廓点的采样数量s越大,获取的像素坐标系下的目标轮廓线越精确。
S200,对初始轮廓点Di,获取Di所在的网格Oi并基于网格-仿射参数对应表(Oi,fi)获取Oi对应的仿射参数fi。
具体地,所述轮廓图像被划分成多个网格,获取初始轮廓点Di所在的网格Oi,并查找网格-仿射参数对应表(Oi,fi),找到网格Oi对应的仿射参数fi。
S300,通过下式获取Di在光平面坐标系下对应的目标轮廓点Ai=(XAi,YAi),其中,XAi是光平面坐标系下Ai在X轴的坐标值,YAi是光平面坐标系下Ai在Y轴的坐标值:
从而,基于上式可以得到XAi=fi1*xDi+fi2*yDi+fi3;YAi=fi4*xDi+fi5*yDi+fi6;通过4个加法和4个乘法计算出目标轮廓点的位置。
S400,基于目标轮廓点Ai,获取与原始轮廓线对应的目标轮廓线。
基于上述内容,本发明通过对轮廓图像进行采样获取初始轮廓点列表,基于网格-仿射参数对应表,获取每一初始轮廓点所在网格对应的仿射参数,基于该仿射参数实现从像素坐标系到光平面坐标系的变换,将原本处于弯曲网格的初始轮廓点变成处于垂直网格的目标轮廓点,从而获取光平面坐标系的目标轮廓线,并且避免了现有技术中使用的畸变、外参、内参等进行矫正,本发明使用位操作、4个乘法和4个加法的线性运算就可以获取目标轮廓点,代替了原本3步的线性和非线性叠加的运算,大大提高了计算的效率。
具体地,本发明还包括通过如下步骤获得网格-仿射参数对应表(Oi,fi):
S001,将预设轮廓图像划分为m*n个网格,获取第一网格列表O={O1,O2,…,Ok,…,Om*n},Ok是划分的第k个第一网格,k的取值范围是1到m*n,所述第一网格大小为2t*2g,其中,t为网格长度因子,g为网格高度因子,且t、g均为正整数。
具体地,将第一网格的长度和宽度均设置为2的指数形式,便于在进行初始轮廓点的检索时仅需要位操作就能检索到对应的网格,更加快速地获取初始轮廓点对应的网格。
进一步的,m=m=⌈w/2t⌉,n=⌈h/2g⌉,其中,⌈⌉为向上取整操作函数,所述轮廓图像的分辨率为w*h。
S002,对Ok,获取网格Ok的四个角点Ok1,Ok2,Ok3,Ok4,其中,Ok1=(xOK1,yOk1),Ok2=(xOK2,yOk2),Ok3=(xOK3,yOk3),Ok4=(xOK4,yOk4),xOk1是Ok1在像素坐标系x轴方向上的坐标值,xOk2是Ok2在像素坐标系x轴方向上的坐标值,xOk3是Ok3在像素坐标系x轴方向上的坐标值,xOk4是Ok4在像素坐标系x轴方向上的坐标值,yOk1是Ok1在像素坐标系y轴方向上的坐标值,yOk2是Ok2在像素坐标系y轴方向上的坐标值,yOk3是Ok3在像素坐标系y轴方向上的坐标值,yOk4是Ok4在像素坐标系y轴方向上的坐标值。
S003,获取OK1在光平面坐标系下对应的真实角点Ck1、OK2对应的真实角点Ck2,OK3对应的真实角点Ck3,OK4对应的真实角点Ck4,其中,Ck1=(XCk1,YCk1),Ck2=(XCk2,YCk2),Ck3=(XCk3,YCk3),Ck4=(XCk4,YCk4),XCk1是Ck1在光平面坐标系下在X轴方向上的坐标值,XCk2是Ck2在光平面坐标系下在X轴方向上的坐标值,XCk3是Ck3在光平面坐标系下在X轴方向上的坐标值,XCk4是Ck4在光平面坐标系下在X轴方向上的坐标值,YCk1是Ck1在光平面坐标系下在Y轴方向上的坐标值,YCk2是Ck2在光平面坐标系下在Y轴方向上的坐标值,YCk3是Ck3在光平面坐标系下在Y轴方向上的坐标值,YCk4是Ck4在光平面坐标系下在Y轴方向上的坐标值。
具体地,所述真实角点Ck1、Ck2、Ck3和Ck4是通过现有技术中任一方法计算出来的角点,在本发明中认定为真实角点,即理想情况下Ok在光平面坐标系上对应的网格的角点。
S004,通过下式获取Ok对应的仿射参数fk,其中,fk={fk1,fk2,…,fkj,…,fk6}:
S005,基于Ok对应的仿射参数fk,获取网格-仿射参数对应表(Oi,fi)。
综上,本发明通过将轮廓图像划分为m*n个网格,获取第一网格列表,获取任一第一网格的四个角点在像素坐标系下的位置,并通过现有技术中任一方法获取该网格在光平面坐标系下对应的四个真实角点的位置,通过公式使其实现对应,从而求得轮廓图像每一网格对应的仿射参数,本发明采用将轮廓图像划分为m*n个网格,在一网格区域内,将像素坐标系下的网格与对应的光平面坐标系的网格认定为近似相等,从而获取像素坐标系每一第一网格对应的仿射参数。
进一步地,本发明在S001后,还包括通过如下步骤获取t:
S010,初始化t和g。
S020,将预设轮廓图像按照2t*2g的大小进行划分,得到第二网格列表Q={Q1,Q2,…,Qp,…,QM},Qp是划分的第p个第二网格,p的取值范围是1到M,M是预设轮廓图像按照2t*2g的大小进行划分的第二网格的数量。
S030,获取第二网格列表Q中第二网格Qp的四个角点Qp1、Qp2、Qp3、Qp4在光平面坐标系下的目标角点Jp1、Jp2、Jp3、Jp4。
S035,获取Qp在光平面坐标系下对应的真实网格Cp的四个真实角点Cp1、Cp2、Cp3、Cp4。
具体地,所述真实角点Cp1、Cp2、Cp3、Cp4是通过现有技术中任一方法计算出来的角点,在本发明中认定为真实角点,即理想情况下Op在光平面坐标系上对应的网格的角点。
S040,获取第一损失值Lx={Lx1,Lx2,Lx3,Lx4},Lx1=|XJp1-XCp1|,Lx2=|XJp2-XCp2|,Lx3=|XJp3-XCp3|,Lx4=|XJp4-XCp4|,XJp1是Jp1在光平面坐标系X轴方向上的坐标值,XJp2是Jp2在光平面坐标系X轴方向上的坐标值,XJp3是Jp3在光平面坐标系X轴方向上的坐标值,XJp4是Jp4在光平面坐标系X轴方向上的坐标值,XCp1是Cp1在光平面坐标系X轴方向上的坐标值,XCp2是Cp2在光平面坐标系X轴方向上的坐标值,XCp3是Cp3在光平面坐标系X轴方向上的坐标值,XCp4是Cp4在光平面坐标系X轴方向上的坐标值。
0S050,当Lx均满足第一预设条件时,执行S060到S070,否则,执行S080到S090。
具体的,所述第一预设条件为:Lx1到Lx4均小于第一预设误差值。
在本发明另一实施例中,所述第一预设条件为:Lx1或Lx2或Lx3或Lx4小于第一预设误差值。
S060,使得t=t+1。
S070,对t执行S020到S040,当Lx不满足第一预设条件时,输出t-1,否则,执行S060。
S080,使得t=t-1。
S090,对t执行S020到S040,当Lx满足第一预设条件时,输出t,否则,执行S080。
综上,由于通过进行的仿射变换在理论上仅能描述平行四边形变换的关系,因此当网格划分越小时,本发明的运算结果越接近理想状态下的结果,但网格越小存储的网格-仿射参数表就会越大,这样将导致内存占用的增加和检索效率的降低,不利于计算,因此,本发明基于S010到S090根据计算误差的精度和计算效率自动确定划分网格的数量。
基于S010-S090,初始化t和g,通过本发明的计算网格Qp在光平面坐标系下四个预测角点的位置,通过现有技术中任一方法获取网格Qp在光平面坐标系下四个真实角点的位置,获取四个预测角点和四个真实角点的第一损失值,当第一损失值满足预设第一条件时,将网格长度因子增加1,计算网格长度因子增加1后的第一损失值,若此时第一损失值不满足第一预设条件,则将此时的网格长度因子减小1进行输出,通过这样的方式,获取最接近真实情况下的最大的网格的长度,从而找到最合适的网格长度大小。
具体的,在S050后,还包括通过如下步骤获取g:
S031,获取第二损失值Ly={Ly1,Ly2,Ly3,Ly4},Ly1=|YJp1-YCp1|,Ly2=|YJp2-YCp2|,Ly3=|YJp3-YCp3|,Ly4=|YJp4-YCp4|,YJp1是Jp1在光平面坐标系Y轴方向上的坐标值,YJp2是Jp2在光平面坐标系Y轴方向上的坐标值,YJp3是Jp3在光平面坐标系Y轴方向上的坐标值,YJp4是Jp4在光平面坐标系Y轴方向上的坐标值,YCp1是Cp1在光平面坐标系Y轴方向上的坐标值,YCp2是Cp2在光平面坐标系Y轴方向上的坐标值,YCp3是Cp3在光平面坐标系Y轴方向上的坐标值,YCp4是Cp4在光平面坐标系Y轴方向上的坐标值。
S032,当第二损失值Ly满足第二预设条件时,执行S060到S070,否则,执行S080到S090。
具体地,所述第二预设条件为:Ly1到Ly4均小于第二预设误差值。
S033,使得g=g+1。
S034,对g执行S020到S031,当Ly不满足第二预设条件时,输出g-1,否则,执行S060。
S035,使得g=g-1。
S036,对g执行S020到S031,当Ly满足第二预设条件时,输出g,否则,执行S080。
基于S031到S036,计算第二损失值,当第二损失值满足第二预设条件时,使得网格宽度因子增加1,计算网格宽度因子增加1后的第二损失值,若此时第二损失值不满足第二预设条件,则将此时的网格宽度因子减小1进行输出,否则继续将此时的网格宽度因子增加1,当第二损失值不满足第二预设条件时,使得网格宽度因子减小1,直到网格宽度因子对应的第二损失值满足第二预设条件,从而找到最合适的网格宽度大小。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。