【图像识别】基于模板匹配算法实现车辆出入库计时matlab系统

【图像识别】基于模板匹配算法实现车辆出入库计时matlab系统

1 简介

车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出,再获得当前时间。通过出停车场时对车辆再次进行处理,获得停车时间。

2 部分代码

%-----------------------------出停车场--------------------------- clc; clear all; [filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入% fil=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名 I=imread(fil); I1=rgb2gray(I); I2=edge(I1,'roberts',0.15,'both'); se=[1;1;1]; I3=imerode(I2,se); se=strel('rectangle',[25,25]); I4=imclose(I3,se); I5=bwareaopen(I4,2000); [y,x,z]=size(I5); myI=double(I5); t % 滤波 h=fspecial('average',3); d=im2bw(round(filter2(h,d))); end % 分割出第二个字符 [word2,d]=getword(d); % 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符 [word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d); [m,n]=size(word1); %归一化大小为40*20 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]); 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); l=1; for I=1:7; ii=int2str(I); t=imread([ii,'.jpg']); SegBw2=imresize(t,[40 20],'nearest'); SegBw2=double(SegBw2)>20; if l==1 %第一位汉字识别 kmin=37; kmax=43; elseif l==2 %第二位字母识别 kmin=11; kmax=36; else l>=3 %第三位后字母或数字识别 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat('字符模板\',liccode(k2),'.jpg'); SamBw2=imread(fname); SamBw2=double(SamBw2)>1; for i=1:40 for j=1:20 SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); end end %相当于两幅图相减得第三幅图 Dmax=0; for k1=1:40; for l1=1:20 if(SubBw2(k1,l1)>0 || SubBw2(k1,l1)<0) Dmax=Dmax+1; end end end Error(k2)=Dmax; end Error1=Error(kmin:kmax); MinError=min(Error1); findc=find(Error1==MinError); Code(l*2-1)=liccode(findc+kmin-1); Code(l*2)=' '; l=l+1; end t=toc; %与文本文件数据对比 file=fopen('Data.txt'); while feof(file)~=1 fid=fgetl(file); if(strcmp(fid,Code)==1) fic=fgetl(file); end end fclose(file); fib=datestr(now); fie=datevec(fic); fid=datevec(fib); ts=etime(fid,fie); aa={Code;num2str(ts);'单位为秒'}; msgbox(aa,'车牌及停车时间');%弹出框

3 仿真结果

4 参考文献

[1]赖特. "基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识." 智能建筑与智慧城市 11(2017):5.

部分理论引用网络文献,若有侵权联系博主删除。