ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:412.40KB ,
资源ID:12227166      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12227166.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Matlab车牌识别毕业论文论文.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Matlab车牌识别毕业论文论文.docx

1、基于Matlab车牌识别毕业论文论文课程设计(论文)说明书题 目: 基于Matlab车牌识别 院 (系): 信息与通信学院 专 业: 通信工程 摘 要近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域。本论文基于Matlab,使用c语言编程来实现车牌识别。车牌识别主要经过牌照定位,即定位图片中的牌照位置;牌照字符分割,就是把牌照中的字符分割出来;牌照字符识别,也就是把分割好的字符进行识别,最终组成牌照号码。关键词:Matlab;c语言;定位;分割;识别;Abstract

2、 In recent years, the license plate recognition system as an important direction of the intelligent transportation is more and more attention. License plate recognition system can be used in the intersection electronic police district vehicle management system and other fields.In this paper, based o

3、n Matlab, using c language programming to realize the license plate recognition. License plate recognition is mainly through the license plate localization, namely, positioning image of license plate location; Character segmentation of license plate character segmentation, is the license plate; Lice

4、nse plate character recognition, that is, the good character segmentation, which can identify of license plate number.Key words:Matlab;C programming language; Positioning; Segmentation; identify目 录引 言 11 设计方案 21.1总体设计目标 21.2总体设计组成框图 22.Matlab相关功能 22.1使用matlab的优点 22.2 matlab软件简介 23 软件部分设计方案及仿真 33.1 图

5、像的读取 33.2 图像预处理 43.3. 图象的边缘检测 53.4图像灰度化 53.5图像平滑处理 63.6车牌区域的边界值计算 83.7字符切割 93.7.1字符切割前的图像去噪处理 93.7.2字符切割前的图像膨胀和腐蚀处理 103.7.3字符切割 103.8字符识别 133.8.1字符识别方法选择 133.8.2字符归一化 133.8.3字符匹配识别 134.课设小结 16参考源代码如下: 16谢 辞 25参考文献 26引 言车牌识别系统目前广泛应用于监测报警,超速违章处罚,车辆出入管理,自动放行,高速公路收费管理,计算车辆旅行时间,牌照号码自动登记.车牌识别是利用车辆的动态视频或静态

6、图像进行车牌号码、车牌颜色自动识别的模式识别技术。技术的核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,最后组成车牌号码输出。本文主要讲述我完成这次课设所经历的三个阶段:总体方案设计、相关资料查询、软件实现。在介绍我本次课程设计的设计原理的同时,也侧重同时记录了我是如何对于设计过程中遇到的问题进行分析和解决的。同时,我也着重介绍了我所用到的相关软件。1 设计方案1.1总体设

7、计目标本次课设,设计的目标是通过matlab软件,结合c语言编程,来实现车牌的识别。一个完整的车牌识别系统应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。本次课设的目标就是基于matlab和c语言编程,通过对车辆检测,还有采集车辆图片,和图像预处理,以及对车牌的定位,和字符的分割,最后对字符进行识别,最终可以实现车牌的识别。 1.2总体设计组成框图系统框图如下:图1 系统框图运用matlab软件的相关功能和c语言编程,对采集的图像对图像进行预处理,并用matlab软件和c语言,来定位车牌的位置,最后进行字符的分割,然后识别字符,最后就输出一个完整的车牌,从而识别车牌。

8、2.Matlab相关功能2.1使用matlab的优点(1) Matlab绘图功能很强大,但在VC+,VB语言里绘图都很不容易,但Matlab里数据的可视化程度非常高,并且具有较强的编辑图形界面的能力。(2) Matlab语言简单,入门容易,程序设计不严格,自由度大,例如用户无需对矩阵预定义即可使用。 (3)Matlab语言简洁紧凑,使用方便灵活,库函数丰富,并且内部集成了很多工具箱,为程序开发提供现成模块。(4)Matlab的可移植性很好,基本上不做修改就可以在在各种型号的计算机和操作系统上运行。2.2 matlab软件简介MATLAB(矩阵实验室)是MATrix LABoratory的缩写,

9、是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C+和FORTRAN)编写的程序。尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态嵌入式系统开发等方面。MATLAB和Mathem

10、atica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接

11、调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。3 软件部分设计方案及仿真3.1 图像的读取目前比较常用的图像格式有*.BMP、*.JPG、*.GIF、*.PCX、*.TIFF 等,本课题采集到的图片是*.JPG 的格式。因为由*.JPG图像时一个软件开发联合会组织制定、有损压缩格式,能够将图像压缩在很小的储存空间,而且广泛支持 Internet 标准,是面前使用最广的图片保存和传输格式,大多数摄像设备都以*.JPG格式保存。利用图像工具箱的Car_Image_RGB=imread

