王欣艺 景超 张浩宇 杨襄龙 张兴忠*
(1.太原理工大学软件学院 山西省太原市 030024 2.山西农业大学软件学院 山西省太原市 030031)
在变电站等有强磁干扰的环境中,数显式、电子式仪表无法正常工作,因此指针式仪表在此类工作环境中发挥着重要作用,但指针式仪表读数复杂且人工读数存在一定误差,所以指针式仪表适用的工业场景并不适合人工读取仪表示数。综上所述,研究指针式仪表的智能读数具有重要意义。
近年来,国内外研究者针对指针式仪表示数识别提出许多方法,张军国等人提出基于 ICM 的指针式仪表读数方法,利用加权最大类间方差法提取指针表圆弧,最后通过距离法对极坐标变换后的图像进行读数。李俊等人利用Hough 变换裁剪表盘区域,查找刻度线轮廓,并利用最小二乘法进行拟合,再利用随机采样一致性拟合指针中心,最后通过指针的回转角度得到示数。李金红等人基于深度学习算法检测指针,在指针图像的基础上进行二值化、细化、霍夫变换检测直线、最小二乘法拟合直线等步骤识别仪表最终读数。虽然这些研究者对指针式仪表智能读取做出了许多研究,但仍然面临指针式仪表识别过程复杂,智能读取普适性低,实时性差等问题。
针对上述指针表自动读数方法的不足,本文提出一种基于计算机视觉技术的指针式仪表示数的快速读取方法,首先对输入图像应用均值偏移滤波,降低后续计算量,再通过改进的Canny 边缘检测算法二值化图像,然后利用基于Hough梯度法的Hough 圆检测定位仪表盘质心,其次通过CTPN +CRNN 网络读取开始刻度和最大量程的数值与位置,并且基于区域选择的概率Hough 直线检测算法提取指针,最后利用角度法得到仪表示数,完成高精度自动读数,方法的系统架构与数据流图如图1 所示。
图1:系统架构与数据流图
为实现指针仪表示数的读取,首先需要对指针式仪表表盘进行定位,表盘定位由均值偏移过滤、改进的Canny 边缘检测算法、应用Hough 梯度法的Hough 圆检测三部分组成。
指针仪表表盘定位之前需要借助Mean Shift 算法的分割特性将色彩分布相近的元素进行聚类,即收敛到同一点的起始点归为一类,然后把这一类的标号赋给这些起始点,同时把包含像素点少的类去掉,这样可以平滑色彩细节,经过Mean Shift 算法分割后的图像将大幅减少后续的计算量。
本方法应用Mean Shift 算法在d 维空间中n 个取样点x的向量数学形式定义如式(1),其中k 表示落在高维球形区域所有的取样点,(x-x)表示取样点对于x 的偏移量,S表示以h 为半径的高维球形区域,S满足关系式(2)。输入图像的长宽为物理空间,输入图像的RGB 信息为色彩空间,图像任取一点作为中心点,构建5 维球形空间,求得5 维球形空间中所有取样点相对于中心点的向量之和,移动迭代空间的中心点到新的位置,此位置可表示如式(3),其中M为t 状态下求得的偏移均值, x为t 状态下的中心点。
遍历所有取样点,可以通过计算得到所有种类,收敛到同一点的点归为一类,将与此类中心点接近的取样点都赋值为此类中心点的像素值,实现指针式仪表图像的模糊处理。
传统Canny 边缘检测算法在对图像二值化时需要人工选取高低阈值,并且会使得图像边缘变得模糊。所以本文就指针式仪表示数读取时图像二值化问题,对传统Canny 边缘检测算法进行改进,本文改进的Canny 边缘检测算法流程图如图2 所示。
图2:本文改进的Canny 边缘检测算法流程图
2.2.1 双边滤波保边去噪
针对传统Canny 算法进行边缘检测时易丢失边缘细节的缺陷,本文使用同时考虑值域与空间域的非线性双边滤波代替高斯滤波,以实现图像去除噪声的同时很好的保留边缘信息。假设G(i,j)为像素点最终输出,I(k,l)表示中心点像素值,I(i,j)表示空间领域内(i,j)的像素值,双边滤波的权系数W(i,j,k,l)最终表示形式为式(4),最终像素点输出为式(5)。
2.2.2 八领域计算梯度幅值和方向
本文对图像进行双边滤波后,在3×3 邻域内计算梯度幅值,即通过图像某一像素的8 邻域即x 方向,y 方向,45°方向和135°方向的一阶偏导数的有限差分来确定像素的梯度幅值及方向。
各方向的梯度计算模板使用Sober 算子,如图3 所示。
图3:Sober 算子方向模板
由图3 的方向模板与双边滤波后的图像做卷积,分别得到四个方向的一阶梯度分量,根据这四个方向的梯度分量,重新求得水平方向和垂直方向的差分,从而获得像素点的梯度幅值和方向。其中水平方向的差分如式(6),垂直方向的差分如式(7),再使用式(8)和式(9)和计算梯度幅值和方向。
2.2.3 非极大值抑制与Otsu 算法选取阈值
得到梯度幅值与方向后,接着对边缘信息进行非极大值抑制(NMS),达到边缘细化的效果。之后在 Canny 边缘检测的基础上加入最大类间方差法,即通过统计图像中像素点的灰度分布,分割出图像的背景和前景,将区域内灰度的类间方差最大化,找到使方差最大的阈值,该阈值可以实现最佳的分割效果。假设最佳阈值为t,输入图像灰度级为[0,L-1] ,根据阈值将图像进行灰度级的划分C={0,1,…,t}和C={t+1,t+2,…,L-1},每个灰度级的比例如式(10),C类出现的概率如式(11),C类出现的概率如式(12),整个图像以及C和C类出现的均值如式(13),C和C类间方差 σ如式(14)。
找到使方差最大的阈值,将此阈值定义为高阈值,低阈值为k 倍的高阈值kϵ[0.5,0.8]。最后进行边缘连接,当某一像素点幅值超过高阈值时,则判断该像素点为边缘;当某一像素点幅值低于低阈值时,则判断该像素点不是边缘点;当像素点幅值处于高阈值与低阈值之间时,如果该像素点与高阈值相连则判断该像素点为边缘,否则不是边缘。
得到二值化图像后需要进一步确定圆形仪表盘质心与半径。圆检测常使用Hough 圆检测算法,但由于传统的 Hough变换方法计算量大,计算时间长,并不适合于要求实时性强的圆检测中。为提高圆检测的速度,本文应用Hough 梯度的Hough 圆检测定位仪表盘质心。通过基于Hough 梯度法的Hough 圆检测,可以将传统Hough 圆检测计算的三维空间降到二维空间,大大减低了计算量,使得最终结果可以满足实时性的要求。主要分为以下几个步骤:
S1. 进行本文改进的Canny 边缘检测;
S2. 遍历所有边缘,将沿边缘梯度方向的垂直线段所形成的交点在二维累加器中累加;
S3. 对累计器中计数从大到小排序,只保留计数最多的位置为圆心;
S4. 计算圆心到边缘点的距离,得到半径。
为适应不同量程的仪表,本文将指针式仪表图像输入到CTPN+CRNN 网络中进行文字区域的检测与识别。CTPN 网络可以进行指针式仪表盘横向文本检测,从而得到指针式仪表所有文字位置,CTPN 网络总体结构与检测效果如图4 所示。
图4:CTPN 网络总体结构与检测效果
使用CTPN 将指针式仪表文字图像进行分割之后,将分割的文字输入到CRNN 网络对文本进行识别,CRNN 主要由3 部分构成:
CNN:首先将文字区域进行统一放缩,经过一系列卷积与池化,通过Map-to-Sequence 提取特征序列,最终输出Feature Sequence;
RNN:将Feature Sequence 输入到两层各256 单元的双向LSTM 网络中,可以得到每个特征向量对应的概率分布向量,输出由概率分布向量组成的概率矩阵;
CTC:将概率矩阵转化为实际输出的字符,概率矩阵中每一列的最大值对应的字符作为该列标签,并且对识别的结果进行合并去冗。
CRNN 网络的总体结构如图5 所示。
图5:CRNN 网络总体结构
CTPN+CRNN 网络读取指针式仪表的文本信息以后,只保留数字进行排序,最小值对应开始刻度的数值与位置,最大值对应最大量程的数值与位置,CTPN+CRNN 网络检测效果如图6 所示。
图6:CTPN+CRNN 网络检测效果图
本文使用改进的Hough 直线检测进行指针的提取,传统Hough 直线检测对每个像素点都进行计数和三角函数运算,运算量大,运行速度慢。为提高指针检测的速度,本文对传统Hough直线检测进行改进,根据指针式仪表盘的特征,指针只会落在开始刻度与最大量程刻度夹角之外的区域,可以选择常数K 确定所占半径比例,从而减少Hough 直线检测的区域面积。本文选定区域如图7 所示,仅将规定区域像素点带入Hough 变换,不仅大幅减少了Hough 直线的计算量,同时提高了指针检测的准确性和实时性。
图7:Hough 直线检测范围示意图
Hough 圆检测的圆半径为R,开始刻度与最大量程刻度夹角为α,K 为选择圆区域的常数,可求得概率霍夫直线检测的区域面积S 为式(15)。
基于区域选择的Hough 直线检测算法流程如图8 所示,通过直线检测算法选定区域内所有的线段后,计算所有线段的长度,找到最长的线段即为指针。
图8:基于区域选择的概率Hough 直线流程图
本文仪表读数计算使用了角度法,通过计算仪表开始刻度和最大量程刻度之间的角度,以及指针与开始刻度之间的角度,计算指针和开始刻度形成夹角在总量程角度的占比,最后结合仪表的最大量程,计算出仪表的读数,角度法仪表示数计算示意如图9 所示。
图9:角度法仪表示数计算示意图
实验测试对象为150℃ 量程的指针式温度表,在实验过程中将控制温度不断增大,进行多次识别。实验包括正常环境下指针表读数识别结果与分析、干扰环境下读数识别结果与分析。
正常环境下指针表图像的处理过程如图10 所示,正常环境下识别示数实验数据统计见表1。
图10:正常环境下指针表图像的处理过程
表1:正常环境下识别示数实验数据统计表
由表1 可见,在不考虑仪表基本误差和附加误差影响的情况下,自动读数算法处理结果与实际值的最大相对误差在0.5%以内 , 最慢识别时间为0.45 秒。该误差值与延迟时间对本实验中所用指针式仪表盘是可以接受的。
在真实的工业环境中,指针表读数可能会受光斑、污点和暗光等因素干扰。为了测试本文算法的稳定性,本文模拟了真实环境中可能存在的干扰,并进行了实验。干扰环境下指针表图像的处理过程如图 11 所示,干扰环境下识别示数实验数据统计见表 2。
图11:干扰环境下指针表图像的处理过程
表2:干扰环境下识别示数实验数据统计表
由表 2 可见,最大相对误差为 0.59%,最慢识别时间为0.48 秒。实验表明,对比无干扰情况,干扰环境下本方法的识别误差有所增加,其中暗光环境下的读数误差较大,但最大相对误差仍低于0.6%,说明该方法在一定干扰情况下仍有较好性能,具有鲁棒性。
由上述可知,本文所设计渐进式指针式仪表盘示数读取方法已基本满足一定误差范围内的指针式仪表盘示数读取要求。
针对指针式仪表识别过程复杂,智能读取普适性低、实时性差等问题,本文提出了基于计算机视觉技术的指针式仪表快速读取示数方法。首先对输入图像进行均值偏移过滤,再使用本文改进的Canny 边缘检测算法,然后应用基于Hough 梯度法的Hough 圆检测定位仪表盘质心;其次通过CTPN+CRNN 网络读取开始刻度和最大量程的数值与位置,并且基于区域选择的概率Hough 直线检测算法减少了搜索范围与计算量,取得了较好的检测结果;最后利用角度法得到仪表示数。通过实验表明,本文提出的方法读数的最大相对误差低于0.6%,具有精确性和良好的使用价值。