基于刻度轮廓拟合的指针式仪表自动识别方法
2022-09-26孙顺远魏志涛
孙顺远,魏志涛
(1.轻工过程先进控制教育部重点实验室,江苏无锡 214122;2.江南大学物联网工程学院,江苏无锡 214122)
0 引言
在实际工业生产中,常伴有高温、复杂电磁干扰、腐蚀等环境因素,而指针式仪表因为结构简单、抗电磁干扰能力强、成本低、精度高、使用寿命长、可靠性高等特点能够适应各种复杂状况,被应用于矿场、航空、电力监测等领域[1]。目前,大部分传统制造业工厂仍采用指针式仪表来监测设备参数,依靠人工判别仪表示数。在仪表较多的情况下,采用人眼识别易受主观因素的影响导致检测效率低且精确度波动大,容易导致安全事故的发生[2-3]。随着机器视觉的快速发展,大量图像处理算法的提出为计算机代替人工监控仪表提供了理论可能和技术支撑。
针对指针式仪表示数识别问题,研究人员进行了大量的研究。文献[4-6]分别通过同态高通滤波器、局部像素不均匀因子模型、迭代最大类间方差算法提高指针区域视觉显著性,解决光照对仪表识别的影响;文献[7]提出基于轮廓拟合与径向分割的算法,通过分析指针的像素特性,实现仪表盘内指针的提取;文献[8-9]利用卷积神经网络训练仪表数据模型,能够在复杂环境下检测和捕获仪表面板区域,读取和预测特征图像,实现仪表自动识别;文献[10]提出了基于对称度的二值化阈值确定方法和改进的随机样本一致性算法,有效地解决了指针阴影和背景图像干扰问题;文献[11]基于直线椭圆检测器(ELSD)结合K-means聚类算法得到刻度线与指针位置,减少了对模板图像和人工标定的依赖。上述各种算法针对特定的环境做出适应性的修改,提高了抗干扰能力,但相应的对机器运算性能也提出较高的要求。
本文针对传统检测算法调节复杂、鲁棒性较差以及改进算法对机器运算处理性能要求高的缺点,基于轮廓提取和最小二乘法,提出一种适用于刻度线与弧线不相连的指针式仪表自动读数算法,解决识别过程中仪表大小、位置变化以及拍摄角度不理想对读数识别的影响,而且识别算法不受仪表外形轮廓的影响,具备一定的适用性。
1 仪表示数识别流程
基于轮廓提取和最小二乘法的指针式仪表读数识别方法主要由预处理、表盘区域检测、仪表指针检测和仪表示数计算组成。算法整体流程如图1所示。
图1 算法整体流程
2 仪表图像预处理
2.1 高斯滤波
图像采集过程中相机光感矩阵会受到自身噪声、不良照明及过高工作温度的影响,导致仪表图像中包含大量高斯噪声。为去除或抑制图像包含的噪声,可以通过二维高斯滤波器进行平滑滤波,单个像素点滤波后的灰度值可以通过式(1)得到。
F(xi,yi)=I(x,y)G(x,y,δ)
(1)
式中:I(x,y)为中心像素点为(xi,yi)的邻域灰度值模板;G(x,y,δ)为高斯滤波器模板;F(xi,yi)为滤波后中心像素点的灰度值。
2.2 局部二值化
在实际环境中,仪表盘可能处于非均匀光照的状态,出现局部位置亮度过高或过低的情况,使用全局二值化分割容易造成信息缺失。为解决此问题,本文采用局部均值阈值化,通过图像像素邻域块的分布特征来自适应确定区域的二值化阈值。灰度值变化剧烈的区域(过亮或过暗),自适应阈值方法能够自动调高或降低阈值,使图像信息能够较完整保留下来。
2.3 形态学处理
经高斯滤波和局部二值化处理后的图像已经去除大部分干扰噪声,但图像中仍存在孤立的小点与连通域间虚假的连接。为消除这2种影响因素,同时尽量避免有效信息的缺失,本文采用开运算对二值图像做进一步处理,保留原图中大部分细节,方便后续处理。
3 表盘区域检测
3.1 仪表图像轮廓检测
轮廓提取[12]通过对图像进行边界检测,利用边缘点连接的层次差别,提取出具有相同数结构特征的区域点集。将经过预处理的仪表图像进行轮廓检测,获取仪表盘的所有轮廓边缘信息,轮廓检测结果如图2所示。从轮廓图可以看出,除仪表外轮廓外,外界干扰物体以及仪表盘内部刻度线、指针等轮廓同样被检测出来,表盘内部的轮廓线包含在仪表的外轮廓中,与外轮廓互不干扰,对仪表盘位置检测的影响较小,而外部环境中的干扰轮廓可能与表盘外轮廓相互粘连,在识别时容易造成轮廓误检,不利于后续拟合。
图2 轮廓检测图
3.2 仪表显示区域定位
直接采用检测到的外轮廓作为仪表盘显示区域会造成截取区域中包含大量背景干扰,加大数据计算量和有效信息的筛选难度。为有效截取仪表显示区域,本文将内嵌轮廓作为表盘候选区域,筛选流程如图3所示。
图3 仪表显示轮廓筛选流程
检测出的轮廓拥有等级,根据轮廓是否包含子级即可得出是否包含子轮廓。由于仪表盘内部包含的信息要比外界背景多,可以认为备选次级父轮廓中包含的子轮廓数量越多,成为表盘显示区域的可能性就越高。根据这一特征,检测和统计所有相对面积较大的备选次级父轮廓内的子轮廓数量,选取含有最多子轮廓的轮廓区域作为表盘区域。
获取的表盘候选区域轮廓如图4(a)所示,筛选后截取的表盘区域如图4(b)所示。
(a)备选区域
3.3 刻度线粗筛选
由于分割出的仪表图像的分割阈值和轮廓与拍摄图片存在差异,需要对截取的表盘区域重新进行阈值分割、形态学运算,利用轮廓检测算法重新检测表盘区域中的所有轮廓并保存为轮廓集C1。
根据刻度线是独立存在的一条实线,在进行轮廓检测时检测到的轮廓不包含子轮廓的特点,检测轮廓集C1中所有轮廓的内嵌等级,去除包含子轮廓的轮廓以及低于刻度线轮廓等级的轮廓得到轮廓集C2。
为进一步排除轮廓集C2中的干扰轮廓,将刻度线的几何特征作为筛选标准。根据式(2),不满足条件的轮廓将被去除,剩余轮廓组成轮廓集C3。
|wci/hci|≤T,ci∈C2
(2)
式中:ci为包含于C2轮廓集中的轮廓;w为轮廓的宽度;h为轮廓的高度;T为设定阈值。
选择轮廓集C3中轮廓的几何中心点作为刻度线实际所在位置,需要注意的是,由于大刻度线的中心点与小刻度线不在同一个拟合椭圆上,需要将大刻度线剔除。
3.4 仪表椭圆拟合
由于筛选出的表盘轮廓不一定为圆形轮廓(例如方形仪表),需要对仪表进行椭圆拟合。最小二乘法椭圆拟合是较常用的椭圆拟合方法,通过计算测量误差的平方和,从测量值中求出一组最可靠的解。本文采用随机最小二乘法进行椭圆拟合[13],根据刻度线中心点的分布特点,选取一部分样本点进行拟合,添加约束条件限制拟合结果增加拟合可信度。具体过程如下:
(1)输入检测到的所有线段中心点的集合P(已编号),初始化匹配点个数n、最大匹配点个数nmax、距离阈值dp以及匹配点集合M;
(2)从中心点集合P中随机选取6个(根据样本点总数合理选取)互不相同的样本点;
(3)利用最小二乘法拟合出椭圆的一般式方程:
F(x,y)=x2+Axy+By2+Cx+Dy+E=0
(3)
(4)逐次计算样本点到椭圆的欧氏距离,如果小于阈值dp,匹配点个数加1,对于匹配点集合M:
M={(xi,yi)∈P|fd(xi,yi)≤dp}
(4)
(5)若匹配点个数大于nmax,则令nmax=n,否则重复步骤2~4;
(6)若nmax与样本点总数比值超过规定阈值或到达迭代次数,则输出最佳拟合椭圆以及匹配点集合M,否则重复步骤2~5直至到达迭代次数。
随机最小二乘椭圆拟合算法拟合结果如图5所示。图中可见拟合椭圆经过所有刻度线,符合拟合要求。
图5 表盘椭圆拟合结果
4 仪表读数
4.1 指针检测
由椭圆拟合结果得到的仪表盘中心点所在位置,可以获取指针所在区域。如图6(a)所示,指针式仪表的指针具有近似等腰三角形的特征,而且指针中心线经过转动圆心。因此,传统方法通过提取指针中心线所在的直线方程定位指针所在位置。但实际拟合过程中,椭圆圆点与指针圆心重合的概率较小,采用上述方法会随椭圆原点的拟合精度不同程度偏离实际中心线。如图6(b)所示,这样拟合出来的直线用于示数计算会增大读数误差。由于指针仪表的指针较粗,在直线检测时会检测出2条较长且相交的直线,而这两条直线的交点即为指针的端点。取这两条直线的角平分线(锐角)作为指针所在的直线方程可以有效避免上述问题。
图6 指针的几何特征和检测偏差
本文提出基于EDLines直线检测算法[14]的指针定位方法,相较于传统霍夫变换直线检测算法[15]直线检测速度更快,直线误检率更低,具体步骤如下:
(1)根据获取的拟合椭圆以及仪表轮廓,截取包含仪表指针的区域。为减少直线检测的运算量,本文截取拟合椭圆半径(长轴与短轴)3/4长度的表盘显示图像区域作为检测对象。
(2)利用EDLines算法检测截取区域内包含的直线,编号并保存。
(3)计算所有直线到拟合椭圆圆心的距离di,设定阈值u,若满足di
(4)计算符合指针条件的检测直线长度,并将直线按照从长到短的规则排序。
(5)寻找直线中相对长度最长,与椭圆圆心的距离相近且长度相近的2条直线作为指针的边缘直线。
(6)求取2条直线的角平分线,获取指针中心线所在的直线方程。
4.2 刻度线筛选
根据刻度线轮廓与拟合椭圆相交的特点对3.3节中得到的轮廓集C3进行筛选,获取与圆弧相交的刻度线轮廓。排除匹配点集合M对应的小刻度线轮廓,剩余相交的轮廓即为大刻度线轮廓。因为大刻度线的中心点与小刻度线的中心点不在同一椭圆弧上,所以不能直接采用大刻度线的中心点作为仪表的刻度点。根据刻度线所在的直线穿越圆弧的特点,将大刻度线的中心点与圆弧中心建立直线段,求取直线方程与拟合椭圆的交点,此交点即为大刻度线所在的位置点。
若刻度线所在的直线方程为
Aix+Bix+Ci=0
(5)
结合3.4节求取的拟合椭圆方程(3),将2个方程联立求解获得直线与椭圆的2个交点。计算2个交点与大刻度线中心点的距离,舍弃距离较远的交点,剩下的点则为刻度点,将保留下的刻度点保存到匹配点集合M中。
4.3 刻度点排序
仪表盘的起始区域一般位于左半平面,并且起始刻度位于左下方,根据这一特点,可以确定刻度线的起始位置。在确定起始刻度点后,根据刻度点在圆弧上分布的特点对所有刻度点进行排序,构建出刻度点坐标分布图。对刻度点进行排序的算法流程图如图7所示。
图7 刻度线排序流程图
首先根据刻度点的横坐标xi与椭圆中心(xo,yo)的位置关系将刻度点划分到左右平面,对左右平面中的刻度点按纵坐标y值大小进行排序;确定起始刻度的位置并将其编号设为0,依次计算相邻2个刻度点所对应的圆心角角度θi;在所有圆心角角度中找出阈值占比最高的角度θMd,并将其作为刻度点之间的平均圆心角;从起始刻度开始,计算圆心角θi与θMd的差值,若两者对应的圆心角角度差小于T,则将该刻度点标记为下一刻度线所在位置,若2个刻度点间的角度相差较大,则2个刻度点之间有刻度线未检测出来,根据角度的比值关系计算缺失刻度线的个数,采用线性插值的方法补全缺失刻度点;依次计算相邻刻度点角度的比值关系,对刻度点进行编号赋值,直至下一刻度点为终止刻度点时结束。
4.4 仪表示数计算
根据4.1节获取的指针位置方程与4.3节构建的刻度点坐标分布图,对仪表进行读数识别。相较传统算法利用指针旋转角度信息作为计算结果标准,为减小拟合椭圆离心率引起的读数误差,本文通过指针直线与刻度点的位置关系来获取表盘示数。如图8所示,s1与s2为相邻的2个刻度点,2个刻度点之间的连线为l2;d1与d2分别为刻度点s1、s2到指针所在直线l1的距离;两刻度点间的连线l2与指针直线l1相交于点p;(x1,y1)是指针直线与指针边缘相交的后端点。首先,计算指针与拟合椭圆的交点,根据刻度点与交点都位于椭圆上的特点,求取交点上下相邻的2个刻度点。
图8 读数计算示意图
从图中可以看出,通过计算p到其中任意一个刻度点的距离,得到此距离与刻度点连线l2长度的比例,即可得到指针在2个刻度间的准确位置。由于刻度点与直线构成的2个三角形为相似三角形,上述比值可以转化为d1与d2的比值。最后利用式(6)获取指针代表的刻度。
(6)
5 实验以及结果分析
为验证上述算法的有效性,本文实验在Windows 10(处理器为AMD Ryzen 7 4800H CPU 2.90 GHz,内存为8 GB)操作系统下使用Visual Studio 2015作为开发平台,采用OpenCV4.4.0库对仪表图像进行处理,针对表盘目标区域检测以及仪表自动读数设计多种条件下的测试实验。仪表图像由工业相机拍摄实验环境下的真实仪表获得。
5.1 表盘区域检测算法测试
目前,大多数表盘区域检测算法对仪表图片进行识别时要求仪表处于图像正中且距离合适的位置,而在实际应用场景中,仪表或相机的位置可能发生变化。因此本文针对不同形状的仪表以及相同形状不同大小、不同位置的仪表,使用真实场景下的仪表图片进行实验,获取的仪表图像如图9(a)所示。
(a)原图像
由图9(b)的实验检测结果可见,在存在背景干扰的环境下,表盘区域检测算法能够准确识别出表盘的位置,而且当仪表位置、大小发生变化时检测到的表盘区域仍然可以精准贴合仪表的边界。
当拍摄距离超出一定范围时,由于拍摄到的仪表在图像中过小,表盘内部信息不能有效提取,即使在表盘检测阶段能够识别出表盘位置,但由于缺少后续步骤所需关键信息,最终会导致示数计算出错。
5.2 仪表示数识别抗干扰测试
为测试示数识别算法对外界环境的抗干扰性,设计了不同状态下仪表的测试实验。实验采用的指针式仪表为工业生产中实际使用的仪表,仪表为Y-100型压力仪表。
工业用仪表在实际使用中经常处于工况比较恶劣的环境,表盘表面会吸附灰尘、油污、水珠等污垢,对指针识别造成困难。此外,由于相机安装不到位造成的仪表图像畸变也会对仪表自动读数产生干扰。本文实验通过拍摄表盘外壳存在水珠、光照过暗以及镜面模糊的实际表盘验证仪表示数识别算法的抗干扰性,拍摄结果分别如图10(a)~图10(c)所示。
从椭圆拟合和指针识别结果图10(d)~图10(f)可以看出,3种不同环境下的仪表图片拟合的刻度椭圆和识别的指针位置都比较准确。在暗光条件下,虽然有些刻度线未被检测出来,但在刻度点排序时可以通过插值的方式抵消缺失刻度线问题的影响。
(a)表盘存在水珠 (b)光照过暗 (c)暗光下镜面模糊
由于仪表安装位置、相机位置变动等因素的影响,相机未能正对仪表盘,导致拍摄到的仪表图片存在倾斜角度,仪表图像发生畸变,对仪表示数识别产生影响。
图11(a)为模拟相机与仪表存在倾角情况下拍摄的图片。由图11(b)识别结果可以看出,刻度拟合为离心率较大的椭圆,传统识别方法不能直接使用这样的图像进行示数识别,通常利用透视变换法对原图像进行矫正后才能用于识别。由于本文采用刻度点与指针的相对距离作为识别标准,因此只要刻度盘与指针能够准确定位,示数计算误差就可以控制在允许范围之内。根据抗干扰实验结果可以看出,该算法具备一定的应对常见干扰的能力。
(a)倾斜拍摄仪表图片
5.3 仪表示数计算精度测试
为验证识别算法的识别精度,利用工业相机拍摄不同测试条件下的同种仪表不同示数的仪表图片各20张,共120张图片进行读数识别,并计算每张图片的引用误差与绝对误差。记录每种测试条件下人工读数与算法识别结果的最大和最小引用误差值以及平均引用误差,数据记录如表1所示。
表1 不同条件下仪表示数识别结果
分析表1的实验数据,最大引用误差出现在相机存在倾角的条件下,并且偏差值要明显高于其他条件下的最大引用误差,这是由于相机视线与刻度线不垂直造成的视差。而在镜面模糊的情况下,刻度线的定位精度比正常条件下稍差,导致总体识别误差要高于正常情况。但本算法识别的最大绝对误差小于0.003,而且算法的最大识别用时为68.91 ms,能够满足指针式仪表自动读数的精度和实时的要求。
6 结束语
在表盘区域检测方面,本文提出的基于仪表轮廓的表盘显示区域寻找算法可以应用在多种类型的表盘,在适当距离上不受表盘轮廓外形和大小变化影响。在读数识别方面,采用刻度点到指针直线的距离比值取代传统方法中指针转动角度作为表盘示数的计算准则,在一定程度上解决了因拍摄角度不理想引起的读数误差。