APP下载

基于神经网络和支持矢量机的多机动车车牌在线检测方法

2021-04-18刘进博朱新新伍越杨凯陈卫

自动化学报 2021年2期
关键词:字符识别车牌字符

刘进博 朱新新 伍越 杨凯 陈卫

车牌自动检测识别,即通过对视觉传感器采集到的车辆图像进行分析处理得到车辆车牌信息的过程,作为现代智能交通的重要组成部分,已被广泛应用于交通监控、车辆管理、电子收费等领域[1−5].

车牌的检测识别分为车牌检测和车牌识别两部分.车牌检测的任务是从图像中获取车牌目标图像,现有的车牌检测方法可分为以下几类:1)基于颜色信息的车牌检测方法,准确率高、较为鲁棒,但易受光照影响[6−10];2)基于边缘检测的车牌检测方法,适用范围广,但计算量较大且对车牌目标图像边框的连续性要求较高[11−15];3)基于形态学的车牌检测方法,计算量非常大且易受噪声影响,一般不单独使用[16−21];4)基于灰度图像纹理特征的车牌检测方法,速度快,但对噪声非常敏感,且由于损失了颜色信息,定位精度受到一定程度的影响[22−28];5)基于机器学习的车牌检测方法,耗时长,难以实现在线检测[29−32].车牌识别的任务是从检测到的车牌图像中获取车牌内容,按处理过程可分为字符块分割提取和字符识别两部分.字符块分割提取是将字符块从车牌目标图像中逐一分割提取出来,并按顺序排列,最常见的字符块分割提取算法包括:垂直投影法[33]和连通域搜索法[34−35];字符识别是对已分割提取出的字符块进行内容解析的过程,目前最为常用的是基于分类器的字符识别算法.

现有的车牌检测识别方法主要是针对停车场、住宅小区、高速收费站等场合的车辆自动注册及收费,属于单机动车车牌检测识别,而且背景相对简单,易于识别.而对于大视场监控且背景复杂的场景,单机动车车牌检测识别方法无法直接应用,比如道路交通监控,所监控的区域内一般存在多个机动车目标,背景也相对复杂.针对上述问题,本文提出了一种基于BP神经网络和支持矢量机的多机动车车牌在线检测识别算法,主要贡献如下:1)构造了用于颜色识别的神经网络模型,相比基于色调经验值的颜色识别方法,该方法在准确性、计算效率和鲁棒性方面均有提升;2)融合了颜色二值化、图像滤波、形态学运算等多种行之有效的图像预处理算法,并采用SVM对候选车牌目标进行判别,使得车牌检测准确率有较大幅度的提升;3)基于车牌尺寸特征提出了一种新的字符块分割提取策略,相比垂直投影法和连通域搜索法,该方法更为鲁棒;4)构造了用于字符识别的神经网络模型,以字符块图像灰度直方图作为输入特征,保证了字符识别的准确性;5)开发了多机动车车牌自动检测识别系统,并在真实场景中进行了实验测试,取得了预期效果.

1 多机动车车牌检测技术

多机动车车牌检测技术主要包括图像预处理、候选车牌筛选和基于支持矢量机的车牌判别三部分内容,以下将逐一进行详细介绍.

1.1 图像预处理

图像预处理主要是指利用颜色二值化、中值滤波、形态学运算等方法,将类车牌目标从图像中分割出来,为下一步候选车牌筛选提供初始数据.

1)颜色二值化

以蓝底白字车牌为例,如图1(a)所示,对图像进行逐像素扫描:若当前像素颜色被识别为蓝色,则将该像素灰度置为255,否则将该像素灰度置为0,扫描完成后即输出原始图像对应的二值化图像,如图1(b)所示.文献中常利用色调经验值对像素颜色进行分类,但实验中发现,色调易受环境影响,即不同环境下相同颜色的色调会发生变化,因此,利用色调经验值进行颜色识别的方法抗环境干扰能力较弱.为了提高了颜色识别的鲁棒性和准确性,本文提出了基于BP神经网络的颜色识别方法,原理如图2所示.

图1 颜色二值化Fig.1 Image binarization

图2为用于颜色识别的BP神经网络示意图,由输入层、隐藏层和输出层组成:

a)输入层

