matlab车牌号码识别程序代码资料.pdf

上传人:白大夫 文档编号:5402800 上传时间:2020-05-01 格式:PDF 页数:13 大小:1.26MB
返回 下载 相关 举报
matlab车牌号码识别程序代码资料.pdf_第1页
第1页 / 共13页
matlab车牌号码识别程序代码资料.pdf_第2页
第2页 / 共13页
matlab车牌号码识别程序代码资料.pdf_第3页
第3页 / 共13页
matlab车牌号码识别程序代码资料.pdf_第4页
第4页 / 共13页
matlab车牌号码识别程序代码资料.pdf_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《matlab车牌号码识别程序代码资料.pdf》由会员分享,可在线阅读,更多相关《matlab车牌号码识别程序代码资料.pdf(13页珍藏版)》请在三一文库上搜索。

1、基于 matlab 的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处 理,车牌定位, 字符分割, 然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取 车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System, 简称ITS)的推广变的越来越重要, 而作为 ITS的一个重要组成部分, 车辆牌照识 别系统( vehicle license plate recognition system ,简称LPR)

2、对于交通管理、治安 处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测, 交通 控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车 辆监控以及车辆安全防盗等领域,具有广阔的应用前景。 由于牌照是机动车辆管 理的唯一标识符号, 因此,车辆牌照识别系统的研究在机动车管理方面具有十分 重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图 像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、 检测、 定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分 割为单个字符,然后输入

3、JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像 中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车 牌图像中分离出组成车牌号码的单个字符图像 (4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析 提取,对分割出的字符图像进行识别给出文本形式的车牌号码。 4 汽车牌照识别系统的 matlab实现 4.1 图像预处理与车牌定位 输入的彩色图像包含大量颜色信息,会占用较多

4、的存储空间, 且处理时也会 降低系统的执行速度, 因此对图像进行识别等处理时, 常将彩色图像转换为灰度 图像,以加快处理速度。对图像进行灰度化处理、边缘提取、再利用形态学方法 对车牌进行定位。 具体步骤如下: 首先对图像进行灰度转换, 二值化处理然后采 用4X1的结构元素对图像进行腐蚀,去除图像的噪声。采用25X25的结构元素, 对图像进行闭合应算使车牌所在的区域形成连通。在进行形态学滤波去除其它区 域。 I=imread(DSC01344.jpg);% 读取图像 figure(); subplot(3,2,1),imshow(I), title( 原始图像 ); I1=rgb2gray(I)

5、;% 转化为灰度图像 subplot(3,2,2),imshow(I1),title( 灰度图像 ); I2=edge(I1,robert,0.09,both);% 采用 robert算子进行边缘检测 subplot(3,2,3),imshow(I2),title( 边缘检测后图像 ); se=1;1;1; % 线型结构元素 I3=imerode(I2,se); %腐蚀图像 subplot(3,2,4),imshow(I3),title( 腐蚀后边缘图像 ); se=strel(rectangle,25,25); 矩形结构元素 I4=imclose(I3,se);% 图像聚类、填充图像 sub

6、plot(3,2,5),imshow(I4),title( 填充后图像 ); I5=bwareaopen(I4,2000);% 去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I5),title( 形态滤波后图像 ); y,x,z=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 temp MaxY=max(Y1); figure(); subplot(3,2,1),plot(0:y-1,Y1),ti

7、tle(行方向像素点灰度值累计和),xlabel( 行值 ),ylabel( 像素 ); % 求的车牌的行起始位置和终止位置% PY1=MaxY; while (Y1(PY1,1)=50) end PY2=MaxY; while (Y1(PY2,1)=50) end PX1=PX1-1; PX2=PX2+1; %分割出车牌图像 % dw=I(PY1:PY2,PX1:PX2,:); subplot(3,2,3),imshow(dw),title( 定位剪切后的彩色车牌图像) % 4.2 车牌字符分割 % 确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字 符图像 。 if isrg

