基于Matlab车牌识别课程设计(论文)说明书.doc

上传人:小小飞 文档编号:3920875 上传时间:2019-10-10 格式:DOC 页数:31 大小:1.13MB
返回 下载 相关 举报
基于Matlab车牌识别课程设计(论文)说明书.doc_第1页
第1页 / 共31页
基于Matlab车牌识别课程设计(论文)说明书.doc_第2页
第2页 / 共31页
基于Matlab车牌识别课程设计(论文)说明书.doc_第3页
第3页 / 共31页
基于Matlab车牌识别课程设计(论文)说明书.doc_第4页
第4页 / 共31页
基于Matlab车牌识别课程设计(论文)说明书.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《基于Matlab车牌识别课程设计(论文)说明书.doc》由会员分享,可在线阅读,更多相关《基于Matlab车牌识别课程设计(论文)说明书.doc(31页珍藏版)》请在三一文库上搜索。

1、 桂林电子科技大学课程设计(论文)报告用纸 第 3 页 共3页课程设计(论文)说明书题 目: 基于Matlab车牌识别 院 (系): 信息与通信学院 专 业: 通信工程 学生姓名: 黄荣路 学 号: 1000210216 指导教师: 闫坤 2013年 12 月 1日摘 要近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域。本论文基于Matlab,使用c语言编程来实现车牌识别。车牌识别主要经过牌照定位,即定位图片中的牌照位置;牌照字符分割,就是把牌照中的字符分割出来;牌照

2、字符识别,也就是把分割好的字符进行识别,最终组成牌照号码。关键词:Matlab;c语言;定位;分割;识别;Abstract 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 highway speeding car park management system

3、management system of urban intersection electronic police district vehicle management system and other fields.In this paper, based on Matlab, using c language programming to realize the license plate recognition. License plate recognition is mainly through the license plate localization, namely, pos

4、itioning image of license plate location; Character segmentation of license plate character segmentation, is the license plate; License plate character recognition, that is, the good character segmentation, which can identify of license plate number.Key words:Matlab;C programming language; Positioni

5、ng; Segmentation; identify目 录引 言11 设计方案21.1总体设计目标21.2总体设计组成框图22.Matlab相关功能22.1使用matlab的优点22.2 matlab软件简介23 软件部分设计方案及仿真33.1 图像的读取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.课设小结1

6、6参考源代码如下:16谢 辞25参考文献26 桂林电子科技大学课程设计(论文)报告用纸 第 27 页 共26页引 言车牌识别系统目前广泛应用于监测报警,超速违章处罚,车辆出入管理,自动放行,高速公路收费管理,计算车辆旅行时间,牌照号码自动登记.车牌识别是利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。技术的核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行

7、识别,最后组成车牌号码输出。本文主要讲述我完成这次课设所经历的三个阶段:总体方案设计、相关资料查询、软件实现。在介绍我本次课程设计的设计原理的同时,也侧重同时记录了我是如何对于设计过程中遇到的问题进行分析和解决的。同时,我也着重介绍了我所用到的相关软件。1 设计方案1.1总体设计目标本次课设,设计的目标是通过matlab软件,结合c语言编程,来实现车牌的识别。一个完整的车牌识别系统应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。本次课设的目标就是基于matlab和c语言编程,通过对车辆检测,还有采集车辆图片,和图像预处理,以及对车牌的定位,和字符的分割,最后对字符进行

8、识别,最终可以实现车牌的识别。 1.2总体设计组成框图系统框图如下:图1 系统框图运用matlab软件的相关功能和c语言编程,对采集的图像对图像进行预处理,并用matlab软件和c语言,来定位车牌的位置,最后进行字符的分割,然后识别字符,最后就输出一个完整的车牌,从而识别车牌。2.Matlab相关功能2.1使用matlab的优点(1) Matlab绘图功能很强大,但在VC+,VB语言里绘图都很不容易,但Matlab里数据的可视化程度非常高,并且具有较强的编辑图形界面的能力。(2) Matlab语言简单,入门容易,程序设计不严格,自由度大,例如用户无需对矩阵预定义即可使用。 (3)Matlab语