输入层由7 个单元组成:输入层由7 个单元组成:x1、x2、x3分别表示图像像素对应的R、G、B通道的值,x4、x5、x6分别表示图像像素对应的H、S、V 通道的值,x0为偏倚单元.

b)隐藏层

隐藏层由11个神经元组成,其中z0为偏倚单元,zh(h=1,2,···,9,10)通过如下公式计算得到:

wh,0为神经元zh对应的输入层偏倚项x0的权重,wh,i为神经元zh对应的输入层单元xi的权重,f为激活函数:

c)输出层

输出层由5个单元组成:y1表示像素颜色为黑色的概率,y2表示像素颜色为白色的概率,y3表示像素颜色为蓝色的概率,y4表示像素颜色为黄色的概率,y0表示像素颜色不属于上述四种颜色的概率.计算公式如下:

图2 颜色识别原理Fig.2 Principle of color identif cation

vj,0为输出单元yj对应的神经元z0的权重,vj,h为输出单元yj对应的神经元zh的权重,f为激活函数,与式(2)相同.

基于OpenCV 神经网络函数库,利用带有标签的训练数据集对上述模型进行训练,以获取模型参数,然后利用测试数据集测试模型准确性,训练参数如表1所示.

表1 BP神经网络训练参数设置Table 1 Training parameters of BP neural network

训练数据集中样本数量为10 775个,测试数据集中样本数量为10 000个,数据均来自网络,下载后人工贴标签.实验结果表明,上述模型对于颜色识别的准确率为0.9983.

2)中值滤波

如图3所示,中值滤波的目的在于:1)削弱图像椒盐噪声对车牌检测的影响;2)填充车牌区域内部孔隙,提高车牌检测成功率.滤波窗口大小为3×3,图像滤波前后的对比如图3所示,经过中值滤波后,车牌区域更为连通,对于提高车牌检测鲁棒性和成功率有重要作用.

3)形态学运算

形态学中的腐蚀运算可突出目标轮廓,膨胀运算可填充孔洞.为了突出图像中车牌区域特征,对中值滤波后的图像进行形态学闭运算,即先进行膨胀运算填充孔洞,再进行腐蚀运算突出车牌轮廓.如图4所示,经过形态学闭运算后,车牌区域内部孔洞被填充,轮廓特征更为明显.

图3 中值滤波Fig.3 Median flter

图4 形态学运算Fig.4 Morphology operation

1.2 候选车牌筛选

原始图像经过颜色二值化、中值滤波和形态学运算后,车牌区域内部已连通且近似为矩形区域.在此基础上,查找图像目标轮廓,如图5所示.

图5 目标轮廓查找Fig.5 Find contours of targets

我国小型汽车车牌长440 mm、宽140 mm,长款比为3.1428.基于此,利用长宽比对轮廓的最小外接矩进行尺寸判断,如表2所示.

表2 候选车牌筛选算法Table 2 Filter of candidate plates

1.3 基于支持矢量机的车牌判别

车牌判别的任务:从候选车牌中去除伪车牌目标或成像条件较差的车牌目标,检测出真正的车牌目标.相比人工神经网络,支持矢量机(Support vector machine,SVM)更适用于解决“true or false”问题,效率更高,且在样本容量有限的情况下,SVM泛化能力更强.同时用于SVM训练的数据集中正负样本量级相当、内容基本对称,保证数据平衡,使得支持向量更具代表性,以获取更优的模型参数.图6为基于SVM的车牌判别原理.

图6 基于支持矢量机的车牌判别原理示意图Fig.6 Distinguish real plates based on SVM

判别式函数:

www为模型参数,ϕ(x)为径向基函数,x为输入特征,其生成方式如图7 所示.将候选车牌图像缩放到标准尺寸,分别在水平和垂直方向统计直方图,即每一行或每一列中灰度非零的像素个数,并以向量的形式存储到x中,作为输入特征.

图7 输入特征生成Fig.7 Input feature

基于OpenCV 支持矢量机函数库,利用带有标签的训练数据集对上述模型进行训练,以获取模型参数,然后利用测试数据集测试模型准确性,训练参数如表3所示.

表3 SVM训练参数设置Table 3 Training parameters of SVM

训练数据集中正样本数量为1 400个,负样本数量为2 174个;测试数据集中正样本数量为1 400个,负样本为1 400个,数据均来自网络,下载后人工贴标签.实验结果表明,上述模型对于车牌判别的准确率为0.9997.

