研究生课程论文(2010-2011学年第一学期)基于数字图像处理的车牌识别系统研究生:刘树青提交日期:2010年月25日研究生签名:刘树青学号201020114832学院自动化科学与工程学院课程编号S0831001课程名称数字图像处理学位类别硕士任课教师戚其丰教师评语:成绩评定:分任课教师签名:年月日基于数字图像处理的车牌识别系统刘树青摘要:车牌识别系统(LicensePlateRecognition简称LPR)技术基于数字图像处理,是智能交通系统中的关键技术,同时他的发展也十分迅速,已经逐渐融入到我们的现实生活中。文章介绍了车牌识别系统的意义、图像去噪处理以及图像二值化方法,并通过仿真试验模拟了图像处理的过程。本文所做的工作在于前期的图像预处理工作。本次设计着重在于图像识别方面,中心工作都为此而展开,文中没有进行车牌的定位处理,而是采用数码相机直接对牌照进行正面拍照,获取原始车牌图像。之后利用Matlab编程对图片进行了大小的调整、彩色图片转化成灰度图片、图片去噪、以及图片二值化等工作。其中,去噪与二值化是关系图像识别率的关键。关键字:车牌识别系统;图像预处理;字符识别;Matlab;去噪;二值化引言智能交通系统(ITS)是当今世界交通管理体系发展的必然趋势,而作为智能交通系统中的重要组成部分之一的车牌自动识别技术,目前已被广泛应用于城市道路监控、高速公路收费与监控、小区与停车场出入口管理、公安治安卡口等场合,成为研究的热点。伴随我国国民经济的高速发展,国内高速公路、城市道路、停车场建设越来越多,对交通控制,安全管理的要求也日益提高。因此迫切需要采用高科技手段,对违法违章车辆牌照进行登记,在这种情况下,作为信息来源的自动检索,图像识别技术越来越受到人们的重视。车牌识别系统的出现成为了交通管制必不可少的有力武器。1车牌识别系统的目标利用计算机等辅助设备进行的自动汽车牌照自动识别就是在装备了数字摄像设备和计算机信息管理系统等软硬件平台的基础之上,通过对车辆图像的采集,采用先进的图像处理、模式识别和人工智能技术,在图像中找到车牌的位置,提取出组成车牌号码的全部字符图像,再识别出车牌中的文字、字母和数字,最后给出车牌的真实号码。国外的车牌识别研究始于80年代,90年代始已有不少成套的产品出现。由于我国车牌的组成及组合的方式与国外的车牌不一致,使得我们不能直接使用国外的车辆牌照识别系统,而必须针对我国车牌重新设计相应的车辆牌照识别系统。车牌识别的使用环境、背景各有差异,目前还没有一种算法能在不同环境、各种复杂背景条件下达到非常高的车牌识别率,因而车牌识别技术仍然是研究的重点。2MATLAB及其图像处理工具概述MATLAB是MATrixLABoratory(矩阵实验室)的缩写,是MathWorks公司开发的一种功能强、效率高、简单易学的数学软件。MATLAB7.1是一套功能十分强大的工程计算及数据分析软件,其应用范围涵盖了数学、工业技术、电子科学、医疗卫生、建筑、金融、数字图像处理等各个领域。MATLAB的图像处理工具箱,功能十分强大,支持的图像文件格式丰富,如*.BMP、*.JPG、*.JPEG、*.GIF、*.ti;f%95%94、*.ti;f%95%94F、*.PNG、*.PCX、*.XWD、*.HDF、*.ICO、*.CUR等。本文将给出MATLAB的图像处理工具箱中的图像处理函数实现图像处理与分析的应用技术实例。由于照片拍摄的好坏有很多外界因素决定,由于光照强度的影响,晴天拍摄的照片与阴天拍摄的照片质量肯定不一样,白天和晚上更是不同;由于每部车的车速的不一致,慢速行驶的车辆会比快速行驶的车辆拍摄的照片质量好一些,而且车速过快,会使照片的字迹模糊,这肯定会影响字符的识别。故要对拍摄的照片进行灰度化、二值化、滤波等预处理。传统的设计方法为:利用静止的汽车牌照图片,利用C语言或C++语言来对图像进行处理,编程很复杂,维护难度大。而MATLAB语言对处理图像而言非常方便,可直接调用已经编好的函数,如可直接调用现成的函数进行复杂的傅里叶变换、拉普拉斯变换、二值化处理、数字滤波等操作。3车牌识别系统的工作原理现在普遍通用的车牌识别系统通常包括两大部分,软件与硬件。其中软件是整个系统的核心部分,车牌识别的核心技术就在于软件。系统一般由车体感应器,彩色摄像机.辅助光源.图像采集与处理器,主控电脑和识别系统软件构成。系统软件一般先对牌照图像进行滤波、二值化、校正、分割等处理,再进行识别。软件部分由六个主要处理子模块组成。各模块功能为:1)实时采集模块实现对汽车牌照图像的实时采集,并将采集的图像转换为数字图像存储;2)车牌搜索及定位模块对数字化后的车牌进行区域目标搜索,并将图像进行灰度翻转统一为“白底黑字”;3)车牌分割对定位的车牌区域进行字符分割,将车牌分为7个单一的字符图片(针对普通民用车);4)特征提取模块对分割后的图片进行相应的特征描述;5)分类识别模块根据图片的特征描述将其识别为相应的结果字符串;6)数据传送输出识别结果字符串到指定的设备上。图1车牌识别系统原理图4图像预处理车牌图像通常是在各种复杂的背景、环境条件下采集得到,图像质量难以保证,因此在进行车牌定位之前,通常要进行图像的预处理工作。图像预处理主要是对系统获取的原始图像基本特征的信息进行相应的、有针对性的处理,以滤去干扰、噪声,作几何校正、色彩校正,以便于计算机的分析计算,一般包括滤波、图像增强、图像二值化、形态学运算、边缘检测等。本文图像预处理过程如图2.图2车牌图像预处理流程图4.1图像灰度化车辆图像采集图像预处理车牌定位字符分割字符识别输出结果车辆图像图像灰度化中值滤波图像增强直方图均衡图像二值化形态学处理车牌定位汽车图像样本目前大都是通过摄像机、数码相机等设备拍摄获取的,因而预处理前的图像都是24位真彩色图像。彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,而且大多数图像处理技术都是针对256级灰度图的,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。将彩色图像转换成灰度图,一方面提高了图像的处理速度,另一方面更统一了多种颜色的车辆牌照,因此,图像灰度化是做图像处理最根本的一步。本文采用加权平均值法将图像灰度化,即根据重要性或其他指标给R、G、B赋予不同的权值,并使R、G、B等于它们的值的加权和平均,R=G=B=(Wr*R+Wg*G+Wb*B)/3。其中Wr、Wg、Wb分别是R、G、B的权值,取Wr=0.299、Wg=0.588、Wb=0.113,从而得到最合理的车牌灰度图像。Matlab程序如下:图3原图与灰度化后图片4.2中值滤波由于图像中不可避免的存在有噪声,常用的滤波方法有:低通滤波、高通滤波、带通滤波、带阻滤波。中值滤波的基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节.这是因为它不依赖于邻域内那些与典型值差别很大的值.中值滤波器在处理连续图像窗函数时与线性滤波器的工作方式类似,但滤波过程却不再是加权运算。取3*3函数窗,计算以点[i,j]为中心的函数窗像素中值步骤如下:1)按强度值大小排列像素点。2)选择排序像素集的中间值作为点[i,j]新值。图43*3中值滤波这一过程如图5所示.一般采用奇数点的邻域来计算中值.但如果像素点数为偶数时,中值就取排序像素中间两点的平均值。中值滤波在一定条件下,可以克服线性滤波器(如均值滤波等)所带来的图像细节模糊,而且对滤除脉冲干扰即图像扫描噪声最为有效。在实际运算过程中并不需要图像的统计特性,也给计算带来不少方便。但是对一些细节多,特别是线、尖顶等细节多的图像不宜采用中值滤波。Matlab程序如下:c=medfilt2(b,[3,3]);imshow(c);图5中值滤波后图像标准中值滤波算法的基本思想是将滤波窗口内的最大值和最小值均视为噪声,用滤波窗口内的中值代替窗口中心像素点的灰度,在一定程度上抑制了噪声。实际上在一定邻域范围内具有最大或最小灰度值这一特性的,除了噪声点,还包括图像中的边缘点、线性特征点等。中值滤波以此作为图像滤波依据,其滤波结果不可避免地会破坏图像的线段、锐角等信息。因此,要找到一种既能实现有效滤除噪声,又能完整保留图像细节的滤波机制,仅考虑噪声的灰度特性是难以实现的。4.3图像增强如果一幅图成像时由于光线过暗或曝光不足,则整幅图偏暗(如灰度范围从0到63);光线过亮或曝光过度,则图像偏亮(如灰度范围从200到255),都会造成图像对比度偏低问题,即灰度都挤在一起了,没有拉开,为了更方便的得到效果,提升识别率,对得到的灰度图像做灰度增强,首先用strel函数对原始图像进行开操作的到图像的背景图像。Matlab程序如下:s=strel('disk',13);d=imopen(c,s);subplot(1,2,1);imshow(d);title('背景图像');e=imsubtract(c,d);%中值滤波后图像减去背景图像subplot(1,2,2);imshow(e);title('增强黑白图像');图6灰度修正后图像4.4直方图均衡化直方图是用来表达一幅图像灰度等级分布情况的统计表。通过对图像中像素个数多的灰度值(及对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(及对画面不起主要作用的灰度值)进行归并,从而达到清晰图像的目的,其本质上是一个直方图变换,即将输入图像的直方图映射成一个最大平展的直方图。实验效果如图8。经过直方图均衡化处理以后,图像的灰度分布变得均匀,原来偏暗的图像亮度明显增强,图像变得更为清晰。Matlab程序如下:subplot(1,2,1);imhist(e);[f,g]=histeq(e,64);%图像灰度扩展到0~255,有64个灰度级subplot(1,2,2);imhist(f);imshow(f);图7直方图均衡化前(左)后(右)图8直方图均衡化后图像4.5图像二值化图像的二值化处理就是将图像上的点的灰度置为两个数值,通常为0或255。使整个图像呈现出明显的黑白效果。也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像嘲。基于像素数目的直方图阈值分割是本文采用的二值化算法,它的好处在于可以减少直方图的不同形状对二值化效果的影响。其步骤如下:计算直方图,在直方图中由0至255进行累加计算,当像素数目大于某个值时.将当前像素值作为二值化门限。当大于当前像素值的像素点在图像中所占的数量,也就是车牌中背景像素所占的比例称为该副图像的阈值。经过对一些图片的计算.确定该阈值在图像像素数目的60%-80%之间。阈值的取值不同,对二值化的结果影响很大。越小包含越多背景的高光部分,越大损失越多字符像素。对增强黑白后图像进行二值化处理。Matlab程序如下:h=im2bw(e,0.299);imshow(h);图6二值化后图像4.7形态学处理二值化后的车牌图像还存在许多干扰区域,若直接进行车牌定位,很容易出现误定位或增加了车牌定位的计算量,因此可以利用数学形态学算子,简化图像数据,保持图像的基本形状特征,去除不相干的结构。二值图像的逻辑运算,水平方向的噪声去除和消除孤立的亮点,这两个步骤是通过对图像的亮度矩阵行方向的运算和逻辑判断来实现的,这对于实现以形态学为基础的图像处理算法是一种有力的补充手段。膨胀与腐蚀,膨胀最简单的应用之一是将裂缝桥接起来,A被膨B胀可定义为:而腐蚀的一种最简单的用途是从二值图像中根据尺寸消除不相关的细节,对集合Z中的集合A和B,使用B对A进行腐蚀,定义为:开操作与闭操作正如仿真图像所示,膨胀使图像扩大而腐蚀使图像缩小。开操作一般使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。闭操作同样使轮廓线更光滑,但是与开操作相反的是,它通常消弥狭窄的间