APP下载

基于机器视觉的指针式仪表自动读数算法*

2022-10-11陈从平

传感器与微系统 2022年10期
关键词:读数指针刻度

陈从平, 王 钦, 姚 威

(常州大学 机械工程学院,江苏 常州 213164)

0 引 言

指针式仪表因其结构简单,成本低,抗电磁干扰能力强和读数变化趋势直观等特点,广泛应用于工业控制、汽车船舶等领域[1],但因无法直接将其显示的数值转化为电信号输出,无法远程读取信号,主要靠人工现场读数,给抄表、控制等造成不便。随着计算机视觉在工业领域的普及应用,使得基于机器视觉的仪表自动读数方法日益增多[2,3]。

目前,对指针式仪表自动读数的方法通常包括指针和仪表读数识别。指针识别主要包括:减影法、最小二乘法、Hough直线变换法、中心投影法及综合应用[4~7]。如张冀等人[4]采用最小灰度相减法从两张背景相同的图像中提取到仪表指针,并通过Hough变换计算指针角度,该方法对仪表盘在相机视场中的相对位置有较为严格的要求;Liu S G等人[5]经小波变换提取指针点集合后,使用最小二乘法拟合指针直线,该方法与中心投影法只在指针头部与刻度线不相交的情况下具有较高精度;陈彬等人[6]提出将图像向指针转动中心进行投影检测指针位置,需要人工标定指针转动中心;李伟等人[7]提出结合Hough圆检测和Para空间均值圆心的方法确定指针转动中心,然后用中心投影法检测指针位置,消除了人工标定工作,适用于具有圆弧特征的仪表。仪表读数识别主要包括角度法、距离法。如Yue X F等人[8]提出通过测量指针在零刻度线和结束刻度线之间的角度比例计算仪表读数,该方法需要人工设定量程;喻汉等人[9]提出了检测所有的刻度线后,通过测量指针在相邻刻度线之间的距离比例计算仪表读数,该方法改善了读数精度,仍需要人为设定刻度值。

上述方法虽已取得一定成果,但依然存在不足,例如对仪表盘与相机间相对位置有严格要求,降低了方法的通用性并使操作不便,或要求仪表盘必需有弧形特征,或需要人工预先指定表盘的刻度值或量程,上述局限使得相关方法的适应性变差。

本文提出了一种指针式仪表自动读数算法,首先,利用刻度线指向指针转动中心这一特征求取其转动中心,并定位部分刻度线;然后,综合运用向转动中心投影,细化和线段检测等方法识别指针;接着,根据已定位的刻度线和外接最小矩形方法识别完整的刻度线;最后,利用神经网络识别刻度值。实验表明,该算法可以有效地识别指针,刻度线和刻度值,并实现准确读数。

1 指针式仪表读数算法

1.1 仪表区定位

对刻度线两两求交点,然后取重合率高的点集求均值来定位指针的转动中心,该中心和刻度线外沿端点所构成的扇形区域,即为后续处理的仪表区域。

首先,采用自适应二值化的方法对图像前景与背景进行分离,然后通过FLD(fast line detector)算法[10]对图像中前景内容进行线段检测。刻度线应检测出两条相邻线段,对检测出的每条线段与其最近的线段从长度、倾斜角、线段间距离上进行比较和约束进而匹配成对,有

(1)

图1 仪表区定位结果

1.2 空间变换

将指针、刻度线和刻度值所在的环形分布空间变换成水平分布空间,从而将角度问题转换成距离问题,在进行指针和刻度线识别时只需计算出其横坐标即可,同时水平分布也有利于指针、刻度线和刻度值的定位和识别。

以Po为基准,将环形分布的仪表区水平展开,如图2所示。记仪表区的点原坐标为G(x,y),水平展开后对应的坐标点为W(x′,y′),有

(2)

式中Rin,Rout分别为圆环内外半径,drho,θ为(x,y)与转动中心的距离和角度,T为阈值。

