




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像处理在智能交通中的应用——基于MATLAB的车牌识别 摘要:针对交通管理系统的信息化、智能化发展趋势,通过对车牌特征和定位技术的探索,提出了汽车牌照字符识别系统。本文采用多种滤波技术对车牌进行滤波处理,robert边缘检测算子进行边缘检测,运用区域分割法实现了车牌字符的分割,最后简述了字符识别原理和模板匹配在字符识别中的应用方法。由实验结果可知,系统能准确实现车牌的定位、分割和识别,具有良好的性能。关键词:车牌识别,MATLAB,数字图像处理,模式识别,智能第一部分引言随着汽车数量的增加,城市交通状况日益受到人们的重视,如何进行有效的交通管理更是成为了人们关注的焦点。针对此问题,人们运用新的科学技术,相继研制开发出了各种交通道路监视、管理系统。这些系统通过车辆检测装置对过往的车辆实施检测,提取有关交通数据,达到监控、管理和指挥交通的目的。因此,智能交通系统ITS(intelligenttrafficsystem)已成为世界交通领域研究的重要课题。车牌识别系统LPR(1icenseplaterecognition)作为智能交通系统的一个重要组成部分,已在高速公路、城市交通和停车场等项目的管理中占有无可取代的重要地位。它在不影响汽车状态的情况下,由计算机自动完成车牌的识别,从而降低交通管理工作的复杂度。本文应用图像处理技术、车牌定位技术、车牌校正技术、车牌分割技术、字符特征提取方法和模版匹配识别技术等解决了车辆牌照识别问题,并提出了车牌识别系统的设计方案。第二部分车牌识别的原理和方法通常,车牌识别过程分为图像预处理、车牌定位、车牌校正、车牌分割和车牌识别五个部分。①图像预处理:在整个车牌识别系统中,由于采集进来的图像为真彩图,再加上实际采集环境的影响以及采集硬件等原因,图像质量并不高,其背景和噪声会影响字符的正确分割和识别,所以在进行车牌分割和识别处理之前,需要先对车牌图像进行图像预处理操作。②车牌定位:首先对车牌的二值图片进行形态学滤波,使车牌区域形成一个连通区域,然后根据车牌的先验知识对所得到的连通区域进行筛选,获取车牌区域的具体位置,完成从图片中提取车牌的任务。③车牌校正:由于捕捉图片的摄像头与车身的角度问题,得到的车牌图片不是水平的。为了顺利进行后续的分割和识别,必须对车牌进行角度校正。在此,使用了Radon变换来对车牌进行校正。④车牌分割:首先对车牌进行水平投影,去除水平边框;再对车牌进行垂直投影。通过对车牌进行投影分析可知,与最大值峰中心对应的为车牌中第二个字符和第三个字符的间隔,与第二大峰中心距离对应的即为车牌字符的宽度,并以此为依据对车牌进行分割。⑤字符识别:本文采用模板匹配方法来对车牌进行识别。识别过程中,首先建立标准字库,再将分割所得到的字符进行归一化,将归一化处理后的字符与标准字库里的字符逐一比较,最后把误差最小的字符作为结果显示出来。本文采用成熟的数字图像处理技术和Matlab仿真工具[3],使得文中所提出的算法得以实现。如图1所示为采用Matlab实现车牌字符分割技术的程序流程。开始开始车牌定位车牌滤波字符分隔字符识别结束图1程序流程图第三部分图像预处理3.1灰度化数字图像分为彩色图像和灰度图像。在RGB模型中,如果R=G=B,则表示一种灰度颜色,其中R=G=B的值叫做灰度值[4],通常用g来表示。将彩色图像转换为灰度图像的过程叫做灰度化处理。由于彩色图像的存储空间较大,因此,在对图像进行识别等处理过程中,需要将彩色图像转换为灰度图像,以加快后续工作的处理速度。图像二值化公式:g(x,y)=其中,f(x,y)为原始灰度图像,g(x,y)为转化后图像,T为阈值。在Matlab中,实现灰度化的程序语句如下:I=imread(‘chepai.jpg’);//读入原始图像figure,imshow(I);title(‘原始图像’);图3.1车牌原图3.2图像二值化灰度图像有256个灰度级的单色图像,多级别图像能够呈现出较为丰富的明暗度,但对于目标搜索来说,总是希望尽可能地减少背景像素的干扰而保存或增强目标区的色素度。图像的二值化可以把像素灰度级分成黑与白两级,即把原灰度图像转化为二值图像。在Matlab语句中输入:I1=rgb2gray(I);//灰度化figure,imshow(I1);title(‘灰度图像’);figure(2),subplot(1,2,1),imshow(I1);title('灰度图');figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');图3.2(a)灰度图与灰度直方图图3.2(b)车牌二值图像3.4robert算子边缘检测边缘是指图像局部亮度变化最显著的部分[5]。边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要基础,图像分析和理解的第一步常常是边缘检测。物体的边缘是图像最基本的特征,边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,因此它是图像分割所依赖的重要特征之一。robert边缘算子是一种利用局部差分算子寻找边缘的算子,它由下式给出:g(x,y)=其中,f(x,y)、f(x+1,y)、f(x,y+1)、f(x+1,y+1)分别为4领域的坐标。robert算子是22算子模板,如下图示:100-101-10为得到较好的边缘检测性能,采用robert算子对图像进行边缘提取。Roberts边缘检测是一种比较新的边缘检测算子,它利用高斯函数的一阶微分,能在噪声抑制和边缘检测之间取得很好的平衡。与其它边缘算子相比,robert边缘算子边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。robert边缘检测算子是一种利用局部差分算子寻找边缘的算子,robert算子图像处理后结果边缘不是很平滑。经分析,由于robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。图3.4robert算子边缘检测3.5形态学滤波数学形态是一种非线性滤波方法,可以用于抑制噪声,进行特征提取、边缘检测、图像分割等图像处理操作。形态学滤波有四种基础操作:腐蚀、膨胀、开操作和闭操作。腐蚀的运算符为,X用S来腐蚀写作XS,其定义为XS={x|S(x)X}上式表明X用S腐蚀的结果是所有x的集合,其中B平移x后仍在A中。换句话说,用S来腐蚀X得到的集合是S完全包括X中时S的原点位置的集合。车牌腐蚀图像见图3.5图3.5腐蚀后图像3.6对图像进行滤波后的结果第四部分车牌定位汽车牌照的定位是指从摄人的汽车图像中找到汽车牌照所在的位置,并把含有车牌的子区域提取出来。从编程实现的角度来看,就是针对某汽车图像,通过运行某个定位算法,确定车牌子区域的对角坐标。显然在汽车牌照识别系统中,车牌定位准确与否直接影响字符识别的准确率。通过查找初始行top:从上向下扫描,如果该行所有像素值为0(背景),继续扫描,直到像素值为1(字符)的行(初始行),则退出扫描循环。查找最后一行bottom,初始列left,最后一列right,思路相似。4.1车牌分割在定位出车牌区域后,为了对车牌进行识别,必须把车牌字符进行切分,然后送人字符识别系统。字符分割的任务就是把多行或多字符图像中的每个字符从整个图像中分割出来,使其成为单个字符。车牌分割的难点在于噪声、粘连以及断裂对字符的影响。本文所采用的方法是区域分割法。其原理是利用同一区域内灰度值的相似性,将相似区域合并,不同区域分开。如下图所示:综上,对车牌图像进行第一步进行定位处理,第二步进行分割处理。如图4.1所示。图4.1车牌定位和分割后图像分割后的图像由于字符大小不统一,需要归一化处理。本文中采用40*20大小模板来将原来不相同的字符统一到同一尺寸,达到标准化图像。4.3车牌识别字符识别是对车牌上的汉字、字母和数字进行确认的过程,是系统的核心。本文采用的是基于模板匹配的字符识别方法。4.4构建标准字库本文采用的是基于模版匹在构建标准字库的过程中,用绘图工具绘制了A—Z、0-9和车牌地区名,并且以32行x16列的大小黑体字保存。样本库中的编码规则如下。①数字0-9,文件名为0.jpg-Sam9.jpg;②字母A-Z,文件名为A.jpg-Z.jpg;③7个省别汉字,文件名为京.jpg,辽.jpg,鲁.jpg,陕.jpg,苏.jpg,豫.jpg,浙.jpg。4.5识别过程确定中心距离的方法是:将模版库中的字符图像矩阵与待识别字符图像矩阵作减法,求最小误差(即其相似度),将最相似的模板库中的字符图像矩阵的代码作为识别结果并显示出来。实验结果表明,使用模版匹配方法可以成功地将车牌识别出来。第五部分结束语本文针对智能交通系统中的车牌识别问题,采用Matlab设计开发了车牌识别系统。通过综合采用图像处理技术,实现了车牌的定位、倾斜校正、滤波、字符分割和识别功能,实验结果也证明了本文所提出的车牌识别方法是准确、可行的。附录:源程序如下:function[d]=main(jpg)closeallclc%I=imread('car1.JPG');I=imread('chepai.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,'robert',0.15,'both');figure(3),imshow(I2);title('robert算子边缘检测')se=[1;1;1];I3=imerode(I2,se);figure(4),imshow(I3);title('腐蚀后图像');se=strel('rectangle',[25,25]);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);fori=1:yforj=1:xif(myI(i,j,1)==1)Blue_y(i,1)=Blue_y(i,1)+1;%蓝色像素点统计endendend[tempMaxY]=max(Blue_y);%Y方向车牌区域确定PY1=MaxY;while((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%%%%%%X方向%%%%%%%%%Blue_x=zeros(1,x);%进一步确定x方向的车牌区域forj=1:xfori=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1+50;%对车牌区域的校正PX2=PX2-50;PY1=PY1+45;PY2=PY2-45;dw=I(PY1:PY2-8,PX1:PX2,:);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)/2);%T为二值化的阈值[m,n]=size(b);d=(double(b)>=T);%d:二值图像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);%使用一个3X3的正方形结果元素对象对创建的图像进行膨胀%'line'/'diamond'/'ball'...se=eye(2);%eye(n)returnsthen-by-nidentitymatrix单位矩阵[m,n]=size(d);ifbwarea(d)/m/n>=0.365d=imerode(d,se);elseifbwarea(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;whilej~=nwhiles(j)==0j=j+1;endk1=j;whiles(j)~=0&&j<=n-1j=j+1;endk2=j-1;ifk2-k1>=round(n/6.5)[val,num]=min(sum(d(:,[k1+5:k2-5])));d(:,k1+num+5)=0;%分割endend%再切割d=qiege(d);%切割出7个字符y1=10;y2=0.25;flag=0;word1=[];whileflag==0[m,n]=size(d);left=1;wide=0;whilesum(d(:,wide+1))~=0wide=wide+1;endifwide<y1%认为是左侧干扰d(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[11widem]));[m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));iftwo_thirds/all>y2flag=1;word1=temp;%WORD1endd(:,[1:wide])=0;d=qiege(d);endend%分割出第二个字符[word2,d]=getword(d);%分割出第三个字符[word3,d]=getword(d);%分割出第四个字符[word4,d]=getword(d);%分割出第五个字符[word5,d]=getword(d);%分割出第六个字符[word6,d]=getword(d);%分割出第七个字符[word7,d]=getword(d);subplot(5,7,1),imshow(word1),title('1');subplot(5,7,2),imshow(word2),title('2');subplot(5,7,3),imshow(word3),title('3');subplot(5,7,4),imshow(word4),title('4');subplot(5,7,5),imshow(word5),title('5');subplot(5,7,6),imshow(word6),title('6');subplot(5,7,7),imshow(word7),title('7');[m,n]=size(word1);%商用系统程序中归一化大小为40*20,此处演示word1=imresize(word1,[4020]);word2=imresize(word2,[4020]);word3=imresize(word3,[4020]);word4=imresize(word4,[4020]);word5=imresize(word5,[4020]);word6=imresize(word6,[4020]);word7=imresize(word7,[4020]);subplot(5,7,15),imshow(word1),title('1');subplot(5,7,16),imshow(word2),title('2');subplot(5,7,17),imshow(word3),title('3');subplot(5,7,18),imshow(word4),title('4');subplot(5,7,19),imshow(word5),title('5');subplot(5,7,20),imshow(word6),title('6');subplot(5,7,21),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);l=1;forI=1:7ii=int2str(I);t=imread([ii,'.jpg']);SegBw2=imresize(t,[4020],'nearest');ifl==1%第一位汉字识别kmin=37;kmax=40;elseifl==2%第二位A~Z字母识别kmin=11;kmax=36;elsel>=3%第三位以后是字母或数字识别kmin=1;kmax=36;endfork2=kmin:kmaxfname=strcat('字符模板\',liccode(k2),'.jpg');SamBw2=imread(fname);fori=1:40forj=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);endend%以上相当于两幅图相减得到第三幅图Dmax=0;fork1=1:40forl1=1:20if(SubBw2(k1,l1)>0|SubBw2(k1,l1)<0)Dmax=Dmax+1;endendendError(k2)=Dmax;endError1=Error(kmin:kmax);MinError=min(Error1);findc=find(Error1==MinError);Code(l*2-1)=liccode(findc(1)+kmin-1);Code(l*2)='';l=l+1;endfigure(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);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工费劳务合同
- 摄影师协议书摄影签约合同
- 客栈租赁合同协议书
- 物业管理小区设施采购合同
- 茶艺师练习试题附答案
- 学校商业转让合同范本
- ppp市政项目合同范本
- 供货期限合同范本
- 大楼租赁合同范本简单
- 青蟹供货合同范本
- 五年级下册书法教学课件第9课-上下结构(二)-西泠印社版(共18张)课件
- 不甘屈辱奋勇抗争第三课时甲午风云课件五年级道德与法治
- 家具厂安全生产台帐
- 英雄无敌5使用秘籍与英雄代码
- ESC700培训(PPT35页)(PPT 36页)
- JIS G3141-2021 冷轧钢板及钢带标准
- 市政工程类建筑施工项目危险源辨识及风险管控清单
- 精神科应急预案PPT课件
- 物资编码手册
- 三种水封井及标准图集
- 最新小微企业有限责任公司章程范本
评论
0/150
提交评论