2 车牌字符识别技术

利用车牌检测技术可从采集图像中获取标准尺寸大小的车牌目标图像,车牌字符识别的任务是:从车牌目标图像中分割字符块,并完成汉字、字母和数字的识别.本节车牌字符识别技术主要分为图像预处理、字符块分割提取和字符识别三部分内容,以下将逐一详细介绍.

2.1 图像预处理

为了提高字符识别准确率,需要首先对车牌目标图像进行预处理:图像二值化和亮斑消除.图像二值化方法采用的是最大类间差方法,即通过统计整个图像的灰度直方图特性来实现全局阈值的自动选取,二值化效果如图8所示.

图8 车牌图像二值化Fig.8 License plate binary image

在光照较为强烈时,铆钉会以白色亮斑或黑色暗斑的形式出现在车牌二值化图像中,可能导致车牌字符分割提取失败,因此必须对铆钉等车牌边沿进行斑点检测并消除.以铆钉为例,分布于车牌上、下边沿各2个,本文以亮度阶跃次数为阈值,对车牌二值化图像进行行扫描,阶跃次数小于设定阈值的,该行灰度全部置为0,否则该行灰度不变,扫描后效果如图9所示.

图9 斑点检测效果Fig.9 Spot detection

2.2 字符块分割提取

经过预处理的车牌二值化图像仅包含7 个字符块,首先通过轮廓搜索获取候选字符块,然后对候选字符块进行尺寸判断,如图10所示.

图10 候选字符块筛选及尺寸判断Fig.10 Filter of candidate character block and size judgement

由图10可见,符合尺寸标准的轮廓内包含的并非车牌字符块,因此,为了准确分割字符块区域,以图10为例,本文采用了如下方法:

1)将候选字符块按从左至右的顺序排序Ri(i=1,2,···,n−1,n),并统计字符块宽度和高度的最大值Wmax、Hmax;

2)在距离车牌左边界1/7∼2/7 宽度的范围内搜索字符块,若该字符块的宽度和高度分别大于0.8Wmax、0.8Hmax,则认为该字符块对应的是代表城市的字母,即为“B”;

3)(xcity,ycity,Wcity,Hcity)分别表示城市代码字符块在图像上的左上角点像素坐标和矩形的宽、高,以该字符块为基准,根据中国轿车车牌尺寸标准,省份代码“川”对应的字符块参数为(xprovince,yprovince,Wprovince,Hprovince)=(xcity−1.32Wcity,ycity,1.15Wcity,Hcity);

4)对字符块进行重构,删除省份代码前的所有字符块,记省份代码为R1,城市代码为R2,按照由左至右的顺序添加R3、R4、R5、R6、R7,删除R7之后的所有字符块,至此完成字符块分割,R1∼R7即为车牌字符对应的字符块,如图11所示.

图11 字符分割提取Fig.11 Character segment

2.3 字符识别

为保证输入特征向量大小相同,需要对上述字符块图像进行尺寸归一化,本文设置的归一化尺寸为36×136,图12为用于字符识别的BP神经网络示意图,由输入层、隐藏层和输出层组成:

1)输入层.输入层由173个单元组成:x0为偏倚单元,x1∼x172为每一行或每一列中灰度非零的像素个数.

图12 基于BP神经网络的字符识别原理Fig.12 Character recognition based on BP neural network

2)隐藏层.隐藏层由41个神经元组成,其中z0为偏倚单元,zh(h=1,2,···,39,40)通过如下公式计算得到:

wh,0为神经元zh对应的输入层偏倚项x0的权重,wh,i为神经元zh对应的输入层单元xi的权重,f为激活函数:

3)输出层.输出层由65个单元组成:y0∼y30表示该字符块图像为31个省份代码的概率,y31∼y54表示该字符块图像为24个字母的概率,y55∼y64表示该字符块图像为10个阿拉伯数字的概率.计算公式如下:

vj,0为输出单元yj对应的神经元z0的权重,vj,h为输出单元yj对应的神经元zh的权重,f为激活函数,与式(5)相同.

基于OpenCV 神经网络函数库,利用带有标签的训练数据集对上述模型进行训练,以获取模型参数,然后利用测试数据集测试模型准确性,训练参数如表4所示.