小儿腹股沟斜疝是小儿外科常见病之一,多见于早产儿,男性患儿较多[1-2]主要病因是腹膜鞘状突未闭合,主要治疗方法是疝囊高位结扎术,腹腔镜下疝囊高位结扎术在许多医院取得了满意的疗效,表现出明显的优势。本研究回顾分析255例小儿腹股沟斜疝患儿的临床资料,旨在探讨腹腔镜疝囊高位结扎术治疗小儿腹股沟斜疝临床应用效果及价值。现总结报告如下。

图2 空间变换

1.3 指针识别

根据仪表指针形状和分布特征,提出结合投影、细化和线段检测方法对指针进行定位和其中心线的求解。形状特征:指针呈对称结构,尺寸相比刻度线大;分布特征:指针指向圆心。

首先,经空间变换之后,根据分布特征对二值化后的图2垂直投影,按列统计白色像素个数,结果如图3(a)所示,其峰值区域即为指针所在区域;然后,因指针会和刻度线相交,导致峰值偏离指针中心线,故峰值位置并不代表指针的精确位置,还需根据峰值坐标搜索出靠近图像底部的轮廓为指针区域,结果如图3(b)所示;由于空间变换后图像的还原度受指针转动中心精度的影响,越靠近中心的位置形变越大,为保证指针求解精度,再将指针区域还原成环形分布中的样式;最后,根据形状特征,经细化处理后,用Hough算法检测线段,取最长线段为求解的指针中心线,这样尽可能保留了指针信息,弱化了与指针相交的图案信息。

将指针中心线在刻度线附近的点转换成水平分布空间的点。首先计算出该线段和仪表区外圆的交点,然后根据式(2)将交点转换成水平分布空间中的点,视其横坐标为指针位置,如图3(c)所示。

图3 指针识别结果

1.4 刻度线识别

由于仪表区定位中的线段检测往往对短刻度线会造成漏检,导致无法检测出所有的刻度线,故还需对刻度线进行重识别。首先,根据仪表区定位时获得的刻度线位置,再根据刻度线形状和分布特征,采用刻度线轮廓的最小外接矩形特征对刻度线进行识别。形状特征:刻度线呈矩形状,有少数的主刻度线是大、小矩形的组合,其应符合一定的宽高比;分布特征:刻度线由环形分布经空间变换呈水平分布,其方向垂直向下,相邻刻度线在水平方向存在很高的重合率。

如图4所示,选取一条图1中已确定的刻度线,将其最小外接矩形作为起始框,根据式(3)分别向左右搜索符合条件的矩形框,认定为刻度线所在矩形框,遇到不符合的矩形框则停止该方向搜索,搜索完成后对矩形框从左到右依次排序,最后视矩形框中心横坐标为刻度线位置

(3)

式中Yp={y1,y2,y3,…,yn}为上一个符合的矩形框纵坐标集合,Yn为下一个矩形框的纵坐标集合,a,h和w分别为矩形框的旋转角度、高度和宽度,Thw,Ta和Ti分别为上述三个参数的阈值。

图4 刻度线搜索

将所有刻度线识别后,依据长度特征进行自动分类。首先,将刻度线根据长度由长到短排序,每一类刻度线都将划分在自己的区间里;然后,按照顺序使相邻刻度线长度作除运算,若大于长度变化阈值,则刻度线已进入下一级刻度线区间,直至遍历完所有的刻度线;最终将刻度线分为3类(长/中/短)。一般阈值的选取相对固定,只是为了弥补精度上的误差。该法针对根据单一特征对刻度线进行分类,相比K-means聚类方法无需指定分类数量,运算量更少。

1.5 刻度值识别

