本发明属于机器视觉检测技术领域,涉及一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法。
背景技术:
汽车仪表显示汽车的各种数据,反馈汽车工作状态,对汽车的安全行驶起着重要作用。目前仪表检测采用传统的人工观测方式,由工作人员目测各仪表指针与刻度间的压线情况及各指示灯显示状态等来判断产品质量是否合格。人工检测受到人为观测角度、观测距离及人眼疲劳程度等主观因素影响,存在精度低,可靠性差,重复性差,检测时间长,效率低等一系列问题。因此,找到一种读取仪表示值不存在角度视觉误差、满足读表准则的方法是急需的。
仪表校验是一项精密的测试工作,不论是数字仪表还是指针式仪表,均可以利用计算机视觉实现全自动校验。仪表自动校验系统要求当对每次输入量变化引起的指针偏转,示值判读时都需要移动摄像机视点,并要重新标定坐标系。这很大程度上增加了控制系统的复杂性、增加了校验时间,并且机械装置长时间使用可能会出现机械故障。
技术实现要素:
本发明的目的是提供一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法,该算法降低了对仪表校验控制系统的复杂性,减少了由于视角偏移产生的读数误差。
本发明所采用的技术方案是,一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法,具体包括如下步骤:
步骤1,利用摄像机的针孔模型表达世界坐标系、摄像机坐标系和图像坐标系之间的定量关系,并建立仪表成像几何模型;
步骤2,利用径向平衡条件,对摄像机的标定采用tsai提出的二步法,求出所需的焦距f和物距h;
步骤3,将仪表图像进行二值化分割,得到分度线和指针;
步骤4,对步骤3所得的指针和分度线进行标记,计算指针尖端pu点的坐标(xu,yu),并根据pu点的坐标,求o1pu;
步骤5,根据指针和仪表盘的距离d,求长度pupu1;
步骤6,根据步骤5所得的pupu1,在o1pu连线上找出pu1点,该点即为修正后指针的尖端pu1(xu1,yu1),求出直线方程
步骤7,通过将步骤6所得的指针旋转角度和最近分度线角度进行对比,可判别仪表示数。
本发明的特点还在于,
步骤1的具体过程为:
步骤1.1,由摄像机针孔成像模型,通过引入旋转矩阵r和平移矩阵t,建立参考坐标系和摄像机坐标系之间的关系:
式中,r为3x3的旋转矩阵,t为平移矩阵,(x,y,z)为摄像机坐标系下的坐标,(xw,yw,zw)为参考坐标系下的坐标;
步骤1.2,建立图像坐标系和摄像机坐标系之间的关系,具体如下:
式中,(x,y,z)为图像坐标系中的坐标,(x0,y0)为图像坐标系中的任意一点坐标,dx为每一个像素在x轴上的尺寸,dy为每一个像素在y轴上的尺寸;
步骤1.3,设表盘上的一点p在参考坐标系中为p(xw,yw,zw),在摄像机坐标系坐标为p(x,y,z),该p点经摄像机成像后与像平面上理想像点pu(xu,yu,f)对应,求理想投影点pu(xu,yu,f)和畸变后的实际成像平面上的点pd(xd,yd,f)之间的关系;
步骤1.4,根据仪表实际成像平面上的上点pd(xd,yd)与计算机存储器中点s(uf,vf)之间的关系,求仪表成型几何模型。
步骤1.3的具体过程如下:
步骤1.3.1,根据pu(xu,yu,f)建立仪表成像方程:
步骤1.3.2,确定图像焦距f和物距h之间的关系;
z=h+f(5);
其中,z为仪表平面在光轴方向上的坐标;
步骤1.3.3,考虑畸变对pu点的影响,失真图像上的控制点为pd(xd,yd,f),经图像采集输入到计算机存储器中,设pd对应帧存图像中的s(uf,vf,f)点,建立矫正矩阵,具体如下:
步骤1.3.4,由于畸变造成成像点位置的径向移动,使得理想投影点pu(xu,yu,f)和畸变后的pd(xd,yd,f)的关系为:
其中,k1是畸变系数,且r=xd2+yd2。
步骤1.4的具体过程如下:
以像元数为单位,并引入线度单位到像素单位的比例因子δu和δv,分别表示出摄像机x方向和y方向两个相邻像元中心之间的距离,设(u0,v0)表示成像平面中心对应的计算机图像坐标,则
结合式(1)至式(8),得到可表达p点坐标(xw,yw,zw)与计算机存储器中图像s(uf,vf,f)之间对应关系
其中
r2=δu2(uf-u0)2+δv2(vf-u0)2(10);
r2即为最终建立的仪表成型几何模型。
步骤2的具体过程如下:
步骤2.1,求p(x,y,z)点在坐标系中的坐标及摄像机的旋转矩阵r和平移矩阵t的值;
具体为:利用模板的黑圆点的空间坐标及径向平衡条件建立如下方程:
结合公式(1)将x、y展开,得如下公式(12)、(13):
令zw=0,代入实际n个点(xd,yd)的数据,求解方程组(12)、(13),即可得出摄像机的旋转矩阵r和平移矩阵t的值及p(x,y,z)点坐标值;
步骤2.2,将步骤2.1所得结果代入公式(3)、(4)、(5)、(7)中,联立求解,即得畸变系数k1、焦距f和物距h。
步骤3的具体过程为:
步骤3.1,给定一个初始阈值th=th0,从头开始搜索,则将仪表图像原图分为c1和c2两类;
步骤3.2,分别计算c1和c2两类图像的类内方差和均值;
式中,f(x,y)为采集的图像;nc1为像素被分在c1的概率;nc2为像素被分在c2的概率;μ1为c1类图像的均值;μ2为c2类图像的均值;σ21为c1类图像的方差;σ22为c2类图像的方差;
步骤3.3,对图像进行分类处理:如果|f(x,y)-μ1|≤|f(x,y)-μ2|,则f(x,y)属于c1,否则f(x,y)属于c2;
步骤3.4,对步骤3.3重新分类后得到的c1和c2中的像素,分别按照公式(14)~(17)重新计算各自的均值与方差;
步骤3.5,如果当前像素点的方差值满足如下关系:
则输出计算得到的阈值th(t-1),否则重新选取像素点,重复执行步骤3.4~步骤3.5;
步骤3.6,根据步骤3.5输出的阈值对图像进行分类,得到只有分度线和指针的黑白图像。
步骤4的具体过程为:
假设二值图像中为0的点是背景,为1的点是微粒,早算法中采用八邻接点搜寻,算法如下:
(1)算法开始,令标记label=1;
(2)自左向右、自上而下扫描图像,找寻其值为1的种子点,设定种子点标记=label;假如找不到种子点,则结束整个标记算法;
(3)对于种子点周围同值之像素点做下述操作:
x轴方向
(a)自左向右逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(b)自右向左逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1像素点标记=label;
y轴方向
(c)由上往下逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(d)自下向上逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(4)经过四个方向扫描后,标记为l之微粒被完整取出,指定新的标记label++重复步骤(2),直到标记完所有微粒;
(5)输出距离最远的微粒坐标作为pu点的坐标;
根据pu点的坐标即可求得o1pu为:
步骤5的具体过程如下:
假设p1是p2在标度盘平面上的垂直投影,在像平面上对应pu1点,但读表准则要求p1点与p2点在像平面上应为同一点;
由几何关系可得三角形ocpp1和opupu1,以及ocpuo1和p2pp1是相似三角形,可找到图像的pu1点,并求出pupu1的距离。
具体实现过程如下:
步骤6的具体过程如下:
步骤6.1,在o1pu连线上找出距离pu点长度为pupu1的点,此即为修正后指针的尖端pu1(xu1,yu1);
步骤6.2,根据步骤6.1所得结果求出直线方程为
步骤7的具体过程如下:
步骤7.1,将修正后的仪表指针位置绘在原图像背景上,通过在视点固定时的重构图像,形成一幅用于精确读数的新图像;
步骤7.2,将步骤6所得的指针旋转角度与最近分度线角度进行对比,判别仪表示数。
本发明的有益效果是:本发明提供一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法,该算法利用径向平衡条件,采用二步法进行摄像机的标定,通过修正的标记算法来确定指针尖端,进而重构图像与原图像形成对比,解决仪表示数准确读取的问题。该方法降低了对仪表校验控制系统的复杂性,减少了由于视角偏移产生的读数误差,并在仪表示数读取中具有广泛的应用。
附图说明
图1是本发明一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法中建立的仪表成像几何模型图;
图2是本发明一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法中建立的参数校正网络模板;
图3是本发明一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法中仪表示数读取的几何修正模型。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种基于机器视觉的汽车仪表固定视点读取仪表的修正算法,具体包括如下步骤:
步骤1,利用摄像机的针孔模型表达世界坐标系、摄像机坐标系和图像坐标系之间的定量关系,并建立仪表成像几何模型;
步骤1的具体过程为:
步骤1.1,由摄像机针孔成像模型,通过引入旋转矩阵r和平移矩阵t,建立参考坐标系和摄像机坐标系之间的关系:
式中,r为3x3的旋转矩阵,t为平移矩阵,(x,y,z)为摄像机坐标系下的坐标,(xw,yw,zw)为参考坐标系下的坐标;
步骤1.2,建立图像坐标系和摄像机坐标系之间的关系,具体如下:
式中,(x,y,z)为图像坐标系中的坐标,(x0,y0)为图像坐标系中的任意一点坐标,dx为每一个像素在x轴上的尺寸,dy为每一个像素在y轴上的尺寸;
使用世界坐标系、摄像机坐标系和图像坐标系之间的关系,建立如图1仪表成像几何模型。
以世界坐标系(ow,xw,yw,zw)作为参考坐标系,其原点ow的坐标固定不变。由点oc与xc,yc,zc轴组成的直角坐标系为摄像机坐标系,点oc为摄像机的光学中心,xc—yc平面与ccd成像平面平行。zc轴即为光轴,它与ccd摄像机的图像平面垂直,其与图像平面的交点o1为图像平面坐标系原点,oco1为摄像机的焦距f。取空间仪表表盘平面与图像平面平行,与光轴交点为o′,与图像平面距离即为物距h。
步骤1.3,设表盘上的一点p在参考坐标系中为p(xw,yw,zw),在摄像机坐标系坐标为p(x,y,z),该p点经摄像机成像后与像平面上理想像点pu(xu,yu,f)对应,求理想投影点pu(xu,yu,f)和畸变后的实际成像平面上的点pd(xd,yd,f)之间的关系;
根据摄像机、仪表变盘所处的位置,从上到下建立分别为世界坐标系、图像坐标系、摄像机坐标系三个坐标系。表盘上的一点p在参考坐标系中为p(xw,yw,zw),在摄像机坐标系坐标为p(x,y,z),该点经摄像机成像后与像平面上理想像点pu(xu,yu,f)对应。
步骤1.3的具体过程如下:
步骤1.3.1,根据pu(xu,yu,f)建立仪表成像方程:
步骤1.3.2,确定图像焦距f和物距h之间的关系;
z=h+f(5);
其中,z为仪表平面在光轴方向上的坐标;
步骤1.3.3,考虑畸变对pu点的影响,失真图像上的控制点为pd(xd,yd,f),经图像采集输入到计算机存储器中,设pd对应帧存图像中的s(uf,vf,f)点,建立矫正矩阵,具体如下:
步骤1.3.4,由于畸变造成成像点位置的径向移动,使得理想投影点pu(xu,yu,f)和畸变后的pd(xd,yd,f)的关系为:
其中,k1是畸变系数,且r=xd2+yd2。
步骤1.4,根据仪表实际成像平面上的上点pd(xd,yd)与计算机存储器中点s(uf,vf)之间的关系,求仪表成型几何模型。
步骤1.4的具体过程如下:
以像元数为单位,并引入线度单位到像素单位的比例因子δu和δv,分别表示出摄像机x方向和y方向两个相邻像元中心之间的距离,设(u0,v0)表示成像平面中心对应的计算机图像坐标,则
结合式(1)至式(8),得到可表达p点坐标(xw,yw,zw)与计算机存储器中图像s(uf,vf,f)之间对应关系
其中
r2=δu2(uf-u0)2+δv2(vf-u0)2(10);
r2即为最终建立的仪表成型几何模型。
步骤2,利用径向平衡条件,对摄像机的标定采用tsai提出的二步法,求出所需的焦距f和物距h;
根据ccd摄像机的参数,得到图像中心(u0,v0)对应的坐标,然后通过网络模板的先验知识及其成像数据,求出摄像机的内外参数,进而得出所需的焦距f和物距h。
实际的参照模板选用白色背景下均匀分布的n个黑圆点,如图2所示,在像平面上投影后,经图像处理得到的n个点代表着成像的坐标关系。利用模板的黑圆点的空间坐标,加上径向平衡条件(直线o1pd与o′p平行,对应矢量的叉积为零);
步骤2.1,求p(x,y,z)点在坐标系中的坐标及摄像机的旋转矩阵r和平移矩阵t的值;
建立如下方程:
结合公式(1)将x、y展开,得如下公式(12)、(13):
令zw=0,代入实际n个点(xd,yd)的数据,求解方程组(12)、(13),即可得出摄像机的旋转矩阵r和平移矩阵t的值及p(x,y,z)点坐标值;n≥6;
步骤2.2,将步骤2.1所得结果代入公式(3)、(4)、(5)、(7)中,联立求解,即得畸变系数k1、焦距f和物距h。
步骤3,将仪表图像进行二值化分割,得到分度线和指针;
步骤3的具体过程为:
步骤3.1,给定一个初始阈值th=th0,从头开始搜索,则将仪表图像原图分为c1和c2两类;
步骤3.2,分别计算c1和c2两类图像的类内方差和均值;
式中,f(x,y)为采集的图像;nc1为像素被分在c1的概率;nc2为像素被分在c2的概率;μ1为c1类图像的均值;μ2为c2类图像的均值;σ21为c1类图像的方差;σ22为c2类图像的方差;
式中,nimage为像素在该图像的概率;p1为c1类像素在图像中的分布概率;p2为c2类像素在图像中的分布概率。
步骤3.3,对图像进行分类处理:如果|f(x,y)-μ1|≤|f(x,y)-μ2|,则f(x,y)属于c1,否则f(x,y)属于c2;
步骤3.4,对步骤3.3重新分类后得到的c1和c2中的像素,分别按照公式(14)~(17)重新计算各自的均值与方差;
步骤3.5,如果当前像素点的方差值满足如下关系:
则输出计算得到的阈值th(t-1),否则重新选取像素点,重复执行步骤3.4~步骤3.5;
步骤3.6,根据步骤3.5输出的阈值对图像进行分类,得到只有分度线和指针的黑白图像。
步骤4,对步骤3所得的指针和分度线进行标记,计算指针尖端pu点的坐标(xu,yu),并根据pu点的坐标,求o1pu;
如图3所示,以世界坐标系(ow,xw,yw,zw)作为参考坐标系,其原点ow的坐标固定不变。由点oc与xc,yc,zc轴组成的直角坐标系为摄像机坐标系,点oc为摄像机的光学中心,xc—yc平面与ccd成像平面平行。zc轴即为光轴,它与ccd摄像机的图像平面垂直,其与图像平面的交点o1为图像平面坐标系原点,oco1为摄像机的焦距f。取空间仪表表盘平面与图像平面平行,与光轴交点为o′,与图像平面距离即为物距h。设仪表指针与标度盘距离设为d,o1xy是成像平面,p2为指针的尖端位置,pu为其在像平面投影。
步骤4的具体过程为:
假设二值图像中为0的点是背景,为1的点是微粒,在算法中采用八邻接点搜寻,算法如下:
(1)算法开始,令标记label=1;
(2)自左向右、自上而下扫描图像,找寻其值为1的种子点,设定种子点标记=label。假如找不到种子点,则结束整个标记算法;
(3)对于种子点周围同值之像素点做下述操作:
x轴方向
(a)自左向右逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(b)自右向左逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1像素点标记=label;
y轴方向
(c)由上往下逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(d)自下向上逐点扫描图像,若f(x,y)标记为label,则令f(x,y)八邻接点中值为1的像素点标记=label;
(4)经过四个方向扫描后,标记为l之微粒被完整取出,指定新的标记label++重复步骤(2),直到标记完所有微粒;
(5)输出距离最远的微粒坐标作为pu点的坐标;
根据pu点的坐标即可求得o1pu为:
步骤5,根据指针和仪表盘的距离d,求长度pupu1;
步骤5的具体过程如下:
假设p1是p2在标度盘平面上的垂直投影,在像平面上对应pu1点(成像时pu1不存在),但读表准则要求p1点与p2点在像平面上应为同一点;
由几何关系可得三角形ocpp1和opupu1,以及ocpuo1和p2pp1是相似三角形,可找到图像的pu1点,并求出pupu1的距离。
具体实现过程如下:
步骤6,根据步骤5所得的pupu1,在o1pu连线上找出pu1点,该点即为修正后指针的尖端pu1(xu1,yu1),求出直线方程
步骤6的具体过程如下:
步骤6.1,在o1pu连线上找出距离pu点长度为pupu1的点,此即为修正后指针的尖端pu1(xu1,yu1);
步骤6.2,根据步骤6.1所得结果求出直线方程为
步骤7,通过将步骤6所得的指针旋转角度和最近分度线角度进行对比,可判别仪表示数。
步骤7的具体过程如下:
步骤7.1,将修正后的仪表指针位置绘在原图像背景上,通过在视点固定时的重构图像,形成一幅用于精确读数的新图像;
步骤7.2,将步骤6所得的指针旋转角度与最近分度线角度进行对比,判别仪表示数。