APP下载

基于机器学习的车牌识别技术研究

2020-06-16李良荣

计算机技术与发展 2020年6期
关键词:字符识别字符车牌

陈 政,李良荣,李 震,顾 平

(贵州大学 大数据与信息工程学院,贵州 贵阳 550025)

0 引 言

据《2018年交通运输行业发展统计公报》显示,全国公路总里程达到484.65万公里,其中高速公路里程已经达到14.26万公里,全国公路隧道为17 738处、1 723.61万米,其中特长隧道1 058处,470.66万米,长隧道4 315处、742.18万米[1]。目前,虽然隧道照明灯的配置仅限于隧道内及其引导路段,但由于国内隧道的基数较大,普遍采用的是常明灯模式,在无车通行时段浪费了大量的能源,同时也给高速公路运营管理部门带来了沉重的经济负担。文中依托国家基金课题“高速公路隧道节能照明关键技术研究”,获取隧道内的行车视频来对车牌信息展开技术研究,获取信息是实施隧道“车近灯亮、车过灯灭”节能照明控制、隧道运行信息化管理的重要信息。然而,隧道中无自然光,不仅行车的速度快,而且车型多样、行驶无规律、车牌位置不同、车灯照明不一致;车道多,可能出现并行、紧随、超车变道、超速行驶等情况,导致了隧道行车车牌信息获取算法面临严峻挑战。因此,针对隧道内高速行驶车辆的车牌识别问题进行研究。

一个完整的车牌识别系统大致由车牌图像获取、图像预处理、车牌定位、字符分割和字符识别这五部分组成[2]。主要流程如图1所示。

图1 车牌识别系统主要流程

1 车牌图像的获取

针对行车目标检测中的图像背景获取,文中采用彩色视频背景选择更新法:即分别对前后两帧的相应像素的红色、绿色和蓝色分量相减以获得三个差值。当三个差的平均值小于检测阈值T,就将其视为背景区域,大于则视为目标区域[3]。其中平均值为:

average|Mj+1(x,y,RGB)-Mj(x,y,RGB)|=

(1)

再用式(2)可得到完整的目标彩色背景图像:

(2)

其中,Mi(i=1,2,…,n)表示图像序列,Sj(j=1,2,…,n-1)表示背景序列,(x,y)为像素坐标,c为色彩坐标,即c=(R,G,B),m(x,y,c)为(x,y)处Sj(x,y,c)值不为0的次数,m(x,y,c)>1。

2 车牌定位

传统的车牌定位方法有很多,如基于边缘特征的定位算法、基于模板匹配的定位算法、基于颜色特征的定位算法等[4]。这些方法的优缺点不同,主要通过运行速度和准确性两个方面表现。一般来说这两个方面很难同时满足,计算量小的算法精度普遍较低,而高精度算法的计算量自然就很大。

文中在车牌定位中选用边缘检测与形态学相结合的算法,因为边缘检测的定位速度快,符合现代多车辆需要进行实时处理的情况。而车牌污染等因素会对其定位产生影响,且在隧道交通中由车灯照明引起的复杂环境背景会让边缘检测定位到的车牌出现较大的误差,所以选择将边缘检测与形态学处理结合起来确定候选车牌的轮廓,利用形态腐蚀和膨胀来消除污染和模糊区域来克服这些影响[5]。

2.1 图像预处理

图像预处理的步骤中包含了许多算法,其目的是使后续算法具有更快的处理速度或得到更符合所需信息的图像,因此图像预处理是影响整个系统性能的重要因素之一。在获取目标图像的过程中,除车牌本身之外,还夹带了一些其他的干扰因素,如复杂的背景信息、环境因素等。首先对获取的车牌图像进行灰度化处理以减少数据处理量[6],其灰度化值:

Y=x×R+y×G+z×B

(3)

其中,x、y、z是灰度化处理系数,取值为x=2.97、y=0.581、z=0.124时灰度化效果最好,处理效果如图2所示。

图2 灰度化效果

