姜立斌
(福建省计量科学研究院,福建福州,350003)
带弹簧管压力表的气体减压器(以下简称减压器)主要用于氧气、氢气、氮气、乙炔等多种类高压气源的压力减低以及保持稳定的出口压力,同时具备进口压力降低、及保持出口压力稳定两种作用。安装在高压气瓶上,广泛应用于工程现场、化工、医疗卫生系统,检疫机构,食品加工,科研等领域。主要校准参数为示值误差、密封性以及安全阀的密封性及排气功能,其功能直接关系到人民的生命健康及安全生产,属于强制检定计量器具范畴。目前国内普遍采用多种计量器具来分别校准其示值误差、密封性及安全阀参数,需要多次拆装减压阀,校准效率偏低。
本项目通过编写自动读数系统,应用数字图像处理技术自动获取压力表示值信息,研究包括仪表图像预处理、表盘定位、指针定位和读数等,并基于Hough变换(HT)、随机霍夫变换(RHT)等方法,提出新的圆检测、直线检测以及模板匹配方法,最后用C语言实现一个仪表自动读数的系统。其中,采用图像识别技术对被检压力表的示值进行自动读取是本项目的重中之重。
本文以带弹簧管压力表的气体减压器压力表为例,应用图像识别技术来实现压力示值的自动读取功能,具体步骤如下:
为了使图像能够被精确定位,在定位搜索以前,要进行图像预处理:需要将图像缩放、变换,并将彩色图像转化成256 色的灰度图后进行处理,然后对图像做二值化处理,再去噪、平滑、膨胀、腐蚀削弱背景干扰。其流程图如图1所示。
图1 预处理流程图
1.1.1 缩放和变换
缩放操作的主要目的是减小图像大小,减少计算量,缩放操作不是必须的,但是如果系统对输入图像的大小有要求,比如需要归一化处理,那么就需要进行缩放,常见的缩放方式有等比缩放和强制缩放。
等比缩放是指按原始图像的长宽比例进行缩放,缩放后的图像大小不变;强制缩放是指按照设定的长宽进行缩放,缩放后可能导致图像变形。其实缩放属于图像变换中的仿射变换中的一种,相对应的还有透视变换等,这两个变换都是图像处理中最基本的两种变换。
仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。
仿射变换:允许图形任意倾斜,而且允许图形在两个方向上任意伸缩的变换。仿射变换,可以用于保持线共点、点共线的关系,保持平行状态,保持中点不变,保持线段比例关系不变,但是,原来的线段长度变化,原来的夹角角度变化。
透视变换:是指利用像点、透视中心、目标点三点共线的条件,按透视旋转定律使透视面绕透视轴旋转某一特定角度,破坏原有的投影光线束,仍能保持透视面上投影几何图形不变的变换。
透视变换常用在移动机器人视觉导航研究中,摄像机与地面之间有一倾斜角,而不是直接正投影,如希望将图象校正成正投影,就需要利用透视变换。
1.1.2 灰度化
灰度化的目的之一是将原有的三通道的RGB彩色图像转化为单通道的灰度图像。当R=G=B时的值就称为灰度值,因此灰度值的取值范围是0~255。RGB转灰度计算公式为:
Gray = (R×30 + G×59 + B×11 + 50) / 100 (1)
转换公式有多个,根据场景不同,有的要求效率,有的要求精度,所以最终结果可能会有一点偏差,这里给出的是一种计算效率较高的转换公式。
对于颜色空间,在图像处理中,常用的就是RGB和YCrCb,YCrCb常用于肤色检测。
图像灰度化的重要目的之一是减少处理的数据量,加快计算速度,因为灰度图只有一个通道,只需要计算一个值即可。
1.1.3 去噪和平滑
去噪和平滑是预处理中最重要的步骤之一,去噪的效果完全可以影响最终的处理效果。这里所说的噪声不仅仅包括设备拍摄时所产生的斑点、校验噪声等,还包括我们所不感兴趣的部分,比如多余的点,多余的线条等等。那么对于斑点和校验噪声,可以使用中值滤波来进行消除,对于其他的我们不想要、不感兴趣的部分,则可以通过一系列其他操作来过滤,比如模糊处理,图像加减法等进行过滤和消除。
噪声消除方法可分为频域、空间域两种类型。频域方法在低频部分,利用数字图像的有用信息来进行噪声消除。空间域法包括中值滤波器法、均值滤波器法等。
(a)中值滤波。中值滤波是基于排序统计理论的非线性信号处理技术,能有效抑制噪声,对消除脉冲干扰噪声具有显著效果,同时也可一定程度上减轻图像边沿的模糊,用该点的一个邻域中各点值的中值代替数字图像中的点值,是周围像素灰度差大的像素改取与周围的像素值接近值,消除孤立的噪声点,从而有效减低噪声。中值滤波器的优点是在滤除叠加白噪声和长尾叠加噪声时有优势。改进算法有权重中值滤波、基于排序阈值的开关中值滤波算法、自适应中值滤波器。中值的取值采用了分治算法,其原理是对于规模为m的问题,若容易解决则直接解决;否则将其分解为n个规模较小的问题并逐个解决,最后合并n个子问题的解,得到原问题的解。
(b)均值滤波。也称线性滤波,主要采用邻域平均法,均值滤波的核心思想是其将整个图像看成是由很多灰度恒定的小块组成,相邻像素间相关性很强,但噪声具有统计独立性。故可用邻域的均值替代原图像中的各个像素值。该方法非常适用于去除通过扫描得到的图像中的颗粒噪声,对此算法进行改进算法,滤波器在进行平滑处理时,主动避开对景物边界的平滑处理,大大降低对图像的模糊效果。注意,均值滤波算法可使噪声幅值减小,但范围变大,因此图像边缘变得模糊。
1.1.4 膨胀和腐蚀
膨胀就是求局部最大值的操作,而腐蚀则是求局部最小值的操作。简单来说,膨胀就是增加白色(像素值高的)区域,而减小黑色(像素值低的)的区域,腐蚀则相反。在仪表识别中通过腐蚀/膨胀操作来加强或者消除刻度区域以及指针等等。也就是说膨胀和腐蚀操作可以增强我们感兴趣的区域,也可以减少噪声,可以看作是一种滤波操作。如图2所示为图像预处理前后的图片。
图2 预处理前后对比图
针对圆形仪表来说,表盘定位常用的方法是Hough圆检测。
传统Hough圆检测的步骤如下:
(1)遍历图像上非零像素点,然后以此点为圆心,尝试对半径进行缩放操作;
(2)将每一个圆心坐标和半径映射到参数空间(a-b-r空间中);
(3)在参数空间a-b-r中,一个圆将被映射为一个点,这些点将形成一个圆锥曲面;
(4)这些圆锥曲面将会有很多个交点,分别对这些交点进行投票(“票”即为经过该交点的圆锥曲面);
(5)根据票数对这些交点进行排序,得票最高者即为最可能圆,次之。
在OpenCV中对传统Hough进行了改进,速度至少提升几个数量级,它采用的是基于梯度的Hough圆检测。该算法首先计算像素点的梯度,然后进行缩放半径进行找圆,这样就把三维的参数空间转化为二维(计算圆心和半径),效率得到了很大的提升。
另一种效率较高的圆检测算法为RHT(随机Hough变换)圆检测,它利用三点确定圆的方法,从图像上随机选取三个点,然后对这三点确定的圆进行投票选举,具体过程可以参见:基于随机Hough变换的快速圆检测方法。
图3 是使用Hough圆检测定位到的圆形表盘。
图3 使用Hough圆检测定位到的圆形表盘
刻度在仪表自动读数中并不作为计算依据(起始和终止刻度除外),最终读数仅仅依赖指针、表盘位置以及量程,因此在求仪表刻度线时可以允许少量误差,这些误差不会对最终结果造成影响。
对于刻度线的拟合,本质上还是对直线的拟合,因此常用的方法有最小二乘法和Hough变换拟合。我们通过多次轮廓筛选,然后计算轮廓外接矩形的中心,作为刻度点,刻度点与表盘圆心的连线作为刻度线。
根据刻度线的特点,轮廓筛选包括对轮廓的形状、大小以及位置和角度进行筛选,满足以下条件的轮廓将被保留,否则被剔除:
(1)轮廓点个数n(或面积)在设定的范围内
通过判断轮廓点的个数(或面积),可以初步过滤掉大面积的非刻度区域。
(2)轮廓点的最小外接矩形宽w、高h的比在设定的范围内根据刻度线的特点,刻度线的宽高比M一般在1:2~1:5之间,根据宽高比可以过滤掉相同面积的非刻度轮廓。
(3)轮廓的位置在表盘圆周附近
通过圆检测定位到表盘后,判断轮廓中心(x_0,y_0)与表盘圆O(a,b,r)圆心的距离d,可以过滤掉面积以及宽高比相近的轮廓。
(4)轮廓最小外接矩形的方向指向圆心
根据刻度线的特点,刻度线总是指向表盘圆心,因此根据其最小外接矩形的倾斜角度α,判断是否是指向表盘圆心,达到最终的过滤目的。
仪表的最终读数,取决于表盘圆心、指针偏移起始刻度的角度以及量程。在确定表盘圆心、指针方向以及量程后,才可以通过指针偏移角度来计算示数。很重要的一点就是计算起始/终止刻度的位置。
起始/终止刻度的确定可以先使用刻度拟合法来找出刻度,再根据刻度的位置关系来确定起始/终止刻度,但是由于受旋转,噪声等影响,定位结果往往差强人意,而最终读数又与起始坐标密切相关,所以为了保证其精度,课题采用分段定位的方式识别读数。
经一段时间的实际使用,证明该装置运用图像识别技术,可正常识别被检减压阀压力表的读数,并将其数据传输到电脑端。该装置精度高,性能稳定,可用于开展压力表检测工作,提高了计量检测的检测效率和准确性。