9、言简洁紧凑,使用方便灵活,库函数丰富,并且内部集成了很多工具箱,为程序开发提供现成模块。(4)Matlab的可移植性很好,基本上不做修改就可以在在各种型号的计算机和操作系统上运行。2.2 matlab软件简介MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C+和FORTRAN)编写的程序。尽管MATLAB主要用于

10、数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指

11、令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。3 软件部分设计方案及仿真3.1 图像的读取目前比较常用的图像格式有*.BMP、*.JPG、*.GIF、*.PCX、*.TIFF 等,本课题采集到的图片是*

12、.JPG 的格式。因为由*.JPG图像时一个软件开发联合会组织制定、有损压缩格式,能够将图像压缩在很小的储存空间,而且广泛支持 Internet 标准,是面前使用最广的图片保存和传输格式,大多数摄像设备都以*.JPG格式保存。利用图像工具箱的Car_Image_RGB=imread(Image_Name);即可将图像读取出来,这样读取得到的是RGB图像,RGB图像分别用红、蓝、绿三个色度值为一组代表每个像素的颜色,因此Car_Image_RGB是一个mn3的数组,m、n表示图像像素的行、列数。图2 原始图像3.2 图像预处理考虑到现有牌照的字符与背景的颜色搭配一般有蓝底白字、黄底黑字、白底红字

13、、绿底白字和黑底白字等几种,利用不同的色彩通道就可以将区域与背景明显地区分出来,例如,对蓝底白字这种最常见的牌照,采用蓝色B 通道时牌照区域为一亮的矩形,而牌照字符在区域中并不呈现。因为蓝色(255,0,0)与白色(255,255,255)在B 通道中并无区分,而在G、R 通道或是灰度图象中并无此便利。同理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就可以明显呈现出牌照区域的位置,便于后续处理。原图、灰度图及其直方图见图2与图3。对于将彩色图象转换成灰度图象时,图象灰度值可由下面的公式计算: G=0.110B+0.588G+0.302R (1)G= (2)输入车牌图象灰度校正平滑

14、处理提取边缘图3 预处理及边缘提取流程图3.3. 图象的边缘检测在Matlab中利用函数edge()实现边缘检测。Car_Image_Bin=edge(Car_Image_Gray,robert,0.15,both);在edge()函数中有Sobel算子,Prewitt算子,Roberts算子,Log算子,Canny算子及Robert算子,几种算法相比之下,Roberts算子算法简单,计算量最小。因此本课题使用了Robert算子。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子, 根据任一相互垂直方向上的差分都可用来估计梯度,Robert 算子采用对角方向相邻两像素之差,xf=f

15、x,y-f(x-1,y-1), yf=f(x-1,y)-f(x,y-1)其幅值为:Gx,y=xf2+yf2Robert梯度以x-12,y-12为中心,所以他度量了x-12,y-12点处45和135方向(相互正交)的灰度变化。适当取门限T,做如下判断:G(x,y)T,(x,y)为阶跃状边缘点。Roberts边缘检测算子相当于用01-10和100-1对图像进行卷积。0.15为敏感度值,both表示双向检测算法。3.4图像灰度化彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为

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

17、ubtract(Sgray,Bgray);两幅图相减figure,imshow(Egray);title(增强黑白图像);输出黑白图像图4 边缘见效果图3.5图像平滑处理得到图像的轮廓线后,由于图像的数字化误差和噪声直接影响了脚点的提取,因此在脚点提取之前必须对图像进行平滑处理,Matlab有一个图像平滑处理函数imclose(),它与开运算相反,融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。Car_Image_Perform=imclose(Car_Image_Erode,Se);结构单元Se一个小于对象闭合图形,只要两个封闭域的距离小于Se,就将这两个连接成一个连通域,Se生成方式

18、采用:Se=strel(rectangle,25,25);即Se是一个一个2525的矩形,使用矩形是因为车牌是一个矩形,这样,可以是提取的图像最接近预期效果。图像经平滑后效果如下:图5 平滑处理后效果图像平滑处理了,可能会有多个闭合区域,对于不是车牌区域的必须予以删除,Matlab提供了一个函数bwareaopen(),用于删除二值图像中面积小于一个定值的对象,默认情况下使用8邻域,Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000);这样,Car_Image_Perform中小于2000的对象都被删除了,小对象被删除后的图像如图图6 移除

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