考虑到干扰因素所带来的噪声影响,需要对灰度化后的图像进行滤波以消除噪声,因为中值滤波可以较好地处理脉冲噪声、椒盐噪声,且边缘细节保存良好[7]。所以文中采用中值滤波的方法对灰度化后的图像进行滤波,效果如图3所示。

图3 中值滤波效果

2.2 边缘检测

图像边缘是图像的基本特征,可以显示图像灰度信息的变化情况,反映图像局部特征的不连续性[8]。常用的边缘检测算子有:Sobel算子、Roberts算子、Canny算子、Laplacian算子。因为Roberts算子简单直观,且边缘定位准确,所以首选其进行边缘检测,效果如图4所示。

图4 Roberts算子效果

2.3 形态学处理

形态学的基本运算有膨胀、腐蚀、开运算和闭运算。其处理方法是利用一个称为元素结构的“探针”来收集图像信息,在边缘检测之后采用形态学处理将图像内的字符区域连成一片,消除图像中存在的干扰边缘点,以提高定位车牌的准确率。图5为对车牌图像进行腐蚀后的效果图,形态学基本运算:

膨胀:

A⊕B={x,y|(B)xy∩A≠∅}

(4)

腐蚀:

AΘB={x,y|(B)xy⊆A}

(5)

开运算:

A∘B=(A⊗B)⊕B

(6)

闭运算:

A•B=(A⊕B)⊗B

(7)

其中,A为待处理的图像,B为结构元素集合,x,y表示平移元素。

图5 腐蚀后的车牌图像

2.4 平滑处理

经边缘检测和形态学处理之后,车牌图像已大致可以显示出车牌区域的轮廓,但还是会受到一些噪声和其他因素的影响,因此车牌区域还不能完全被计算提取得到[9]。文中采用imclose()函数对图像进行平滑处理,去除一些孤立而无意义的噪点,以此来消除噪声带来的影响。

2.5 移除小对象

在图像进行平滑处理之后会有许多闭合区域,比如一些噪点和车标,这些不属于车牌部分的要尽量删除。文中采用bwareaopen()函数,从图像中删除小于设定面积值的部分,最后确定车牌图像的位置,处理效果如图6所示。

图6 定位剪切后的彩色车牌图像

3 车牌字符识别

中国车牌的第一个字符是中文省名的缩写,第二个字符是英文字母,其他五个字符是数字或英文字母,英文字母不超过两个。为了准确识别到车牌上的汉字、英文字母和数字,识别的过程中每个字符必须分段。所以车牌字符的分割结果是字符识别的前提和准备,而字符识别通过提取字符特征来识别字符分割,因此字符识别直接决定了车牌识别系统性能的好坏。传统的字符识别方法有模板匹配法[10]:首先,对样本进行分类并建立样本数据库,然后将识别出的字符进行二值化处理,并通过字符数据库中的模板大小进行标准化,与所有模板匹配并计算它们的相似度,最后选择最佳匹配作为结果。但计算量大是一个明显的缺点,并且对倾斜或环境干扰的图像很敏感。所以文中采用了基于SVM(支持向量机)的字符识别来完成车牌识别系统最后的过程[11]。

3.1 字符分割

车牌的字符分割将车牌区域划分为单个字符区域,每个字符区域必须是包含单个字符的最小矩形区域,分割越精确识别效果越好。传统的垂直投影划分字符的分割方法相对简单准确,但分割效果容易受到噪声和平板倾斜度的影响。文中对定位后的字符图像首先进行灰度化、二值化、滤波、形态学处理的预处理。因为车牌字符之间的间距较大,所以在分割时不会出现字符粘连等情况,然后去寻找带有连续文本的模块,如果长度大于设定阈值I,则认为该块具有两个字符需要进行分割,小于则不需要。这种方法可以较好地解决在分割的过程中出现字符断节等问题,字符分割效果如图7所示。

图7 分割后的字符图块

3.2 字符归一化

字符归一化可在字符识别中消除字符大小的影响,字符像素由字符在水平和垂直方向上的分布来进行大小归一,其算法步骤为[12]:

(1)设GI为水平方向的质心,GJ为垂直方向的质心:

(8)

其中,s(i,j)=1表示目标像素,s(i,j)=0表示背景像素,E、F、G、H分别代表字符的上下左右边界。

(2)设σI为水平方向的散度,σJ为垂直方向的散度:

(11)

计算出质心和散度之后,对进行预处理之后的字符图块统一进行40*32的缩放处理,方便后续的字符特征提取。

3.3 字符特征提取

无论是字符样本还是待识别的字符,都需要经过特征提取后才能够输入到相应的识别算法中。文中采用基于HOG的特征提取,将提取到的字符黑白像素的特征参数用作SVM的分类标准,HOG特征关注目标形状信息分布,在抗目标表观信息变化方面具有明显的优势,可由字符的形状信息来更好地识别字符。该方法首先将图像分成较小的连通区域,在此区域上采集各像素点边缘方向上的直方图并统计它们的方向特性,最后将这些直方图组成特征描述器传送到SVM算法识别模块。文中将HOG参数Cell的大小设置为[4 4],既可满足空间信息编码的大小,又限制了HOG特征向量的维数,从而加快训练[13]。

3.4 字符分类器的构建

中国车牌的字符种类一共分四类,第一类是车牌最左边的汉字,第二类是紧跟着首部汉字的字母,第三类是车牌中圆点右侧的字母和数字的组合,第四类则是一些专用车牌的字符。字符样本的种类繁多,其中汉字包含50个、英文字符24个、阿拉伯数字10个,一共是84个种类,如果构建一个多分类SVM分类器,则84个种类就构成15 312个分类器,这个计算量是非常大的。因此,文中采用一对多分类器将样本的第M类和样本中其他M-1类分开来构成二分类器,以降低计算量,减少执行训练样本和识别的时间。

4 SVM算法和核函数的优化

在SVM识别字符的过程中,核参数的选取对最后识别的性能至关重要,文中选用粒子群算法来对核参数进行优化。

4.1 SVM算法

支持向量机(SVM)是一种在高维特征空间中也可以进行良好分离超平面计算的有效方法,使用线性超平面来创建具有最大余量的分类器,该算法旨在通过在高维特征空间中使用核函数来找到支持向量及相应的系数,以构建最佳分离面[14]。首先可设数据集L(x1,y1),(x2,y2),…,(xd,yd),其中xi是具有关联类标签yi的训练元组集合。每个yi都可以取两个值中的一个(+1或-1)。在对数据元组进行分类时,最大边际超平面将比较小边距更准确,分离超平面可以写成:

f(x)=w·x+b

(12)

yif(xi)=yi(w·x+b)≥1,i=1,2,…,M

(13)

引入松弛变量ξi来测量边距与位于边距另一边的向量xi之间的距离,然后可以通过公式获得分离数据的最佳超平面:

(14)

其中,ξi≥0,i=1,2,…,M,C为惩罚因子。通过引入拉格朗日系数i,可将上述优化问题转化为双二次优化问题,即

(15)

因此,线性决策函数是通过求解产生的双优化问题,定义为:

(16)

4.2 核函数的选取

SVM算法核函数提高了模型对非线性样本的分类能力。选择不同核函数来代替原始分类方程的内积的过程是将非线性问题转化为线性问题的过程。它们都影响着系统的分类能力和泛化能力,因此选择合适的核函数和惩罚因子是SVM算法的核心。对于车牌样本的非线性不可分割的情况,常用的核函数如下:

(1)多项式核函数。

k(x,xi)=[(x•xi)+1]d

(17)

(2)RBF核函数。

(18)

(3)Sigmod核函数。

k(x,xi)=tanh(k(x•y)+c)

(19)

线性核函数主要是用于线性可分的情况,对于线性可分问题分类效果较好,但是对于车牌样本而言,其类别和特征向量是非线性的,而且样本需要映射到高维空间。为此选择RBF核作为支持向量机的核函数。

