您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字图像处理-汽车牌照自动识别
数字图象处理I数字图象处理题目:汽车牌照自动识别学院:计算机科学与信息学院专业:_______网络工程_______数字图象处理II目录1实验目的.......................................................................................12实验原理和方法..........................................................................13实验内容和步骤..........................................................................13.1牌照定位...................................................................................13.2牌照字符分割...........................................................................23.3牌照字符识别...........................................................................24实验数据.......................................................................................24.1源程序.......................................................................................24.2运行结果...................................................................................74.2.1牌照定位.................................................................................74.2.2牌照字符分割.........................................................................94.2.2牌照字符识别.......................................................................10数字图象处理11实验目的1.分析汽车牌照的特点,正确获取整个图像中车牌的区域,并识别出车牌号。2.将图像预处理、分割、分析等关键技术结合起来,理论与实践相结合,提高图像处理关键技术的综合应用能力。2实验原理和方法牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。3实验内容和步骤为了进行牌照识别,需要以下几个基本的步骤:a.牌照定位,定位图片中的牌照位置;b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。3.1牌照定位自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。流程图如下:数字图象处理23.2牌照字符分割完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。流程图如下:3.3牌照字符识别字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。4实验数据4.1源程序源代码(.m文件):clc;closeallclearall%(1)牌照定位Scolor=imread('lab4.jpg');%读取一副真彩色图片Sgray=rgb2gray(Scolor);%将RGB图片转为灰度图片s=strel('disk',15);%strel函数Bgray=imopen(Sgray,s);%对图像进行开运算Egray=imsubtract(Sgray,Bgray);%两幅图相减figure(1)subplot(2,2,1),imshow(Scolor),title('原图像');subplot(2,2,2),imshow(Sgray),title('灰度图像')subplot(2,2,3),imshow(Bgray),title('开图像')subplot(2,2,4),imshow(Egray),title('相减图像')fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型数字图象处理3fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值bw22=im2bw(Egray,level);%转换图像为二进制图像bw2=double(bw22);figure,imshow(bw2);title('图像二值化');%得到二值图像grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界figure,imshow(grd);title('图像边缘提取');%输出图像边缘bg1=imclose(grd,strel('rectangle',[13,13]));%取矩形框的闭运算figure,imshow(bg1);title('图像闭运算[13,13]');%输出闭运算的图像bg2=imopen(bg1,strel('rectangle',[18,20]));%取矩形框的开运算figure,imshow(bg2);title('图像开运算[18,20]');%输出开运算的图像%坐标的确定[a,b]=size(bg2);num=0;%自下限开始向上扫描,当白点数少于每行总点数的1/10时,停止扫描,%并将该行定义为车牌字符区域的纵向上限fori=1:1:aforj=1:bifbg2(i,j)==1num=num+1;endendifnum(b*0.1)ydown=i;break;endend%自下向上扫描,当白点数多于每行总点数的1/10时,停止扫描,%并将该行定义为车牌字符区域的纵向下限fori=a:-1:1num=0;forj=1:bifbg2(i,j)==1num=num+1;endendifnum(b*0.1)yup=i;break;endend[a,b]=size(bg2);数字图象处理4nu=0;%自左到右扫描,当白点数少于每行总点数的1/10时,停止扫描,%并将该行定义为车牌字符区域的横向左限fori=1:1:bforj=1:aifbg2(j,i)==1nu=nu+1;endendifnu(a*0.05)xdown=i;break;endend%自右到左扫描,当白点数多于每行总点数的1/10时,停止扫描,%并将该行定义为车牌字符区域的横向右限fori=b:-1:1nu=0;forj=1:aifbg2(j,i)==1nu=nu+1;endendifnu(a*0.05)xup=i;break;endendgoal=imcrop(Scolor,[xdown,ydown,xup-xdown,yup-ydown]);figure();subplot(3,1,1);imshow(goal);title('车牌区域');%(2)牌照字符分割goalg=rgb2gray(goal);C=im2bw(goalg);%转为二值图像subplot(3,1,2);imshow(C);title('车牌区域二值图像');I2=bwareaopen(C,20);subplot(3,1,3);imshow(I2);title('中值滤波后的二值图像');%histcol=sum(I2);%计算垂直投影%subplot(2,2,4);plot(histcol);title('垂直投影');[y1,x1,z1]=size(I2);I3=double(I2);TT=1;%%%%%%%去除图像顶端和底端的不感兴趣区域%%%%%Y1=zeros(y1,1);数字图象处理5fori=1:y1forj=1:x1if(I3(i,j,1)==1)Y1(i,1)=Y1(i,1)+1endendendPy1=1;Py0=1;while((Y1(Py0,1)20)&&(Py0y1))Py0=Py0+1;endPy1=Py0;while((Y1(Py1,1)=20)&&(Py1y1))Py1=Py1+1;endI2=I2(Py0:Py1,:,:);%subplot(2,1,2);imshow(I2),title('目标车牌区域');%%%%%%分割字符按行积累量%%%%%%%X1=zeros(1,x1);forj=1:x1fori=1:y1if(I3(i,j,1)==1)X1(1,j)=X1(1,j)+1;endendendfigure();plot(0:x1-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('累计像素量');Px0=1;Px1=1;%%%%%%%%%%%%分割字符%%%%%%%%%%%%%%%%%%fori=1:7while((X1(1,Px0)3)&&(Px0x1))Px0=Px0+1;endPx1=Px0;while(((X1(1,Px1)=3)&&(Px1x1))||((Px1-Px0)10))Px1=Px1+1;endZ=I2(:,Px0:Px1,:);switchstrcat('Z',num2str(i))case'Z1'PIN0=Z;数字图象处理6case'Z2'PIN1=Z;case'Z3'PIN2=Z;case'Z4'PIN3=Z;case'Z5'PIN4=Z;case'Z6'PIN5=Z;otherwisePIN6=Z;endfigure(8);subplot(1,7,i);imshow(Z);Px0=Px1;end%(3)车牌字符识别liccode=char(['0':'9''A':'Z''鲁陕苏豫粤']);%建立自动识别字符代码表SubBw2=zeros(40,20);l=1;forl=1:7fname=strcat('D:\ProgramFiles\MATLAB\R2012a\bin\字符模版',int2str(l),'.jpg');%保存子
本文标题:数字图像处理-汽车牌照自动识别
链接地址:https://www.777doc.com/doc-2387918 .html