20、像素值临界值定量化,取值5个像素。从左向右寻找第一个1值像素大于5的x坐标为水平方向左侧分界线,从优向左寻找到第一个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_Left=Col_Left+1;endCol_Right=x;while(Zer

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

22、用全局阀值,全局阀值是指整幅图像都采用相同的阀值T处理,适用于背景和前景有明显对比的图像。虽然图像间受背景,光照等影响存在较大的差异,但计算简单,程序运算效率高。在Matlab实现法师如下T=round(License_Image_Gray_max-(License_Image_Gray_max-License_Image_Gray_min)/3); 同时采集大的图像噪点依然存在,因此可以通过处理图像的低频部分来锐化图像。这里采用均值滤波算法,均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点x,y,选择一个模板,该

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

24、则相应的输出像素值为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)/m/n=0.365 License_Image_Gray_2=imerode(License_Image_Gray_2,Se);elseif bwarea(License_Image_Gray_2)/m/n=0.2

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

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

27、1/m1)=120)&(PY11) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)=40)&(PY2y) PY2=PY2+1; end IY=I(PY1:PY2,:,:);%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分 %end横向扫描 %begin纵向扫描 Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 for j=1:x for i=PY1:PY2 if(myI(i,j,1)=1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while (Blue_x(1,PX1)3

28、)&(PX1x) PX1=PX1+1; end PX2=x; while (Blue_x(1,PX2)PX1) PX2=PX2-1; end %end纵向扫描 PX1=PX1-2;%对车牌区域的校正 PX2=PX2+2; dw=I(PY1:PY2,:,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title(行方向合理区域);figure(7),subplot(1,2,2),imshow(dw),title(定位剪切后的彩色车牌图像)imwrite(dw,dw.jpg);filename,filepath=uigetfile(dw.jpg,输入一

29、个定位裁剪后的车牌图像);jpg=strcat(filepath,filename);a=imread(dw.jpg);b=rgb2gray(a);imwrite(b,1.车牌灰度图像.jpg);figure(8);subplot(3,2,1),imshow(b),title(1.车牌灰度图像)g_max=double(max(max(b);g_min=double(min(min(b);T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值m,n=size(b);d=(double(b)=T); % d:二值图像imwrite(d,2.车牌二值图像.jpg);

30、figure(8);subplot(3,2,2),imshow(d),title(2.车牌二值图像)figure(8),subplot(3,2,3),imshow(d),title(3.均值滤波前)% 滤波h=fspecial(average,3);d=im2bw(round(filter2(h,d);imwrite(d,4.均值滤波后.jpg);figure(8),subplot(3,2,4),imshow(d),title(4.均值滤波后)% 某些图像进行操作% 膨胀或腐蚀% se=strel(square,3); % 使用一个3X3的正方形结果元素对象对创建的图像膨胀% line/dia

31、mond/ball.se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵m,n=size(d);if bwarea(d)/m/n=0.365 d=imerode(d,se);elseif bwarea(d)/m/n=0.235 d=imdilate(d,se);endimwrite(d,5.膨胀或腐蚀处理后.jpg);figure(8),subplot(3,2,5),imshow(d),title(5.膨胀或腐蚀处理后)% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割d=qiege(d);m,n=si

32、ze(d);figure,subplot(2,1,1),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;while j=n while s(j)=0 j=j+1; end k1=j; while s(j)=0 & j=round(n/6.5) val,num=min(sum(d(:,k1+5:k2-5); d(:,k1+num+5)=0; % 分割 endend% 再切割d=qiege(d);% 切割出 7 个字符y1=10;y2=0.25;flag=0;word1=;while flag=0 m,n=size(d); left=1;wide=0; while sum(d(:,wide+1)=0 wide=wide+1; end if widey2 flag=1;word1=temp; % WORD 1 end d(:,1:wide)=0;d=qieg

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1