1、车牌识别附源代码车牌识别(附源代码)车牌识别电子 1301 孙洪江 2013234020113一、 目的与要求车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车 牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能 力,还能培养一定的科研能力二、 设计原理:牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照 颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照 明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位 算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通 过视频图像判断车辆驶入视野的功能称之为视
2、频车辆检测。一个完整的牌照识 别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测 到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像 进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成 牌照号码输出。三、 详细设计步骤:为了进行牌照识别,需要以下几个基本的步骤:a.牌照定位,定位图片中的牌照位置;b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实 现,通常与牌照识别互相配合、互相验证。(1) 牌照定位:自然环境下,汽车图像背景
3、复杂、光照不均匀,如何在自然背景中 准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像 进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区, 然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作 为牌照区域,并将其从图象中分割出来。(2)牌照字符分割完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。 字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或 字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写 格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车 图像中的字符分割有较好的效果。(3)牌照字
4、符识别:字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。基 于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据 库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。基 于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后 用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网 络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的 识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如 生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌 照、假牌照等等;实际拍摄过程也会受到
5、环境亮度、拍摄亮度、车辆速度等等 因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照 识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还 应该想办法克服各种光照条件,使采集到的图像最利于识别。、各个功能模块的主要实现程序1.载入车牌图像:I=imread(,car 1 jpg,);figure (1), imshow(I) ; title ( original image); %将车牌的原图显示出来,结果如下:2 将彩图转换为灰度图并绘制直方图:Il=rgb2gray(I) ;%将彩图转换为灰度图 figure(2), subplot (1, 2, 1),
6、imshow(Il) ;title (gray image,);figure (2), subplot (1, 2, 2), imhist (II) ;title(灰度图直方图);绘制灰度图的直方图结果如下所示:3.用roberts算子进行边缘检测:I2=edge(Il/roberts0.18/bothT);% 选 择阈值0.18,用roberts算子进行边缘检测figure(3)4mshow(I2);title(!roberts operator edgedetection image1);结果如下:4图像实施腐蚀操作:se=l;l;l;I3=imerode(I2,se);%对图像实施腐蚀操
7、作,即膨胀的反操作figure(4)3mshow(I3);title(!corrosion image1);5平滑图像se=strel(rectangle,25,25);% 构造结构元 素以 正方形构造一个seI4=imclose(l3,se);figure(5),imshow(l4);title(smoth ing image);结果如下所示:6.删除二值图像的小对象I5=bwareaopen(l4,2000);%去除聚团灰度值小于2000的部 分figure(6),imshow(l5);title(remove the smallObjects); %用imshow函数显示滤波后图像结果如
8、下所示:| H* EA !* H T* g *1心j 厶k弋電希苗Q W,J T臣 口7.车牌定位y,x,z=size(l5);% 返回15各维的尺寸,存储 在x,y,z 中myl=double(l5);% 将I5转换成双精度tic %tic 表示计时的开始,toe表示计时的结束Blue_y=zeros(y,1);% 产生一个 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);%Y 方向车牌区域确PY 仁Max Y;while (B
9、lue_y(P Y1,1)=5)&(PY 11)PY仁PY1-1;endPY 2=Max Y;while (Blue_y(P Y2,1)=5)&(PY 2y)PY 2=P Y2+1;endIY=I(P Y1:P Y2,:,:);Blue_x=zeros(1,x);% 进一步确定x方向的车牌区域for j=1:xfor i=P Y1:P Y2if(myI(i,j,1)=1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while (Blue_x(1,PX1)3)&(PX1x)PX仁PX1+1;endPX2=x;while (Blue_x(1,PX2)PX1)
10、PX2=PX2-1;endPX仁PX1-1;%对车牌区域的校正PX2=PX2+1;dw=l(P Y1:P Y2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(l Y),title(L ine directi on areas);figure(7),subplot(1,2,2),imshow(dw),title(positi oning color images);8.字符分割与识别对分割出的彩色车牌图像进行灰度转换、二值 化、均值滤波、腐蚀膨胀以及字符分割以从车牌 图像中分离出组成车牌号码的单个字符图像,对 分割出来的字符进行预处理(二值
11、化、归一化), 然后分析提取,对分割出的字符图像进行识别给 出文本形式的车牌号码。代码如下:imwrite(dw,dw.jpg);% 将彩色车牌写入dw文件中a=imread(dw.jpg);% 读取车牌文件中的数据 b=rgb2gray(a);%将车牌图像转换为灰度图 imwrite(b,gray lice nee plate.jpg);% 将灰度图像写入文件中figure(8);subplot(3,2,1),imshow(b),title(车牌灰度图像)g_max=double(max(max(b);g_mi n=double(mi n( mi n(b);T=ro un d(g_max-(
12、g_max-g_mi n)/3); %T 为二值化的阈值m, n=size(b);d=(double(b)=T); % d: 二值图像imwrite(d,bi nary lice nee plate.jpg);subplot(3,2,2),imshow(d),title(beforefilteri ng binary lice nee plate) h=fspecial(average,3);d=im2bw(round(filter2(h,d);% 使用 指定的 滤波器h对h进行d即均值滤波imwrite(d,after average lice neeplate.jpg);subplot(3
13、,2,3),imshow(d),title(afteraverage lice nee plate)se=eye(2); % eye (n) retur ns the n-by-niden tity matrix 单位矩阵m,n=size(d);%返回矩阵b的尺寸信息,并存 储在m,n中if bwarea(d)/m/n=0.365 % 计算二值图像中对象的总面积与整个面积的比是否大于 0.365d=imerode(d,se);% 如果大于 0.365 则图像进行腐蚀elseif bwarea(d)/m/n=0.235 % 计算二值图像中对象的总面积与整个面积的比是否小于 0.235d=imdi
14、late(d,se);% 如果小于则实现膨胀操作endimwrite(d,expa nsi on or corrosi on thelice nee plate.jpg); subplot(3,2,4),imshow(d),title(expa nsion or corrosi on the lice nee plate) ;运行结果如下所示: J qur? BHe tdrt fitw Tnofe DeXcfi 好 七k + | I LI 口车tS决應阳僅 fini 叩orw八urn葩p*曲0438HA04S89IKo4S89U 04S89IU 04S899.字符分割在汽车牌照自动识别过程中,
15、字符分割有 承前启后的作用。它在前期牌照定位的基础上 进行字符的分割,然后再利用分割的结果进行 字符识别。字符识别的算法很多,因为车牌字 符间间隔较大,不会出现字符粘连情况,所以 此处采用的方法为寻找连续有文字的块,若长 度大于某阈值,则认为该块有两个字符组成, 需要分割。一般分割出来的字符要进行进一步 的处理,以满足下一步字符识别的需要。但是 对于车牌的识别,并不需要太多的处理就已经 可以达到正确识别的目的。在此只进行了归一化处理,然后进行后期处理。%寻找连续有文字的块,若长度大于某阈值,则 认为该块有两个字符组成,需要分割%首先创建子函数qiege与getword,而后调用 子程序,将车牌
16、的字符分割开并且进行归一化处 理d=qiege(d);m, n=size(d); subplot(3,2,5),imshow(d),title( n) k1=1;k2=1;s=sum(d);j=1;while j=nwhile s(j)=0 j=j+1;endk1=j;while s(j)=0 & j=rou nd(n /6.5) val, num=mi n( sum(d(:,k1+5:k2-5);d(:,k1+ num+5)=0; % 分割endendd=qiege(d);y1=10;y2=0.25;flag=0;word 1=;while flag=0m, n=size(d);left=1
17、;wide=0;while sum(d(:,wide+1)=0 wide=wide+1;endif widey2flag=1;word 仁temp; % WORD 1 end d(:,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);subplot(2,7,1),imshow(word1),title(1);subplot(2,7,2),imsh
18、ow(word2),title(2);subplot(2,7,3),imshow(word3),title(3);subplot(2,7,4),imshow(word4),title(4);subplot(2,7,5),imshow(word5),title(5);subplot(2,7,6),imshow(word6),title(6);subplot(2,7,7),imshow(word7),title(7);m, n=size(word1);word 1= imresize(word1,40 20);word2=imresize(word2,40 20);word3=imresize(w
19、ord3,40 20);word4=imresize(word4,40 20);word5=imresize(word5,40 20);word6=imresize(word6,40 20);word7=imresize(word7,40 20);subplot(2,7,8),imshow(word1),title(1);subplot(2,7,9),imshow(word2),title(2);subplot(2,7,10),imshow(word3),title(3);subplot(2,7,11),imshow(word4),title(4);subplot(2,7,12),imshow
20、(word5),title(5);subplot(2,7,13),imshow(word6),title(6);subplot(2,7,14),imshow(word7),title(7); imwrite(word1,1.jpg); imwrite(word2,2jpg); imwrite(word3,3jpg);imwrite(word4,4.jpg);imwrite(word5,5.jpg);imwrite(word6,6jpg);imwrite(word7,7.jpg);运行结果如下:FileEdit旺左舌 rt To olsIdelp盒 1 k 黑3| 01 1 ?34710.车牌识
21、别:模板匹配是图象识别方法中最具代表性的基本方法之一,它是将从待识别的图象或图象 区域f(i,j) 中提取的若干特征量与模板T(i,j)相应的特征量逐个进行比较,计算它们之间规 格化的互相关量,其中互相关量最大的一个就 表示期间相似程度最高,可将图象归于相应的 类。也可以计算图象与模板特征量之间的距 离,用最小距离法判定所属类。此处采用相减的方法来求得字符与模板中哪一个字符最相似,然后找到相似度最大的 输出。汽车牌照的字符一般有七个,大部分车 牌第一位是汉字,通常代表车辆所属省份,紧 接其后的为字母与数字。车牌字符识别与一般文字识别在于它的字符数有限,汉字共约 50 多个,大写英文字母26个,
22、数字10个。为了 实验方便,结合本次设计所选汽车牌照的特 点,只建立了 7个数字26个字母与10个数字 的模板。其他模板设计的方法与此相同。首先取字符模板,接着依次取待识别字符 与模板进行匹配,将其与模板字符相减,得到 的0越多那么就越匹配。把每一幅相减后的图 的0值个数保存,即为识别出来的结果 源代码如下:liccode=char(0:9 A:Z 苏豫陕鲁京辽浙);% 建立自动识别字符代码表SubBw2=zeros(40,20);l=1;for I=1:7ii=i nt2str(l);t=imread(ii,.jpg);SegBw2=imresize(t,4020, nearest);Seg
23、Bw2=double(SegBw2)20;if l=1 % 第一位汉字识别kmi n=37;kmax=43;elseif l=2 % 第二位AZ字母识别kmi n=11;kmax=36;else l=3 % 第三位以后是字母或数字识别kmi n=1;kmax=36;endfor k2=km in:kmaxfn ame=strcat( 字 符 模 板,liccode(k2),.jpg);SamBw2 = imread(f name);SamBw2=double(SamBw2)1;for i=1:40for j=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);end % 以上相当于两幅图相减得到第三 幅图Dmax=O;for k1=1:40for 11=1:20if ( SubBw2(k1,l1) 0 | SubBw2(k1,l1) =5)&(PY 11)PY仁PY1-1;endPY 2=Max Y;while (Blue_y(P Y2,1)=5)&(PY 2y)PY 2=P Y2+1;endIY=I(P Y1:P Y2,:,:);%行方向车牌区域确定
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1