8、b(dw) I1 = rgb2gray(dw); %将RGB图像转化为灰度图像 else I1=dw; end g_max=double(max(max(I1); g_min=double(min(min(I1); T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值 m,n=size(I1);% d: 二值图像 %h=graythresh(I1); I1=im2bw(I1,T/256); subplot(3,2,4); imshow(I1),title( 二值化车牌图像 ); I2=bwareaopen(I1,20); subplot(3,2,5); ims

9、how(I2),title( 形态学滤波后的二值化图像); y1,x1,z1=size(I2); I3=double(I2); TT=1; % 去除图像顶端和底端的不感兴趣区域% Y1=zeros(y1,1); for i=1:y1 for j=1:x1 if(I3(i,j,1)=1) Y1(i,1)= Y1(i,1)+1 ; end end end Py1=1; Py0=1; while (Y1(Py0,1)=20) end Z=I2(:,Px0:Px1,:); switch strcat(Z,num2str(i) case Z1 PIN0=Z; case Z2 PIN1=Z; case Z

10、3 PIN2=Z; case Z4 PIN3=Z; case Z5 PIN4=Z; case Z6 PIN5=Z; otherwise PIN6=Z; end figure(3); subplot(1,7,i); imshow(Z); Px0=Px1; End 4.3 车牌字符识别 字符识别方法主要有基于模板匹配算法和基于人工神经网络算法。基于模 板匹配算法是首先将分割后的字符二值化,并将其尺寸缩放为字符数据库中模板 的大小,然后与所有模板进行匹配, 最后选取最佳匹配作为结果。建立数字库对 该方法在车牌识别过程中很重要, 数字库准确才能保证检测出的数据正确。基于 人工神经元网络的算法有两种,

11、一种是先对特征提取待识别字符,然后用所获得 的特征训练神经网络分配器; 另一种是直接将待处理图像输入网络由网络自动实 现特征提取直至识别结果。 在本程序中用基于人工神经元网络识别车牌字符。在 车牌字符识别部分 , 字符集中包含约 50个汉字 , 26个大写英文字母及 10个阿拉伯 数字。总的字符样本并不太多。 4.3.1 构造训练样本如下图所示的数字和字母, 将样本进行归一化为 50X20大小,再将图像按列转换成一个1000X1的行向 量,将上述 18个图像的样本排列在一起构成1000X18的矩阵样本,尽可能多的采 集汽车图像提取车牌,部分切分出车牌字符,构造出更多1000X18的矩形样本,

12、用构造好的样本库对神经网络进行训练。 function inpt = pretreatment(I) %YUCHULI Summary of this function goes here % Detailed explanation goes here if isrgb(I) I1 = rgb2gray(I); else I1=I; end I1=imresize(I1,50 20);% 将图片统一划为50*20大小 I1=im2bw(I1,0.9); m,n=size(I1); inpt=zeros(1,m*n); % 将图像按列转换成一个行向量 for j=1:n for i=1:m i

13、npt(1,m*(j-1)+i)=I1(i,j); end end 4.3.2 构造输入样本,按同样的方法,将前面分割出的样本归一化。 4.3.3 神经网络进行识别。 close all; clear all; %归一化训练样本 % I0=pretreatment(imread(0.jpg); I1=pretreatment(imread(1.jpg); I2=pretreatment(imread(2.jpg); I3=pretreatment(imread(3.jpg); I4=pretreatment(imread(4.jpg); I5=pretreatment(imread(5.jpg

14、); I6=pretreatment(imread(6.jpg); I7=pretreatment(imread(7.jpg); I8=pretreatment(imread(8.jpg); I9=pretreatment(imread(9.jpg); I10=pretreatment(imread(A.jpg); I11=pretreatment(imread(C.jpg); I12=pretreatment(imread(G.jpg); I13=pretreatment(imread(L.jpg); I14=pretreatment(imread(M.jpg); I15=pretreatm

15、ent(imread(R.jpg); I16=pretreatment(imread(H.jpg); I17=pretreatment(imread(N.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),1000,32,18,logsig,logsig,logsig,trainrp); net.inputWeights1,1.initFcn =randnr; net.layerWeights2,1

16、.initFcn =randnr; net.trainparam.epochs=5000; net.trainparam.show=50; %net.trainparam.lr=0.003; net.trainparam.goal=0.0000000001; net=init(net); %训练样本 % net,tr=train(net,P,T); % 测试 % %I=imread(DSC01323.jpg); I=imread(DSC01344.jpg); dw=location(I);% 车牌定位 PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit

17、(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 =fin

18、d(T1 = 1) - 1 if (d=10) str=A; elseif (d=11) str=C; elseif (d=12) str=G; elseif (d=13) str=L; elseif (d=14) str=M; elseif (d=15) str=R; elseif (d=16) str=H; elseif (d=17) str=N; else str=num2str(d); end switch i case 2 str1=str; case 3 str2=str; case 4 str3=str; case 5 str4=str; case 6 str5=str; otherwise str6=str; end end % 显示定位后的分割出的车牌彩图,% % 识别结果以标题形式显示在图上% s=strcat(渝,str1,str2,str3,str4,str5,str6); figure(); imshow(dw),title(s); 参考文献:

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

当前位置:首页 > 其他


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