基于HSV模型和改进AdaBoost算法的车牌检测
2015-12-20王创新盛文正
王 毅,王创新,卢 进,盛文正
(长沙理工大学电气与信息工程学院,湖南长沙 410004)
车牌识别是智能交通领域的热点问题,主要包括车牌检测、字符分割、字符识别3部分,其在监测报警、超速违章处罚、车辆出入管理及自动放行、高速公路收费管理、计算车辆旅行时间和牌照号码自动登记等方面有着重要应用。车牌检测作为车牌识别的一个重要部分,是车牌识别系统中的关键,车牌检测算法的质量直接影响车牌识别的精度。
近年来出现了多种用于车牌检测的算法,主要分为两类:一类是基于车牌特征的检测算法,包括基于车牌结构特征的检测算法和基于车牌颜色特征的检测算法,如潘秋萍[1]等提出的基于Haar与MB-LBP特征的车牌检测算法;苗立刚[2]等提出的基于最近邻链的车牌检测算法,该方法能有效消除光照变化的影响,但是整个检测过程繁琐,计算复杂度高;吴子章[3]等提出的一种基于颜色融合和匹配滤波器的车牌检测算法;李红林[4]提出的基于改进的HSV模型及边缘颜色均值对的车牌检测算法,该方法对光照条件和车牌质量有一定的要求。另一类是基于统计学习的检测算法,这就包括常用的AdaBoost算法,AdaBoost算法能够实时地检测到车牌,检测精度高,且有较高的鲁棒性[5-6]。
本文主要针对传统AdaBoost算法样本训练学习过程中出现的过配现象以及检测率偏低这两种情况,在传统AdaBoost算法的基础上对其权值更新规则和弱分类器的加权参数做了改进,有效抑制了过配现象的发生且得到检测率更高的强分类器,并通过利用HSV颜色模型构建第一层强分类器,通过构建级联分类器实现对车牌图像的实时有效检测。
1 利用HSV颜色模型构建第一级强分类器
HSV颜色模型是A.R.Smith根据颜色的直观特性在1978年创建的一种颜色空间,也称六角锥体模型。该模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。其中色调H表示不同的颜色,用角度度量,取值范围为0°~360°;饱和度S表示颜色的深浅,取值范围为0.0~1.0;亮度V表示颜色的明暗程度,取值范围为0.0(黑色)~1.0(白色)。
由于HSV颜色模型相比于RGB颜色空间与人的视觉特性更为接近,本文采取使用广泛的HSV颜色模型对车牌进行初步检测。HSV颜色空间符合人对色彩的感知,各颜色分量具备独立性,颜色信息丢失少,可以利用H值参数较好地衡量出车牌颜色特征,进而得到用于车牌检测的级联分类器的第一层强分类器,可以有效降低算法时间,提高算法性能[7]。实际车牌类型多种多样,因国内以小型民用汽车为主,牌照为蓝底白字,本文中研究的检测车牌限制为比较常见的蓝底白字的标准矩形车牌。
从RGB到HSV颜色空间的H值转换公式为
选取100张车牌样本图像,将其都转换到HSV颜色空间,设置颜色计数器,对每张图片中的每个像素获取H颜色值,根据H值,用颜色计数器进行累加。得到如图1所示的车牌蓝颜色统计直方图。
图1 车牌蓝颜色统计直方图
由图1所示,大部分颜色数量主要集中在H值为[200°,280°]的区域,根据车牌颜色特征即可将车牌蓝色颜色的H值定义在[200°,280°]区域。通过遍历每个子区域,读取子区域的每个像素,若 H∈[200°,280°],则该像素即为蓝色颜色。从而计算出车牌图像蓝色颜色数Nblue与颜色像素总数S。定义
通过实验测得λ的阈值范围为[0.21,0.72]。因此通过将任意一幅车牌彩色图像转换到HSV颜色空间,设置颜色计数器,对每张图片中的每个像素获取H颜色值,根据H值,用颜色计数器进行累加,并将图像统一处理成分辨率为640×480,子区域大小为48×16。求得每张车牌彩色图像x的蓝色颜色数Nblue(x)与颜色像素总数S(x),再由式(2)求得λ(x)。
定义以下分类算法:若λ(x)∈[0.21,0.72],则认为图像x为车牌图像;若λ(x)∉[0.21,0.72],则认为图像x为非车牌图像。故本文级联分类器中第一层强分类器为 H1(x)= -sign[λ(x)-0.2][λ(x)-0.72]。
2 传统AdaBoost算法的优化与改进
2.1 传统AdaBoost 算法描述
1990年Schapire证明了可以将一个弱学习算法提升成一个强学习算法的理论:如果两者等价,则在学习时,只要能找到一个比随机猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找在一般情况下难以得到的强学习算法,这就是最初的Boosting算法。1995年Freund和Schapire提出了AdaBoost(A-daptive Boost)算法,他们证明只要加入一个识别率略好于随机猜测的弱学习算法,就能使最后得到的分类器识别率有一个明显的提升。该算法随后便大量地应用到实际问题中。
AdaBoost算法中不同的训练集是通过调整每个样本对应权重实现的。开始时,每个样本对应的权重相同,在训练过程中对于错分的样本增加其权重,而对于正确分类的样本则降低其权重,这样可以使得错分的样本突出出来,并得到一个新的样本分布。同时,根据错分的情况赋予弱分类器一个权重,表示该弱分类器的重要程度,错分得越少权重越大。经过T次循环得到T个弱分类器以及T个对应的权重,最后把这T个弱分类器按一定权重累加起来,就得到了最终所期望的强分类器。算法具体描述如下:
(1)给定弱学习算法和样本训练集{(x1,y1),(x2,y2),…,(xn,yn)},其中 xi为输入训练样本且 xi∈X,X是训练样本集;yi是样本分类类别标志,且yi∈Y={-1,1}。
(3)对于 T 轮训练,For t=1,2,…,T。
1)将样本训练集在权值Dt下训练,得到弱分类器ht(xi):X→{-1,+1}。
2.2 改进AdaBoost算法
传统AdaBoost算法中每轮迭代训练的基本思想是根据分类结果对样本权值分布进行调整,正确分类的样本权值减小,错误分类的样本的权值增加,这种权值更新规则虽然可以保证学习算法专注于处理较难的训练样本,但当训练样本集中包含一些罕见的困难样本时,AdaBoost算法将给这些样本分配较高的权值,最终导致权值分布发生扭曲的现象,即过配现象[8]。另外,传统AdaBoost算法虽然检测速度快,但由于其迭代算法比较简单,其正确检测率还有待提高。
针对上述两种情况对传统AdaBoost算法的权值更新规则和弱分类器的加权参数进行改进:(1)在每轮训练中定义一个阈值θt,并根据样本是否被错误分类以及当前权值是否大于θt来给样本更新权值,在一定程度上避免了分类器发生过配。(2)令keRt,其中k为常数,即第t轮循环的弱分类器中所有被正确识别车牌样本的权值和,表示弱分类器ht(xi)对车牌样本的识别能力;keRt是Rt的增函数,因而求得的新加权参数αt在错误率εt相同的情况下使得那些对正样本识别能力更强的弱分类器具有更大的权值,加强了分类器对样本的识别能力,提高系统正确检测率。改进 AdaBoost算法具体描述如下:
(1)和(2)与传统AdaBoost算法相同。
(3)对于 T 轮训练,For t=1,2,…,T。
1)将弱学习算法在权值Dt下训练,得到弱分类器ht(xi):X→{-1,+1}。
4)设定该轮训练的权值更新阈值 θt=
5)更新样本权值Dt+1(xi)=,其中 Zt是使的归一化因子,θt是第t轮训练中的权值更新阈值。
通过将传统AdaBoost算法与改进的AdaBoost算法的具体过程对比可得两种算法的时间复杂度均为T×m×O(n+n log2n),其中T为训练轮数,m为所有训练样本特征数目,O(n)为更新样本权值的时间复杂度,O(n log2n)为对训练样本特征进行排序从而选取最佳弱分类器的时间复杂度。本文因设定每轮训练的权值更新阈值并改进了每轮弱分类器的加权参数,从而使得运算复杂度有所增加,但改进的AdaBoost算法能够有效抑制过配现象和提高算法的检测率,这是实时应用车牌检测系统发展的方向。
3 构建车牌检测器
本文构建车牌检测器的过程即为训练各层强分类器和构造级联分类器的过程,其具体思路如下:
(1)利用HSV颜色模型构建第一层强分类器。
(2)利用Haar-like特征及改进的AdaBoost算法训练后续各层强分类器,其中T轮训练中的权值更新阈值均固定为
(3)将(1)和(2)中获取的各层强分类器组合成级联分类器,车牌检测器构建完成,即可用于车牌检测。其中第(2)步Haar-like特征的选取和计算对该步中强分类器的训练效率有着重要的影响。
3.1 Haar-like特征选取和计算
根据车牌的主要灰度分布特征,在利用改进的AdaBoost算法训练强分类器的过程中选择采用Haarlike特征训练车牌样本。Haar-like特征是一种基于积分图像的特征,主要用于灰度图像中,该特征计算简单,提取速度相对较快。本文最终选取了3类14种Haar-like基本特征原型[9]及由它们缩放和组合得到的复杂Haar-like特征。
图2 3类基本Haar-like特征
上述Haar-like矩形特征的特征值是白色矩形像素和与黑色矩形像素和之差。由于训练样本数量多且矩形特征数量庞大,如果每次计算特征值都要统计矩形内所有像素之和,将大幅降低训练和检测的速度,为此引入了积分图像,只要遍历图像一次,就可以求得所有子窗口的特征值[10]。
图3为积分图值描述,图3(a)中点(x,y)左上角所有像素值i(x',y')的和为该点的积分图ii(x,y),且
图3 积分图
由定义可知,矩形区域D所有像素灰度积分可由矩形端点的积分图像值得到,即sum(D)=(ii1+ii4)-(ii2+ii3)。故同理可求得所有Haar-like特征的特征值。
在AdaBoost算法的训练过程中,由上述Haarlike基本矩形特征生成了数以万计的Haar-like矩形特征,通过迭代的方法从大量Harr-like特征中找到小部分关键的特征,并用其产生一些有效的分类器,利用大量分类能力一般的弱分类器,按权重叠加,构成一个强分类器。
3.2 级联分类器设计
2001年PaulV和Michael J首次提出了级联AdaBoost人脸检测方法,本文将级联AdaBoost方法用于车牌检测。首先利用HSV颜色模型构建第一层强分类器,而在获取后续每一层强分类器的过程中均采用一种积分图的方法快速求出图像的Haar-like特征,然后利用改进的AdaBoost学习算法在每轮训练过程中选取出最优Haar-like特征,并将由最优的Haar-like特征生成的最佳弱分类器叠加成为强分类器,最后将各强分类器组合成级联分类器用于车牌检测。这种设计的主要思想是逐级提高检测精度。
设级联分类器共有N层,Hi(x)表示各层强分类器,级联分类器的结构如图2所示。
图4 级联分类器结构图
图4中的第一层分类器H1(x)是利用HSV颜色模型构建的强分类器,即H1(x)=-sign[λ(x)-0.2][λ(x)-0.72],其余各层分类器是利用改进后的AdaBoost算法结合Haar-like特征训练得到的强分类器。第一层强分类器对子窗口的图像进行分类后,如果分类结果为“T”(车牌),那么可能包含车牌的子窗口就传递到下一个强分类器,并触发下一个强分类器进行处理,如此循环直到最后一个强分类器,这样可以先排除大量不包含车牌的子窗口,从而提高了检测速度。
4 实验结果与分析
实验中的训练样本取自车牌识别专用图像库的100张车牌图像、网上下载的100张车牌图像和50张非车牌图像。在训练开始前将样本图像归一化为48×16大小的标准图像,再采用改进的AdaBoost算法对其进行学习,最终得到用于车牌图像检测的强分类器H(x)。实验中的测试样本取自车牌识别专用图像库的200张车牌图像和50张困难样本图像。实验首先采用传统的AdaBoost算法和改进的AdaBoost算法进行比较,使用所得强分类器对车牌测试样本集进行检测,并在MatlabR2009a平台上进行仿真[11],取训练轮数为50,仿真实验结果如图5和图6所示。
图5 传统的AdaBoost算法所得误检率
图6 改进的AdaBoost算法所得误检率
随后使用所得的级联分类器对车牌测试样本集进行检测,并采用传统AdaBoost算法训练的级联分类器与本文所得级联分类器进行比较,且训练所得强分类器均为10个。两种级联分类器的检测结果如表1所示。
表1 两种级联分类器的正确检测率和检测时间比较
由图5和图6可以看出,改进后的AdaBoost算法相比传统AdaBoost算法在检测率上有了较大提高,图5中出现的曲线小幅度波动且检测率停滞不前的现象在图6中也消失了,这证明采用新的权值更新规则及改进弱分类器加权参数不仅能有效抑制过配现象的产生,同时也提高了算法检测率。表1说明,采用本文设计的级联分类器在检测精度和速度上都要优于采用传统AdaBoost算法训练所得的级联分类器。
5 结束语
通过对传统AdaBoost算法的权值更新规则及弱分类器加权参数作了适当改进,并结合HSV颜色模型最终构建了一种新型级联分类器。实验证明,改进的AdaBoost算法优于传统AdaBoost算法,在一定程度上有效抑制了过配现象,提高了车牌检测率,且所得的级联分类器在检测精度和速度上要更优于传统AdaBoost算法训练所得的级联分类器。
本文构造的级联分类器仅限于常见的蓝底白字的小型民用汽车车牌,而没有考虑到其他特殊种类的车牌,如军用车辆车牌、外籍车辆车牌等,因此该方法只能检测常见的蓝底白字小型民用汽车车牌。下一步的工作就是通过研究更全面的算法来构造功能更完善的级联分类器,实现对各种颜色种类的车牌均能有效检测,并可以自适应判断车牌颜色。
[1]潘秋萍,杨万扣,孙长银.基于Haar与MB-LBP特征的车牌检测算法[J].东南大学学报,2012(S1):75-76.
[2]苗立刚.基于最近邻链的车牌检测算法[J].自动化学报,2011,37(10):1272 -1278.
[3]吴子章,翁宁龙,刘冉.基于颜色融合和匹配滤波器的车牌检测[J].信息通信,2011(3):146-147.
[4]李红林.基于改进的HSV颜色模型及颜色均值对的车牌检测与定位[J].云南民族大学学报,2009,18(3):268-272.
[5]Louka Dlagnekov.License plate detection using adaboost[D].Moskov:Unversity of Computer Science & Engineering,2008.
[6]Zhang Xiangdong,Shen Peiyi,Xiao Yuli,et al.License plate-location using adaboost algorithm[C].International Conference on Information and Automation,2010.
[7]徐丽珍.AdaBoost车牌检测算法的优化与实现[J].计算机技术与发展,2013,23(6):86 -88.
[8]徐前,赵德安,赵建波.基于改进的AdaBoost算法的人脸检测与定位[J].传感器与微系统,2010,29(1):94-97.
[9]江伟坚,郭躬德,赖智铭.基于新Haar-like特征的Ada-Boost人脸检测算法[J].山东大学学报,2014,44(2):43-47.
[10]Zheng Lihong,He Xiangjian,Bijan Samali,et al.An algorithm for accuracy enhancement of license plate recognition[J].Journal of Computer and System Sciences,2013,79(3):245-255.
[11]穆尔.Matlab实用教程[M].2版.高会生,刘童娜,李聪聪,译.北京:电子工业出版社,2010.