一种改进的指针式仪表读数识别方法

2016-05-14 23:40邵锡沈普韩俊俞武嘉
数字技术与应用 2016年7期

邵锡 沈普 韩俊 俞武嘉

摘要:针对传统的单纯的利用Hough变换处理多指针仪表的读数识别时遇到的一系列问题,提出了一种改进后的指针读数方法。该算法先利用指针和表盘背景的色差提取指针轮廓,利用Hough梯度法确定指针圆点,并运用轮廓法确定指针。对指针与零刻度线间夹角长刻度与零刻度线间夹角进行校正,采用牛顿插值法逼近指针与零刻度线间夹角和仪表示值的函数关系,实现仪表示值的智能读取。实验结果表明,该算法很好的解决了噪声对结果产生的影响,在保证准确率的同时提高了识别速度。

关键词:读数识别 Hough变换 OpenCV 视觉检测

中图分类号:TP391.4 文献标识码:A 文章编号:1007-9416(2016)07-0229-02

当前很多领域受工作条件限制及经济性、便捷性要求,指针式仪表还大量使用。目前在计量检定领域,对指针式仪表的检定多采用手动校验的方法,检定过程复杂,大量的重复测量工作以及数据处理多而繁琐,造成检定工作费时费力,极容易造成人为差错,使检定准确性难以保证。因此,研究和发展计量测量过程中所需的先进自动化技术,对于提高工作效率,减少人工干预并降低出错概率具有重要的现实意义。

本文将在现有的指针式读数识别算法的基础上改进不足之处,提出一种改进的指针式读数图像识别算法。具体算法流程如下图1所示。

指针式仪表自动识别的关键技术就是指针的提取[1]。而Hough变换是图像变换中的经典手段之一,主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。本文在传统Hough变换的基础上提出了一种改进算法,在完成表盘区域的预处理后,锁定ROI(Region of Interesting),将子表盘区域单独提取出,放入内存中,剔除其余部分,减小Hough变换的搜索范围来减小Hough变换所需的存储空间和计算量,然后利用Hough梯度法获取指针圆心后,运用轮廓法找出指针,最后用牛顿插值法逼近指针与零刻度线间夹角和仪表示值的函数关系,实现仪表示值的智能读取。

1 图像预处理

本文所研究的指针仪表如下图2所示。本仪表盘中红色的指针是其中特征最明显的物体,故提取红色的指针。在彩色空间(RGB)中,每个像素由三个字节表示,图像由彩色变换为灰度,其对应点的灰度值为[2]:其中:Y为灰度值,R、G和B为RGB颜色空间中像素的三个分量。为了突出本次实验中研究对象中的红色成分而削弱其他颜色成分,采用直方图法来分割图像。

二值化是图像预处理的关键环节,其效果将对后续的数字定位和分割操作产生直接的影响。这里我们使用计算图像直方图的方法来找出每一幅图像一一对应的最佳阈值。按照以上算法得到的结果如图3所示。一般用255表示白色,0表示黑色。笼统地讲,灰度值越小,代表越暗,值越大,代表越亮。

可以直观地看到,灰度的中间位置存在一个大的峰值,同时有大量的深色像素。这几组像素基本对应的是图像的背景和前景。因此我们可以在这几组像素之间的过渡处进行阈值化。按照以上算法得到的结果如图5所示。

2 指针圆心定位

再完成了图像预处理后,就需要对子表盘的指针进行定位,找出指针并确定指针的指向。在OpenCV的应用中可以通过一个比较灵活的Hough梯度法来解决圆变换的这一问题。按照该算法,可以得到如图6的结果。

3 指针指向定位与读数识别

在找出各个指针的圆心点后,我们就需要识别指针指向了。常用的指针指向识别算法有[4]:步长法、圆周灰度检测法和基于多特征的分区模板匹配法等。

