matlab车牌识别.doc_第1页
matlab车牌识别.doc_第2页
matlab车牌识别.doc_第3页
matlab车牌识别.doc_第4页
matlab车牌识别.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

专业实践 实践项目四仿真工具在图像处理中的应用实践 班级: 学号: 姓名: 成绩: MATLAB在图像处理中的应用实践一、 实践目的车牌是一辆汽车独一无二的信息,因此,对车辆牌照的识别技术可以作为辨识一辆车最为有效的方法。随着ITS(智能交通系统)的高速发展,对车牌识别技术的研究也随之发展。从根本上讲,牌照识别应用了先进的图像处理,模式识别,人工智能技术来获取,处理,解释,记录拍照的图像。目前, 汽车牌照的自动识别技术已经得到了广泛应用。汽车牌照自动识别整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,其中字符识别过程主要由以下3个部分组成:正确地分割文字图像区域;正确的分离单个文字;正确识别单个字符。用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。二、 实践原理车牌图像通常是在各种复杂的背景、环境条件下采集得到,图像质量难以保证,因此在进行车牌定位之前,通常要进行图像的预处理工作。图像预处理主要是对系统获取的原始图像基本特征的信息进行相应的、有针对性的处理,以滤去干扰、噪声,作几何校正、色彩校正,以便于计算机的分析计算,一般包括滤波、图像增强、图像二值化、形态学运算、边缘检测等。图2 车牌图像预处理流程图三、 实践内容1、 车牌预处理(灰度化、去噪、灰度变换、边缘检测、形态学处理)由于照片拍摄的好坏有很多外界因素决定,由于光照强度的影响,晴天拍摄的照片与阴天拍摄的照片质量肯定不一样,白天和晚上更是不同;由于每部车的车速的不一致,慢速行驶的车辆会比快速行驶的车辆拍摄的照片质量好一些,而且车速过快,会使照片的字迹模糊,这肯定会影响字符的识别。故要对拍摄的照片进行灰度化、二值化、滤波等预处理。传统的设计方法为:利用静止的汽车牌照图片,利用C 语言或C+语言来对图像进行处理,编程很复杂,维护难度大。而MATLAB 语言对处理图像而言非常方便,可直接调用已经编好的函数,如可直接调用现成的函数进行复杂的傅里叶变换、拉普拉斯变换、二值化处理、数字滤波等操作。2、 车牌定位3、 字符分割4、 字符识别程序如下:I=imread(C:Documents and SettingsAdministrator桌面yu.jpg);figure(1),imshow(I);title(原图);I1=rgb2gray(I);figure(2),subplot(1,2,1),imshow(I1);title(灰度图);figure(2),subplot(1,2,2),imhist(I1);title(灰度图直方图);I2=edge(I1,roberts,0.08,both);figure(3),imshow(I2);title(robert算子边缘检测)se=1;1;1;I3=imerode(I2,se);figure(4),imshow(I3);title(腐蚀后图像);se=strel(rectangle,40,40);I4=imclose(I3,se);figure(5),imshow(I4);title(平滑图像的轮廓);I5=bwareaopen(I4,2000);figure(6),imshow(I5);title(从对象中移除小对象);y,x,z=size(I5);myI=double(I5);ticBlue_y=zeros(y,1);for i=1:yfor j=1:xif(myI(i,j,1)=1)Blue_y(i,1)=Blue_y(i,1)+1;endendendtemp MaxY=max(Blue_y);PY1=MaxY;while(Blue_y(PY1,1)=120)&(PY11)PY1=PY1-1;endPY2=MaxY;while(Blue_y(PY2,1)=40)&(PY2y)PY2=PY2+1;endIY=I(PY1:PY2,:,:);Blue_x=zeros(1,x);for j=1:xfor i=PY1:PY2if(myI(i,j,1)=1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while(Blue_x(1,PX1)3)&(PX1x)PX1=PX1+1;endPX2=x;while(Blue_x(1,PX2)PX1)PX2=PX2-1;endPX1=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,输入一个定位裁剪后的车牌图像);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);m,n=size(b);d=(double(b)=T);imwrite(d,2.车牌二值图像.jpg);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);se=eye(2);m,n=size(d);if bwarea(d)/m/n=0.365d=imerode(d,se);elseif bwarea(d)/m/n=0.235d=imdilate(d,se);endimwrite(d,5.膨胀或腐蚀处理后.jpg);figure(8),subplot(3,2,5),imshow(d),title(5.膨胀或腐蚀处理后)d=qiege(d);m,n=size(d);figure,subplot(2,1,1),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;while j=nwhile s(j)=0j=j+1;endk1=j;while s(j)=0 & j=round(n/6.5)val,num=min(sum(d(:,k1+5:k2-5);d(:,k1+num+5)=0;endendd=qiege(d);y1=10;y2=0.25;flag=0;word1=;while flag=0m,n=size(d);left=1;wide=0;while sum(d(:,wide+1)=0wide=wide+1;endif widey2flag=1;word1=temp;endd(:,1:wide)=0;d=qiege(d);endendword2,d=getword(d);word3,d=getword(d);word4,d=getword(d);word5,d=getword(d);word6,d=getword(d);word7,d=getword(d);figure(9),imshow(word1),title(1);figure(10),imshow(word2),title(2);figure(11),imshow(word3),title(3);figure(12),imshow(word4),title(4);figure(13),imshow(word5),title(5);figure(14),imshow(word6),title(6);figure(15),imshow(word7),title(7);m,n=size(word1);word1=imresize(word1,40 20);word2=imresize(word2,40 20);word3=imresize(word3,40 20);word4=imresize(word4,40 20);word5=imresize(word5,40 20);word6=imresize(word6,40 20);word7=imresize(word7,40 20);figure(16);subplot(3,7,8),imshow(word1),title(1);subplot(3,7,9),imshow(word2),title(2);subplot(3,7,10),imshow(word3),title(3);subplot(3,7,11),imshow(word4),title(4);subplot(3,7,12),imshow(word5),title(5);subplot(3,7,13),imshow(word6),title(6);subplot(3,7,14),imshow(word7),title(7);imwrite(word1,1.jpg);imwrite(word2,2.jpg);imwrite(word3,3.jpg);imwrite(word4,4.jpg);imwrite(word5,5.jpg);imwrite(word6,6.jpg);imwrite(word7,7.jpg);liccode=char(0:9 A:Z 鲁陕苏渝京);SubBw2=zeros(40,20); % 创建一个40行20列的0矩阵l=1;for I=1:7ii=int2str(I); % 将整型数据转换为字符串型数据t=imread(ii,.jpg);% 依次读入七位车牌字符SegBw2=imresize(t,40 20,nearest); % 对读入的字符进行缩放if I=1 % 第一位汉字识别kmin=37;kmax=43;elseif I=2 % 第二位 AZ 字母识别kmin=11;kmax=36;else % 第三位以后是字母或数字识别 ;即I=3kmin=1;kmax=36; endfor k2=kmin:kmaxfname=strcat(字符模板,liccode(k2),.jpg); % strcat函数:连接字符串SamBw2 = imread(fname);for i=1:40for j=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);endend% 以上相当于两幅图相减得到第三幅图 进行匹配Dmax=0; % 与模板不同的点个数for k1=1:40for l1=1:20if ( SubBw2(k1,l1) 10 | SubBw2(k1,l1) 2 15)20以上无区别Dmax=Dmax+1;endendendError(k2)=Dmax; % 记录下字符与模板k2不同的点个数end Error1=Error(kmin:kmax);MinError=min(Error1); % 差别最小的findc=find(Error1=MinError); % 找出差别最小的模板Code(l)=liccode(findc(1)+kmin-1); % 此处用2*l-1且后面的2*l= ,第隔一空格输出一个字符Code(3)= ;Code(4)= ;l=l+1;if l=3;% 后五位与前两位字符隔开l=l+2;endendfigure(10),subplot(5,7,1:7),imshow(dw),title(第一步:车牌定位),xlabel(第二步:车牌分割); %,subplot(6,7,15),imshow(word1);subplot(6,7,16),imshow(word2);subplot(6,7,17),imshow(word3);subplot(6,7,18),imshow(word4);subplot(6,7,19),imshow(word5);subplot(6,7,20),imshow(word6);subplot(6,7,21),imshow(word7);subplot(6,7,22:42),imshow(dw.jpg);%xlabel(第三步:识别结果为: , Code,Color,b); void t0(void) interrupt 1 using 0 TH0=STH0; TL0=STL0; P1_0=P1_0; s=strcat(渝,A,N,7,9,6,8); figure(25);imshow(dw),title(s);四、 实践要求1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论