一种基于SVM的数字仪表显示值识别方法
扫描二维码
随时随地手机看文章
数字仪表结构简单,使用方便,已广泛应用于科学实验和生产中。为了提高检定效率、检定精度,实现自动化检定是十分必要的。由于数字仪表的检定是一项大批量、重复性的检测过程,其操作过程简单、规范,外界环境要求不高,这为其实现检定自动化提供了有利条件。近年来计算机视觉技术和数字图像处理技术的不断发展,为满足上述要求提供了可能。利用摄像机完成表盘及背景图像的采集,并将其转换成数字信号,然后利用数字图像处理技术实现关键操作,实现数字仪表的自动检定,提高了检定精度、生产效率、降低了生产成本。本文开发的仪表显示值自动实时识别系统主要包括:图像预处理、特征提取和数字识别3部分。其中数字识别是关键一环,主要采用了学习理论中的支持向量机方法。学习理论是一种研究有限样本情况下机器学习性质和规律的理论。在这一理论下发展出的一种通用的模式分类器——支持向量机,由于与传统的模式识别方法相比,具有推广能力强,能保证全局最优等优点,这使得支持向量机技术在数字识别系统中有很好的应用前景,因而引起了国内外学者的极大兴趣。支持向量机通过结构风险最小化准则和核函数方法,较好地解决了模式分类器复杂性与推广性之间的矛盾,因而也引起了模式识别领域学者的极大关注。
1 仪表示值自动识别原理
仪表显示值自动实时识别系统的流程:首先,由摄像头获取仪表显示的视频帧;然后,将视频帧进行灰度变换,二值化得到二值图像;再通过边缘检测,操作微分直方图,计算表盘水平和垂直投影,进行峰谷分析定位出数字区域,并切分出单个数字的二值图像;对单个数字的图像进行特征提取,得到一组特征;最后,将特征送入识别器进行识别。
1.1 预处理
数字仪表在检定过程中,首先要定位表盘区域,然后确定数字位置。摄像头提取图像后,经过灰度变换(见图1)和二值化(见图2),其效果将对后续的数字切分和特征提取产生直接的影响,其中二值化是图像预处理的关键环节,在实际应用中受室内灯光及仪表屏幕自身亮度等因素影响,图像中往往存在灰度分布不均和灰度突变的情况。本文采用了OTSU算法,根据最大方差二值化获得良好的二值图像,这里主要为了提取表盘区域。通过标识连通区域,连通区域的外接矩形,然后根据外接矩形的长与宽定位数字仪表的显示区域。本文采用了一个8连通区域提取算法。首先按照一定的标号规则扫描图像,得到一定数量的连通区域;然后针对同一区域内标号不一致的情况进行处理,即得到最终处理结果。
1.2 数字分割
表盘区域分割之后,继续分割数字区域。在实际应用中,摄像头是固定的,数字的显示区域在图像中的位置、大小等是基本相似的。本文根据数字仪表显示屏幕的特点,采用投影法找到显示屏的边框。图像中数字区域的准确定位分割是实现仪表显示值识别的重要前提。在表盘的二值图内,先通过边缘检测,利用微分直方图进行数字分割,图3为水平投影后的直方图。
经过水平投影将图像分割成上、中、下3部分。对中部数字区域的二值图像从上到下逐行扫描;获取到图像的水平投影图。利用行间间隔形成的水平投影间隙,即可将各数字行分割开来,如图4所示,然后提取中部截图,再对中部数字区域做垂直投影,如图5所示,计算峰谷可以将单个数字分割出来。字切割是从行切分后,得到的图像中将每一个数字分割出来,利用每行字符的垂直投影中字符之间的间隙即可将各个数字分割出来。
1.3 特征提取
由于数字具有明显的局部结构特征,因此本文采用一种非对称分块统计特征,作为表征数字的特征向量。方法如下:
(1)应用otsu方法将分割出的数字图像二值化,然后将图像归一化为70×50大小;
(2)将图片等分为35块,每块子图为10×10大小,按式(1)计算每一块中背景点的分布特征;
式中:p(m,n)为10×10子图中m行n列像素灰度值,前景点为255,背景点为0。
(3)将每一块子图的背景点统计特征作为一维特征向量,构造35维向量[a1 a2 … a34 a35]作为支持向量机的输入特征向量。
1.4 数字识别
基于支持向量机的数字识别支持向量机(Support Vector Machines,SVM)基于结构风险最小化准则工作,能在训练误差和分类器容量间达到较好平衡,因而具有更好的性能,在模式识别领域有着广泛的应用。对于两类模式识别问题,假设给定n个样本作为训练集:
这里yi=+1或-1,要找到一个最优超平面,使训练集中的点距离分类面尽可能的远,也就是使M=2/‖ω‖最大的分类面就是最优分类面。对于线性可分的情况,要找到最优超平面:
即求解下面的二次规划问题:
此二次规划问题,可用Lagrange乘子法把式(5)化成其对偶形式:
设[a1 a2 … a3]为二次优化问题的解,可以证明解中只有小部分ai不为0,称对应的xi为支持向量,ai是对应的Lagrange系数,b是常数(阈值)。于是最优超平面方程为:
最优超平面的分类规则为:
对于线性不可分情,在条件式(5)中引入非负松弛变量ξi,原约束条件改为:
相应的目标函数改为:
最优分类面的对偶问题改为:
若ai>0,称相应的xi为支持向量(Support Vector)。更进一步,若O<ai<C,称xi为边缘(Margin)支持向量;若ai=C,称xi为偏差(Bias)支持向量。非线性支持向量机的工作原理是通过非线性变换φ(x),将输入空间变换到一个高维空间,在这个新空间中求取最优线性分类面,并引入核函数(如RBF核函数)计算内积。在可分的情况下求解:
找出的支持向量充分描述了整个训练数据集的特征,使得对SV集的线性分类等价于对整个数据集的分类,检测流程图如图6。所示。
1.5 实验结果与分析
实验中选取了3组典型的样本,每组样本数200个,在PC机上进行了试验,结果如表1所示。每个样本有6或5个数字,其中3或4个是表示小时和分钟,2个表示秒钟。
从表1可以看出,在二值化较好,数字清晰的情况下,识别率达到了100%,对有轻微点状噪声和轻微断痕的样本,识别率也很高,但对存在数字残缺的样本,识别率有所下降。就识别时间而言,整屏数字(6或5个数字)的识跗时间小于200 ms,明显低于仪表数字的最快变化时间1 000 ms。
2 结语
主要研究了数字式仪表的自动判读方法,为仪表盘上的仪表实现自动识别打下基础。首先对采集到的数字式仪表进行预处理,主要包括图像灰度化、二值化、噪声消除等。参考现有的数字识别算法,本文主要采用垂直投影法来分割各个字符,然后对分割后的每个字符提取分块统计特征。最后用SVM训练样本实现相应数字字符识别,最终判读出数字仪表的读数。该方法算法简单,实时性高,可靠性好,是一种比较理想且具有一定应用价值的识别算法。