12、(Image_Name);即可将图像读取出来,这样读取得到的是RGB图像,RGB图像分别用红、蓝、绿三个色度值为一组代表每个像素的颜色,因此Car_Image_RGB是一个的数组,m、n表示图像像素的行、列数。图2 原始图像3.2 图像预处理考虑到现有牌照的字符与背景的颜色搭配一般有蓝底白字、黄底黑字、白底红字、绿底白字和黑底白字等几种,利用不同的色彩通道就可以将区域与背景明显地区分出来,例如,对蓝底白字这种最常见的牌照,采用蓝色B 通道时牌照区域为一亮的矩形,而牌照字符在区域中并不呈现。因为蓝色(255,0,0)与白色(255,255,255)在B 通道中并无区分,而在G、R 通道或是灰度图

13、象中并无此便利。同理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就可以明显呈现出牌照区域的位置,便于后续处理。原图、灰度图及其直方图见图2与图3。对于将彩色图象转换成灰度图象时,图象灰度值可由下面的公式计算: G=0.110B+0.588G+0.302R (1)G= (2)图3 预处理及边缘提取流程图3.3. 图象的边缘检测在Matlab中利用函数edge()实现边缘检测。Car_Image_Bin=edge(Car_Image_Gray,robert,0.15,both);在edge()函数中有Sobel算子,Prewitt算子,Roberts算子,Log算子,Canny算子及

14、Robert算子,几种算法相比之下,Roberts算子算法简单,计算量最小。因此本课题使用了Robert算子。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子, 根据任一相互垂直方向上的差分都可用来估计梯度,Robert 算子采用对角方向相邻两像素之差, ,其幅值为: Robert梯度以为中心,所以他度量了点处和方向(相互正交)的灰度变化。适当取门限T,做如下判断:,(x,y)为阶跃状边缘点。Roberts边缘检测算子相当于用和对图像进行卷积。0.15为敏感度值,both表示双向检测算法。3.4图像灰度化彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统

15、的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。将彩色图像转换为黑白并显示Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图figure,imshow(Sgray),title(原始黑白图像);对原始图像进行开操作得到图像背景图像:s=strel(disk,13); strei函数Bgray=imopen(Sgray,s);打开sgray s图像figure,imshow(Bgray);t

16、itle(背景图像);输出背景图像灰度图像与背景图像作减法,对图像进行增强处理:Egray=imsubtract(Sgray,Bgray);两幅图相减figure,imshow(Egray);title(增强黑白图像);输出黑白图像图4 边缘见效果图3.5图像平滑处理得到图像的轮廓线后,由于图像的数字化误差和噪声直接影响了脚点的提取,因此在脚点提取之前必须对图像进行平滑处理,Matlab有一个图像平滑处理函数imclose(),它与开运算相反,融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。Car_Image_Perform=imclose(Car_Image_Erode,Se);结构单

17、元Se一个小于对象闭合图形,只要两个封闭域的距离小于Se,就将这两个连接成一个连通域,Se生成方式采用:Se=strel(rectangle,25,25);即Se是一个一个的矩形,使用矩形是因为车牌是一个矩形,这样,可以是提取的图像最接近预期效果。图像经平滑后效果如下:图5 平滑处理后效果图像平滑处理了,可能会有多个闭合区域,对于不是车牌区域的必须予以删除,Matlab提供了一个函数bwareaopen(),用于删除二值图像中面积小于一个定值的对象,默认情况下使用8邻域,Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000);这样,Car_I

18、mage_Perform中小于2000的对象都被删除了,小对象被删除后的图像如图图6 移除小对象后效果3.6车牌区域的边界值计算在将原始图像进行二值化,然后轮廓平滑处理后,图像的每个点为两个离散值中的一个,这两个值代表开(1)与关(0),即只有黑与白的特殊灰度图像,并且整个图像只有两个域(如果有多个域需改变参数后重新进行一此剔除干扰对象处理),全1的域即为车牌区域,并且近似矩形,长宽比为4.5:1,也可以用这两个特性去检验提取的区域是否为车牌区域。经区域确定了,即可将车牌的四个边界值确定下来。这里采用水平与垂直双向投影法,水平坐标的确定,先定义一个的数组,其中为原始图像的宽度值,然后将二值图像

