基于特征检测的数字仪表数码快速识别算法

http://img1.qikan.com.cn/qkimages/zgce/zgce201904/zgce20190425-4-l.jpghttp://img1.qikan.com.cn/qkimages/zgce/zgce201904/zgce20190425-3-l.jpghttp://img1.qikan.com.cn/qkimages/zgce/zgce201904/zgce20190425-2-l.jpghttp://img1.qikan.com.cn/qkimages/zgce/zgce201904/zgce20190425-1-l.jpg
  摘要:为对数显类仪表的显示数据进行自动识别与监测,提高该类仪表的自动化水平,需要研究仪表数码快速识别算法。该文提出一种基于特征提取的数字仪表数码快速直接识别算法。将图像进行预处理后,对数显屏幕进行定位。通过列切实现单个数码字符切割,对单个数码字符进行七段特征检测和五线相交检测,实现对正体数码和斜体数码的快速直接识别。实验表明,算法基本可以满足各种仪表数码的识别需求,识别速度快、准度高。
  关键词:数码识别;特征检测;数字仪表;快速识别
  中图分类号:TP391.4文献标志码:A 文章编号:1674-5124(2019)04-0146-05
  0引言
  随着科学技术的发展,各行业的管理手段正在由人工管理逐渐变为自动或半自动管理方式,工业的自动化也是发展的必然趋势。由于使用环境和仪器设计的原因,目前很多仪器仪表尚无计算机数据通信接口,需要进行人为读数。为了实现这类仪器仪表的动态数据自动化监测,需要使用数码摄像头实时拍摄仪表数字显示区域,通过计算机进行图像采集和处理识别,将图像转换为文本形式的数字,从而进行读数的存储和分析。在此过程中,图像处理识别算法是实现自动化监测的核心。
  这类仪器仪表大多是采用各种数码管进行数据显示。七段数码管所显示的数字较规则,但笔画较宽,使用普通的OCR识别无法正确识别。数码管基本可以分为正体和斜体两种,大多数数码管所显示的数字为正体或稍向右侧倾斜,但也有一部分数码管向右倾斜较大。针对这类仪表的图像处理识别算法主要就是对数码管的数字和小数点进行识别检测。
  目前数码检测已有一些检测算法,如模板匹配法、穿线法、七段特征提取法、基于BP网络的识别方法、基于KNN的识别算法川、基于数学形态学的识别方法和基于模式识别的方法等。模板匹配法需要建立0~9这10个数字的模板,将数字图像与模板图像归一化成相同大小,求差后逐一对比,将差值最小的认为是相同的数字;此方法简单、易于实现,但要根据不同的字体设计不同的模板,计算量较大。穿线法将一条垂直的二等分线和两条水平的四等分线穿过数字矩形区域,扫描线上的像素点,以此确定具体数字;此方法计算量小,但易受前期预处理效果影响。七段特征提取法通过判断7个位置的数码管是否点亮来判断具体数字,抗干扰能力强,但不适用于倾斜度很高的数码数字。基于BP网络的识别方法具有良好的自学习能力,但需要海量数据进行训练,使用复杂。基于KNN的识别算法和基于数学形态学的识别方法的识别率高,但识别过程缓慢,实时性不强。基于模式识别的方法算法简单,但受限于分类方法的具体实现方案。
  为了克服现有方法的不足,实现仪表数码的快速直接检测,本文提出了基于特征检测的数字仪表数码快速直接识别算法。将七段特征提取法和穿线法进行融合改进,通过七段特征检测和五线相交检测来确定具体数字,实现正体数码和斜体数码快速直接检测。
  1数码快速识别算法
  在获取到仪器数显屏区域的图像后,对图像进行预处理和数字切分,得到每个数字的二值化图像。本文提出的数码快速识别算法分为两步,第一步为利用七段特征检测,第二步为利用五线相交检测。
  1.1七段特征检测
  七段特征检测本质为七段特征提取法,但在原有方法上对检测点进行了优化,降低了对图像处理的要求,更便于实现。数码管如图1所示,标记了7个需要检测的点。
  对于一个切分好的数码字符二值化图像,若使其背景为黑色,数字为白色,则此图像为一个二维矩阵,各元素分别为0或1。其中,1代表白色,0代表黑色。假设图像为mxn矩阵,记为A。假设数码笔画线宽为w,对于一般的数码管,线宽与数码图像宽度n关系式为:
  为了防止图像局部噪声过大或数码斜体等情况对检测结果产生误判,需要使用7个特征点来判断数字。若7个特征点的值出现其他的组合,则视为识别错误,可以使用五线相交进行补偿检测。
  1.2五线相交检测
  传统的穿线法用3根线条与图像像素的交点作为数码识别的依据,此方法对于正体和稍微倾斜的数码字体有较好效果,但对于倾斜较大的字体无法识别,同时也无法进行数字后小数点的识别与判断。本文提出的五线相交检测方法,采用5根线条作为检测对象,通过每根线条与对应位置的相交次数来进行数字判断。
  横向采用两根线条,分别放置于图像纵向的2个四分点位置;纵向采用3根线条,一条放置于横向中线,一条放置于稍往前一段的位置,另一条放置于横向末端,如图2所示。
  对于矩阵A对应的图片,以其左下角作为坐标原点,横向向右作为x轴正方向,纵向向上作为y轴正方向,则所用的5条直线表达式分别为:
  直线l1、l2与图像中笔画相交次数分别为pnp12,用两位表示。其中,第一位表示直线与图像左半部相交次数,第二位表示图像与右半部相交次数。例如,若直线l1与图像左半部没有相交,与右半部相交一次,则pn=01。直线l3、l4与图像中笔画相交次数分别为p13、p14,用一位表示,只记录相交次数,不记录位置。需要说明的是,计算直线与图像中笔画相交次数时,在跨度为w的范围内重复相交算作一次,以防止由于图像噪声点产生的计算错误。
  数码为1和小数点可以根据图像尺寸判断,方法如1.1节所述。剩余数字可以根据pn、p12和min{p13,p14}三者的值来进行数字判断,对应关系见表2。
  对于直线l5,可以通过其与图像下部之间是否有交点来判断数字后是否帶有小数点。若有交点且相交范围较小,则表示该数码数字后带有小数点。
  1.3融合两种方法的数码识别方法
  七段特征检测方法抗干扰能力强,对于正体数码和稍微倾斜的数码很有效,但不能识别数字后面是否带有小数点。五线相交检测方法对于斜体检测很有效,并且可以识别数字后面是否带有小数点,但抗噪声能力稍弱。因此,将此两种方法综合使用,可以实现对各种仪表数码的快速直接检测。算法融合流程如图3所示。
  2实验验证
  为了验证算法的有效性,采用广陆公司的数显卡尺和DP-360数显倾角仪作为测试对象,进行数码识别实验。实验处理流程如图4所示。
  以一组数据为例,摄像头拍到的图片如图5所示。根据设置的红、绿、蓝三色的阈值对图像进行二值化,并选定最大连通域图像为图6。根据横向和纵向投影,设置阈值,确定显示屏的上下左右边界如图7所示。
  对显示屏范围内的图像进行剪裁,进行灰度化处理和直方图均衡化处理,结果见图8。采用OTSU法进行二值化,并进行滤波和取反,得到最后的预处理结果见图9。
  通过水平投影和竖直投影进行行切割和列切割,将各个数字所在区域切分出来,最终的切分结果如图10所示。
  经过算法识别,得到识别结果为28.99。识别速度快,识别准确。在实验中多次改变数显卡尺和数显倾角仪的读数,均可以快速准确地识别出正确读数。
  3结束语
  本文提出了一种基于特征检测的仪器仪表数码快速直接识别算法。分别将传统的七段特征提取法和穿线法进行改进,改良为七段特征检测方法和五线相交检测方法,并给出了具体的算法公式和结果适配。七段特征检测方法适用于正体和稍微倾斜的数码检测,抗干扰能力强;五线相交检测方法适用于斜体数码检测,并可以检测数字后的小数点。将这两种方法融合,基本可以实现所有的仪表数码的快速准确检测,适用于正体、斜体,抗干扰能力强。经过大量实验,验证了此算法的准确性,对实现仪器仪表的动态数据自动化监测具有参考意义。