基于深度学习的集气站指针式仪表读数研究

2022-02-25 02:36陶健成
自动化仪表 2022年2期
关键词:读数像素点指针

江 涛,陶健成,范 旭

(1.中海油能源发展股份有限公司采油服务分公司,天津 塘沽 300452;2.东南大学自动化学院,江苏 南京 210096)

0 引言

在油气勘探中,集气站是重要组成部分。集气站需要各种仪表实时指示当前集气站的工作状态,以确保整个系统的安全、稳定运行,并在较短时间内发现危险。目前,多数集气站主要依靠人工巡检保障设备正常工作,主要存在以下缺点:仪表设备多,造成巡检工作繁杂、耗时;巡检频次高,造成测量人员因疲劳等原因产生读数误差;集气站有毒有害气体会对巡检人员的身体造成损害[1]。

随着机器视觉和深度学习的兴起,人们可以实现对目标像素级的识别与分割。机器人技术在各行各业得到广泛运用,可以代替工作人员进入更危险的场所、执行更精准的动作;加之人力成本上升趋势和产业升级的需要,对集气站各类仪表进行自动巡检与读数迫在眉睫,在行业有着现实需要和应用前景。本文对指针式仪表自动读数的实现方式进行了研究。

1 总体结构

指针式仪表的自动读数算法由两部分组成:仪表的识别定位和仪表表盘的建模读数。仪表的识别定位主要实现图像预处理和仪表检测[2]。图像预处理使用双边滤波实现去噪,并使用单尺度Retinex实现增强。仪表检测采用一种Mask基于区域的卷积神经网络(region-based convolutional neural network,RCNN)[3-4]。仪表表盘的建模读数主要用于确定指针区域、实现指针拟合和利用角度计算示数。该仪表采用局部阈值二值化和划分连通域提取指针区域,以查表法细化指针和累计概率Hough变换实现指针拟合,通过对表盘进行建模而利用角度关系计算示数。算法以仪表图片作为输入、仪表示数作为输出。算法架构图如图1所示。

图1 算法架构图

2 仪表识别与定位

2.1 图像预处理

2.1.1 双边滤波

仪表类图像较为有效的信息在于物体与背景交接的边界信息。常用的线性滤波方式,诸如高斯滤波等,会混淆图像的这部分信息。作为一种典型的非线性滤波算法,双边滤波器[5]是一种用于保留边界、平滑降噪的滤波器。与高斯滤波类似,双边滤波器同样采用邻接点像素值进行加权平均的值来代替该像素的值。但与前者不同的是,它的权重不仅与像素点间的欧氏距离有关,还与深度距离、颜色差异等因素有关。这种滤波器在保护边界信息方面卓有成效[6]。图2展示了双边滤波测试结果。从图2所示的对比结果来看,原始图像中的仪表刻度线周围分布散乱噪点,对后续的图像处理产生干扰。相比之下,双边滤波算法可以有效地在不混淆边界信息的情况下去除噪点。

图2 双边滤波测试结果

2.1.2 单尺度Retinex

logli(x,y)=log[si(x,y)·Gi(x,y)]

(1)

(2)

式中:i∈{R,G,B}。

通过对输出图像应用标准增益调整其亮度范围,可获得最终的输出图像。SSR测试结果如图3所示。

图3 SSR测试结果

通过图3所示的对比结果可以看到:在原始图像中,很难用肉眼分辨仪表的具体数据;在经过算法处理后的图像中,指针与刻度线区域与背景区分得较为明显。

2.2 Mask RCNN模型结构

与基于更简单工程特征的系统相比,Mask RCNN可以显著提高目标检测性能并且实现图像的实例分割[8]。每个像素被划分为一组区分不同对象的固定类别。Mask RCNN是Faster RCNN的改进。它为每个感兴趣区域增加了一个用于预测分割掩码的分支,并使用RoIAlign层替换RoIPool层[9]。Mask RCNN整体结构如图4所示。

