车牌检测程序及报告实验报告.doc
车 牌 检 测班级: 姓名: 学号:一、实验目的车牌检测的数字识别二、实验过程1、先将车辆图片读入。2、将图片进行预处理,手动输入车牌位置坐标。3、提取车牌图像,进行自动阈值和二值化处理。4、图像按字符分割,并且写入到固定的文件夹中。5、将车牌中的数字信息重新读入,进行模版匹配。6、利用最小距离法,识别车牌的数字信息并输出。三、具体程序clear;clc; im=imread('C:UsersccjDesktop1.jpg');im_gray=rgb2gray(im);imagesc(im_gray);colormap(gray); m0=input('请输入左顶角车牌x坐标:');n0=input('请输入左顶角车牌y坐标:');m1=input('请输入右下角车牌x坐标:');n1=input('请输入左顶角车牌y坐标:'); im_plate=im_gray;top=m0;bottom=m1;left=n0;right=n1;im_plate=im_gray(top:bottom,left:right);figure;imshow(im_plate); %imwrite(im_plate,'D:Program Files图像/plateplate3.bmp','bmp'); %I=imread('D:Program Files图像plateplate3.bmp');%I=rgb2gray(I);I=im_plate;X Y=size(I);S=sum(sum(I);S=S/(X*Y);im_bi=I>S;for k=1:5; im1=double(im_bi).*double(I); im2=double(abs(1-im_bi).*double(I); S1=sum(sum(im1)/sum(sum(im_bi); S2=sum(sum(im2)/sum(sum(abs(1-im_bi); S=(S1+S2)/2 endI=I>S;figure;imshow(I); mask=ones(1,3);P=imclose(I,mask);%标记L,num=bwlabel(P);T=100;%设定面积阈值参数for i=1:num r,c=find(L=i); if length(r)<T P(r,c)=0; endendfigure(2);imshow(P)title('Size filtering','Fontsize',18) for y=1:Y S(y)=sum(I(1:X,y);endy=1:Y;figureplot(y,S(y); figure(3);title('Character segmentation','Fontsize',18)j=1;%分割的字符个数索引T=100;%设定面积阈值参数for i=1:num r,c=find(L=i); if length(r)<T%阈值T取100 continue; else top=min(r);bottom=max(r); left=min(c);right=max(c); tempj=P(top:bottom,left:right); subplot(1,num,j) imshow(tempj) j=j+1; endend imwrite(temp1,'D:Program Files图像/data1.bmp','bmp');imwrite(temp2,'D:Program Files图像/data2.bmp','bmp');imwrite(temp3,'D:Program Files图像/data3.bmp','bmp');imwrite(temp4,'D:Program Files图像/data4.bmp','bmp');imwrite(temp5,'D:Program Files图像/data5.bmp','bmp');imwrite(temp6,'D:Program Files图像/data6.bmp','bmp');imwrite(temp7,'D:Program Files图像/data7.bmp','bmp'); %模版匹配识别(最小距离法) ibm1=imread('D:Program Files图像/data3.bmp'); ibm2=imread('D:Program Files图像/data4.bmp'); ibm3=imread('D:Program Files图像/data5.bmp'); ibm4=imread('D:Program Files图像/data6.bmp'); ibm5=imread('D:Program Files图像/data7.bmp'); %归一化 row=40; col=30; for j=1:5 digitj=imresize(ibmj,row col,'bilinear'); D=zeros(1,10); for num=1:10 str='C:UsersniuDesktoptemplate',num2str(num),'.bmp' i=imread(str); temp=imresize(i,row col,'bilinear'); dis=abs(digitj-temp); D(num)=sum(sum(dis); end X,num=min(D); resultj=num-1; end sprintf(' %d',result1:5) 四、实验结果