蘇大應用課程設計-車牌識別_第1頁
蘇大應用課程設計-車牌識別_第2頁
蘇大應用課程設計-車牌識別_第3頁
蘇大應用課程設計-車牌識別_第4頁
蘇大應用課程設計-車牌識別_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

圖像處理在智能交通中的應用——基于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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論