一种基于OpenCV的车牌识别方法

2016-12-22 22:01吕昆金晅宏
软件导刊 2016年11期
关键词:字符识别BP神经网络

吕昆 金晅宏

摘 要:研究了一种基于OpenCV的车牌识别方法。在车牌定位阶段,提出一种综合边缘信息和颜色信息,并结合车牌几何特征定位方法,通过SVM机器学习实现车牌精确定位。在车牌字符分割阶段,通过设定像素跳变阈值去除边框,提出一种结合垂直投影法和字符特征的字符分割算法。在字符识别阶段,提出结合投影和网格的字符特征提取方法,并利用4个BP神经网络进行字符识别。实验表明,该方法定位率高,字符识别快速准确,具有较强的鲁棒性和实用性。

关键词:车牌定位;字符分割;字符识别;BP神经网络

DOIDOI:10.11907/rjdk.161821

中图分类号:TP317.4

文献标识码:A 文章编号文章编号:16727800(2016)011019303

0 引言

随着汽车工业的迅猛发展,人们在享受车辆带来便利的同时,也面临着日益严重的交通问题,智能交通系统由此产生。车牌识别系统不仅是智能交通系统的重要组成部分,也是数字图像处理、模式识别、计算机视觉等学科重要的研究内容,其实现方式是对摄像机所拍摄的车辆图像或视频序列进行分析,通过车牌定位、字符分割、特征提取、字符分割等技术,得到汽车唯一的车牌号码,在智能小区停车管理、高速公路收费系统及公共安全等方面有着广泛应用。本文提出了一种结合边缘信息和颜色信息的车牌定位方法和基于BP神经网络的车牌字符识别方法,可以获得较高的识别准确率。

1 车牌定位

车牌定位就是采用一定算法将车牌区域从整张车辆图片中准确定位出来。车牌定位准确率直接关系到字符识别的成败。目前车牌定位方法较多,常见的有基于数学形态学方法、基于边缘检测方法、基于颜色空间方法等[13]。本文提出一种综合边缘信息和色彩信息,同时结合车牌纹理特征的方法实现车牌粗定位,再结合SVM方法实现车牌精确定位方法,定位流程如图1所示。

1.1 边缘检测

首先读取车牌的原始图像,结果如图2(a)所示,然后利用OpenCV库中的cvtColor函数将彩色图像转换为灰度图像,接着利用medianBlur函数对灰度图像作中值滤波处理,去除图像存在的噪声点干扰,模板大小为3×3。车身纹理主要是水平边缘,而车牌字符纹理主要为垂直边缘,针对这个特点使用Sobel函数对图像作垂直边缘检测,提取字符的边缘信息[4]。利用threshold函数对边缘检测后的图像作阈值化处理,得到边缘二值图像,结果如图2(b)所示。

1.2 基于HSV颜色空间的二值化

由于摄像机采集的车辆图像均是RGB模型,而该模型下R、G、B这3个分量对光线的强弱较敏感,因此需要将RGB模型转换为对光照等外部因素不敏感的HSV模型。HSV是根据颜色的直观性创建六角锥体模型, 其中H表示色调,S表示饱和度,V表示明度。RGB到HSV转换如式(1)所示。

1.3 形态学处理

得到二值图像后,需要对图像进行开运算和闭运算处理。其中开运算可去除图像中较小的区域,闭运算能够填充图像内小型黑洞,连接邻近物体,并可平滑图像的轮廓。本文选用的腐蚀膨胀核大小为10×5。首先采用闭运算,使车牌区域连通为一个整体,结果如图4(a)所示,接着采用开运算去除较小区域,结果如图4(b)所示。

1.4 粗定位

提取形态学处理后的图像轮廓,对轮廓求外接旋转矩形,并利用车牌的几何特征对外接旋转矩形进行滤除, 即计算:①外接旋转矩形宽高比Ratio;②外接旋转矩形面积 Area。假设有40%误差范围,设定车牌的宽高比为22/7,再设定车牌面积的最大值和最小值,然后逐个判断外接旋转矩形的 Ratio 和 Area 是否同时满足设定条件。粗定位结果如图5所示,其中图5(a)为提取的轮廓图,图5(b)为提取出的车牌候选区域。

1.5 SVM精确定位

在开始分类前,需要训练分类器。本文使用200车牌图像和200张非车牌但大小为144×48像素的图像训练车牌识别模型。分类器特征向量选用HOG特征向量,使用CvSVMParams结构设置参数,利用CvSVM类训练分类器。分类器训练好后,提取候选车牌区域的HOG特征向量,将提取的特征向量输入训练好的车牌判别模型,从而预测候选区域是否为车牌,实现车牌精确定位。

2 字符分割

2.1 倾斜校正

由于拍摄的角度问题,车牌图像可能会出现倾斜情况,这样会对字符分割结果造成较大影响,因此,需要对图像进行倾斜校正。本文利用Hough 变换将直线提取出来,并计算直线与水平和垂直方向的角度,然后将原有图像旋转完成倾斜校正[5]。倾斜校正完成后,再采用Otsu方法对图像进行阈值化处理,将字符作为前景提取出来,结果如图6(a)所示。

2.2 边框去除

车牌边框和铆钉会对字符分割产生较大影响,所以在字符分割前,需要消除边框和铆钉的干扰。本文采用基于像素跳变次数的统计方法来去除边框和柳钉的干扰[6],具体步骤如下:

(1)设定水平像素跳变阈值为14。从车牌二值图像的中间向上进行行扫描,统计每一行的像素跳变次数,当某一行的像素跳变次数小于14时,该行即为字符区域的上边界;同理,可以得到字符区域下边界。

(2)字符区域的垂直像素跳变次数一般大于或等于2,设定一个阈值Q,从车牌二值图像的左边界向中间进行列扫描,统计每一列的像素跳变次数,当存在连续的Q列像素跳变次数都大于或等于2时,就判断为字符左边界。同理,可以找到字符右边界。结果如图6(b)所示。

2.3 车牌字符分割

中国标准车辆牌照有7个字符, 其中首字符为汉字, 第2个字符是英文大写字母,后面5个为大写字母与数字的混合。单个字符宽45mm,高90mm,字符间距一般为10mm,其中第二、三个字符间距为34mm。本文结合车牌的字符特征和垂直投影法,提出了一种字符分割方法[7]。

由于字符区域白色像素较多,而非字符区域黑色像素较多,因此通过检测字符与字符间白色像素数目的波谷,确定每个字符的左右边界。因为车牌第二、三个字符之间距离比其它字符间距离大很多,所以先根据字符大概的像素大小,找到第二字符的右边界。接着从第二个字符的右边界向左搜索,先分割前面两个字符,接着从第二个字符的右边界向右搜索,分割后面5个字符。最后,对分割得到的字符进行归一化处理,结果如图6(c) 所示。

3 字符识别

字符识别方法有模板匹配法、统计特征匹配法和神经网络法等[810],本文采用BP神经网络对字符进行识别。在字符识别前,需要提取字符特征,本文根据车牌字符特点,使用基于像素点网格和像素投影的方法进行特征提取。首先将分割得到的字符大小归一化为12×24的图像,然后对图像分别进行行投影和列投影,并统计每行和每列目标像素点数目,得到36维特征向量。然后将字符图像均匀划分为4×8的网格,再从左向右、从上到下,依次提取每个子网格的占空比、梯度特征,最后连接成一个组合特征,形成一个96维的特征向量。

本文采用4个BP网络来完成字符识别,4个BP网络分别是区分汉字、英文和数字字符的分类BP网络、识别数字的BP网络、识别英文的BP网络、识别汉字的BP网络,所有的BP网络都是三层结构。由于提取的字符特征向量维数为96,因此可以确定输入层的节点数为96。由于训练样本限制,车牌汉字只选取了25个省份的车牌数据,加上10个数字字符,24个字母字符(除去字符I和O),这样确定4个BP网络输出层节点数分别为3、10、24、25,网络输出采用对应类别取1的方式来表达。隐含层的节点数按公式n=sqrt(n1+n2)+a进行设计,其中n1为输入层节点数,n2为输出层节点数,a为l~10的整数。

本文选取sigmoid 函数作为BP网络激活函数,使用CvANN_MLP_TrainParams类来设置训练参数,最终利用CvANN_MLP类训练分类器。分类器训练好后,提取待识别字符的特征向量,输入训练好的分类器完成字符识别。数字、字母和汉字各选用200张测试样本进行实验。实验结果表明,数字的识别率达97.0%,英文字母的识别率达96.6%,汉字的识别率达86.2%。

4 结语

本文提出了一种综合边缘信息和色彩信息,结合车牌纹理特征的定位方法,对车牌进行粗定位。通过SVM机器学习筛选符合车牌特征的候选区域实现车牌精确定位,提出一种结合像素投影和网格的字符特征提取方法,并利用4个BP神经网络对字符进行识别。本文软件开发平台为Microsoft Visual Studio 2013,选用300张不同环境下的车牌图片进行实验,车牌定位率达97.5%,车牌字符识别率达92.5%。实验结果表明,本文提出的方法定位率高、字符识别快速准确,具有较强的鲁棒性和实用性。

参考文献:

[1] 卢雅琴,邬凌超.基于数学形态学的车牌定位方法[J].计算机工程,2005,31(3):224226.

[2] 沈勇武,章专.基于特征颜色边缘检测的车牌定位方法[J].仪器仪表学报,2008,29(12):26732677.

[3] 郭捷,施鹏飞.基于颜色和纹理分析的车牌定位方法[J].中国图像图形学报,2002,7(5):432476.

[4] 毛星云,冷雪飞.OpenCV3编程入门[M].北京:电子工业出版社,2015:154312.

[5] 杨思源.基于OpenCV的车辆牌照识别系统研究[D].西安:西安电子科技大学,2013.

[6] 黄骥.汽车牌照识别系统中车牌定位与校正及字符分割的研究[D].南京:南京航空航天大学,2007.

[7] 王璐.基于 MATLAB 的车牌识别系统研究[D].上海:上海交通大学,2009.

[8] 谷秋頔,白艳萍.基于模板匹配的车牌数字与字母识别[J].数学的实践与认识,2011,42(20):6671.

[9] DANIEL LELIS BAGGIO.深入理解OpenCV:实用计算机视觉项目解析[M].刘波,译.北京:机械工业出版社,2014:116136.

[10] 郭荣艳,胡雪惠.BP神经网络在车牌字符识别中的应用研究[J].计算机仿真,2010,27(9):299301.

(责任编辑:杜能钢)

猜你喜欢
字符识别BP神经网络
一种改进深度学习网络结构的英文字符识别
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别
机加工件点阵字符识别研究