作者:bonteng 点击次数:5450 发布时间:2020-7-25 7:16:25
针对车牌识别系统的车牌精确定位和车牌字符准确识别问题。提出一种基于SVM(支持向量机)和BP神经网络的车牌定位与识别算法。通过将HSV颜色空间和形态学方法相结合确定候选轮廓,以判断轮廓外接矩形的面积和长宽比筛选符合车牌特征的区域,并利用训练好的SVM模型对候选车牌区域进行测试判断,终精确定位车牌的位置。此外,还可使用了BP神经网络进行车牌字符识别。经验证,该系统适用于复杂的车牌定位环境,且识别速度快,准确率高。
车牌识别系统是图像处理与模式识别技术在智能交通中的应用,车牌的精确定位和车牌字符的准确识别是车牌识别系统的关键问题。常用的车牌定位方法有基于数学形态学的方法、基于彩色分割的方法、基于颜色和纹理分析的方法、基于小波和形态学的方法和基于混合特征的方法等。车牌字符识别方法有基于模板匹配的方法、基于Gabor变换和支持向量机的方法、基于小波和神经网络的方法等。本文首先利用HSV颜色空间和边缘特征获取车牌的候选区域,利用SVM机器学习方法判断终的车牌区域,该方法可获得较高的车牌定位率。提出一种改进的粗网格车牌字符特征提取方法,利用BP神经网络进行训练识别,可获得较好地字符识别准确率。后利用OpenCV机器视觉库设计了整个车牌识别系统。
1 车牌定位
本文采用HSV颜色模型、垂直边缘检测和SVM分类器结合的方法进行车牌的定位。算法的工作流程如图1所示。
图1 车牌定位流程
1.1 基于HSV颜色模型的二值化
由于RGB颜色模型对于两种相近的颜色,其R、G、B值相差可能较大,因此在RGB颜色空间直接进行车牌定位变得困难。所以,本文使用HSV颜色模型来定位车牌。HSV颜色模型是根据颜色的直观特性创建的一种圆锥模型,其中H表示色调(Hue);S表示饱和度(Saturation);V表示亮度(Value)。由RGB模型到HSV模型的转化公式可由式(1)得到
其中,max=max(R,G,B),min=min(R,G,B)。
中国车牌的底色主要有蓝色、黄色、黑色和白色4种,由统计数据可得到各颜色在HSV空间中的范围,如表1所示。
其中蓝底白字车牌和黄底黑字车牌使用为广泛,车牌识别系统主要针对这两种类型车牌进行颜色定位,对于其他类型车牌使用垂直边缘检测进行定位。
为防止黄色车身蓝底车牌和蓝色车身黄底车牌中车身颜色的干扰,本车牌识别系统对转换为HSV空间的图像分别进行了两次二值化处理[9]。首先次以蓝色底色为基准,将图像中H、S、V分量落在表1蓝色区域中的像素标记为白色像素,也即设为255,否则标记为黑色像素,即为0。第二次以黄色底色为基准,得到另一幅二值化图像。这样就将HSV图像转换为两幅二值图像了。实验处理结果如图2所示,其中图2(a)为原始图像,图2(b)是以蓝色为基准转换的二值化图像,图2(c)是以黄色为基准转换的二值图像。得到的两幅二值图将送人后续流程进行处理识别。
1.2 垂直边缘检测
基于HSV颜色的车牌定位由于光照或者周围环境颜色的干扰导致有些情况不能很好地定位,而根据车牌字符本身的特点,采用垂直边缘检测则可较好地实现车牌定位。由于输入的原始图像包含很多噪声和细小的尖刺,这些对于后续的边缘检测会产生很多干扰,所以首先要对图像进行去噪处理。本系统采用高斯模糊算法对原始图像进行处理。
车身纹理主要是水平边缘,而车牌字符纹理主要为垂直边缘,针对这个特点采用垂直边缘检测可以对车牌进行粗定位。本系统采用Sobel算法实现垂直边缘检测。Sobel算法使用模板卷积的方法对图像进行变换,计算过程如式(2)所示式中,A代表原始图像;Gx和Gy分别代表经横向及纵向边缘检测的图像;G为合并横向和纵向后的梯度大小;θ为梯度的方向。OpenCV中采用函数Sobel实现横向的卷积计算,对所得结果求绝对值,这样便得到了图像在x方向上的Sobel检测结果,也即检测出了图像的垂直边缘。为便于后续形态学处理,需要对边缘检测的结果图像进行二值化处理,使用OTSU阈值算法实现二值化,图3(a)的处理结果如图3(b)所示。
1.3 形态学处理
经过上述处理后,图像中车牌区域部分由于字符的存在会包含众多孔洞,为了去除噪声并且填补这些孔洞,可采用数学形态学的方法进行处理。数学形态学运算包括腐蚀、膨胀、开运算和闭运算。
开运算可滤除图像中较小的区域,闭运算能够去除区域的孔洞,填平狭窄的沟壑和轮廓的缺口,并可平滑图像的轮廓。系统采用闭运算使车牌字母可以连成连通区域便于取轮廓。闭运算处理前后结果分别如图4(a)和图4(b)所示,为方便显示,图中只截取了部分区域。从图中可看出,经过闭运算处理后图像中车牌部分由原先包含众多裂痕和孔洞的区域连成了整体的一块,这样便于后续截取轮廓提取车牌。
1.4 SVM车牌定位
为使用SVM进行车牌精确定位,首先要得到候选车牌区域。为此先对形态学处理后的结果进行取轮廓,然后对轮廓求外接矩形。利用车牌的几何特征对得到的外接矩形进行滤除,即计算:(1)外接矩形宽高比Ratio;(2)外接矩形面积Area。设定车牌的大小宽高比,车牌面积的大小值,然后逐个判断外接矩形的Ratio和Area是否同时满足设定的要求。以图4(b)为例,经过处理后的结果如图5(a)所示。因为车牌倾斜角通常较小,为此可通过角度判断进一步去除不可能为车牌的矩形。后对剩下的矩形进行旋转校正和偏斜扭正,再进行归一化处理,这样便得到了SVM判别模型的车牌候选区域。图5(a)处理后的结果如图5(b)所示。
图5 候选车牌区域确定
SVM算法是以结构风险小化为准则的机器学习方法,在解决小样本、非线性及高维模式识别中表现出很多特有优势。本系统使用径向基核函数映射的C-SVM实现车牌和非车牌的分类。
首先要训练SVM车牌判别模型,通过前面的处理过程可得到归一化了的车牌候选区域,手工分类处理,得到车牌区域的图片1 000张,非车牌区域图片2 000张。选取分类器特征向量为样本的水平和垂直直方图值,使用径向基核函数将特征向量转化为与数据总数一样的数量,即3 000维。使用OpenCV函数svm.train_auto,设置相应参数可训练得到车牌判别模型。将候选车牌区域的特征向量输入训练好了的车牌判别模型,从而可预测候选区域是否为车牌,这样就实现了SVM车牌定位。以图5(b)为例,经过判断确定为车牌的是左上角首先个区域。
2 车牌字符分割
车牌字符分割是将车牌区域分割成单个的字符,是车牌字符识别的前提。中国的标准车辆牌照包含有7个字符,首字符为汉字,第2个字符是英文大写字母,后面5个为大写字母与数字的混合。单个字符宽度为45 mm,高度为90 mm,第2个字符和第3个字符之间的间隔为34 mm,间隔中间有一个小圆点,其余字符间隔为12 mm。利用车牌的这些特征,本文提出一种新的字符分割算法。
首先将定位得到的车牌区域进行二值化处理,如图6(a)所示。设定每行元素的阶跃数,当阶跃数目<7时认为是柳钉,将该行元素都设置为0,这样就去除了车牌上的柳钉的干扰,处理结果如图6(b)所示。对二值化车牌图像寻找外接轮廓,并求这些轮廓的小外接矩形,通过验证矩形的长宽比和面积大小,去除不符合车牌字符区域的矩形。由车牌字符分布结构的特点,首先寻找满足第2个车牌字符位置的矩形,按顺序依次可得到后面5个字符的矩形。由于汉字的特殊性,可通过第2个字符的位置往前推,猜测中文字符的位置和大小[10]。终,对上述分割处理得到的7个车牌字符进行归一化处理,结果如图6(c)所示。
3 BP神经网络字符识别
目前车牌字符识别的方法有模板匹配法、特征匹配法和神经网络等方法。本文采用BP神经网络进行字符识别。根据车牌字符特点使用改进粗网格方法进行特征提取。首先把分割得到的字符大小归一化为20×20的二值化图像,统计水平直方图值和垂直直方图值,这样得到40维特征向量。然后将字符缩放到10×10大小,这样可得到100个小区域,把每个小区域的值作为特征数据。后可得到车牌字符的特征向量X=(x1,x2,…,x140)。由此可确定BP神经网络输入层神经元个数为140[9-10]。
由于训练样本限制,车牌汉字只选取了20个省份的车牌数据,加上10个数字字符,24个字母字符(除去字符I和O),这样可确定输出层神经元个数为54个,网络输出采用对应类别取1的方式来表达。确定隐含层神经元数目方法较多,本系统通过调试确定隐层数目为40。
选取sigmoid函数作为BP网络激活函数,通过OpenCV提供的CvANN_MLP神经网络类进行BP网络的训练。使用CvANN_MLP_TrainParams这一类设置神经网络的训练参数。终,利用CvANN_MLP的train函数进行样本训练,并将训练结果保存在xml文件中。进行字符识别时首先要加载BP的训练模型xml文件,然后使用Cv_ANN_MLP的predict函数进行字符识别。经过实验验证数字和英文字母的识别率可达96.23%,汉字的识别率可达84.56%。
4 结束语
本文中提出了基于SVM的车牌定位方法和基于BP神经网络的车牌字符识别方法。采用OpenCV2.4.9和Visual Studio2010开发平台实现了整个车牌识别系统。选用300张不同环境下的车牌图片,经系统识别结果显示,车牌定位率达到98.34%,车牌字符识别率达到92.46%。系统识别算法快速准确,对复杂环境的适应能力较好,且具有较强的鲁棒性和实用性。
电 话:020-81978559
手 机:186-8885-8508
电子邮箱:bonteng@163.com
地址:广东省广州市天河区燕岭路436号