图4 Mask RCNN整体结构图

卷积神经网络部分采用的是残差神经网络,可以很好地解决因网络层次太多而导致的退化问题。

2.3 仪表识别试验与结果

本文采用ResNet-50作为特征提取网络。ResNet-50需要大量数据来调整参数值,以达到最佳特征提取效果。获得仪表数据集后,按8∶2区分为训练和验证集,并且需要手动对2个子集图像中的仪表掩码进行标注,将其存储为.json格式文件用于后续调用。试验中共获得112张训练集图像和28张验证集图像。

由于数据集小、训练资源有限,加之识别目标较为简单,试验采用迁移学习的方式进行训练。本文在特征提取部分采用COCO数据集权重参数,以减少待优化参数数量,从而尽快达到收敛;在检测部分使用自制仪表训练集进行重新训练,以实现检测仪表的特定应用。试验中:设置区域推荐网络中正负样本比例约为1∶2;共设置10个阶段,每个阶段训练50次;预测过程中置信区分度设置为0.9。在训练和推断过程中使用的试验配置环境如表1所示。

表1 试验配置环境

最后,使用准确率最高的模型对测试图片进行预测。仪表掩码预测结果如图5所示。

图5 仪表掩码预测结果

从图5能够直观地看到仪表掩码和边界框位置,也可以通过获得边界框四点坐标,进一步对仪表区域进行裁剪。

3 表盘建模读数

3.1 确定指针区域

3.1.1 局部阈值二值化

对图像进行二值处理,是分离有效信息(例如刻度、指针等)与背景环境的有效方法。按阈值作用方式划分,二值化可分为局部和全局。考虑到在获取的仪表图像的边缘仍存在背景环境,采用全局二值化可能会将背景信息视为有效信息,为后续处理带来干扰。因此,本文采用局部二值化。它会为每个像素点单独计算阈值。计算过程为:

(3)

式中:(i,j)为前景像素点邻域内一点;m为邻域大小;G(i,j)为权重参数;g(i,j)为像素值;c为偏移参数;T为阈值。

由式(3)可知,某点阈值仅与该点周围像素值有关。这对亮暗不均匀、反光、复杂背景等环境中的仪表图像具有很好的区分效果。在实际使用时,通过调节偏移参数c和邻域大小m,可得最佳效果。

3.1.2 划分连通域

在获得二值化图像后,需要对其进行连通域[10-11]的划分。其目的在于将有相互关联的前景像素点划为独立的区域块,并通过对区域块进行形态学处理来获得目标区域。用于划分连通域的常见方法主要有四邻接法和八邻接法2种。记某非图像边缘的物体像素点为D1,其周围分布有D2到D8共8个像素点。四邻接法定义D1与Di(i=3,5,7,9)有关联。八邻接法定义D1与Di(2≤i≤9,i∈N)有关联。邻接法原理如图6所示。为了避免划分的区域块过于破碎、便于后续环节处理,本文采用八邻接法。

图6 邻接法原理示意图

在获得所有区域块后,需要对其进行筛选。由于不同仪表指针规格类似,从面积、长宽比等几方面指标进行筛选,具体条件如下:

(4)

式中:a为连通区域块面积;r为连通区域块长宽比;S为整个图像面积。

通过上述条件,可以很好地筛选指针区域。

3.2 指针拟合

3.2.1 指针细化

获得指针连通域后,需要对指针进行细化,明确其所指方向。本文采用的指针细化方法是查表法[12]。对于任一非图像边缘像素点,它的邻域有8个像素点。每个像素点的值都有255和0这2种可能,因此共有28=256种可能性。逐个分析每种情况,将需要删除的标记为1、保留的标记为0,从而得到1个可供索引的一维数组。设数组长度为256,则用于搜索数组的索引值为:

(5)

(6)

式中:g(Di)为点Di的像素值。

在使用时,需要对区域块中的点进行遍历,根据其周围8个像素点的情况查找数组判断是否删除。通常将行遍历和列遍历作为一次循环。循环次数可根据实际情况自行定义。

3.2.2 累计概率Hough线检测

对图像进行细化处理后,可得构成骨架的一系列离散点,但还无法用公式对直线进行描述。Hough线检测是用于检测与定位图像中线段的常用算法。它的缺点在于计算量大、效率低且无法给出线段的端点。基于此,可得到改进的累计概率Hough线检测[13],在实际检测时更符合要求。本文将使用此方法定位图像中的直线。

考虑到在3.1.2节获得的指针区域块不可避免地存在仪表规格参数、厂家名称等背景信息,并且这些信息细化后的线段相对于指针线段来说较短,因此将获得的最长线段认定为指针线段并进行后续的读数处理。至此,可以得到指针线段的2个端点,并可以用直线公式对指针进行表达。

3.3 角度法读数

实现读数的前提是获得刻度圆盘和指针线段的位置。通过前述过程,已经能够得到指针线段的2个端点。由于不同规格仪表的刻度盘和刻度线形状不一,无法找到普适的算法对刻度盘进行提取,因此本文主要依靠人工标定的方式获得关键参数,包括量程最大值和最小值,以及量程最大值、最小值和中值所在点坐标。设量程最大值Vmax、最小值Vmin和中值这3点坐标分别为(xs,ys)、(xe,ye)和(xm,ym),则可以通过列写以下方程组解圆心坐标(xo,yo)和半径R:

(7)

获得圆心坐标后,即可区分指针线段的头尾2端。多数仪表的指针头部细长、尾部粗短。通过计算2端点到圆心距离进行判断:距离较长的为头部,较短的为尾部。实际计算中,由于这些点近似共线,故只需判断横坐标差值。

角度法读数原理如图7所示。

图7 角度法读数原理示意图

设2端点坐标分别为(x1,y1)和(x2,y2),则头部点为:

(8)

将线段的直线公式与刻度盘的圆公式联立,可得两者交点。此时解得的坐标有2个解,保留与指针头部点距离较近的坐标,判断过程与上述过程类似。获得交点坐标(xk,yk)后,利用量程中值点和圆心连线作为基准线,计算此时的α和β角。则读数的最终结果可表示为:

(9)

3.4 仪表读数试验与结果

表盘建模读数测试结果如图8所示。

图8 表盘建模读数测试结果

读数的算法流程为:首先,对图像进行局部阈值二值化,分离有效信息与背景信息;然后,对离散点划分连通域,加以一定条件筛选指针区域;接着,对区域进行细化并进行累计概率Hough线检测,得到最长的线为指针线;最后,根据前面获得的信息建模计算示数。在试验中,设置邻域边长m为10、偏移参数c为25。

选取典型仪表的测试结果,记录人工和算法判断仪表数据值、误差和运行时间等。仪表读数测试结果如表2所示。

表2 仪表读数测试结果

4 结论

本文基于机器视觉和深度学习,实现了集气站仪表的自动读数;通过双边滤波和单尺度Retinex算法,实现了图像降噪和特征增强;通过Mask RCNN神经网络,实现了仪表识别与定位;通过形态学和Hough检测等算法,对表盘进行建模读数。试验结果表明,算法系统运行稳定,降噪和特征增效明显。基于Mask RCNN的仪表识别可以准确地定位仪表位置,减少了背景环境对读数造成的干扰,可将仪表建模读数的结果与仪表真实值的误差率控制在0.5%以内,达到了工程应用要求,实现了预期目标。

猜你喜欢
读数像素点指针
图像二值化处理硬件加速引擎的设计
“0”的读法和要领
基于局部相似性的特征匹配筛选算法
垂悬指针检测与防御方法*
关于游标卡尺读数问题易错点的剖析
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
为什么表的指针都按照顺时针方向转动
仪器工作原理决定了仪器的读数规则
浅析C语言指针