林剑萍1,廖一鹏2
(1. 阳光学院,福建 福州 350015;2. 福州大学 物理与信息工程学院,福建 福州 350000)
:为了提高仪表读数及记录的工作效率,减少人工干预并降低出错概率,提出了一种基于OpenCV和LSSVM的数字仪表自动识别方法。首先选取免驱的USB摄像头采集仪表图像,然后采用Canny检测与Hough变换相结合的算法对仪表图像的倾斜角度进行校正;利用数学形态学、Otsu算法以及连通域提取对图像进行预处理和字符定位分割;最后,进行字符特征提取并利用最小二乘支持向量机算法对仪表读数进行识别。经过大量的实验验证,与现有的仪表读数识别方法相比,该方法具有更好的准确性,实现了数字仪表的自动识别功能。
:机器视觉;图像处理;OpenCV;最小二乘支持向量机
:TP394.1文献标识码:ADOI: 10.19358
引用格式:林剑萍,廖一鹏.基于OpenCV和LSSVM的数字仪表读数自动识别[J].微型机与应用,2017,36(2):37-40.
0引言
目前,在很多领域受工作条件限制及经济性、便捷性的要求,很多用于计量的仪器仪表都没有专门的数据通信接口,导致无法自动识别读数,对仪表数字的读取还是要靠人工来实现,但是在一些特定场合,例如高温高压、化工冶金、高山峭壁、有核辐射等人体不能适应的地方,人工抄表存在很大的危险性及不可行性,而机器视觉却可以无视这些不利因素,广泛地用于长时间恶劣的工作环境,这就为仪表读数的读取提供了便利,同时可以提高工作效率,更好地保障人身安全。仪表读数识别也可以说是自动抄表,自动抄表的试点和运用始于20世纪80年代,在20世纪90年代得到较快的发展[1]。目前,国内外许多科技人员在基于机器视觉的数字识别上做了很多深入研究。从图像预处理、倾斜校正、字符分割及数字识别等方面各有侧重点地做了不同方法的研究比较。在仪表数字识别方面,工业和信息化部电子第五研究所的申中鸿、蒋春旭等人利用机器视觉技术,结合计算几何轨迹识别方法与D-S证据理论实现数字显示仪表的自动读数;中国计量科学研究院的刘科等人采用投影变换的方法对数字图像进行分割、编码,进而实现了对该类仪表示值的自动读取;山东管理学院的常晓玮利用光学字符识别技术实现了远程识别仪表上显示的数字信息[25]。综合各方研究,实现基于机器视觉的数字仪表读数自动识别的方式多样,不仅在图像预处理上可根据不同环境不同仪表选择合适的算法,在数字的定位识别上也有多种方法可供选择。本文采用Canny检测与Hough变换相结合的算法对摄像头采集到的仪表图像的倾斜角度进行校正,利用数学形态学方法、Otsu(大津法或最大类间方差法)算法等技术对校正后的图像进行预处理[67],之后对字符进行分割,采用最小二乘支持向量机(LSSVM)算法对仪表读数进行识别。经过大量的实验验证,该方法具有良好的准确性,实现了数字仪表的自动识别功能。
1数字仪表图像的预处理
1.1图像的采集
图像采集是基于机器视觉进行图像处理的第一步,也是很重要的一步。采集到质量较高的图像可以在很大程度上降低处理的难度。本文采用分辨率为480×680的CCD免驱USB摄像头对仪表数据进行采集,该摄像机可以直接捕捉影像传输处理,运用更加便捷。
1.2仪表图像的倾斜校正
进行数字仪表图像采集时,采集到的数字仪表图像经常会发生倾斜。为使仪表端正以方便后期处理,需要对倾斜的仪表图像进行校正。本文采用的是Canny边缘检测与Hough变换相结合的倾斜校正方法。用Canny算子对仪表图像进行边缘检测,然后利用Hough变换检测数字仪表边框平行线的倾斜角度,再利用旋转函数进行校正,得到端正水平的数字仪表图像。
摄像头采集到的图像如图1所示,Canny边缘检测及Hough变换检测得到最长直线图如图2所示,倾斜校正后的图像如图3所示。
1.3图像的形态学处理
为简化图像数据,并除去不相干的结构,本系统对图像进行腐蚀(Erosion)膨胀(Dilation)等数学形态学运算,对图像进行滤波处理,平滑边界。提高数字仪表图像的质量,并填充仪表读数中的细小空洞,避免单个数字各段码之间的中断。
膨胀的定义:
D=X⊕B={(x,y)|Bxy∩X≠φ}(1)
腐蚀的定义:
E=XB={(x,y)|BxyX}(2)
式(1)和(2)中,B为结构元素,X为原始图像。
1.4图像的二值化
为了字符的准确识别,在字符识别之前对图像做二值化处理,将图像分割成背景和目标两部分。本文采用最经典的全局阈值的Otsu算法(最大类间方差法)。为了减少对比度和光照不均匀对二值化的影响,在二值化处理之前先对图像进行顶帽处理,让二值化达到更好的效果。Otsu算法是在最小二乘法原理基础上推导出来的,它的基本原理是:令连通区域S,其中像素灰度范围为[0,255],点(x,y)的灰度表示为I(x,y),灰度级x的点的概率为P(x),则Otsu就是求下式达到最大值的灰度级m:
灰度级m即为最佳分割阈值。利用此方法二值化处理后的图像如图4所示。
2数字仪表图像的特征提取
经过预处理之后,可以得到质量较高的二值化图像,接下来就需要对数字仪表的读数进行定位与分割,为数字识别做好准备。定位分割的准确性,直接影响数字识别的难易程序及识别率。
2.1仪表数字区域的特征分析
在数字仪表读数的定位分割过程中,必须根据数字区域与背景仪表的不同特征进行提取,才能达到定位分割的目的。而数字仪表的特征总体是有迹可循的,可以将数字区域与背景分别出来。从视觉角度出发,仪表数字区域的特征可以从其形状、颜色和亮度三个方面进行分析。
2.2仪表数字定位分割方法
仪表数字定位分割一般有基于连通域和基于投影法的仪表数字定位与分割。但是不同的光照条件,仪表的影子对水平投影的影响过大,在有影子存在的情况下,仅根据水平投影不足以将两行读数分割开来,而水平投影结果不理想导致分割不准确,也就使得垂直投影不能理想地分割出每行中的每一个字符。因此本文采用的是基于连通域的方法来进行数字的定位与分割。
在图像当中用f(x,y)表示位于图像阵列中第x行、第y列的像素的值,一幅m×n的图像具有m行n列,f(0,0)表示图像左上角的像素值,f(m-1,n-1)表示图像右下角的像素值。遍历图像,通过4邻域连通标准查找出所有符合的连通域,这样就可以把图像中每一个分离的区域检测出来。
在查找出所有连通域之后,按照连通域的面积、读数的形状、长宽比来进行筛选,排除不符合条件的区域,这样就可以直接定位并分割出数字仪表的每个读数。算法实现步骤如下。
(1)计算连通域面积:连通域A的面积就是像素值为255的点的数目,即区域的边界内包含的像素点数。面积的计算公式为:
(2)计算连通域的长宽比:连通域的宽/连通域的长。
(3)遍历所有连通域,如果连通域面积大于500小于5 000且连通域的长宽比大于1.5小于2.5则提取,如果不满足以上条件则舍弃。这样便可筛选出满足要求的连通域,即数字仪表每个读数。图5仪表读数分割定位结果
数字仪表读数的定位分割结果如图5所示。
2.3仪表数字特征提取
数字的特征主要可以从形状、颜色、纹理、结构等方面入手来提取,而大部分的数字仪表的读数区域是基于七段数码管来实现显示,因此也可以根据数码管的特征来提取。本文用的提取特征的方法就是基于七段数码管,根据每段码的像素值来判断识别。将定位好的数码管每位进行4×4分割,统计黑点和白点的个数,每块的像素用x0~x15表示,提取结果如图6所示。
3仪表读数的模式识别
数字仪表的读数识别是基于机器视觉的数字仪表读数自动识别的重点,只有这一步做好了才能正确识别读数并且保证一定的识别率。最常用的数字字符识别算法主要有模板匹配法、基于人工神经网络法、穿线法等[810]。本文采用的是最小二乘支持向量机(LSSVM)算法[1113]。
设训练集为(xi,yi)(i=1,2,…,N),N表示训练样本数,xi∈Rm为样本输入,yi为输出,LSSVM在高维特征空间的线性函数为:
f(x)=wTφ(x)+b(5)
式(5)中,w为权值向量,b为偏置量,φ(x)为非线性映射函数。根据结构风险最小化原则,综合考虑拟合误差和算法复杂度,转换为一个等式约束的优化问题:
式(6)中,e2i为误差变量,d为调整参数因子。
为求解上述优化问题,引入拉格朗日等式,ai是拉格朗日乘子,把约束优化问题变为无约束优化问题,如式(7)所示:
根据非线性最优规划(KarushKuhnTucker,KKT)条件求得参数ai,b代入公式(5),得到支持向量机的输出:
最后,选择RBF(Radial Basis Function)作为LSSVM的核函数,得到LSSVM的预测函数:
式中,σ为核宽度,反映数据集的特性。
4系统软件实现与测试
4.1系统软件实现
本系统利用OpenCV开源库[1415]在VS2010环境中编写MFC程序,实现数字仪表读数的实时采集、处理及识别输出。通过点击界面内按钮即可完成相应的处理,最终将数字仪表原图及读数识别结果都直观地显示在窗口界面上。
根据本文系统采取的方法对实时采集到的数字仪表图像进行处理、分割及识别,以采集到的其中一张测试图为例,系统从实时采集、倾斜校正、预处理(滤波、二值化)、定位分割到识别的每一步效果图如图7所示。
4.2LSSVM与其他算法的比较
本文采用最小二乘支持向量机算法对数字仪表的读数进行识别,为了验证该算法的识别率,总共实时采集了200幅仪表图像近800个数字字符,用模板匹配法、基于人工神经网络法、穿线法、最小二乘支持向量机分别进行了测试,对这800个数字字符进行分类统计,测试结果如表1所示。
统计分析发现,这几种算法对每个数字的识别率都高于90.0%,LSSVM对每个数字的识别率都高于95.0%,对10个字符的平均识别率达到98.2%,比其他几种识别模式的平均识别率有明显提高,识别效果良好,达到了预期的目标与要求。
5结论
根据数字仪表显示的特征,本文首先采用摄像头实时采集并显示数字仪表图像;然后将Canny边缘检测算子与Hough变换相结合,对仪表图像进行倾斜校正;利用数学形态学方法对图像光照不均匀等进行处理,通过滤波增强有效信息;根据数字仪表读数特征,采取查找最小连通域后筛选的方法对仪表读数进行定位分割;采用和声搜索法和最小二乘支持向量机的算法对仪表的数字读数进行模式识别;利用OpenCV开源库在VS2010环境中编写MFC程序,实现数字仪表读数的实时采集、处理及识别输出。本设计在实验室环境下具有良好的效果,下一步的研究方向是进一步改进完善,并将其推广应用到实际环境中。
参考文献
[1] 谭志强,黄懿.自动抄表技术的发展[J].电测与仪表, 2009,46(1):1-5.
[2] 申中鸿,蒋春旭,徐华伟,等.基于机器视觉的数字显示仪表自动读数[J].电子产品可靠性与环境试验,2013,31(A01):110-115.
[3] 申中鸿,刘群兴,蒋春旭,等.基于机器视觉技术和D—S证据理论的数字显示仪表自动读数[J].信息工程期刊(中英文版),2013,3(6):122-129.
[4] 刘科,侯立新,卞昕.基于机器视觉的仪表示值识别算法研究[J].计量学报,2013,34(5):425429.
[5] 常晓玮.基于机器视觉的数字化仪表字符识别[J].计算机测量与控制,2014,22(9):30713073.[6] 丁文,李勃,陈启美.Canny色彩边缘检测及分类新方法[J].北京邮电大学学报,2012,35(1):115119.[7] 黄登山,王晓楠.基于Canny和HillbertHuang变换的改进的SIFT算法研究[J].西北工业大学学报,2015(6):962-965.
[8] 朱颢东,李红婵.基于特征加权模糊模板匹配的字符识别[J].兰州理工大学学报,2013,39(1) :68-71.
[9] 刘宗林,田莹,李雪滢.一种数显仪表字符快速自动识别方
法[J].现代计算机(专业版),2015(18):37-40.
[10] 王明勋.基于神经网络的液晶数字识别在船用设备管理中的应用[J].舰船电子工程,2012,32(7):95-97.
[11] 刘永平,郭小波.基于最小二乘支持向量机车牌字符特征识别[J].数字技术与应用,2015(7):119-120.
[12] 刘静.基于最小二乘支持向量机的车牌字符特征分类研究[J].计算机与数字工程,2015(7):1315-1319.
[13] 乔宗良,张蕾,周建新,等.一种改进的CPSOLSSVM软测量模型及其应用[J].仪器仪表学报,2014,35(1):234-240.
[14] 王舒憬,杜皎洁.基于OPENCV的数字万用表数字识别方法[J].自动化与仪器仪表, 2014(1):62-63.
[15] 徐欢,李振璧,姜媛媛,等.基于OpenCV和改进Canny算子的路面裂缝检测[J].计算机工程与设计,2014,35(12):4254-4258.
1.《[opencv如何矫正车牌]opencv车牌识别完整代码!》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《[opencv如何矫正车牌]opencv车牌识别完整代码!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3295677.html