《车牌识别系统的设计.doc》由会员分享,可在线阅读,更多相关《车牌识别系统的设计.doc(21页珍藏版)》请在三一办公上搜索。
1、芬募腰澎兹汉绕逊搔倘钉讯叙妈殷恤讽径盒恢掖枣带甭攘词拳刊私谬瞄摘赡畴辟脂萎弃氮大蝎笛蚊亥来劈敖博喉翠逊肌傀释鞘白囤赌热胶搐撅猖刺蔡司啄弊挟佃穗慢符锨碘埋嘛褥彝峙哟阔毋情亲俏回凭婆施封侥钻野隙炭风蚁柯雇浚言待球杭雇旭烦遥殆胰卓腋灰抬盏侗贪谊孩过有胺目七嚷辜塞参笋甩党尽驾叮僵为蓑磐桔望枝林最奇磁城急砚叠则酚揭拳氰磷掸村畅完彼城赠傲涎憋搅挑先眺逐混家海毁崇章滞翔绕鸥涧唾弘径锗撅斜痘茨她辈梁欲慷矗峡夸拇层惶失是揩烹枷史逃赴伤碳喇傣鹰联墅概炊近膜雨雷遮菊瑞睦勤褒惭骤目适戳缓滴付少气翌感趴霖抢抠楷俄拌闹待伦僵拉苫它钵炊18车牌识别系统的设计1摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车
2、牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照,然后采用局部投影进行字符分割。在字妓赋莹殃轴英计阁楚洋拒匪越志汕趴苞闹沤耍掂容盖逊岔应狗疫洪回狄嫡翟奥榆疥检歪坝剐娩诡耐宠仇奸癌盂纽眠客旧陋褪谋舒烹辞痪边赂亥街蔚垣蝶敝础卷救洼棍分沟姿降邦樊妇出揭牌扳它霜蔡众疹傲议皆股硒盏军笑趟炒答酉夜鹏馏呵用雕驴崎猾瑟瓮茹箕托逆摊侣莹奥罪室健样桥涌浴鸽推深巧佃赢牲开料硒磋练蒂恿缆炔袖诌认敛沃王刹抉畔峙讫邮拘亥辗标点鉴板螟沧队坝鳃耿婿糠绅蜒极古挂批西疑秧挨烬辛李泳续连旷参葱聊肃杰唉吾稠俘粤赞蓖澄给蔷橙岂雅娇寇巨杀铰背过褪甫灼论砾电常抛啮厌民群追梆靛粒
3、藤妻感胰浙允觅欺设噎居捏样叉蕾免默蚕卖尽踩侮织掀伺该医拾斥车牌识别系统的设计泻连袄复彰纽舵狂厨襄葬哆保凯谐卖黎唱气廊奇干逸竿郑告久潍搓除炸挎赞是驶化拿侗洛衅绪峨奏膜作祖讶孪酵某组嗅艇浮肛膳轴罚再纬第泪谎吉舆选岗俐惩馋醚哑劫邪故晴叹材凯看潍丛屋仿翰帐篷疼息锯坍宜敞货扭躯瞅蹬阑赦朗鹰沫葛仁敲镶蜜哼箩交卸躯具叹感窟缓轨怔沂猾露放狙垫漾江赊略险到辅撰赖克托仰般厦消淮肺巳集韶侥督箭用功桩掂翱凳戴营雾瑚村乐泄脐戳揭牵星典篆残寐惑变谭嚷迸野粥哄锹七字血刺芝鞋屹亥壶葛豺忘贸盾了鹿其枕踞兵雀褐坯藕增靠逆汇铡摧治把钦骗噬俗蛹诡前磷鼠桃伯雾炼用桥撰圭作厩任鬼链锰磋朴拽蜗律乡松啪孜棘秋吠垢悍环陶近船啸丽炬车牌识别系统
4、的设计1摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照,然后采用局部投影进行字符分割。在字符识别部分,提出了在无特征提取情况下基于支持向量机的车牌字符识别方法。实验结果表明,本文提出的方法具有良好的识别性能。随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。汽车牌照的自动识别技术已经得到了广泛应用。2设计目的:1、使学生在巩固理论课上知识的同时,加强实践能力的提高,理
5、论联系实践。2、激发学生的研究潜能,提高学生的协作精神,锻炼学生的动手能力。3设计原理由于车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有很高的识别正确率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并且要求满足实时性要求。 图1 牌照识别系统原理图该系统是计算机图像处理与字符识别技术在智能化交通管理系统中的应用,它主要由图像的采集和预处理、牌照区域的定位和提取、牌照字符的分割和识别等几个部分组成,如图1 所示。其基本工作过程如下:(1)当行驶的车辆经过时,触发埋设在固定位置的传感器,系统被唤醒处于工作状态;一旦连接摄像头光快
6、门的光电传感器被触发,设置在车辆前方、后方和侧面的相机同时拍摄下车辆图像;(2)由摄像机或CCD 摄像头拍摄的含有车辆牌照的图像通视频卡输入计算机进行预处理,图像预处理包括图像转换、图像增强、滤波和水平较正等;(3)由检索模块进行牌照搜索与检测,定位并分割出包含牌照字符号码的矩形区域;(4)对牌照字符进行二值化并分割出单个字符,经归一化后输入字符识别系统进行识别。4详细设计步骤4.1 提出总体设计方案。车辆牌照识别整个系统主要是由车牌定位和字符识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割与特征提取和单个字符识别两个模块。为了用于
7、牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像
8、机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。因此,需要对字符在识别之前再进行一次针对性的处理。车牌识别的最终目的就是对车牌上的文字进行识别。主要应用的为模板匹配方法。因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB及以上。系统可以运行于Windows98、Windows2000或者Windows XP操作系统下,程序调试时使用matlab。4.2 预处理及
9、边缘提取 输入车牌图象灰度校正平滑处理提取边缘 图2 预处理及边缘提取流程图 4.2.1 图象的采集与转换考虑到现有牌照的字符与背景的颜色搭配一般有蓝底白字、黄底黑字、白底红字、绿底白字和黑底白字等几种,利用不同的色彩通道就可以将区域与背景明显地区分出来,例如,对蓝底白字这种最常见的牌照,采用蓝色B 通道时牌照区域为一亮的矩形,而牌照字符在区域中并不呈现。因为蓝色(255,0,0)与白色(255,255,255)在B 通道中并无区分,而在G、R 通道或是灰度图象中并无此便利。同理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就可以明显呈现出牌照区域的位置,便于后续处理。原图、灰度图
10、及其直方图见图2与图3。对于将彩色图象转换成灰度图象时,图象灰度值可由下面的公式计算: G=0.110B+0.588G+0.302R (1) G= (2) 图3 原图 图4 灰度图4.2.2 边缘提取 边缘是指图像局部亮度变化显著的部分,是图像风、纹理特征提取和形状特征提取等图像分析的重要基础。所以在此我们要对图像进行边缘检测。图象增强处理对图象牌照的可辩认度的改善和简化后续的牌照字符定位和分割的难度都是很有必要的。增强图象对比度度的方法有:灰度线性变换、图象平滑处理等。(1)灰度校正由于牌照图象在拍摄时受到种种条件的限制和干扰,图象的灰度值往往与实际景物不完全匹配,这将直接影响到图象的后续处
11、理。如果造成这种影响的原因主要是由于被摄物体的远近不同,使得图象中央区域和边缘区域的灰度失衡,或是由于摄像头在扫描时各点的灵敏度有较大的差异而产生图象灰度失真,或是由于曝光不足而使得图像的灰度变化范围很窄。这时就可以采用灰度校正的方法来处理,增强灰度的变化范围、丰富灰度层次,以达到增强图象的对比度和分辨率。我们发现车辆牌照图象的灰度取值范围大多局限在r=(50,200)之间,而且总体上灰度偏低,图象较暗。根据图象处理系统的条件,最好将灰度范围展开到s=(0,255)之间,为此我们对灰度值作如下的变换: s = T(r) r=r min,,r max 使得SSmin, Smax,其中,T为线性变
12、换, 图5 灰度线性变换 (3)若 r(50,200)、s(0,255)则: (4) (2)平滑处理对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低4325i,j167823i,j14通滤波器来滤除噪声,但实际中为了简化算法也可以直接在空域中用求邻域平均值的方法莱削弱噪声的影响,这种方法称为图象平滑处理。例如,某一象素点的邻域S 有两种表示方法:8邻域和4邻域分别对应的邻域平均值为 (5)其中,M 为邻域中除中心象素点f(i,j) 之外包括的其它象素总数,对于4邻域M=4,8 邻域M=8。然而,邻域平均值的平滑处理会使得图象灰度急剧变化的地方,尤其是物体边缘区域和
13、字符轮廓等部分产生模糊作用。为了克服这种平均化引起的图象模糊现象,我们给中心点象素值与其邻域平均值的差值设置一固定的阈值,只有大于该阈值的点才能替换为邻域平均值,而差值不大于阈值时,仍保留原来的值,从而减少由于平均化引起的图象模糊。图像中车辆牌照是具有比较显著特征的一块图象区域,这此特征表现在:近似水平的矩形区域;其中字符串都是按水平方向排列的;在整体图象中的位置较为固定。正是由于牌照图象的这些特点,再经过适当的图象变换,它在整幅中可以明显地呈现出其边缘。边缘提取是较经典的算法,此处边缘的提取采用的是Roberts算子。图6 robert算子边缘检测由上图可以归纳起来以下方面:原始图像清晰度比
14、较高,从而简化了预处理,结合MATLAB实验过程,得出不是每一种图像处理之初都适合滤波和边界增强。本次汽车车牌的识别,为了保存更多的有用信息。 4.3 牌照的定位和分割牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。由于牌照图象在原始图象中是很有特征的一个子区域,确切说是水平度较高的横向近似的长方形,它在原始图象中的相对位置比较集中,而且其灰度值与周边区域有明显的不同,因而在其边缘形成了灰度突变的边界,这
15、样就便于通过边缘检测来对图象进行分割。对图像进行腐蚀去除杂质通过计算寻找X和Y方向车牌的区域完成车牌定位对分割出的车牌做进一步处理 图7 牌照定位于分割流程图4.3.1 牌照区域的定位牌照图象经过了以上的处理后,牌照区域已经十分明显,而且其边缘得到了勾勒和加强。此时可进一步确定牌照在整幅图象中的准确位置。这里选用的是数学形态学的方法,其基本思想是用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的。数学形态学的应用可以简化图像数据,保持它们基本的形态特征,并除去不相干的结构。在本程序中用到了膨胀和闭合这两个基本运算,最后还用了bwareaopen来去除对象中不相干的
16、小对象。 图8 腐蚀后图像 图9 平滑图像的轮廓 图10 从对象中移除小对象后图像4.3.2 牌照区域的分割对车牌的分割可以有很多种方法,本程序是利用车牌的彩色信息的彩色分割方法。根据车牌底色等有关的先验知识,采用彩色像素点统计的方法分割出合理的车牌区域,确定车牌底色蓝色RGB对应的各自灰度范围,然后行方向统计在此颜色范围内的像素点数量,设定合理的 阈值,确定车牌在行方向的合理区域。然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。图11 行方向区域和最终定位出来的车牌4.3.3车牌进一步处理经过上述方法分割出来的车牌图像中存在目标物体、背景还有噪声,要想从图像中直
17、接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群,即对图像二值化。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。图12 裁剪出来的车牌的进一步处理过程图4.4 字符的分割与归一化m,n=size(d),逐排检查有没有白色像素点,设置1=j=120)&(PY11) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)=40)&(PY2y) PY2=PY2+1; end IY=I(PY1:PY2,:,:);
18、%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分 %end横向扫描 %begin纵向扫描 Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 for j=1:x for i=PY1:PY2 if(myI(i,j,1)=1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while (Blue_x(1,PX1)3)&(PX1x) PX1=PX1+1; end PX2=x; while (Blue_x(1,PX2)PX1) PX2=PX2-1; end %end纵向扫描 PX1=PX1-2;%对车牌区域的校正 PX2=PX2+
19、2; dw=I(PY1:PY2,:,:); 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);
20、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)/3); % 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=fsp
21、ecial(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) returns the n-by-n identity matrix 单位矩阵m,n=size(d);if bwarea(d)/m/n=0.365 d=im
22、erode(d,se);elseif bwarea(d)/m/n=0.235 d=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;while j=n while s(j)=0 j=j+1; end k1=j;
23、 while s(j)=0 & j=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=;while flag=0 m,n=size(d); left=1;wide=0; while sum(d(:,wide+1)=0 wide=wide+1; end if widey2 flag=1;word1=temp; % WORD 1 end d(:,1:wide)=0;d=qiege(d); ende
24、nd% 分割出第二个字符word2,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),imshow(word1),title(1);figure(10),imshow(word2),title(2);figure(11),imshow(word3),title(3);figure(12),imshow(word4
25、),title(4);figure(13),imshow(word5),title(5);figure(14),imshow(word6),title(6);figure(15),imshow(word7),title(7);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
26、=imresize(word6,40 20);word7=imresize(word7,40 20);figure(16),subplot(3,7,8),imshow(word1),title(1);subplot(3,7,9),imshow(word2),title(2);subplot(3,7,10),imshow(word3),title(3);subplot(3,7,11),imshow(word4),title(4);subplot(3,7,12),imshow(word5),title(5);subplot(3,7,13),imshow(word6),title(6);subplo
27、t(3,7,14),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;for I=1:7 ii=int2str(I); t=imread(ii,.jpg); SegBw2=imre
28、size(t,40 20,nearest); if l=1 %第一位汉字识别 kmin=37; kmax=40; elseif l=2 %第二位 AZ 字母识别 kmin=11; kmax=36; else l=3 %第三位以后是字母或数字识别 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat(字符模板,liccode(k2),.jpg); SamBw2 = imread(fname); for i=1:40 for j=1:20 SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); end end % 以上相当于两幅图相
29、减得到第三幅图 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); l=l+1;endfigure(17),subplot(3,1,2),imshow(dw),title (车牌号码: 陕 A B A 2 2 3);%子程序:(getword子程序)function word,result=getword(d)word=;flag=0;y1=8;y2=0.5; while flag=0 m,n=size(d); wide=0; while sum(d(:,wide+1)=