基于连通域标记的压力表读数自动识别系统
针对压力表这种模拟仪表没有提供接口供外部读取数据的情况,设计一种通过机器视觉技术来自动识别压力表读数的系统。运用标 记连通域的方法标记指针及刻度线,Hough变换求取指针直线,求出表盘的圆心及半径,再在指针所指刻度区间运用角度法求得指针读数。经 实验证明,该系统读取数据较人工估读数据更加准确,能够避免人为因素干扰,并能提高压力表检定效率。
0.引言
压力表是以弹性元件为敏感元件,用于测量对 仪表零件不起腐蚀作用的液体、气体和蒸汽表压力 的仪表,一般可分为普通压力表和精密压力表。压 力表结构简单、坚固耐用,使用方便,易于维护修理, 在基层单位应用普遍。基层单位使用的压力表,绝 大部分是普通压力表,一块普通压力表,一年可能要 送到计量站溯源两次,计量站压力表一年的检定任 务量到达上千台次。而大部分压力表属于机械仪 表,表本身并没有提供可供外部读取数据的接口,每 次检定压力表,都需要人为的读取数据,再与标准表 读数计算得出误差,效率低下,受人为因素影响较 大,随着检定业务量的增大,检定人员也会产生视觉 疲劳,影响数据的估读,可靠性及准确性都会随着降 低。近年来,计算机视觉技术快速发展,为压力表等 模拟指针仪表实现自动读数提供了强有力的技术支 持,将人眼读数转化为计算机自动读数,避免了人为 因素对读数产生的影响,同时提高了读数的精确性 及检定效率。
1.系统构成
此系统由三大部分构成,组成框图如图1所示。
仪表部分:在同一压力泵平台上,安装标准表及 被检表(以普通压力表为例),检定规程参照《JJG 52 -2013弹性元件式一般压力表、压力真空表和真空表检定规程》。
摄像头部分:使用特定的镜头及相机对被检表 进行拍摄,将图片通过数据线传送给计算机,供后续 算法使用。
读数识别系统部分:这是系统核心部分,通过一 系列算法获取被检表的读数,从而实现压力表读数 的自动识别。
2.系统流程图及主要算法实现
整套系统算法的流程如图2所示。
被检表图像传入计算机,首先对图像进行预处理。 对处理后的图像提取指针回转中心及半径,去除半 径外的图像,得到感兴趣区域ROI( Region of Inter-esting )。在ROI中,标记刻度线位置及角度,同时标 记指针及其所指向的角度,通过对指针所指刻度区 间运用角度比例法,得到压力表读数。
2. 1图像预处理
图像预处理主要包括图像去噪及图像二值化处 理。相机拍摄被检表图像经数据线传入计算机后, 因各种原因,图像会带有噪声等干扰因素,会加大后 续算法的计算量。本系统通过使用中值滤波来滤除 图像噪声。同时为了减少后续算法计算量,我们还 需要对图像进行二值化处理。
2.1.1中值滤波
中值滤波是一种典型的非线性滤波技术,基本 原理是运用统计排序的方法,用像素点邻域灰度值 的中间值来代替该像素点的灰度值,让周围的像素 值接近真实值,从而消除孤立的噪声点。该方法在
2.1.2图像二值化
图像的二值化通常通过对图像进行阈值处理来 实现。图像阈值处理是一种最基本的图像分割方 法,它通过选取一个阈值,将图像各个像素值中大于 (或大于等于)和小于等于(或小于)该阈值的像素 点分别设置为不同的值,从而形成两个像素值集合, 以达到分割对象图像和背景图像的目的。常用的阈 值处理方法包括基于最大类间方差法(OTSU)的自 适应全局阈值化分割法和基于高斯算子的局部阈值 化分割法,此系统选取第二种方法进行分割。
局部自适应阈值基于像素邻域块的像素值分布 来计算得到该像素点位置上的分割阈值,其好处是 阈值是根据像素点邻域的像素分布来计算得出。其 原理为:
{255,/( x,> T( x,
I0,x,) ^T( x,)
其中T( x,)为当前像素点的领域加权值,其权值 为高斯核值,其中采用的二维高斯滤波器函数是
图4为基于OTSU阈值处理及基于高斯算子的 局部阈值处理后的图像:
2.2指针提取
为了后续指针及刻度的角度确定并减少算法计算量,需要提前确定被检表的回转中心(即圆心)。 在拍摄被检表图像的时候,也可以将图像的中心与 表盘的回转中心重合,但人为因素可能带来误差,因 此我们要计算得出圆心的位置,避免人为因素影响。
通过观察表盘可以发现,所有的刻度的延长线 都经过圆心,同时,指针也随圆心转动,所以指针也 经过圆心,求取所有刻度线与指针的交点,即可以得 出圆心位置。同时观察图4,除了需要的刻度及指 针对象外,图像还有许多其他背景图像,由此,还需 要将表盘外圈及文字和数字去掉,尽可能只剩下表盘 刻度及指针这些有用的对象,方便后续算法处理。
通过对表盘外圈进行拟合圆操作,可以得到一 个大概的圆心位置及其半径,就可以提取感兴趣区 域ROI,此系统一共提取两个ROI,分别用于刻度的 标记及指针的提取。提取出的ROI如图5所示。
图像中每个像素点,其周围4个水平和垂直的 像素称为该像素的4邻域,其周围4个水平和垂直 的像素和4个对角相邻像素称为该像素的8邻域, 如图6所示。连通域就是在一个像素集合中,所有 像素都以一种邻接方式(4邻接或8邻接)相邻接,并 与其他像素集合不相邻。将图5( b)进行连通域标记, 提取最大一块连通域就能得到指针对象,如图7所示。 同时对图5 ( a)中刻度进行连通域标记。
图6像素点X的4邻域和8邻域
提取到细化后的指针,则需要运用Hough变换 从指针图像中提取指针直线方程,一是用于圆心的 提取,二是确定指针所指的角度方向。在直角坐标 系中,直线的方程可以表示为y = kx + 6,其对应在 极坐标系中则表示为:r = xcos^ + ysin0,这就说明直
2. 3圆心提取
对图5( a)进行连通域标记后,对每一个刻度用 最小二乘法进行线性拟合,得出每条刻度线的直线 方程,以便于后续圆心的提取。
最小二乘法的原理:设某条刻度拟合的直线方 程为:y = kx + b,则该条刻度连通域内像素点(,1) 和直线上(xt,yt)的偏差为:dl = yl - kXi - b;最小二
乘法就是计算得到k和b使gd2最小。求取各个刻度直线与指针直线的交点,再取各个交点的平均值, 记为圆心。
对刻度进行直线拟合后,选取每个刻度连通域 中拟合直线的中点或者该刻度连通域的质心,用于 标记其代表的刻度,便于后续读数的计算。标记方 法:将所有的标记点按横坐标分为圆心左边部分和 圆心右边部分,按照纵坐标大小不同,左边部分从下 往上标记,右边部分从上往下标记,即将表盘的刻度 从小到大依次标记完成,将标记的结果保存于数组 中,数组的索引为刻度的序号,数组值为该刻度对应 的角度(角度以表盘6点钟位置为0度,顺时针依次 增大)。圆心的结果和刻度的标记如图9所示。
2. 4计算指针读数
此系统指针读数计算方法是:刻度值根据其在 标记结果数组中的索引值乘于表盘刻度分度值,再 加上表盘的最小值来计算,指针的读数用指针所指 的角度与相邻的两个刻度的角度比例来计算。由于 连通域标记可能会将某些刻度与指针标记在一起 (包括指针和刻度重合的情况),所以指针读数计算 会有以下几种情况。
设指针的角度为&两个标记的刻度值的角度 为^和eB、压力值为:va和vb,分度值为F。
第一种情况:
指针读数为:s = H • V + Vb。
"A -廿 B
第二种情况(包含指针和刻度重合的情况): 指针读数为:s = H • • V + Vb。
"A -廿 B
第三种情况:
指针读数为:s = H • V + Va。
^ A - " B
实验验证
该系统在VS2013环境下编写完成,选取的标 准表为ConST273数字式压力校验仪,选取的普通压力 表的信息如表1所示,实验结果如表2、表3所示。
表2及表3结果表明,自动识别读数精确度要 高于人工估读读数,由于角度比例法只在指针所指 相邻刻度间进行,比全局使用角度比例法误差更小,说 明了这套系统能够用于压力表的读数识别,并且精确 度更高,能够避免人为因素干扰,达到了预计需求。
4.结论
本文针对普通的一般压力表的检定读数,提出 了基于机器视觉的自动读数方案,通过对压力表图 像中指针及刻度线进行连通域标记,求得圆心,并将 刻度值进行标记,运用局部角度比例法,计算压力表 的读数。通过实验对自动识别读数算法进行了可行 性论证,通过实验表明,该方法精确度更高,准确性 更好,同时避免了人为干扰因素,提高了压力表检定 效率。
上一篇:谈谈压力表的校准
下一篇:关于车载燃气压力表检测方法的报告