车牌识别系统算法简介.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
车牌识别系统算法简介
机动车闯红灯是日常交通管理中常见的交通违章现象,不仅扰乱了正常的交通秩序,也是造成机动车交通事故的主要原因之一。“电子警察”就是针对机动车路口闯红灯这种极易造成恶性事故的交通违章现象进行自动监测记录,做到了无人值守,不间断监测,证据充分正确。
车牌识别技术(Vehicle License Plate Recognition,VLPR)是计算机视觉和模式识别技术在现代智能交通系统中的一项重要研究课题,是实现交通管理智能化的重要环节。它是以数字图像处理、模式识别、计算机视觉等技术为基础的智能识别系统,它利用每一个汽车都有唯一的车牌号码,通过摄像机所拍摄的车辆图像进行车牌号码的识别。在不影响汽车状态的情况下,计算机自动完成车牌的识别,从而可降低交通管理工作复杂度。车牌自动识别技术在车辆过路、过桥全自动不停车收费,交通流量控制指标的测量,车辆自动识别,高速公路上的事故自动测报,不停车检查,车辆定位,汽车防盗,稽查和追踪车辆违规、违法行为,维护交通安全和城市治安,防止交通堵塞,提高收费路桥的服务速度,缓解交通紧张状况等方面将会起到积极的作用。
针对以往车牌识别算法的缺点和不足,例如识别率低、识别速度慢、车牌定位不准确等,本文提出了一种新的基于小波分析的改进车牌定位算法,同时将引入动量因子的BP神经网络应用到字符识别,加快了网络的训练过程。
2 基于小波变换和神经网络的车牌识别技术总体设计
2.1 车牌定位算法的基本思路
在某一个相位的红灯周期内,如果检测到有车辆通过,触发视频采集模块采集前端摄像机传送来的视频流,进行图像采集,采集到的图像是24位的真彩色图像,首先将图像进行灰度变换,转换为256色的灰度图。在车牌区域的局部图像内,字符笔画与车牌背景间的亮度反差形成明显而密集的边缘,上升缘与下降缘交替出现。利用车牌区域的这一高频特征,采用小波分析的多分辨率思想,进行水平方向上的小波变换,小波变换后的高频部分可以突出车牌区域,后继处理只需要对高频图像进行变换,即可定位出车牌。采用这种方法可以将运算量减少一半,大大缩短了车牌定位的时间。
接下来,利用局部阈值方法,将高频图像部分二值化。此时的图像可能含有一些干扰信息,因此要先对其进行中值滤波,以消除一些不必要的噪声。考虑到数学形态学的腐蚀和膨胀运算可以分别起到突出轮廓和填充空洞的作用,因此利用数学形态学的闭运算来突出车牌的轮廓和消除孤立的部分。然后根据对车牌的先验知识(例如长宽比在一定范围内等)提取车牌的候选区。最后,将车牌候选区域变换到HSI色彩空间,通过判断背景的颜色来确定准确的车牌区域。该算法的流程图表示见图1:
图1 车牌定位算法
2.2 字符识别算法的基本思路
首先,将已经确定的车牌区域变换成灰度图。利用中值滤波进行预处理,然后利用中值滤波消除牌照上的污点,利用HOUGH变换对车牌进行倾斜度矫正。接着采用自适应阈值法,将图像二值化。利用竖直方向的投影具有波峰、波谷间隔出现的特性,将字符进行分割。最后,将分割的字符大小归一化后,送入改进的BP神经网络进行字符识别。改进的BP神经网络采用了动量因子,实验表明采用该方法大大缩短了网络的训练时间。字符识别流程图如图2所示:
图2 字符识别算法
3 车牌定位中小波变换的运用
本方案使用Mallat一维分解算法实现图像的小波分解。假设2j=W,即现在的图像分辨率为j,则待变换的图像表示为f j(n),则离散函数f j(n)的小波分解为:f j(n)=w j-1-f j-1其中,,
,,。上式的分解中,W j-1代表了图像的变化比较明显的部分,即图像的高频部分。而f j(n)代表图像所包含的基本信息,即图像的低频部分。将图像分解为低频和高频部分后,车牌字符、边缘等变化比较明显的部分就包含在一维小波分解后的高频图像部分中了。水平方向小波分解的程序流程图见图3所示。
图3 小波变换流程图
图4为图像的一维水平和竖直方向上的小波变换(增加对比度后的效果)。
图4 小波变换
由图4可以得出,小波变换低频系数图像保持了原图像轮廓的主要信息,而高频图像反应了原图在不同方向上的细节信息。
分析小波高频图像二值化后的水平投影图可以得到:尖峰的宽度即为车牌上下方向的大致坐标。从竖直投影图可以看出,变化平缓的部分为车牌左右方向的大致坐标。但图像中存在的噪声对准确识别车牌位置仍然有很大的干扰,但干扰噪声明显比采用边缘检测算法要少的多,更重要的是只需要对高频图像进行检测,运算时间缩减了一半,只需要扫描半幅图像。
4 字符识别中改进BP神经网络的运用
4.1 字符识别总体设计
车牌的第一个字符为汉字,第二为英文字母,第三个字符为英文或阿拉伯数字,第四至第七个字符为阿拉伯数字,同时考虑到过于复杂的神经网络结构会增加网络训练时间,同时计算量也会增大,所以采用四种不同结构的BP 神经网络分别进行识别。字符识别的过程如图5所示:
图5 字符识别原理
4.2 BP神经网络的设计
(1) 网络种类以及网络层数的确定
神经网络的许多特性正是由于隐含层的存在才具备的。然而,具体取多少隐含层合适至今为止却没有确定的规律可循,不同的应用对象,与其相适应的网络结构差别很大。本文中采用具有一个隐含层的三层BP神经网络。考虑到BP神经网络训练速度慢,容易陷入局部最小,这里采用加入动量因子的改进BP算法来构造汉字神经网络。
(2) 传递函数的确定
由于BP网络的非线性逼近能力是通过S型传递函数体现出来的,所以隐含层一般采用S型传递函数,输出层的传递函数可以采用线性或S型传递函数。当希望网络的输出范围无限制时,应当使用线性传递函数。当用S型传递函数作为输出层的传递函数时,其非线性逼近速度快于线性传递函数,但此时的网络输出被限制在(0,1)或(-1,l)。在我们设计的神经网络汉字识别器中,为了减少神经网络输出层的神经无数,我们采用二进制编码来作为输出的目标向量。故我们在输出层采用对数S型传递函数,以限制输出范围在[0,1]范围内。
(3) 输入层个数的确定
输入层个数根据待识别字符所抽取的特征向量维数大小来确定。考虑到速度和精度双重因素,因此特征向量维数不能太高。过低的维数将无法描述汉字之间的差异,较高的维数则对于待识别图像的微小偏移比较敏感。在本系统中,特征提取采用的是基于投影图和轮廓提取的方法进行的,网络的输入层个数应取为:96个,即为竖直投影图的像素个数加上水平投影图的像素个数。
(4) 输出层神经元个数的确定
在系统中,神经网络输出层神经元个数是依据所需要识别的字符数目来确定的。此外,为减少输出层神经元数,我们采用二进制编码来作为输出的目标向量。举例而言,在车牌的汉字只有30多个,那么把30多个汉字进行二进制编码,最少需要5位,如00000,00001,00010等等,故共需要5个输出端,其目标向量即为上述的二进制的编码值。对于字母数字神经网络,需要识别的字符个数有36个,把这36个字符进行二进制编码至少需要6位,因此字母数字神经网络的输出层神经元的个数是6个。但是,我们所选取的神经网络的激励函数为S型的函数,其图形如图6所示: