基于单参数同态滤波与全局对比度增强的指针仪表读数识别方法
2021-06-03胡秀军于凤芹
胡秀军,于凤芹
(江南大学物联网工程学院,江苏无锡 214122)
0 引言
指针式仪表因其结构简单、维护方便、成本低、抗干扰性强等特点,被广泛应用于日常生活和工业现场。传统的仪表读数识别方式多为人眼识别,易受人眼分辨能力和视觉疲劳等主观因素影响、识别效率低且在环境恶劣的高危场合不适宜采用人工判读。
随着计算机视觉和物联网技术的发展,基于图像处理的指针式仪表示数的识别成为必要。但仪表读数识别算法如何适用于不同的光照和天气情况成为必须解决的问题。文献[1]通过设计高斯同态滤波器对仪表图像进行预处理,降低光照变化、指针阴影对算法的影响。文献[2]提出基于视觉显著性的指针式仪表读数识别算法,利用图像区域的对比度、空间关系、中心先验性等视觉显著信息检测仪表图像指针区域,并利用无向图排序算法优化,抑制背景干扰。文献[3]针对仪表反光的现象,利用轮廓特征对几何图形进行拟合,以某一固定特征为参考位置,根据位置关系读取示数。文献[4]提出迭代最大类间方差算法提取不同光照条件下的指针区域。文献[5]通过局部自适应二值化消除光照影响。文献[6]针对非均匀光照下的仪表读数提出一种基于扫描线处理的快速读数方法。文献[7]提出了一种基于空间变换的指针式仪表读数识别算法,通过综合运用减影法、中心投影法和图像形态学对指针进行识别,采用图像空间变换的技术,将圆弧空间转换为矩形空间,通过提取指针尖端与邻近刻度线之间的相对位置关系来获得读数,减少光照对指针和刻度线识别的影响。文献[8]提出基于最大稳定极值区域提取指针区域的算法,通过三尺度高斯函数提取光照分量,构造二维伽马函数自动地调整图像反光区域或过暗区域的亮度,通过最大稳定极值区域的2次稳定区域检测能够提取不同光照条件下的指针区域。文献[9]提出基于概率霍夫变换的指针仪表去影算法,能够在存在干扰光源的情况下正确判别指针、去除干扰阴影。
在采集仪表图像时,由于光照和拍摄角度的影响,仪表的读数识别经常会受到光照、指针阴影等因素的干扰,导致指针区域的提取和指针中心线的定位不能取得满意的结果。针对此问题,提出具有单参数的指数型同态滤波与全局对比度处理的仪表读数识别方法,首先设计单参数指数型同态滤波器,增强仪表图像对光照变化的适应性。然后通过设计基于全局对比度的图像增强算法,抑制仪表盘背景区域,突出表盘信息区域。最后通过二值化、连通域处理、形态学处理提取指针区域,并通过细化处理和累计概率霍夫变换定位指针中心线,获取指针的偏转角度,完成仪表读数识别。
1 指针式仪表读数识别算法原理
1.1 单参数指数型同态滤波对仪表图像进行处理
同态滤波是将频率过滤与灰度变换结合起来的图像处理方法,以图像的照度-反射模型为基础,通过压缩图像亮度范围和增强对比度的方法来改善图像的视觉质量。
利用指数型高通滤波函数来逼近同态滤波函数可形成对应的指数型同态滤波,其高通滤波函数表达式为
H(u,v)=e-[D0/D(u,v)]n
(1)
指数高通滤波器高低频率的过度比较光滑,处理过的图像没有明显的振铃现象。指数型高通滤波函数乘以高频增益rh,再加上低频增益r1后,得到式(2):
H(u,v)=rh·e-[D0/D(u,v)]n+r1
(2)
针对式(2)修改可得到进一步优化后的指数型高通滤波函数,先将指数高通滤波函数变为指数低通滤波函数,由于低通滤波传递函数波形图跟高通滤波传递函数的波形图相反,所以用1减去低通滤波传递函数,同时,用高频增益减去低频增益。c为锐化系数,可以进一步加强图像对比度,n取2。优化后得到式(3):
H(u,v)=(rh-r1)·(1-e-c[D0/D(u,v)]2)+r1
(3)
由于优化后的指数型同态滤波器参数较多,且对不同的图像参数值不同,需要经过大量的实验才能得到最优效果。为了减少参数的影响,同时在不影响滤波效果的情况下,引入S型曲线的指数函数:
(4)
由于该指数函数的曲线与同态滤波器的剖面结构近似,因此,设计了单参数指数型同态滤波器,其传递函数为
H(u,v)=1/(1+e1-KD(u,v))
(5)
在式(5)所示的传递函数中,只需对参数K进行控制,就可以得到最佳的滤波效果。
为了降低光照、指针阴影对仪表读数的影响,将仪表图像从RGB颜色空间转换到HSV颜色空间,对HSV颜色模型进行三通道分离,保持色调和饱和度不变,提取图像的亮度分量,利用该单参数指数型同态滤波对亮度分量进行光照补偿,并将HSV图像还原为RGB图像。
1.2 基于全局对比度的图像增强算法原理
为进一步增大表盘信息区域与表盘背景区域的对比度,提出基于全局对比度的图像增强算法,抑制背景区域,突出信息区域。该算法通过图像的灰度直方图统计出同一灰度级像素点的数目,得到该灰度级像素点在图像中出现的频率f,设图像中某一像素点Pk,计算该像素点与图像中其他所有像素点的距离度量Dis(Pk)。
Dis(Pk)=‖Pk-P1‖+‖Pk-P2‖+…+‖Pk-PN‖
(6)
式中N为像素点的数目。
若Pk的灰度值为Gm,即Pk=Gm,m表示该像素点的灰度级,m∈[0,255],则式(6)可重构为式(7):
Dis(Gm)=f0‖Gm-G0‖+f1‖Gm-G1‖+…+fn‖Gm-Gn‖
(7)
式中fn为灰度级为n的像素点在图像中的出现的频率。
将同一灰度级m的像素点与其他所有灰度级像素点的灰度度量定义为Gray(Gm),计算公式由式(7)整合所得,如式(8)所示:
(8)
将同一灰度级像素的灰度度量作为该灰度级上所有像素点的灰度值,得到重新归一化后的图像。
1.3 指针检测与读数计算
通过Otsu分割算法对图像进行二值化处理,结合连通域处理[10]提取指针区域,然后用形态学孔洞填充[11]。去除指针区域的细小孔洞。由于指针具有上端细、下端粗的特点,为了后续精确定位指针,需要对指针区域进行细化处理获取其骨架,其中改进的Zhang细化算法[12]具有快速并行、细化后的曲线保持连通性和无毛刺等特点,因此本文采用该算法来细化指针,获得指针骨架后,采用累计概率霍夫变换[8]。检测指针直线,并获取指针的偏转角度。
构建坐标系,计算仪表读数。如图1所示,以表盘转动轴心O为原点建立直角坐标系XY,l为指针直线段。
根据检测到的指针直线得到指针的偏转角度,利用角度法[13]计算出仪表的读数,计算公式如式(9)所示:
(9)
式中:γ(∠AOB)为指针的偏转角度;β(∠COB)为最小刻度线与Y轴的夹角;max与min分别为仪表最大刻度值与最小刻度值。
2 算法实现步骤
步骤1:制作仪表模板。获取仪表轴心位置、最大刻度值、最小刻度值以及最大刻度线与最小刻度线相交的夹角,建立模板库。
步骤2:输入待测图像,使用透视变换算法对该图像进行校正。
步骤3:获取仪表图像的有效信息图。
步骤4:将图像从RGB转换到HSV空间。
步骤5:保持图像的色调(H)、饱和度(S)不变,提取图像的亮度分量(V)图。
步骤6:利用单参数指数型同态滤波对亮度分量图进行处理。
步骤7:将HSV图像还原为RGB图像。
步骤8:对步骤7所得图像进行灰度化处理。
步骤9:得到步骤8处理后图像的灰度直方图,统计灰度级为n的像素点的频率fn。
步骤10:通过式(8)以及步骤9中的fn计算图像中每个灰度级像素点与其他所有灰度级像素点的灰度度量。
步骤11:将步骤10计算得到的灰度度量作为图像新的灰度值,归一化图像。
步骤12:采用Otsu算法对步骤11的图像进行二值化处理。
步骤13:对步骤12所得图像进行连通域处理,提取指针区域。
步骤14:对步骤13所得图像进行形态学孔洞填充操作。
步骤15:对步骤14所得图像进行细化处理,获取指针骨架。
步骤16:采用累计概率霍夫变换检测指针直线,获取其偏转角度。
步骤17:通过式(9)计算仪表读数并输出,算法结束。
仪表读数识别算法流程图如图2所示。
3 仿真实验结果与分析
本实验的运行环境为Windows10 64位操作系统,Ryzen5处理器,8 GB内存,Visual Studio 2017和OpenCV作为软件开发环境。
3.1 滤波器参数设置与图像质量检验结果分析
选取低照度、高照度以及照度不均的仪表图像为实验对象,以图像的信息熵、峰值信噪比作为图像质量检验指标,来客观评价传统的指数型同态滤波与本文单参数指数型同态滤波算法的实验效果。信息熵是图像信息量的度量,信息熵越大,图像所含信息越多,图像包含的细节越丰富;峰值信噪比表示图像信号最大可能功率与噪声功率的比值,峰值信噪比越大,图像保真程度越高。滤波器的参数设置以及检验指标如表1。
由表1数据可知,本文设计的单参数指数型同态滤波器控制参数明显减少,可以更快实现对滤波器的控制,且处理后的图像信息熵、峰值信噪比略高于原算法,可以有效增强图像细节,对图像具有较好的处理效果。此外,本文根据大量实验得到参数K的取值范围在[0.025,0.035]之间。
表1 仪表读数实验结果
3.2 不同光照条件下仪表分割实验结果与分析
本文将Otsu算法、文献[1]、文献[5]及本文所提方法进行对比实验,如图3~图6所示。经分析可知,只有在正常光照下,Otsu算法才能较好地分割出指针区域,光照过暗、光照过亮以及光照不均匀时均不能取得较好的分割效果;从图4(c)、图6(c)可看出文献[1]算法在光照过暗或光照不均匀的条件下,对仪表图像的分割效果不理想。从文献[5]算法分割的结果图可知,不同光照条件下,该算法可取得较好的分割效果,但保留的干扰信息太多,为后续提取指针区域增加了难度。从本文算法分割的结果图可知,本文算法能够减少表盘区域干扰,抑制背景区域,突出信息区域,降低了提取指针区域的难度,也说明了本文算法能够适应各种光照条件,对光照有较好的鲁棒性。
3.3 存在指针阴影的指针区域提取结果与分析
经实验分析,可将指针阴影类型大致分为3种,如图7所示,第一种类型指针与指针阴影之间的夹角较大,经Otsu算法分割后得到双指针,如图7(b)所示;第二种类型指针与阴影之间的夹角较小,经Otsu算法分割后得到的指针比实际的指针粗,如图7(g)所示,造成定位的指针中心线不准确;第三种类型指针阴影并不太明显,但由于灰度值较高,经Otsu算法分割后,得到的指针中仅含有部分指针阴影,如图7(l)所示。前两种类型若不能去除指针阴影,将造成指针中心线产生偏差,导致读数误差较大,第三种类型对指针中心线定位的结果影响并不大,但若提取的指针区域中含较多的干扰,如字符、污渍等,就会对指针中心线定位产生一定影响。本文就指针区域的分割与Otsu算法、文献[1]和文献[5]中的3种算法进行了对比仿真实验。由仿真实验结果可以看出,本文算法相较于Otsu算法、文献[1]和文献[5]算法能够更好地去除不同类型的指针阴影,有效地分割出指针区域。
3.4 仪表读数实验结果
本实验采集50张不同类型、不同读数的仪表图片作为实验样本进行实验。将其中10组的人工读数与本文算法的读数结果进行对比,实验结果如表2所示。
表2 仪表读数实验结果
由表2可知,使用本文算法对各刻度均匀的指针式仪表进行读数,其结果与参考读数相差不大,总体的正确率达到了95%以上,能够满足仪表读数识别的实际需求。可见,本文设计的指针式仪表读数自动识别算法是可行的。
4 结论
针对光照变化、指针阴影等干扰影响因素导致仪表指针无法提取、仪表读数识别误差较大的问题。本文提出一种具有单参数指数型同态滤波与全局对比度处理的仪表读数方法,使用单参数指数型同态滤波较大程度消除光照和指针阴影的干扰,并通过全局对比度的图像增强算法突出表盘信息区域,结合Otsu算法解决了不同光照条件下和存在指针阴影的仪表图像中指针区域的提取,实现指针中心线的精确定位。仿真实验结果表明,所提算法能够适应不同光照条件下指针区域的提取,同时能够消除指针阴影的影响,且读数识别的正确率达到95%以上。