2008年7月12日星期六

车牌识别系统

机动车闯红灯是日常交通管理中常见的交通违章现象,不仅扰乱了正常的交通秩序,也是造成机动车交通事故的主要原因之一。“电子警察”就是针对机动车路口闯 红灯这种极易造成恶性事故的交通违章现象进行自动监测记录,做到了无人值守,不间断监测,证据充分正确。
车 牌识别技术(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,则待变换的图像表示为fj(n),则离散函数fj(n)的小波分解为:fj(n)=wj-1-fj-1 其中, 。上式的分解中,Wj-1代表了图像的变化比较明显的部分,即图像的高频部分。而fj(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所示:

图6 Sigmod 函数


由于在无穷远处才能取得极值,这里的编码取为0.1和0.9来分别表示0和1。例如鲁的编码为:[0.1, 0.1, 0.1 ,0.1, 0.1]。
(5) 隐含层神经元个数的确定
神经网络隐含层的神经元个数过少,会导致训练时间过长,迭代次数多,权值来回调整,不易稳定。隐含层神经元个数过少,会增加网络的学习时间,网络所需要的存储容量也变大。因此,综合以上几点,汉字神经网络隐含层神经元的个数选取为18个。
(6) 初始值的选取
由 于神经网络系统是非线性的,故网络初始权值对于学习是否达到局部最小、是否能够收敛以及训练时间的长短的关系很大。如果初始值太大,使得加权后的输入落在 S型传递函数的饱和区,从而导致其导数 f'(x)非常小,而在计算权值修正公式中,因,当f'(x)~0时,则有δ~0,这使得Δδ~0,从而使得调节过程几乎停顿下来。所以,一般总是希望经 过初始加权后的每个神经元的输出值部接近于零,这样可以保证每个神经元的权值都能够在它们的S型传递函数变化最大之处进行调节。所以一般取初始权值在 (-1,l)之间的随机数,而且要求数值比较小,这样可以保证每个神经元在一开始就处在它们传递函数变化最大的地方。
在对系统进行仿真测试时,使用时间作为种子,来产生随机的初始值。函数srand((unsigned)(time(NULL)));Wij= (double)(rand())/(32767/2) -1用来产生在[-1,1]内的初始值。
(7) 学习速率的选取
学 习速率决定每一次循环训练中所产生的权值变化量。大的学习速率可能导致系统的不稳定;但小的学习速率将导致较长的训练时问,可能收敛很慢,不过能保证网络 的误差值不跳出误差表面的低谷而最终趋于最小误差值。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围一般在 [0.01~0.8]之间。这里的学习速率选取为0.4。
(8) 动量因子的选取
动量因子的引入可使网络权值的变化不仅反映误差曲面局部的梯度信息,而且反映了误差曲面最近的变化趋势。其实质是将最后一次权值变化的影响,通过一个动量因子来传递。引入动量因子可以平滑误差曲面梯度方向剧烈变化的作用,从而在一定程度上解决了局部最小值的问题。
(9) 总结
将前面所确定的各个参数进行总结。
(10) 神经网络的训练
设计完神经网络的结构之后,接下来就需要对网络进行训练。
图7中曲线2所示为采用动量因子的汉字神经网络训练误差曲线图,曲线1所示为采用一般的BP神经网络的汉字神经网络训练误差曲线图。可以明显看出,改进的BP算法比一般的BP网络收敛更快,大大缩短了网络训练所使用的时间。

图7 误差曲线图


4.3 字符识别测试结果
为了验证所设计的神经网络的有效性,测试集选取了300幅图片进行了实际测试,表1列出了各个神经网络识别的一些参数。
表1 四种网络训练参数表

点击看原图

实 验结果表明,汉字识别网络对于光照条件和清晰度较好的汉字基本能够识别出来,具有较强的容错能力和学习能力。同普通的BP神经网络相比,网络收敛速度更 快,可以有效地提高系统的抗干扰性和识别率。字母数字网络能够识别大部分牌照,但对于一些污染严重、光照条件弱的车牌无法进行准确识别。

5 结束语
基于小波的车牌定位算法,可以较好的进行车牌定位,定位率可以达到95%以上。在光照条件较好的情况下,对字符的识别率可以达到80%以上,对于光照条件较差的图片,识别率相对较差一些。本文选取了300幅图片进行了实际的测试,测试的结果如表2所示。

表2 字符识别测试结果

点击看原图


实际的工程测试表明所用的算法在保证系统运行稳定的情况下,可以快速、比较准确的进行车牌的定位。

没有评论:

发表评论

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客

  • 《Getting Things Done》读书笔记 - 本文来自 inertial 原创投稿。 我第一次听说《Getting Things Done》这本书的时候误以为它和世面上的那些成功学书籍没什么区别,后来在不少书中看到了这个名字,也看见了很多人的推荐,由此产生了很大的兴趣。上个月正好有不少空闲,就抽时间把这本书读完了。 本来打算读英文原版,但是原版的生...
    5 年前
  • [原]Linux下编译使用boost库 - Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与...
    6 年前
  • [原]猎头、培训与咨询的价值(2)【补1】——北漂18年(93) - 【上期用手机写的,同时用语音输入转化成文字,错字较多,经好友霍师傅提醒本期重写,并增加一部分新内容】 简单谈下我对猎头、培训与咨询的看法。三样都干过,算是有些浅见。 猎头 简单的说就是人才中介。虽然在公司看来是可以直接解决现有企业问题的一个直接方法,但很多时候都不太管用。 猎头费一般是人才的一个月月...
    6 年前
  • OpenCV統計應用-Mahalanobis距離 - Mahalanobis距離是一個可以準確找出資料分布上面極端值(Outliers)的統計方法,使用線性迴歸的概念,也就是說他使用的是共變數矩陣以及該資料分布的平均數來找尋極端值的產生,而可以讓一群資料系統具有穩健性(Robust),去除不必要的雜訊訊息,這邊拿前面共變數矩陣的資料為例,並且新增了兩個點座標向量來做...
    15 年前
  • 努力推进模式识别实际产品的开发与应用 - Salu 无论是手写体识别、文档处理、人脸识别、基于内容的图片搜索、嵌入人工智能的搜索技术、虚拟网络社区、还是其它相关新科技下的信息整合领域,现在都在努力实用化。 前两年、即使现在还有很多人在抱怨说人脸的方法都不能用,但是就今年出现的和正在做的有关人脸识别实际应用的各种形式的产品可以说如雨后春笋。这是一个趋...
    16 年前