刘胜娃,曹湘华
(中国石油川庆钻探工程有限公司长庆钻井总公司,陕西 西安 710021)
目前在钻井工作过程中,由于使用环境和仪器设计的原因,很多仪器仪表尚无计算机通信接口,需要人工读取或使用专用软件,否则无法进行信息集成。为了实现仪表数据的自动化提取,提高钻井工程的作业效率,降低企业成本,研制数字仪表自动识别系统势在必行。目前国内针对仪表数字读书识别的算法主要有模板匹配法、穿线法、特征提取法、BP神经网络识别方法、KNN识别算法、基于形态学的识别方法和基于模式识别的方法等。其中模板匹配方法首先建立0至9的特定字体的数字模板图像,然后将提取待识别的数字图像缩放至与模板图像相同大小,计算其与所有模板的协方差并逐一对比,识别结果为与其计算数值最小的模板图像数字;该方法操作简易,但要根据待识别的数字字体设计不同的模板,若模板图像尺寸较大,则计算量较大。穿线法将数字图像看作一个数字矩形区域,使用一条垂直的等分线和两条水平的等分线穿过,获取等分线与数字图像重合的像素点,以此确定具体数字,此方法计算量小,但容易受数字图像前期预处理效果的影响。特征提取法即数码管识别法,通过判断7个位置的数码管是否点亮来判断具体数字,抗干扰能力强,但不适用于倾斜度很高的数码数字。基于BP神经网络的识别方法需要海量数据训练样本进行学习以建立识别模型,但其参数设计复杂,且泛化能力主要依赖于训练样本。基于KNN的识别算法准确率很高,但效率较低,原因是每一次分类或者回归,都要把训练数据和测试数据计算一遍,计算量大,同时对训练数据的依赖度高,有时个别错误的数据会导致预测数据的不准确。基于形态学的识别方法首先提取数字图像的几何特征,接着根据特征模式确定对应的结构元素,最后使用选定的结构元素对图像进行击中与否变换;此方法的识别率高,但识别速度缓慢,实时性不强。基于模式识别的方法算法较多,但识别结果受限于分类方法的具体实现方案与图像预处理的效果。
为了实现仪表数字的快速读取,本文以钻井现场司钻显示仪为采集对象,采用机器视觉对该仪表数字进行识别。基于现场采集工作状况下司钻显示仪的视频数据,使用C++语言的OpenCV技术进行仪器参数数字识别,经实验该方法能满足仪表数字识别速度与准确率的要求。
本系统的读取对象司钻显示仪为数码管式仪表。图像采集:首先将防爆摄像头安装至合适位置,保证拍摄的照片清晰稳定,然后将拍好的图像通过无线传输,以H.265编码格式上传至图像处理服务器进行图像识别。
仪表自动识别系统硬件环境架构如图1所示。
图1 图像采集硬件架构
防爆摄像头在拍摄待识别的数字仪表图像的过程中,会受到钻井作业平台震动环境以及温度与光线等因素的影响,导致图像可能会存在移动、模糊和噪声等缺陷。这些缺陷会影响字符的正确切割和识别,所以需要进行滤波、形态学操作等图像预处理。预处理的主要目的是过滤图像中的干扰信息,从而使得待识别图像区域清晰,以便于特征信息的提取识别,预处理结果的好坏直接影响到后续图像切割和识别的准确率。
(1)灰度转换。目前防爆摄像头采集的图像为彩色图像,且占用存储空间较大。通常字符识别采用灰色图像进行识别,因此需要进行灰度转换。图像的灰度转换就是采用数学计算公式图像中的色彩信息进行变换,其计算结果为亮度信息,本文采用cvtColor函数进行灰度转化。
(2)滤波处理。由于摄像头在图像采集过程中会受到钻井作业震动等噪声干扰,所以必须对图像进行滤波处理,以尽可能降低或消除图像中的噪声,保持待识别图像区域的清晰度。此处,本文采用GaussianBlur函数进行滤波处理。
(3)二值化。为准确提取特征,需要对图像进行二值化,利用OpenCV提供的阈值函数threshold,通过自适应阈值化方法对预处理图像进行二值化,以便实现对数字的定位。根据图像特征设置阈值0与255,类型为THRESH_BINARY|THRESH_OTSU。
模板匹配是在一幅图像中逐一匹对多个模板图像的方法之一。该方法原理简单,即根据匹配算法计算识别图像与模板图像的运算结果,当数值足够小时,即匹配成功。OpenCV提供了6种模板匹配算法:平方差匹配法,归一化平方差匹配法,相关匹配法,归一化相关匹配法,相关系数匹配法与归一化相关系数匹配法。
本文采用相关系数模板匹配算法,其计算公式如下:其中,T、I、h、w、R分别表示模板图像、待识别图像、图像高度、图像宽度、计算结果。
图像处理流程如图2所示。首先客户端使用海康威视防爆摄像头采集仪表图像,以H265压缩编码上传图像识别服务器端,并使用开源开发包对服务器端H265编码进行解码;然后使用OpenCV技术完成图像预处理、字符分割数字识别;最后,将识别结果提交后台MySQL数据库存储计算,以辅助人工较快出具检测报告。
图2 图像处理流程
(1)摄像头图像采集。采用防爆摄像头作为识别工具,通过浏览器方式采集司钻显示仪显示区域,并以缘检测等方法检测数码管数字区域。但由于钻井现场干扰因素较多,为提高系统识别率,可以根据需求手动设定司钻显示仪区域,以便定位与变换,从而采集到数码管数字区域。
(2)H265编码上传服务器。为提高清晰度与上传速度,设置图片以H265编码格式压缩并上传到服务器。
(3)图像预处理。将背景与目标区域分离,去除图片背景及干扰因素,提取数码管目标区域。
(4)区域定位分割。通过水平、垂直投影等分割技术对字符图像进行提取,以获取单独的数字字符图像。
(5)数字识别。采用光学字符识别技术对每个数字字符进行识别或匹配。
读取图像并将其转换为灰度图,再经形态学膨胀与自适应阈值算法阈值化操作,消除图像易受光照等因素的影响,同时将目标区域设置为白色。
采用轮廓检测面积排序法定位数字区域,并进行透视变换,获取变换图像,如图3所示。
图3 区域定位变换
核心代码如下:
根据数字区域相对固定位置进行数字区域分割,或进行水平投影与垂直投影获取数字区域,结果如图4所示。
图4 区域分割
加载数码管模板(如图5所示),根据提取的数字区域,再次采用轮廓法切割数字图片,进行模板匹配,输出结果(如图6所示),其中小数点采用高宽比值进行判断识别。经对实验结果统计分析,数字识别正确率达到95%。
图5 数码管模板
图6 数字识别结果
模板数字字符提取核心代码如下:
本文从钻井作业数字仪表读数的自动识别需求出发,提出了一种基于机器视觉的司钻显示仪参数识别方法,利用OpenCV技术对倾斜的数码管进行识别,并检测数字后面的小数点,实现钻井现场司钻显示仪的快速准确识别。经现场工作视频实验验证了此算法的准确性,对实现钻井仪表数据的自动化识别具有重要的工程应用意义。