表4 BP神经网络训练参数设置Table 4 Training parameters of BP neural network

训练数据集中样本数量为16 424个,测试数据集中样本数量为12 000个,数据均来自网络,下载后人工贴标签.实验结果表明,上述模型对于字符识别的准确率为0.9855.

3 实验

相机分辨率为856 pixel ×480 pixel,采集帧频为30 fps,在VS2013环境下基于C++开发了多机动车车牌自动检测识别系统,软件左侧为彩色图像,右侧为其对应的灰度图像,运行平台主要参数:Dell笔记本&&Intel(R)Core(TM)i7-6700HQ CPU 2.6 GHz&&RAM 16.0 GB.

第一组实验为实时监测实验,目的在于测试系统的实时性,部分结果如图13(a)∼13(d)所示.此实验中,相机采集时长2分7 秒,共48辆正常行驶的车辆经过,系统正确识别出其中的44个车牌,单帧处理时间约为130 ms,正确率为91.6%,其余4个车牌未检测到的原因是车辆行驶过快,使得图像中车牌区域发生拖影,导致无法准确定位车牌区域或正确识别车牌字符.

第二组实验为恶劣条件下的单帧图像检测识别实验,目的在于测试系统在恶劣条件下的性能,结果如图14(a)∼14(f)所示.此实验中共涉及6种恶劣条件,包括大角度成像、逆光成像、雨天成像、雾天成像、夜间成像和车牌污损,图像均来自于网络,结果表明:系统在上述6种情况下均可准确定位车牌区域并识别出车牌字符,单帧处理时间约为109 ms.

第三组实验为正常条件下的单帧图像检测识别实验,目的在于测试系统对车牌字符识别的准确性,部分结果如图15(a)∼15(f)所示.此实验中共测试了203帧图像、236个车牌,涉及14个省的47 个市和4个直辖市,图像均来自于网络,系统正确识别出其中的225个,正确率95.3%,其余车牌未检测到或字符识别错误的原因:1)车牌区域在图像中占比较小,几何特征尚不明显,导致车牌定位失败;2)车牌区域过曝严重,导致无法有效分割字符块.

综上结果表明:1)车辆在正常速度行驶条件下,系统依然可以保证90%以上的车牌检测识别正确率;2)系统可以实现同时多车牌检测识别;3)系统可抵抗一定程度的环境干扰;4)在相机当前分辨率条件下,系统单幅图像检测识别平均时间低于130 ms,处理频率约8 Hz,处理频率主要与相机分辨率和CPU主频有关.

4 结论

针对道路交通中的多机动车车牌识别问题,提出了一种基于BP神经网络和支持矢量机的多机动车车牌在线检测识别方法,在此基础上开发了一套鲁棒的多机动车车牌在线检测识别系统,对多机动车车牌识别准确率高于90%,处理频率约8 Hz,并且可抵抗一定程度的环境干扰.该系统主要贡献如下:

1)发挥了SVM在处理“true or false”问题中的优势,相比人工神经网络,在样本容量有限的情况下,可提高车牌判别正确率,缩短车牌判别时间;

图13 第一组实验部分结果显示Fig.13 Partial results of the first experiment

图14 第二组实验部分结果显示Fig.14 Partial results of the second experiment

图15 第三组实验部分结果显示Fig.15 Partial results of the third experiment

2)基于BP神经网络对像素颜色进行判别,可在一定程度上弥补由于相机成像色差导致的颜色分类错误;

3)提出了一种有效的图像预处理、车牌定位及筛选和字符分割策略.

当前系统在以下三个方面仍需要进一步完善:

1)当车牌在图像中有较大旋转时,系统无法准确定位车牌区域,下一步考虑加入图像矫正技术,削弱图像旋转对车牌定位的影响;

2)仅使用图像颜色信息进行车牌检测,当车牌区域色差严重时,系统无法准确定位车牌区域,下一步考虑融合图像灰度梯度信息,提高车牌定位鲁棒性;

3)将深度学习应用于车牌字符识别中,以提高字符检测正确率.

猜你喜欢

字符识别车牌字符
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
HBM电子称与西门子S7-200系列PLC自由口通讯
消失的殖民村庄和神秘字符
一种改进深度学习网络结构的英文字符识别
第一张车牌
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别