在检测过程中,发现由于光照时候玻璃的反光以及光照的不均匀,使指针在背光方向形成阴影,导致水表表盘区域明暗灰度的变化不规则。而步长法和圆周灰度检测对图像灰度和光照分布均匀都有很高要求,所以用这两种方法不能正确识别指针方向。如果使用基于多特征的分区模板匹配法,由于受到模板的约束条件的限制,当指针的指示方向在一个刻度附近的时,就很难区分该指针指示的是哪一个数值。而且该算法考虑的特征信息较多,算法的时间复杂度比较大。针对以上出现的几种问题,我们提出了一种新的处理方法。使用轮廓跟踪算法( Contour Trace )来定位指针指向。轮廓跟踪法基于区域边界上相邻像素点的相互连通性,沿区域边界走一圈回到起始点可以得到一段封闭曲线,适用于轮廓完整,但内部像素性质不一定相一致的区域的分割。轮廓跟踪就是从一个起始点开始,按照四连通或八连通关系逐点跟踪下个边界点,同时输出移动的方向(即链码值),直到得到整条轮廓线。

在OpenCV中一般用序列来存储轮廓信息。序列中的每一个元素是曲线中一个点的位置。所以,对于定位指针,我们只需找出离圆心点最远的点,然后将圆心点和这个最远的点相连接,这条直线即为指针。按照以上算法,可以得到如图7的结果。

再完成对指针的圆心与指针尖端的定位后,我们就需要用相应方法完成对指针指向的定位。我们需要一种能够使得指针的指向不受表盘的倾斜情况影响,而且计算简单的算法。经过综合分析后,我们发现牛顿插值法是一种完全能满足上述需求的方法。用牛顿插值法得出的函数关系式可以完成对指针与零刻度线间夹角长刻度与零刻度线间夹角的校正,并且很好地逼近零刻度线间夹角和仪表示值之间最真实的关系,从而实现仪表示值的智能读取。

插值函数的定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点x0,x1,…xn上取值分别为y0,y1,…yn(设a≤x1≤x2……≤xn≤b)。若在函数类中存在以简单函数P(x),使得P(xi) = yi,则称P(x) 为f(x)的插值函数。称x1,x2,…xn为插值节点,而称[a,b]为插值区间。插值函数定理:n次代数插值问题的解存在且唯一。

需要说明的一点是,用牛顿插值法计算得到的指针示值只是指针相对于自己所在的子表盘的刻度线的读数。从表盘的结构分析可以得出结论,即表盘的中心和指针的回转中心的连线与表盘0刻度线的夹角是一定的。另外,指针指向线段在表盘图像坐标系中的角度可利用它的直线方程求出。可利用这两个角求出指针相对于零基准线的转角α,进而可以根据转角α与表盘读数的关系计算指针读数。转角α与表盘读数的关系如表1所示。

利用表盘中心与指针回转中心的连线与子表盘0刻度线的夹角一定的特征来计算表盘0刻度线与指针指向线段的夹角方法有效地克服了表盘随机角度旋转对读数识别算法的影响。

4 实验与分析

本文以水表表盘为具体研究对象,采用Microsoft Visual 2010开发测试程序对水表的指针式仪表的自动识别功能进行测试。我们首先自己构建一个图像集,用来模拟实际采集水表表盘图像时可能出现的随机角度旋转、一定程度的随机噪声干扰、外界光照条件变化造成的图像明暗变化等情况,然后对这个图像集中的图片进行自动识别。图8给出实验测试算法的识别时间和识别结果。

同时,本文基于同一组图像数据分别利用基于Hough变换的子表盘定位方法与本文提出的定位子表盘区域算法进行了定位对比实验。比较结果如表2所示。

实验结果表明,与传统的Hough变换相比,改进算法的处理速度要快5~6倍,在存储空间减小的同时保持了良好的效果,具有较高的实用价值。

参考文献

[1]陈燕.指针式水表的图像自动读数判读方法的研究[D].江苏:苏州大学,2009.

[2]苑玮琦,邵蕊.指针式仪表识别方法的研究[J].微计算机信息,2009,25(12): 26-28.

[3]邹俊贵,陈以.常用指针式仪表识别技术研究综述[J].仪器仪表与分析检测,2009(1):1-6.

[4]江泽涛,王轼,李克伟.一种指针式仪表非接触测量方法[J].计算机应用与软件,2009, 26(4):281-283.

[5]J.R.Parker著,景丽译.图像处理与计算机视觉算法及应用(第二版)[M].北京:清华大学出版社,2012.