19、垂直投影到轴。从直方图中基本可以看书水平方向上的两个分界线,为了便于处理,该课题将像素值临界值定量化,取值5个像素。从左向右寻找第一个1值像素大于5的坐标为水平方向左侧分界线,从优向左寻找到第一个1值像素量大于5的为右侧分界线,程序可以用for循环语句。Zero_Col=zeros(1,x);% for j=1:x for i=1:y if(Car_Image_Perform(i,j,1)=1) Zero_Col(1,j)=Zero_Col(1,j)+1;% end endend Col_Left=1;while(Zero_Col(1,Col_Left)5)&(Col_Leftx)% Col_

20、Left=Col_Left+1;endCol_Right=x;while(Zero_Col(1,Col_Right)Col_Left) Col_Right=Col_Right-1;end垂直方向的分界线可用同样的方法实现。分界线计算得后,即可从原图像中剪切出只包含车牌的区域图像。剪切得到的图像如下。图8为二值图切割的车牌区域,图9为RGB图像切割出来的图像如下:图7 车牌区域二值图裁减图8 原图中的车牌区域图像3.7字符切割3.7.1字符切割前的图像去噪处理由于图像车牌号区域提取后获得的是从原始图像中剪切的,是RGB图像,分割同样采取投影法,故同样需要先将RGB图像转换成灰度值,再将灰度图转化

21、成二进制图,转化的方法就是限定一个阀值,如果大于阀值则为1,小于阀值为0,阀值采用全局阀值,全局阀值是指整幅图像都采用相同的阀值T处理,适用于背景和前景有明显对比的图像。虽然图像间受背景,光照等影响存在较大的差异,但计算简单,程序运算效率高。在Matlab实现法师如下T=round(License_Image_Gray_max-(License_Image_Gray_max-License_Image_Gray_min)3); 同时采集大的图像噪点依然存在,因此可以通过处理图像的低频部分来锐化图像。这里采用均值滤波算法,均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是

22、用均值代替原图像中的各个像素值,即对待处理的当前像素点,选择一个模板,该模板由其近邻的若干像素组成(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身),求模板中所有像素的均值,再把该均值赋予当前像素点,作为处理后图像在该点上的灰度,即,m为该模板中包含当前像素在内的像素总个数(即8个)。可以对比滤波前跟滤波后的图像,如图10和图11所示,很明显,不但噪声去除了,而且图像得到了锐化。图9 车牌区域图像滤波前效果图10车牌区域图像滤波后效果3.7.2字符切割前的图像膨胀和腐蚀处理腐蚀已经在在上文介绍,膨胀刚好与腐蚀相反,运算规则是输出图像的像素值是输入图像邻域中的最大值,在一个

23、二值图像中,只要一个像素值为1,则相应的输出像素值为1。根据经验值,车牌图像中,字符面积与车牌面积之比在(0.235,0.365)之间,因此计算字符面积与车牌面积比值,如果大于0.365则对图像进行腐蚀,如果小于0.235则对图像进行膨胀,程序实现如下clear Se; Se=eye(2);m,n=size(License_Image_Gray_2);if bwarea(License_Image_Gray_2)mn=0.365 License_Image_Gray_2=imerode(License_Image_Gray_2,Se);elseif bwarea(License_Image_G

24、ray_2)mn=0.235 License_Image_Gray_2=imdilate(License_Image_Gray_2,Se);end在这里结构元素Se使用一个二维单位矩阵。对于此对象,系统给予膨胀处理,效果图如图12图11车牌区域图像腐蚀、膨胀后效果3.7.3字符切割2007 年颁布的我国车牌规范(普通中小型汽车)规定车牌总长440mm,牌照中的7 个字符的实际总长为409mm 左右,宽140mm,每个字符45mm 宽,90mm 高,字符间距为10mm,其中第二个字符与第三个字符的间距较为特殊,为15.5mm,最后一个字符与第一个字符距边界25mm。这样,如果平均分配每个字符在牌