根据刻度值分布特征定位刻度值轮廓,然后通过神经网络LeNet—5识别刻度值。因为刻度值的分布主要在主刻度线上方或下方,故利用主刻度线定位刻度值。考虑到匹配的刻度值是由几个数字组合而成,采用膨胀对数字融合。首先,防止膨胀使得刻度值与指针和刻度线融合,先将图像中的刻度线和指针背景化,然后形态学膨胀将独立的数字融合成刻度值轮廓。接着,利用面积过滤掉过小和过大的轮廓,如噪点和仪表外轮廓等。搜索出包含主刻度线横坐标的轮廓,计算出主刻度线中点与各个轮廓中心的距离D={d1,d2,d3,…,dn},将Dmin的刻度值轮廓匹配主刻度线。定位结果如图5所示。

图5 刻度值定位

由于空间变换使得刻度值产生旋转,所以首先将定位到的刻度值轮廓根据式(2)反求角度,进而旋转摆正;然后,采用搜索连通域分割出刻度值轮廓中单个数字,依次将单个数字图像送入训练好的神经网络模型进行识别;最后,根据单个数字所在坐标组合成刻度值,赋值主刻度线,再根据主刻度线之间下一级刻度线数量,平均分配刻度值,若还有下下一级则重复执行上述步骤。至此,完整的刻度线信息识别完成。

1.6 仪表示数计算

仪表的示数计算根据指针位置和其相邻刻度线信息,计算出指针在相邻刻度线中的相对位置所对应的值。式(4)为仪表示数Avalue计算式

(4)

式中f(p),f(i)和f(i+1)分别为指针及指针相邻的刻度线位置,v(i),v(i+1)为指针相邻的左、右刻度值。

2 实验分析

2.1 实验硬件平台

实验采用的是量程为0~400 A,最小刻度单位为5 A的电流表和量程为0~200 ℃,最小刻度单位为5 ℃的温度表。平台为Windows 10(处理器为酷睿i5,内存为4 GB),开发环境为Visual Studio 2017,视觉库为OpenCV。

2.2 实验结果与分析

2.2.1 实验效果图

本次实验对象选择了方形仪表和圆形仪表,其中方形仪表没有弧形特征。基于本文设计的仪表自动读数算法,识别效果如图6。

图6 实验结果

由图6(b)可见,指针转动中心和刻度线定位准确,满足后续算法需求。由图6(c)可见,指针横坐标定位准确。由图6(d)可以看出,刻度线横坐标定位准确。由图6(e)可以看出,刻度值,定位准确,识别准确。基于图6(f)识别结果可知,本文提出的算法可实现仪表的自动读数。

2.2.2 实时性与准确性

为验证本文算法的实时性与准确性,并考虑拍摄时仪表在相机视场中因相对位置不同可能造成的对读数精度的影响,对仪表在同一示数下分别从两个不同相对位置进行拍摄,后改变仪表示数,重复上述操作共5次,经软件自动读数后结果整理如表1所示。

表1 读数结果

由表1可知,使用本文提出的算法对指针式仪表自动读数,其结果与人工读数相差较小,最大误差不超过1.06 %,其中位置一相对误差普遍低于位置二,但两者之间相差不大,最大误差为0.87 %,可知该算法对相机与仪表相对位置无严格要求。另外,单张图像处理时间稳定保持在0.23 s左右,实时性较好。

3 结 论

本文以无弧形特征的指针式仪表为例,设计了自动读数算法。首先利用刻度线指向指针转动中心特性,提出了一种仪表区定位法;结合投影、细化和Hough变换处理改善了在水平分布空间中指针定位精度;根据刻度线形状和分布特征对其定位、分类;随后根据主刻度线和刻度值分布关系,定位刻度值轮廓,然后由神经网络LeNet—5识别;最后,根据指针在相邻刻度线中的相对位置计算仪表示数。经过实验和误差分析验证了本文提出的算法对无弧形特征的指针式仪表自动读数的准确性和实时性,满足实际的应用。

猜你喜欢

读数指针刻度
“0”的读法和要领
剪彩带
郊游
为什么表的指针都按照顺时针方向转动
谁大谁小
谁大谁小
测量三字歌
例谈高中物理常见读数问题
仪器工作原理决定了仪器的读数规则
浅析C语言指针