欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于MATLAB的车牌识别系统设计完整版样本.doc

    • 资源ID:49472670       资源大小:1.24MB        全文页数:25页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB的车牌识别系统设计完整版样本.doc

    资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。基于MATLAB的车牌识别系统设计 学 院 测控与通信工程学院专 业 信号与信息处理学生姓名 二妮子 学 号 指导教师 么么哒 基于MATLAB的车牌识别系统设计摘要: 本文主要介绍了基于MATLAB的有关数字图像处理的车牌数字识别系统。系统是利用单张包含车牌的静态图片进行识别的, 整个识别过程主要分为车牌定位和字符分割和字符识别三个大的模块。而其中的字符识别是系统的核心部分。字符识别当前运用的最多的就是神经网络和模板匹配的方法, 本文所介绍的就是基于神经网络的方法来实现车牌数字的识别。过程中也相应结合了特征提取、 直方图统计等一系列方法。从实验得知, 这种神经网络的方法实现简单, 且容易理解, 在确保识别准确率的前提下, 能够提高识别的效率, 使得系统在比较准确地定位了车牌及分割出字符后, 能更准确地实现字符的识别。关键词: 车牌识别; matlab; 神经网络1 引言随着中国交通运输的不断发展, 智能交通系统( Intelligent Traffic System, 简称ITS) 的推广变的越来越重要, 而作为ITS的一个重要组成部分, 车牌识别系统( LPRS) 是智能交通系统的重要组成部分。随着机动车辆数量的大幅度增加以及计算机技术的发展, 人们对交通控制系统的要求显著提高。因而智能交通系统被广泛地应用于交通控制系统当中, 比如高速公路收费、 停车场车辆管理、 违章车辆监控、 交通诱导控制等场合。这使得车牌识别系统也得到了更广泛的关注。与传统的车辆管理方法比较, 车牌识别系统能够大大提高交通管理的效率和水平, 帮助实现车辆管理的规范化。由于牌照是机动车辆管理的唯一标识符号, 因此, 车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。2 车辆牌照识别系统工作原理车辆牌照识别系统的基本工作原理为: 将摄像头拍摄到的包含车辆牌照的图像经过视频卡输入到计算机中进行预处理, 再由检索模块对牌照进行搜索、 检测、 定位, 并分割出包含牌照字符的矩形区域, 然后对牌照字符进行二值化并将其分割为单个字符, 然后输入JPEG或BMP格式的数字, 输出则为车牌号码的数字。3 车辆牌照识别系统组成1.读入图像: 输入的图像由于受到天气影响, 包括晴天、 阴天、 晚上等,由于光照影响和摄像机曝光的不同,再加上有些车牌老化污损、 陈旧退色,这些都可能使车牌图像产生对比度不足的弊端,图像细节分辨不清,车牌字符部分不突出. 而且,对高速行进中的汽车拍摄的图像往往产生模糊、 扭曲、 变形等现象,这些都增加了预处理的难度。而这些处理需要很复杂的过程, 因为系统把读入的图片默认为比较清晰的、 几乎没有倾斜角度的图片。  2.图像预处理: 图像预处理过程需要把图像转换成便于车牌定位的二值化图像。需要经过图像灰度化, 图像增强, 边缘提取, 二值化操作。  3.车牌定位: 从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。4.字符分割: 对车牌图像进行几何校正、 去噪、 二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像5.字符识别: 对分割出来的字符进行预处理( 二值化、 归一化) , 然后分析提取, 对分割出的字符图像进行识别给出文本形式的车牌号码。4 汽车牌照识别系统的matlab实现4.1 图像预处理 图像在形成、 传输或变换过程中, 受多种因素的影响, 如: 光学系统失真、 系统噪声、 曝光不足或过量、 相对运动等, 往往会与原始景物之间或图像与原始图像之间产生了某种差异, 这种差异称为降质或退化。因此在图像处理之前必须进行预处理, 包括去除噪音、 边界增强、 增加亮度等。     输入的彩色图像包含大量颜色信息, 会占用较多的存储空间, 且处理时也会降低系统的执行速度, 因此对图像进行识别等处理时, 常将彩色图像转换为灰度图像, 以加快处理速度。对图像进行灰度化处理、 边缘提取、 再利用形态学方法对车牌进行定位。    具体步骤如下: 首先对图像进行灰度转换, 二值化处理然后采用4X1的结构元素对图像进行腐蚀, 去除图像的噪声。采用25X25的结构元素, 对图像进行闭合应算使车牌所在的区域形成连通。再进行形态学滤波去除其它区域。图像预处理原图像灰度图像边缘检测腐蚀图像填充后图像形态学滤波后图像 经过对比原始图片, 我们能够发现形态滤波后的图像已经很接近正确的车牌位置了, 因此后期处理将经过这张图来找出车牌位置。车牌定位  观察经过预处理后得到的图像发现车牌位置有明显的矩形有明显的矩形图样, 经过对矩形区域的定位即可获得具体的车牌位置。( 1) 车牌的行起始和终止位置的确定。车牌的列起始位置和终止位置的确定。(2) 最后拼合获取的车牌在图像的行列位置定位剪切后彩色车牌图像(3) 字符分割     在汽车牌照自动识别过程中, 字符分割有承前启后的作用。它在前期牌照定位的基础上进行字符的分割, 然后再利用分割的结果进行字符识别。灰度图像二值化车牌图像 4.3 车牌字符识别建立字符模板数据库     模板库的合理建造是字符识别准确的关键之一, 因此在字符识别之前必须把模板库设置好。汽车牌照的字符一般有 7个, 大部分车牌第一位是汉字, 一般代表车辆所属省份, 或是军种,警别等有特定含义的字符简称; 紧接其后的为字母与数字。车牌字符识别与一般文字识别在于它的字符数有限, 十个阿拉伯数字09, 26个大写英文字母AZ以及相关的车牌用汉字: 京、 沪、 苏、 台、 港、 澳、 甲、 乙、 丙、 使、 领、 学、 试、 境、 消、 边、 警等, 以及新式军牌中的汉字南、 兰、 广、 北、 沈、 济、 空、 海等; 车牌颜色: 蓝、 白、 黑、 黄等。因此建立字符模板库也极为方便。4.3.1 构造训练样本如下图所示的数字和字母 建立模板数据库时必须对这些图片进行统一处理, 因为对前面处理分割后的车牌图像的测量得知单个字符的最佳宽高比是1: 2, 因此将这些图片归一化为50×25大小; 因为之后的字符识别考虑使用神经网络算法进行字符识别, 因此再将上面归一化后的模板图像的样本排列在一起构成1250×18的矩阵样本。 将样本进行归一化为50X20大小, 再将图像按列转换成一个1000X1的行向量, 将上述18个图像的样本排列在一起构成1000X18的矩阵样本, 尽可能多的采集汽车图像提取车牌, 部分切分出车牌字符, 构造出更多1000X18的矩形样本, 用构造好的样本库对神经网络进行训练。4.3.2 构造输入样本, 按同样的方法, 将前面分割出的样本归一化 4.3.3 神经网络进行识别总结 当前, 基于数字图像的车牌数字识别系统已经开发完毕。系统设计过程中, 在对图像处理概念和方法有了一定了解之后, 开始了系统的开发, 此过程大概用了一个半月时间。而后完成系统的实现和测试。系统基本完成了当初预计的功能, 根据输入的包含车牌信息的静态图片, 利用神经网络方法识别车牌内部数字。就当前结果来看, 系统基本实现了当初预计的功能。  本系统的特点:  1. 原创性: 在消化理解了现有一些图像操作算法的基础上, 根据实际情况, 将有关算法转化为了个人的方法, 从系统实验结果能够看到, 这些算法起到了一定效果  2. 多方式运行: 系统能够实现一键运行, 即运行程序立即显现结果。同时, 能够进行分步运行, 帮助用户及使用者观察到系统每一步运行所产生的变化, 进而更加理解系统的作用, 能够更好的运行系统。  3. 方法的丰富性: 系统中运用了多种图像处理算法, 并加之个人理解, 从而形成了一个功能比较齐全的软件系统。 展望 虽然系统当前完成了基本功能, 可是由于图像处理操作很多, 而且其设计的知识也相当的广, 在短时间内很难全部理解和灵活运用, 再加之个人技术水平的限制, 因此系统仍存在一些不足之处, 总结起来主要有以下三个方面:  1. 系统默认输入图片为具有一定清晰度的图片, 可是也会有模糊的情况, 系统应降低它的局限性, 因此应增加一些更进一步的图像增强的操作, 以使得能够处理大部分图片, 且能更好的进行车牌定位。  2. 车牌定位算法, 虽然能够定位出车牌的位置, 但有时还是会出现一定偏差, 仍能够进一步完善。  3.系统字符识别过程中的神经网络参数选择如果更加精确, 能够更加准确的识别。附录: clear all;close all;clc; I=imread('H:/532.jpg'); %读取图片 figure(1);imshow(I);I1=rgb2gray(I); %转化为灰度图像 figure(2);imshow(I1);I2=edge(I1,'roberts',0.09,'both'); %采用robert算子进行边缘检测 figure(3);imshow(I2);se=1;1;1; %线型结构元素 I3=imerode(I2,se); %腐蚀图像figure(4);imshow(I3);se=strel('rectangle',25,25); %矩形结构元素 I4=imclose(I3,se); %图像聚类、 填充图像 figure(5);imshow(I4);I5=bwareaopen(I4, ); %去除聚团灰度值小于 的部分<span style="color:#ff0000;"> figure(6);imshow(I5);y,x,=size(I5); I6=double(I5); %绘制行曲线图 Y1=zeros(y,1); for i=1:y for j=1:x if(I6(i,j,1)=1) Y1(i,1)= Y1(i,1)+1; end end end figure(7); subplot(1,2,1); plot(0:y-1,Y1),title('行像素灰度值累计'),xlabel('行值'),ylabel('像素和'); temp, MaxY=max(Y1); PY1=MaxY; while (Y1(PY1,1)>=80)&&(PY1>1) PY1=PY1-7; end PY2=MaxY; while (Y1(PY2,1)>=80)&&(PY2<y) PY2=PY2+7; end %绘制列曲线图 X1=zeros(1,x); for j=1:x for i=PY1:PY2 if(I6(i,j,1)=1) X1(1,j)= X1(1,j)+1; end end end subplot(1,2,2); plot(0:x-1,X1),title('列像素灰度值累计'),xlabel('列值'),ylabel('像数和'); PX1=1; while (X1(1,PX1)<3)&&(PX1<x) PX1=PX1+7; end PX2=x; while (X1(1,PX2)<3)&&(PX2>PX1) PX2=PX2-7; end DW=I(PY1:PY2,PX1:PX2,:); figure(8); imshow(DW),title('车牌定位后图像');% 车牌图像转为灰度 if isrgb(I) I1 = rgb2gray(I); else I1 = I; end % 二值化车牌图像 I1 = im2bw(I1,graythresh(I1);%二值化图像 I2 = bwareaopen(I1,16);%去除小于16像素的区块 figure(); subplot(1,2,1); imshow(I2),title('二值化车牌图像'); % 分割字符按行积累量 y,x=size(I2); I3=double(I2); X1=zeros(1,x); for j=1:x for i=1:y if(I3(i,j,1)=1) X1(1,j)= X1(1,j)+1; end end end subplot(1,2,2); plot(0:x-1,X1),title('车牌列像素点累计'),xlabel('列值'),ylabel('像素和'); % 分割字符 Px0=1; Px1=1; figure(); for i=1:7 while (X1(1,Px0)<3)&&(Px0<x) Px0=Px0+1; end Px1=Px0; while (X1(1,Px1)>=3)&&(Px1<x)|(Px1-Px0)<10) Px1=Px1+1; end Z=I2(:,Px0:Px1,:); switch strcat('Z',num2str(i) case 'Z1' PIN0=Z; case 'Z2' PIN1=Z; case 'Z3' PIN2=Z; case 'Z4' PIN3=Z; case 'Z5' PIN4=Z; case 'Z6' PIN5=Z; otherwise PIN6=Z; end subplot(1,7,i); imshow(Z); Px0=Px1; end function inpt = Pretreatment(I) % 训练样本前期处理 if isrgb(I) I1 = rgb2gray(I); else I1=I; end I1=imresize(I1,50 25);%将图片统一划为50*25大小 I1=im2bw(I1,0.9); m,n=size(I1); inpt=zeros(1,m*n); % 将图像按列转换成一个行向量 for j=1:n for i=1:m inpt(1,m*(j-1)+i)=I1(i,j); end end close all; clear all; % 归一化训练样本 I0=pretreatment(imread('BP/0.jpg'); I1=pretreatment(imread('BP/1.jpg'); I2=pretreatment(imread('BP/2.jpg'); I3=pretreatment(imread('BP/3.jpg'); I4=pretreatment(imread('BP/4.jpg'); I5=pretreatment(imread('BP/5.jpg'); I6=pretreatment(imread('BP/6.jpg'); I7=pretreatment(imread('BP/7.jpg'); I8=pretreatment(imread('BP/8.jpg'); I9=pretreatment(imread('BP/9.jpg'); I10=pretreatment(imread('BP/A.jpg'); I11=pretreatment(imread('BP/B.jpg'); I12=pretreatment(imread('BP/C.jpg'); I13=pretreatment(imread('BP/D.jpg'); I14=pretreatment(imread('BP/G.jpg'); I15=pretreatment(imread('BP/K.jpg'); I16=pretreatment(imread('BP/L.jpg'); I17=pretreatment(imread('BP/M.jpg'); P=I0',I1',I2',I3',I4',I5',I6',I7',I8',I9',I10',I11',I12',I13',I14',I15',I16',I17' T=eye(18,18); %输出样本 % bp神经网络参数设置 net=newff(minmax(P),1250,32,18,'logsig','logsig','logsig','trainrp'); net.inputWeights1,1.initFcn ='randnr' net.layerWeights2,1.initFcn ='randnr' net.trainparam.epochs=5000; net.trainparam.show=50; %net.trainparam.lr=0.003; net.trainparam.goal=0.; net=init(net); net,tr=train(net,P,T); %训练样本 % 测试 I=imread('CAR/0.jpg'); DW=Location(I);%车牌定位 PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit(DW);%字符分割及处理 % 测试字符, 得到识别数值 PIN0=pretreatment(PIN0); PIN1=pretreatment(PIN1); PIN2=pretreatment(PIN2); PIN3=pretreatment(PIN3); PIN4=pretreatment(PIN4); PIN5=pretreatment(PIN5); PIN6=pretreatment(PIN6); P0=PIN0',PIN1',PIN2',PIN3',PIN4',PIN5',PIN6' for i=2:7 T0= sim(net ,P0(:,i); T1 = compet (T0) ; d = find(T1 = 1) - 1; if (d=10) str='A' elseif (d=11) str='B' elseif (d=12) str='C' elseif (d=13) str='D' elseif (d=14) str='G' elseif (d=15) str='K' elseif (d=16) str='L' elseif (d=17) str='M' elseif (d=0) str='0' elseif (d=1) str='1' elseif (d=2) str='2' elseif (d=3) str='3' elseif (d=4) str='4' elseif (d=5) str='5' elseif (d=6) str='6' elseif (d=7) str='7' elseif (d=8) str='8' elseif (d=9) str='9' else str=num2str(d); end switch i case 2 str2=str; case 3 str3=str; case 4 str4=str; case 5 str5=str; case 6 str6=str; otherwise str7=str; end end % 识别出的结果以标题形式显示在图上 S=strcat('黑',str2,str3,str4,str5,str6,str7); figure(); imshow(DW),title(S);

    注意事项

    本文(基于MATLAB的车牌识别系统设计完整版样本.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开