25、照中占据的宽度,那么每个字符宽度为:width7(width 为车牌图像的宽度)。但是,实际上,第二个第三个字符之间存在一个黑点,牌照左右两边与图像边缘也都有一定的宽度,所以每个字符的宽度应该小于width7。考虑所有的情况,一般情况下最小的宽度为width9。因此,字符的宽度可以从width9 到width7 之间渐进的变化得到,程序流程图如图13。切割线同样采用投影法Wide=0;while sum(Image_Crop(:,Wide+1)=0 & Wide=n-2 Wide=Wide+1;End切割的字符时候符合比例要求采用if(Level1WideLevel2)&(R_C_Ratio_

26、1(n1m1)R_C_Ratio_2) Image_Crop(:,1:Wide)=0; if sum(sum(Image_Crop)=0 Image_Crop=Image_Trim(Image_Crop); else Word=;Flag=1; endelse其中Level1和Level2是字符宽度的上下限,R_C_Ratio_1和R_C_Ratio_2是单个字符的宽高比值的上下限。经过切割,切割的字符图像如下。图13 经切割的七个字符3.8字符识别3.8.1字符识别方法选择目前字符识别的方案有使用神经网络和模板匹配法进行比对。人工神经网络是模拟人脑思维功能和组织建立起来的数学模型,虽然现在神

27、经网络正在迅速发展,但总体来说应用还是相对复杂的。模板匹配法虽然识别率低,但实现简单,计算量小,只有矩阵的加减与统计,而且车牌字符是有阿拉伯数字,英文大写字母,还有部分汉字,虽有字库量不大,字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高,因此本课题使用这种方法。对于模板匹配,首先建立标准模板库,库中字符使用统一的尺寸,这里使用 。3.8.2字符归一化由于图像采集时图像的像素值不一样,经切割出来的字符的大小也不会不一样,所以在进行匹配前必须先进行字符图像归一化。使图像大小跟模板图像大小一致,Matlab提供一个改变图像大小的函数imresize(I,Size,Model),Mode

28、l是插值运算方法,这里选用nearest最近邻插值法,经归一化后的图像如下。图14 经归一化后的七个字符3.8.3字符匹配识别字符识别步骤如下,图15 字符匹配流程匹配方法采用将目标图像与模板图像逐点做差,得到第三幅图像,程序实现如下:for ii=1:40 or jj=1:20 Word_Image_Diff(ii,jj)=Word_Image(ii,jj)-Word_Image_Code(ii,jj); endend最后计算第三幅二进制图像中像素值为1的个数,数值最小的即为匹配出来的结果,经对比可得相似度最高的数字。图16 字符相似度比较有图16的,字符1在Lib_Code_No=39处取

29、得最大相似度,查字库Lib_Code_No=39的字符为“渝”,则可以确定该字符为“渝”。同理可得出其他6个字符。4.课设小结做完这次车牌识别课程设计后,我感觉它的工作量的确很大,差不多花费了我数周的时间一遍遍地改参数、看图像。不过现在看来之前投入的精力是完全值得的,车牌识别课程设计对我的帮助主要有以下几点。第一,巩固了数字图像处理课上所学的知识,比如滤波、膨胀、腐蚀、边缘提取等等。为了完成这次的课程设计,我在网上看了看了冈萨雷斯的数字图像处理(MATLAB版)。这本书内容丰富,自成一体,里面的许多内容与教材形成了互补。特别是形态学图像处理那一章有许多详细的例子,浅显易懂,不少课上没有完全理解

30、的内容通过看这本书得到了深入的体会。第二,通过这次课程设计我学会了使用Matlab这种常用的工具软件,之前我会用C语言,但是只是学会一点点,也学会使用matlab,但也是会一点点,但是这次深入接触后我感觉到Matlab的确是一款强大易学的数学分析软件,操作起来虽然比较难上手。但是在这次课设以后,我了解蛮多的函数功能及运用的。第三,为了完成车牌识别系统,我从网上找了不少源代码进行比较,这也锻炼了我读程序的能力。因为网上的代码实现方法众多,而且良莠不齐,评价起来很难。有些方法只能识别一幅特定的图像,有些甚至什么都识别不了。于是我就将不同模块分别测试,并加入我自己的思想,最后综合出一个比较理想的系统

31、。调试的过程非常麻烦,因为有的参数只能对某一幅图像有用,对其它图像根本识别没法识别,所以为了使尽量多的图像能被识别,我着实花了不少功夫。第四,我深刻感受到要实现一个系统的功能是一件很复杂的事。虽然之前我做过课设一,但我们做的是硬件。在网上我也看过一些公司做的车牌识别软件,效果的确很棒,至今我也很难理解它们是如何实现的。在做这个课程设计之前,我本以为车牌识别比较简单,但是接触以后才发现限制车牌识别的因素很多,要想识别任意图像是非常困难的。所以说实现一个比较完善的系统就需要对其中的每个部分进行优化设计,这也是我以后需要努力的。参考源代码如下:function d=main(jpg)I=imread(car.jpg);figure(1),imshow(I);title(原图);I1=rgb2gray(I);figure(2),subplot(1,2,1),imshow(I1);title(灰度图);figure(2),subplot(1,2,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1