4.3 PSO算法原理

PSO算法是一种基于种群的随机优化的方法,受鸟类群体活动的规律性启发,进而利用群体智能建立一个简化的模型[15]。在PSO的描述中,种群是由问题超空间中移动一定数量的粒子构成,通过迭代寻找全局最优解。每个粒子都有一个位置矢量和一个速度矢量来指导它的运动。PSO算法的原理在迭代过程中主要通过以下方式来实现[16]:

(1)在问题空间中对具有随机位置和速度的粒子群进行初始化;

(2)评估每个粒子的适应度函数;

(3)将每个粒子的适应值与其先前的最佳适应值pbesti进行比较,如果当前值优于pbesti,则将此值设置为pbesti,并将粒子的当前位置xi设置为pi[17-18];

(4)识别具有最佳适应值gbest的邻域中的粒子,将粒子的位置设置为pg;

(5)每一代粒子根据以下公式更新自己的速度和位置:

vi(k)=ω·vi(k-1)+c1r1[pi-xi(k-1)]+

c2r2[pg-xi(k-1)]

(20)

xi(k)=xi(k-1)+vi(k)

(21)

(6)重复步骤(2)至(5)直到求得粒子的最优函数适应值后停止更新,得到的粒子位置pg即是最佳的解决方案。

上式中i=1,2,…,M,ω是非负常数,称为惯性权重,随迭代而线性变小,vi表示每个粒子的飞行速度,c1,c2表示学习因子,r1,r2是介于[0,1]之间的随机数。在更新过程中,每个粒子通过上述两个极值连续更新自身,从而产生新一代的群体,将粒子的位置、速度限制在允许的条件之下。

4.4 PSO对SVM参数的优化

表1 PSO参数设置

在多类SVM分类器中,惩罚因子C和内核宽度γ始终为正值。所以在PSO算法中选择合适的边缘条件x和速度v非常重要,一般C处于[0.1,100]之间,γ处于[0.1,1 000]之间,为了使粒子在边界内可以充分搜索到最佳位置,文中对粒子的速度进行了以下约束:

Vc max=k1Cmax

Vγ max=k2γmax

k1=k2=0.5

通过PSO算法对多类SVM分类器的优化设置,经实验选出最优惩罚因子C和核参数σ,车牌分类器、汉字字符分类器、数字和字母分类器C的取值分别为2、10和20,σ的取值分别为0.8、0.6和0.3。

5 实验验证与分析

文中的实验样本采取实拍的500幅车牌图像,对图像进行预处理之后,选取300张用于SVM样本训练,100张用于样本测试。

实验环境:英特尔酷睿i74GHz处理器;8GB RAM;Windows 7操作系统;用Matlab实现。分别对参数优化前和优化后的样本进行训练与识别,并统计最后得到的训练时间,字符识别的速度以及识别的准确率,结果如表2所示。

表2 实验数据对比

从表中的对比可知,参数优化后的SVM字符识别过程中在各个方面上都有显著的提高,最终字符识别的结果如图8所示。

图8 字符识别的效果

6 结束语

研究了基于机器学习SVM算法的车牌识别系统,项目组通过对视频中高速行车的车牌检测实验,改进了传统的车牌定位方法与字符分割方法,采用PSO算法对SVM中惩罚因子C与内核宽度γ进行优化,并利用MATLAB对算法进行仿真,通过实验分析确定C和γ的取值,最后利用车牌识别的效果比较来说明参数优化后的SVM算法,能够更有效地进行车牌分类、字符识别,可以用于实施“高速公路隧道照明智能化控制方案”,以提高隧道运行的能源利用率,降低运行成本,具有一定的现实意义。

猜你喜欢

字符识别字符车牌
Python实现图片转字符画
车牌颜色里的秘密
正则表达式快速入门
图片轻松变身ASCⅡ艺术画
第一张车牌
一种侧向插装型车牌架
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法
基于MATLAB的图片中字符的分割与识别
视频监视系统中字符叠加技术的应用