1 引 言
智能交通系统是一个热点研究领域,受到日益广泛的关注。车牌识别系统(LPR)是计算机视觉、模式识别技术在智能交通领域的一个重要应用,包括车牌定位、车牌字符分割、字符识别三部分。其中车牌定位是整个系统中的关键步骤。
目前车牌定位方法主要有:
(1)基于Hough变换的方法,分析车牌具有明显的矩形边框,利用Hough变换检测区域边界实现定位。
(2)基于边缘检测的方法,利用了车牌字符边缘丰富的特征,结合数学形态学或区域生长方法实现牌照定位。
(3)基于神经网络的方法,利用图像的颜色或纹理特征训练神经网络,然后用训练好的分类器对图像各个像素进行分类,再对分类结果综合,得到牌照的准确定位。然而由于光照不均、污染等因素影响,可能使得牌照区域边界不明显或存在多个干扰区域,从而增加了准确定位的难度。
要提高车牌定位的精度,应充分利用他自身提供的信息,突出车牌区域而抑制非车牌区域。车牌区域有着丰富的纹理,寻找一种良好性能的分类器,凸现这种纹理特征,使他与其他区域区别开来。支持向量机(Support Vector Machine,SVM)正是这样一种分类学习机制,建立在结构风险最小化(Structural Risk Minimization,SRM)准则之上,已经在文本识别,人脸识别,纹理分类等模式识别领域取得了成功。
本文使用SVM机制自动定位车牌区域,首先对每幅训练图像切分成若干个N×N大小的图像子块,把每个字块分别标注为车牌和非车牌区域两类,提取子块图像的特征向量训练SVM分类器;然后使用该分类器对测试图像中的各个像素进行分类,最后通过后期处理结合车牌的先验知识实现车牌区域的定位。
2 SVM原理
SVM基于SRM准则构造最优超平面,使每类数据之间间隔最大,同时保持分类误差尽可能小。Cover定理指出:一个复杂的模式识别分类问题,在高维空间比低维空间更容易线性可分。实际上SVM实现了这样的思想:通过某种事先选择的非线性映射将向量x映射到一个高维特征空间,然后在这个空间中构造最优分类超平面。
对于两类模式分类问题,在非线性可分的情况下,通过一个非线性变换φ:x→φ (x),将给定的模式数据映射到高维特征空间,再构造分类超平面,表示为决策面:
考虑到两类样本离决策面都应有一定距离,决策面应满足不等式约束:
完全满足式(2)的超平面是不存在的。考虑到存在一些样本不能被决策面正确分类,引入松弛变量ξi(≥0),约束条件式(2)变为:
满足要求的超平面不止一个,寻找最优超平面可以归结为二次规划问题:
其中C被称为惩罚因子,通过C可以在分类器的泛化能力和误分率之间进行折衷。利用拉格朗日函数求解可得优化问题(4)的对偶形式,最大化函数:
求解式(5)可以得到ai,代入式(7)可以确定ω,分类函数可表示为:
3 SVM定位车牌区域
车牌区域准确定位是一种非线性可分的模式分类问题。
3.1 特征提取
利用SVM自身结构可以实现有效的特征提取,选择直接提取像素灰度特征。图像像素点之间不是孤立的,相互之间存在着相关性,体现了一种纹理。可以通过提取一些特定像素的灰度值作为整幅图像的特征,同时减少了计算量。首先将每幅图像切割成若干个N×N子块,再将每一子块标注为牌照区域(+1)和非牌照区域(-1)两类,然后使用图1所示“米”字型模型提取像素灰度值(图中阴影为要提取的像素点)。这样每幅子图的特征维数由N×N减少到4N-3,提高了训练和分类速度。
3.2 SVM分类器
SVM分类器分为三层结构,结构示意见图2。输入层的维数为子图的特征维数4N-3,输入值是灰度值。隐含层的维数是由训练获得的支持向量决定,即由训练阶段自动获得,而且二次规划在凸集下的解是全局最优解,避免陷入局部最小。隐含层计算输入向量与支持向量之间的内积,完成非线性映射,通过核函数一步来实现的。输出层的输出就是对隐层的输出与权值ωi的乘积求和,权值aiyi也是在训练中获得的。
SVM中研究最多的核函数主要有三类:多项式、径向基函数(RBF)和多层Sigmoid神经网络。实验中使用的是多项式核函数,形式为:
作为一种基于样本学习的方法,我们希望训练样本集尽可能地大,以获得比较充分的代表性。然而考虑到实际的限制,这个尺寸又必须是适中的。因此,问题就是如何构造一个全面又可行的训练样本集。对于车牌定位问题,所有包含牌照区域的图像可以作为正样本,困难点是收集负样本,因为实际上存在太多的不包含牌照的图像可以作为负样本。如何在这些图像中选取具有代表性的子集,实验中采用了一种叫“自举”(bootstrap)的方法,他已被Sung和Poggio成功地应用于人脸识别。主要思想就是一些负样本(非牌照)是在训练中获得而不是在训练以前,具体实现步骤如下:
(1)建立包含正样本(牌照区域)和负样本(非牌照区域)的训练集合N1;
(2)用N1训练SVM;
(3)用训练好的SVM分类器对随机选取的非牌照样本进行分类测试,收集那些被错分为牌照的样本;
(4)随机选取20%的错分类样本加入到训练集N1;
(5)重复(2)~(4)步直至没有再发现错分的样本;
(6)使用最终获得的N1训练SVM。
图3显示了一些用于训练的样本。
最后,用训练好的SVM分类器扫描全图,根据输出类别,对每个N×N小窗口的中心像素做出判断。如果输出+1就认为他是牌照区域,赋值为255;否则,则认为他不是牌照区域,赋值为0。如图4(a)所示。
SVM通过训练选择对分类超平面起决定作用的支持向量,就像选择了一组特定的滤波器,突出了牌照区域。在SVM分类器中滤波器的数目和系数是在训练中自动获得的。
3.3 分割牌照区域
对每个像素做出分类判断后,得到一个二值图像,还必须进行一些处理,其目的是合并感兴趣区域和去除噪声。本文采用数学形态学对二值图像进行处理,在此基础之上再做水平和垂直两个方向的投影,最后,根据投影并结合车牌自身的一些先验知识,如长宽比、车牌的字符数、字符间距,实现牌照区域的定位。分割过程主要包括以下几个步骤:
(1)首先训练SVM分类器,用他扫描图像,对像素进行分类,获得分类后的二值图像。
(2)应用数学形态学方法对分类结果所得图像进行处理、去除噪声。
(3)再对图像做水平投影和高斯迭代平滑处理。
(4)确定牌照水平区域:在平滑处理后的水平投影图中,获取峰值点以及与这些峰值点最接近的左右侧谷值点,由左右侧谷值点确定一个水平区域的高度g,峰值大于车牌最小宽度F时,该区域是车牌可能所在的水平区域。其中:F=Rmin×g,Rmin为标准车牌宽高比的最小值。
(5)确定牌照垂直区域:对于车牌可能所在的水平区域进行垂直投影(同样采取高斯叠代平滑),由垂直投影图将水平区域分成一块块较小的区域,计算出最大字符间距D,将间距小于等于D的区域合并。其中:D=Tmax×Rmax×g,Rmax为标准车牌宽高比的最大值,Tmax为标准车牌最大字符间距与车牌宽度之比。合并后区域的宽高比大于Rmin的为车牌可能所在的区域。
(6)牌照的确定与分割:根据标准车牌的字符个数和笔划数的范围,检测各区域水平方向上的跳变化次数,若在该范围内则认为该区域为车牌所在的区域,然后在含有牌照的原图中切出与(4)中相应的区域。
4 实验结果分析
实验收集了200幅车牌图像,任意选取100幅作为训练样本,还收集了一些不包含车牌的图像作为自举训练方法的样本。
程序使用Microsoft VC++6.0编写。训练和识别所用的图像子块尺寸N取15,特征数据归一化在0~1之间。核函数多项式的次数d的值取5,SVM的惩罚因子C取100,训练SVM的算法采用的是JohnC.Platt提出的序列最小优化算法。剩余100幅图像作为测试样本,其中能正确定位的有93幅,有7幅没有正确定位。引起错误的原因主要有图像中相似的字符区域过多或者图像本身过于模糊,相似区域过多干扰了牌照区域,而图像模糊则损失了牌照区域有用的纹理信息。实验结果表明,SVM在小样本下可以获得较好的识别效果。
图4给出了图3(b)中示例图像车牌定位过程,图4(a)为经过SVM分类输出的二值图,图4(b)为数学形态学滤波处理后的结果,图4(c)为最终车牌定位结果。
5 结 语
车牌定位是一种非线性可分问题,牌照区域包含了丰富的纹理信息,利用这个特征可以实现牌照区域的定位。本文使用SVM对含牌照的汽车图像中像素进行分类,再经过数学形态学处理并结合牌照先验知识实现定位。实验表明该方法取得了较好的定位效果。