刘年生,张家豪
(集美大学计算机工程学院,福建 厦门 361021)
随着中国公路交通系统的快速发展,机动车的车牌自动识别变得越来越重要,它是智能交通系统中的一项基础性课题[1],也是图像模式识别研究的热点[2],广泛应用于停车场进出口控制、自动缴费、交通执法、道路交通监控等场景。车牌识别系统主要包含三个方面的关键技术,即车牌的定位与提取、倾斜校正与字符分割、字符识别,其中字符识别算法是影响车牌识别系统主要性能指标(即识别准确率和处理时间)的核心因素[3]。由于所采集的车牌是从实际复杂环境中拍摄得到的,其图像质量受焦距、阴影、光照、背景复杂度等诸多因素影响,所以车牌字符识别算法应具有较强鲁棒性,在较强的图像噪声影响下还应具有较高的字符识别准确率,特别是对于中文车牌,因汉字结构比英文字母和阿拉伯数字的字体结构更复杂,更需要较高的识别容错性。因此,车牌识别既要准确快速,又要鲁棒容错,构建这样一个中文车牌自动识别系统的难度会更高一些。
目前,车牌字符识别的算法主要有模板匹配算法[4]、神经网络字符识别算法[5]和特征匹配算法[6]。模板匹配算法具有直观和计算简单等特点,但是鲁棒性较差,光照、字符清晰度和大小等变化因素都显著降低识别准确率[7]。神经网络字符识别算法具有良好的容错、分类能力和自我学习能力,且运行速度快,但存在算法效率低,分类器训练速度慢,学习过程中易陷入局部极小和易出现振荡现象,导致训练分类器失败等问题[8]。传统的特征匹配算法具有算法效率高和识别速度快等优点,但在字符出现笔画融合、断裂、部分缺失时识别准确率显著降低[9]。
本文拟提出一种基于Harr特征的中文车牌识别方案,以期具有识别速度快、识别准确率高、鲁棒性强三者相统一的特点,即使在复杂的环境条件下,它仍然能快速准确地识别车牌,具有较高的鲁棒性。
Haar特征也叫Haar-like特征,最早是由Papageorgiou等[10]受一维Haar小波的启发而提出来的,用于目标检测。Viola等[11]在此基础上提出利用积分图像法快速计算Haar特征的方法。随后,Lienhart等[12]用对角特征对Haar特征库进行了扩展。
对于灰度图像而言,Haar矩形模板由两个或多个全等的黑白矩形相邻组合而成,而Haar矩形特征值是白色矩形的灰度值的和减去黑色矩形的灰度值的和。如图1所示,不妨假设在一个W×H的灰度图像中存在待识别的目标字符,检测时使用大小均为w×h的两种特征矩形模板,即正立的矩形模板和旋转45°的矩形模板。每个特征矩形可用r=(x,y,w,h,α)来表示,其中0≤x,x+w≤W, 0≤y,y+h≤H,x,y≥0,w,h≥0,α∈{0°,45°},而该矩形的像素和用RecSum(r)来表示,则在这个W×H的图像中的所有这些形式特征的总和被称为原始 Haar 特征集Hf,即:
(1)
公式(1)中权重ωi∈R,矩形ri和N是可以任意选择的,这样一来,原始Haar特征集几乎是无限大的,不适合于实际应用,需要限定Haar特征个数。常用的约束方法有[11]:1)仅考虑两个矩形像素和的权重结合(例如N=1)。2)两个矩形的权重一正一负,并通过正负权重来补偿两个大小不同的区域。因此,对没有重叠的矩形而言,有-ω0×Area(r0)=ω1×Area(r1) 。在没有其他限制条件时,设置ω0=-1,并且ω1=Area(r0)/Area(r1)。3)这些特征应类似小波Haar-like 特征和初级人类视觉通道的特征(如向心性和方向性响应)。
在上述约束条件下,Haar特征共有四类,即边缘特征、线性特征、中心特征和对角线特征,有15种特征原型。在一个W×H的车牌图像中,基于大小为w×h的正立矩形的Haar特征个数为
XY×(W+1-w(X+1)/2)×(H+1-h(Y+1)/2),
(2)
其中X=[W/w],Y=[H/h];而基于大小为w×h的旋转45°矩形的Haar特征个数为
XY×(W+1-Z(X+1)/2)×(H+1-Z(Y+1)/2),
(3)
其中Z=w+h。这样,既能大幅度降低特征个数,减少特征之间的冗余度,提高车牌识别的实时性,又能不丢失车牌字符间的可区分性特征,保证车牌识别的准确率不降低。
Haar特征分类器的级联就是一个退化决策树,它由N个弱分类器串联起来。如图2所示,Hfi是表示第i个Haar特征,Ci表示为第i个弱分类器,R和L分别表示弱分类器的rightValue和leftValue。每个弱分类器对应一个Haar特征,这样每个弱分类器只专注识别所感兴趣的目标细节,而忽略不感兴趣的目标细节。它按照决策树的处理机制,确定待测车牌字符是否满足字符Haar特征的阈值,以此确定下一级是采用左联还是右联。它采用离散Adaboost样本训练方法[11-13],可将每个原始的弱分类器训练成最优的弱分类器,再组合这N个最优的弱分类器,从而得到一个强分类器,并且随着弱分类器数目的增加,在保证识别准确率基本不变的前提下可以大幅度降低虚警率,直至所期望的水平。
经过训练后的Haar特征级联分类器将用于车牌字符识别。车牌字符自动识别过程如图3所示。在图3中,将分割后的车牌字符灰度图像作为待识别的对象,输入到字符自动识别系统中,通过循环调用Haar级联分类器,逐一识别车牌中的每个字符,将整张车牌的识别结果作为系统的输出。
在Intel(R)Core (TM)i7-4710MQ(CPU)+16.0GB(RAM)+Windows 10(OS)的计算机软硬环境下,安装Python3.5.1、numpy-1.14.2、tensorflow1.6.0、scipy1.0.1、opencv-python-3.4.0.12 、scikit-image、PIL等软件,配置相应的环境变量,搭建一个基本的开源环境,进行基于Haar特征的中文车牌自动识别系统的开发和测试。中文车牌的尺寸一般为440 mm×140 mm,有蓝底白字白框线、黄底黑字黑框线、黑底白字白框线、白底黑字黑框线等多种颜色配置,且其由7个字符组成的,第2字符与第3字符(或第4字符与第5字符)之间的间隙为34mm,且该间隙中间有一个小圆点,其他字符间隙为12 mm。这类车牌在中国使用最多,近2亿张。
系统分为样本训练和识别测试两个主要部分。首先,对Haar级联分类器进行训练。利用OpenCV提供的中文车牌样本库,选取4 700个正样本和12 000个负样本,调用opencv_haartraining.exe命令工具进行样本训练,该工具封装了Haar特征提取以及Adaboost分类器训练过程,训练后的Haar分类特征可记录在对应的xml文档中。在样本训练中,对单个字符的识别准确率均在99.2%以上,处理时间不超过0.02 s。然后,对300幅新增的中文车牌进行识别测试,新车牌分为5组,每组60张,每张车牌识别结果类似(见图4),整个测试结果如表1所示,识别准确率的统计结果为(94.0±0.9)%,平均每张车牌处理(包含加载、定位、校正、分割和识别等全过程)时间为(0.63±0.06)s,所提方案是精准和高效的。
表1 基于Haar特征的中文车牌识别准确率
组别Group12345合计Total车牌检测总数Number ofChinese license plates to be tested/个6060606060300成功识别数Successful recognition number/个5656575756282识别准确率Accuracy rate/%93.393.395.095.093.394.0±0.9
本方案与其他经典的车牌识别方案的比较如表2所示。一方面,从车牌的识别准确率上看,本方案在五个方案中居于中等水平。但是,ALMD-YOLO、Application-Oriented和3L-LBPs识别准确率的实验结果都是针对英文车牌的,而中文车牌的自动识别要比英文车牌困难得多,这是因为中文车牌除了包含英文字母和阿拉伯数字外,还多了40个汉字(根据GA36-2014中华人民共和国机动车号牌标准),并且其中绝大多数汉字的结构比英文字母或阿拉伯数字的字体结构要复杂得多,如赣、藏、冀等,因而汉字特征的提取比字母或数字要复杂一些。另一方面,从车牌整个处理时间上看,虽然本方案中实验所用的CPU不是5个中计算性能最好的,但它的整个处理识别时间却是最短的,这反映了Haar特征方法具有计算复杂度小、识别实时性好的特点,比较适合于中文车牌字符的识别。
表2 五种不同识别方法的主要性能比较
说明:ALMD-YOLO、Application-Oriented和3L-LBPs的识别准确率是针对英文车牌,非中文车牌 Note:The accuracy of ALMD-YOLO,Application-Oriented and 3L-LBPs is for English license plates,not for Chinese ones
本方案具有较高的鲁棒性,对车牌图像质量要求不敏感,即使图像中车牌处于倾斜、多个并存、夜光等情况,或车牌字符出现污渍、模糊等情况,本系统均能快速准确地识别车牌信息,不会显著影响识别率。如图5所示,对车牌倾斜、多辆并行、污泥掩盖、夜光、近距离失焦、高速行驶等复杂环境下采集到车牌图像,均能高效地识别出车牌号。
另外,对未能准确识别的18张车牌进行分类分析,发现:从误识别的车牌字符个数来分,单字符误识别的有15张,2个及2个以上的字符误识别的有3张;从误识别的车牌字符类型来分,汉字误识别的有18张,字母误识别的有2张;从视觉图像质量来分,车牌图像清晰但字符存在较大缺损的有4张,车牌图像质量低劣的(因雾、污物、扭曲、失焦和光线不足等因素造成的)有14张。因此,形成车牌误识别的主要原因包括汉字识别困难、字符笔画较严重缺损和采集到的车牌图像质量过低等因素。
要提高所提方案的识别准确率,首先,应合理配置方案的参数,适当减小特征矩形模板的尺寸,即在公式(2)和(3)中合理选取w和h的值,适当增加车牌的Haar特征数,提高汉字识别的精确度;其次,增加训练样本数,特别是针对车牌汉字部分,能有效地学习和保留汉字的Haar特征,提高识别的准确度;第三,获取的车牌图像质量尽可能高一些,如采用高清摄像头等,对一些质量偏低但不太严重的车牌图像,可以采用一些新的组合滤波、图像增强和优化校正等先进技术,提高车牌图像的前处理质量,为后续的字符分割和识别奠定好的基础。
本文采用Haar特征模板匹配的方法,对中文车牌字符进行识别,具有识别准确率高、识别速度快和鲁棒性好等三方面性能指标高度统一的特点。Haar特征是基于车牌小区域中的像素值分布而计算出来的,具有理论基础可靠、计算简单等特点。基于Haar特征的弱分类器采用Adaboost算法进行级联,可以将一个弱分类器变成一个强分类器。同时,针对不同的应用场景,通过合理选取系统参数和训练样本,显著降低数据处理量,提高了车牌识别速度。在Python和OpenCV组合开源环境下,通过编写源代码,开发了具有实际识别功能的基于Haar特征的中文车牌识别系统,并验证了理论模型的正确性和所提方案的可行性。该系统适用于中国大陆所有省份的机动车车牌识别,可广泛用于停车场进出口控制、自动缴费、交通执法、道路交通监控等实际的自动化实时监管系统。
致谢
刘晓捷、王宗跃等参与本文的部分实验和讨论工作,特此表示感谢。