车牌定位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理和模式识别》期末大作业
题目:车牌定位
班级:计算机应用技术
姓名:杭文龙
学号:6121602005
1.引言
1.1 选题意义
汽车牌照自动识别系统是以汽车牌照为特定目标的专用计算机视觉系统,是计算机视觉和模式识别技术在智能交通领域应用的重要研究课题之一,是实现交通管理智能化的重要环节,它可广泛应用于交通流量检测,交通控制与诱导,机场、港口、小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。
目前,发达国家LPR(汽车牌照识别技术License Plate Recognition, LPR,简称“车牌通”)系统在实际交通系统中已成功应用,而我国的开发应用进展缓慢,车牌识别系统基本上还停留在实验室阶段。
基于这种现状还有它广阔的应用前景,目前对汽车车牌的识别研究就有了深远的意义。
1.2 课题组成
汽车车牌的识别过程主要包括车牌定位、字符车牌分割和车牌字符识别三个关键环节。
我在此文章中就只说明其中一点,就是车牌定位,其流程如下:
原始图像图像预处理边缘提取车牌定位
原始图像:由数码相机或其它扫描装置拍摄到的图像
图像预处理:对动态采集到的图像进行滤波,边界增强等处理以克服图像干扰
边缘提取:通过微分运算,2值化处理,得到图像的边缘
车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域。
最后得到的便为车牌区域。
本文以一幅汽车图像为例,结合图像处理各方面的知识,利用MATLAB编程,实现了从车牌的预处理到字符识别的完整过程。
各部分的处理
情况如下:
2.预处理及边缘提取
图1 汽车原图
图像在形成、传输或变换过程中,受多种因素的影响,如:光学系统失真、系统噪声、暴光不足或过量、相对运动等,往往会与原始景物之间或图像与原始图像之间产生了某种差异,这种差异称为降质或退化。
这种降质或退化对我们的处理往往会造成影响。
因此在图像处理之前必须进行预处理,包括去除噪音,边界增强,增加亮度等等。
因为噪声主要是一些含高频的突变成分,因此可以通过一个低通滤波器来消除图像中包含的噪声,并使低频成分得到增强。
滤波的方式有两种,一种是空间域滤波,一种是频率域滤波。
在空间域,常见的滤波方式有两种方式,均值滤波和中值滤波。
空间域滤波主要有巴特沃斯滤波器。
在车牌边缘提取之前,两种滤
波方式均采用了。
并与未进行滤波的边缘进行比较。
以下是经处理后的一些图片。
图2梯度锐化后得到的区域
图3经过滤波后的黄色区域
图4 经区域膨胀后得到的图像
图5 车牌区域加深
本次汽车车牌的识别,为了保存更多的有用信息,经过多次比较,选择图4作为后期处理的依据。
边缘的提取采用的是梯度算子,因为其实现过程比较简单,所以在此不多加赘述了。
提取出的边缘含有多个灰度值,要进行二值化处理,选择一个合适的域值。
经多次比较,选取域值T=70,对于灰度值大于T的赋值为255,小于T的赋值为0。
3.车牌提取
经过边缘提取得到的图像,车牌区域在水平方向灰度面积值具有明显频繁的跳变,在垂直方向上的面积投影则出现峰-谷-峰的特性。
根据这种峰谷特点,自动检测车牌位置峰点检测的车牌区域定位方法,并对初步定位后的车牌进一步使用微定位技术。
该方法包括三部分: (1) 车牌的横向定位; (2)车牌的纵向定位; (3) 车牌的微定位。
汽车本身具有一定的特点,一般情况下,牌照都挂在缓冲器上或附近,处于车牌照图像的下半部分,本次分割的主要意图是缩小牌照搜索范围,大致确定出牌照的位置。
对如图2所示的汽车边缘图像f ( x ,y) ,我们首先进行水平方向一阶差分运算,即
g ( i ,j) = | f ( i ,j) - f ( i ,j + 1) |
其中i = 1 ,2 ,3 ,⋯,xw - 1 ,j = 0 ,1 ,2 ,3 ,⋯yw - 1 ,其中xw,yw分别为图像的行数和列数。
然后对水平差分图像的像素沿水平方向累加产生一个投影表T( i) ,如图6所示。
图6 汽车边缘图像的水平面积投影图
一般对应于车牌位置的投影值T( i) 较大,而在车牌上,下行附近的投影值较小,均有谷点存在。
只要能找到这两个谷点,就能大致确定出车牌照的位置,缩小车牌搜索范围。
由图4可以看出,车牌下方的横栏处的T(i)值应该是最大的,而车牌位置就在其附近。
根据这些特定,可定出车牌位置大概在320~350行之间。
类似的方法得出汽车边缘图像的垂直面积投影图
图7 汽车边缘图像的垂直面积投影图
同上可初步得到汽车牌照的列位置在120~210之间。
大致确定的牌照位置如下图。
图8 粗略定位出的汽车牌照
图9 未进行二值化的汽车牌照
图10 二值化的汽车牌照
对初步确定出来的牌照进行微定位,所谓微定位法,就是对基本定位后的车牌图像进行局部分析,以进一步确定字符范围,缩减车牌的左、右和上、下边界,这有利于后续的牌照字符处理。
具体实现如下: (1) 由于车牌近似为一个矩形,上下边缘近似为一条直线,通过简单的灰度变化分析就可以再次定位车牌图像的上下边界,这种情况适合于倾斜度较小的车牌;对于倾斜程度较大的牌照来说,在其横向定位之前就应该利用相关的技术进行车牌的矫正(例如Hough 变换技术) 。
(2)确定左边界: 从左向右扫描,当遇到灰度值大于设定值60之后,停止扫描。
上边界也是利用这种方式得到。
这样就得到首字符的起始位置。
再利用牌照的大小,宽高比一般都是固定的这些先验知识,就可以确定出牌照的具体位置。
本设计中采用的车牌,其宽高比为1:3。
从而确定出汽车牌照的具体位置。
最后提取出的汽车牌照如下图:
图11 经过调整过的汽车牌照
得到上述结果后,对字符分割只后就可以对车牌上的字符进行识别了,分割的主流算法是垂直面积投影法,目前用于车牌字符识别(OCR)中的算法主要有基于模板匹配的OCR算法以及基于人工神经网络的OCR算法。
在此,不对此进行详细讨论,若感兴趣,可以参考APPLICATION AND RESEARCH OF ROI IN LPR SYSTEM [LU Hai-lin,LI Can-ping,WANG Xu-ben]。
本文也是参考其完成的。
4.总结:
4.1 设计过程说明
在汽车车牌识别的整个过程中,查找了很多资料,综合了各方面的信息。
车牌实现的每一步都有许多的方法,各种方法都有其优劣,但是对于具体的图像处理,并不是每一种理论在实践中都可以实现,即使实现了也很难说哪一种方法最合适,还得在具体的实验中比较选择。
以车牌预处理为例,经过滤波和边界增强处理后提取出的车牌效果明显没有未处理的效果理想。
第二点在程序调试的过程中要耐心的检查每一个错误。
测试结果表明,本设计有以下几条优点: 充分利用MATLAB中已有的函数库。
整个程序设计简单易行
识别准确率高
4.2设计工具说明:
车牌识别程序设计能够得以顺利完成。
在很大程度上得利于MATLAB这套软件, MATLAB功能强大,它包括数值计算和符号计算,并且计算结果和编程可视化。
这为编程调试创造了一个便利的环境。
作为图像处理最适用的工具之一,其突出的特点是它包含一个图像处理工具包,这个工具包由一系列支持图像处理操作的函数组成。
所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT 变换等) 、图像分析和统计、二值图像操作等。
在图像的显示方面,MATLAB 提供了图像文件读入函数imread ( ) ,用来读取如: bmp 、tif 、jpg、pcx、tiff 、jpeg、hdf 、xwd 等格式图像文件;图像写出函数imwrite () ,还有图像显示函数image ( ) 、imshow() 等等。
这些,都使编程效率大为提高。
5.讨论
本设计已成功达到了车牌定位的目的,而且准确率也很高。
但是在整个设计过程中,发现了几个值得参考的算法,也试图用这种算法来实现车牌定位,但种种原因,而未采用。
现在次简单讨论一下:
5.1.含8个方向的模板的边缘提取算法
本设计在边缘提取之时,使用的是梯度算子。
这种算法的优点是简单易行,但是因为它不包含边缘的方向,因此对噪声不够敏感。
目前,在图像处理方面使用得最多的是一种可抗噪声的Sobel算法。
它定义了8个方向的模板。
通常物体的边缘是连续且光滑的,而噪声是随机的。
在任一边缘点附近沿边缘的走向总能找到另一边缘点,且这两边缘点之间的灰度差及方向差都不可能很大。
但是噪声则不同,一般情况下,沿任一噪声点的方向(通过上述模板运算得到)不太可能找到与其灰度差及方向差都很小的噪声点。
正是利用这一基本思想,本算法能将实际的边缘点与噪声点区分开来。
加权领域平均算法来进行滤波处理
5.2 加权领域平均算法来进行滤波处理
由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。
但是采用加权的邻域平均算法对图像进行噪声滤除,不仅能够有效地平滑噪声,还能够锐化模糊图像的边缘。
加权的邻域平均算法的基本思想是: 在一个邻域内,除了可以利用灰度均值外,灰度的上偏差和下偏差也能够提供某些局部信息。
算法的计算公式描述如下,用f (x ,y ) 表示原始图像, g (x , y ) 为平滑后点(x , y ) 的灰度值,V x , y 表示以点(x , y ) 为中心的邻域,该邻域包含N 个象素,m (x , y ) 表示邻域V x , y 内的灰度均值。
NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。
则修正的邻域平均法由下式给出:
m - Aım l;N l > max{N g ,N 0}
g(x,y)= m + Aım g;N g > max{N l ,N 0} (1)
m ;else
(1)式(1) 中, A为修正系数,取值范围为0~ 1,其大小反映V x , y 中的边缘状况。
以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。
【参考文献】
[1] 霍宏涛.数字图像处理.机械工业出版社,2003.5
[2] 陈桂明、张明照、戚红雨.应用MATLAB语言处理数字信号与数字图像。
科学出版社,2000
[3] 郎锐.数字图象处理学Visual C++实现.北京希望电子出版社,2002.12
[4] 刘露、强.汽车牌照自动识别技术初探,中国公路网,2003-09-26
[5] 周妮娜、王敏、黄心汉、吕雪峰、万国红.车牌字符识别的预处理算法.计算机工程与应用,2003(15)
[6] 佘新平、朱立.一种具有抗噪声干扰的图像边缘提取算法的研究,2001-6-4
[7] 苑玮琦、伞晓钟. 一种汽车牌照多层次分割定位方法,2004 Vol.9 No.4 P.239-243
[8] 许志影、李晋平.MATLAB极其在图像处理中的应用.计算机与现代化,2004(4)
[9] 董慧颖、曹仁帅.汽车牌照自动识别系统中字符分割算法研究.沈阳工业学院学报2003(12)Vol.22 No.4
[10] 崔江、王友仁.车牌自动识别方法中的关键技术研究.计算机测量与控制,2003.11(4)
[11] 王年、李婕、任彬、汪炳权.多层次汽车车牌照定位分割方法. 安徽大学学报,1999(6)Vol.23.No.2
[12] 马俊莉、莫玉龙、王明祥.一种基于改进模板匹配的车牌字符识别方法.小型微型计算机系统Vol.23.No.2
【注意:】
1、本程序参考了部分别人的代码,包括find_angle.m,horizontal_crop.m,find_optimal_threshold.m。
2、源代码的运行,直接调用run()函数(没有使用fig文件),便可以运行,点击strat按钮进入程序,暂停后按任意键可以再次运行(由于没有找到一个可以在一个按钮的回调函数中重复暂停和开始的函数),每一张图片执行完成后单击close便可退出程序。