车牌自动识别系统设计
2020-10-12王美琴关财忠王茗祎
王美琴,易 敏,关财忠,王茗祎
(1.佛山科学技术学院 物理与光电工程学院,广东 佛山 528000;2.深圳大学 物理与光电工程学院,广东 深圳 518060)
0 引言
图1 车牌定位流程图Fig.1 Flow chart of locating license plate
图2 基于HSV颜色分割车牌定位图Fig.2 Diagram of locating license plate based on HSV color segmentation arithmetic
车牌识别技术是指可自动检测车牌和获取车牌信息的技术,是图像处理和智能运输系统领域中非常活跃的研究主题[1]。该技术可应用在交通道路疏通、违章车辆拍照[2]、停车场收费管理[3]等领域,以降低人工成本和提高交通管理的效率。该技术包括三部分,分别为车牌定位、车牌校正和字符识别。车牌定位法有边缘检测[4]、颜色分割[5]等算法。基于边缘检测的车牌定位法实时性和降噪效果好,但易受矩形背景图像和车牌倾斜的干扰;基于颜色车牌定位法,根据车牌的底色可以快速准确地定位车牌,但不适用车牌与车辆颜色相似的情况。车牌校正法有Radon 和Hough 变换校正[6],Hough 变换速度较快,但Radon 比Hough 变换更准确、依赖性小。车牌字符识别法有基于神经网络[7]、机器学习的字符识别法。基于神经网络的字符识别算法抗干扰能力强,但需建立大量的训练样本集才有理想的识别效果;基于机器学习字符识别算法不需建立大量的训练样本集也可以快速、准确地识别字符。
论文主要在车牌定位、校正和识别3 个方面做了改进,分别采用HSV 颜色分割结合SVM-Sobel 边缘检测法定位车牌、Radon 变换结合中心投影法校正车牌和机器学习模型识别车牌字符。对设计的车牌识别系统进行了不同拍摄角度、拍摄距离、光线强度等条件的测试以及效率测试,车牌定位、校正、字符识别成功率分别可达98.5%,99.0%,98.1%,系统识别车牌平均耗时4s。实践表明,该系统可为地下停车场的停车查询终端提供数据支持,解决了在无明显特征的大型地下停车场中,当车主忘记泊车位置时,如何快速准确地找到自己的车的难题。
1 车牌识别系统的设计
车牌识别系统包括三部分,分别为车牌定位、车牌校正和字符识别。车牌定位即确定车牌在车辆图像中的方位并将其截取出来;车牌校正即校正倾斜和畸变的车牌;字符识别即自动识别车牌字符,获得车牌号。
1.1 车牌定位算法的研究
本文采用HSV 颜色分割与SVM-Sobel 边缘检测相结合的方法定位车牌。车牌定位算法第一步是采用HSV 颜色分割定位车牌,当光线分布程度失衡或车辆与车牌颜色相似导致车牌定位失败时,第二步则采用SVM-Sobel 边缘检测法定位车牌[8],即根据SVM 分类模型的判断结果调整Sobel边缘检测阈值,实现对车牌的精确定位。车牌定位流程如图1 所示。
在RGB 颜色空间中,人眼难以判断相似颜色的差异,而在HSV 颜色空间中,两种颜色非相似的程度可通过计算两点颜色的距离而获得[8],所以在HSV 空间中更有利于车牌区域的提取。基于HSV 颜色空间定位车牌的流程包括3个步骤,分别为将RGB 转HSV 空间,基于水平和垂直投影分割车牌和归一化,最终获取车牌区域。效果如图2 所示。
在被样本空间映射的高维空间中,支持向量机(SVM)将结构风险降至最低而构建最合适的分类超平面。SVM 不仅有较高的准确率,且相比神经网络模型,SVM 数据处理的速度更快[9]。SVM 车牌分类模型的训练分三部分:首先,将手动截取和HSV 颜色空间获取的车牌和伪车牌归一化大小,获得250 张车牌、675 张伪车牌,并将它们存放在两个不同的文件夹;其次,编写程序读取所有图像并对其滤波及二值化,而后将其转为行矩阵,以文件夹的命名为标签置于对应行矩阵最后;最后,将数据导入SVM 模型,训练样本数据。训练得到的模型识别正确率为97.6%。
SVM-Sobel 边缘检测车牌定位算法由图像预处理和SVM-Sobel 边缘检测两部分组成。图像预处理包括加权平均值法灰度化、中值滤波和灰度拉伸,使车牌区域更突出。不同环境下能将车牌与背景分离的Sobel 边缘检测阈值不同。因此,本文将Sobel 边缘检测与SVM 模型结合,根据SVM 模型对Sobel 边缘检测获取的车牌候选区域的判断结果设定最佳边缘检测阈值。据测试,设置边缘检测阈值的范围为0.02 ~0.35,能取得较高的车牌定位正确率。图3为该算法流程。
图3 SVM- Sobel边缘检测车牌定位流程Fig.3 Flow chart of locating license plate based on SVM-Sobel edge detection arithmetic
图4 从车牌候选区选出车牌Fig.4 Diagram of selecting license plate from candidate areas
图5 车牌校正Fig.5 License plate correction
SVM-Sobel 边缘检测算法包括Sobel 边缘检测、二值化、闭运算、去干扰、最小外接矩形求取车牌候选区域、SVM 模型分类真伪车牌。
1)Sobel 边缘检测
调用“BW=edge(J,’sobel’,thresh)”函数实现Sobel 边缘检测。其中,J 是预处理后灰度图像,BW 是边缘检测后的图像。thresh 是边缘检测的阈值,范围从0 ~1,阈值越小,可获得更多图像轮廓细节。
2)图像二值化、闭运算、去干扰和最小外接矩形求车牌候选区域
将边缘检测后的车辆图像二值化,可简化计算。闭运算可填补轮廓边缘细小的断痕,可选择3×20 的矩形模板作为结构元素进行闭运算。为减少干扰,调用“BW2 =bwareaopen(BW,P)”函数,移除像素点P 少于800 的小面积对象。因车牌区域是矩形,调用regionprops 函数筛选符合车牌的宽高比的矩形区域。中国车牌的宽高尺寸一般为440mm×140mm,所以设定宽高比区间为[3.15×0.7,3.15×1.3][10],截取和保存符合该特征的矩形区域。
3)SVM 模型分类真伪车牌
设Sobel 边缘检测阈值初始值为0.02,使用SVM 模型对获得的多个车牌候选区域进行判断,若其中有车牌,则输出车牌,否则增加Sobel 边缘检测阈值,进行新一轮边缘提取及车牌真伪的判断。通过SVM 判断模型,从多个车牌候选区域中获取车牌效果如图4 所示。
1.2 车牌校正算法研究
Radon 变换可校正倾斜车牌,当Radon 校正后字符依然倾斜,说明车牌畸变,则采用中心投影法进行畸变校正。
以原始图像的中心为原点,Radon 变换将在原平面内的点映射到特定径向坐标P 与角度θ 组成平面上。Radon变换校正车牌可分为3 个步骤。首先,为提高后续车牌边缘提取的速度及精准度,需对车牌进行灰度化和滤波处理后再检测车牌边缘;其次,调用Radon 函数,获得车牌上边界的倾斜角度;最后,采用双线性插值法校正倾斜车牌。校正效果如图5(b)所示。
中心投影法(Perspective Mapping)可将任意四边形的车牌区域映射到矩形区域从而进行畸变校正。如图5(c)所示,由点O,I10,I11,I01组成的任意四边形的畸变车牌经过中心投影法可以映射到由O,S10,S11,S10所组成的矩形区域。图5(b)畸变校正后得到图5(d)。
畸变车牌中的任意一点I 映射到矩形区域任意一点S,S 可表示为:
同理,畸变车牌中的任意一点I 可表示为(y0和y1为未知系数,a0和a1为畸变车牌所确定的常数):
根据各向量之间的关系,最终可得畸变车牌与矩形区域的映射关系:
设定输出矩形区域大小后,可由(1)式可确定x0和x1。获取畸变车牌的4 个顶点坐标后,可通过(3)式计算得到a0和a1。将已知的a0,a1,x0,x1代入(4)式,即可得到y0,y1的值。将y0,y1代入(2)式,可获得I 点的坐标。将畸变的车牌图像I 点的灰度值赋值到矩形区域S 点,即可校正畸变车牌。
求取车牌4 个顶点的坐标包括两步骤:首先,在HSV颜色空间中确定车牌的上下边框的位置(防止倾斜车牌背景的干扰);其次,将车牌分割成4 份等宽的区域,在最左和最右的区域中利用四边形对角线最长的特点,分别可获车牌的左上、左下和右上、右下的坐标。
1.3 车牌字符识别算法研究
车牌字符识别流程如图6 所示。为降低外界的干扰,首先需要对校正后的车牌区域进行图像预处理,即灰度化处理、中值滤波和二值化;其次,为正确分割车牌字符,需去除车牌边框、铆钉和间隔符(车牌图像的第2 和第3个字符之间的圆点图形);最后,本文采用机器学习模型识别车牌字符。
根据对像素点的逐行和逐列扫描,可确定字符的位置从而去除车牌的外边框与铆钉[11]。从车牌高度的一半处,分别向上和向下行扫描,记录首个白色像素点数少于32 的行数,即字符上、下界线的位置。一般民用车辆的车牌宽440mm,字符宽45mm,字符间距宽12mm,则车牌宽度的16/440、406/440 处分别为第一个字符和最后字符的位置。在这两个位置分别向左和向右列扫描,记录首个白色像素点数少于3 时的列数,即车牌字符左右侧的界线。 截取上、下、左右的字符边界线范围内的图像,可去除车牌外边框和铆钉。效果如图7(b)所示。
图6 车牌字符识别流程图Fig.6 Flow chart of recognizing the characters of license plate
图7 车牌字符处理过程Fig.7 License plate characters processing
间隔符的存在会使程序误判其为车牌字符,使得字符切割错误。去除边框后,车牌宽409mm,间隔符(10mm)在2 个宽45mm 字符和宽12mm 字符间距之后,即字符区域119/409 处[11],即字符区域的0.29 处。经测试,因拍摄距离和角度不同,间隔符也可能在整个字符区域长度的0.3或0.28 处。依次判断这3 个位置的白色像素点数是否非零,记非零的位置为间隔符所处位置。从间隔符的位置向左右两侧列扫描,记录左右两侧第一个白色像素点数小于1 的列数,将两列之间的图像矩阵置0,即可去除间隔符。效果如图7(c)所示。
采用列扫描与字符宽度的约束可实现车牌字符的分割。车牌第一个字符是汉字,由于个别汉字笔画不连续,需进行字符是否断裂和字符是否粘连两种判断。剩余6 个字符由字母和数字组成,笔画连贯,只需进行字符是否粘连的判断。字符分割如图7(d)所示。
有监督的机器学习训练模型可以验证和分为二类问题或多类问题。通过同时训练多个机器学习模型,训练完成后比较它们的验证误差,可选择出最佳模型,进而实现高准确率的字符识别功能。车牌字符识别步骤包括制作训练样本集、训练模型与最优模型选取、预测字符。
1)制作训练样本集
因车牌首个字符是汉字,后续6 个字符是字母与数字的随机组合,则将汉字与字母数字分开训练。每个字符的训练需要50 张字符模板并且以该字符名作为文件夹命名。编写程序读取所有图像并对其滤波、二值化,而后将其转为行矩阵,以文件夹的命名为标签置于对应行矩阵最后。
表1 车牌定位法的测试结果Table 1 Test results of license plate positioning methods
2)模型训练与最优模型选取
将数据导入Classification learner APP 中,运行全部训练模型,待模型训练完毕,将识别率最高的模型导出。
3)字符预测
归一化切割出来的字符,并将其图像矩阵转为行矩阵,用训练好的机器学习模型对该字符进行预测。
2 车牌识别系统的测试与分析
以不同角度、距离、光线强度拍摄的700 张地下停车场车辆图像为测试样本,从车牌定位、车牌校正和字符识别3 个方面对论文设计的系统进行效果测试。
2.1 车牌定位结果分析
测试520 张不同情况的车辆,HSV 颜色空间车牌定位法、SVM-Sobel 边缘检测车牌定位法和两种方法的结合的定位结果见表1。
由表1 可知,以上3 种定位法在亮暗环境都适用。在SVM 颜色空间无法定位车身与车牌颜色相似的车牌,SVMSobel 边缘检测法易受车牌倾斜程度的影响。针对非车身与车牌颜色一致且倾斜的车辆,两种方法的结合的定位成功率基本可达97.0%~98.5%。
2.2 车牌校正结果分析
对200 张倾斜或畸变的车牌进行校正。校正结果见表2。Radon 变换只能对车牌进行旋转校正,适用性低。中心投影法的校正效果比Radon 变换效果好,但有少部分车牌因过于倾斜而无法正确获取车牌4 个顶点坐标进而导致校正失败。Radon 变换结合中心投影法校正车牌,可以在一定程度上弥补这两种方法单独使用时的缺陷,校正成功率达99.0%。
表2 200张车牌校正测试结果Table 2 Test results of correcting license plate
表3 字符识别结果Table 3 Test results of recognizing license plate characters
2.3 基于机器学习的车牌字符识别结果分析
从表3 可看出,测试200 张车牌分割出的字符,k 近邻(k-nearest neighbor)模型的汉字识别正确率可达99%。SVM 模型的数字和字母识别率可达98.1%。在KNN 模型中,只要汉字不过于残缺或扭曲,基本可被识别。在SVM模型中,个别数字或字母容易混淆,比如8 和B,0 和D,G 和Q。综合两种模型的判断结果,车牌字符识别正确率为98.1%。
3 总结与展望
本文设计的车牌识别系统能够较好地实现地下停车场的车牌识别功能,但依然存在需改进之处。在车牌定位方面,本文所采取的方法针对车牌与车身颜色相同的倾斜车牌的定位成功率较低,需继续完善算法。在车牌校正方面,可采用更合适的算法直接提取车牌4 个顶点坐标。在车牌字符识别方面,为提高字符识别正确率,训练样本可以加入一定数量的倾斜或笔画稍微残缺的字符。改善后,该系统有望应用在高速公路收费,违章车辆拍照和违法车辆跟踪等领域。