基于matlab的車牌識別(含子程序)_第1頁
基于matlab的車牌識別(含子程序)_第2頁
基于matlab的車牌識別(含子程序)_第3頁
基于matlab的車牌識別(含子程序)_第4頁
基于matlab的車牌識別(含子程序)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

./基于matlab的車牌識別系統(tǒng)一、對車輛圖像進(jìn)行預(yù)處理1.載入車牌圖像:function[d]=main<jpg>[filename,pathname]=uigetfile<{'*.jpg','JPEG文件<*.jpg>'}>;if<filename==0>,return,endglobalFILENAME%定義全局變量FILENAME=[pathnamefilename];I=imread<FILENAME>;figure<1>,imshow<I>;title<'原圖像'>;%將車牌的原圖顯示出來結(jié)果如下:2.將彩圖轉(zhuǎn)換為灰度圖并繪制直方圖:I1=rgb2gray<I>;%將彩圖轉(zhuǎn)換為灰度圖figure<2>,subplot<1,2,1>,imshow<I1>;title<'灰度圖像'>;figure<2>,subplot<1,2,2>,imhist<I1>;title<'灰度圖直方圖'>;%繪制灰度圖的直方圖結(jié)果如下所示:3.用roberts算子進(jìn)行邊緣檢測:I2=edge<I1,'roberts',0.18,'both'>;%選擇閾值0.18,用roberts算子進(jìn)行邊緣檢測figure<3>,imshow<I2>;title<'roberts算子邊緣檢測圖像'>;結(jié)果如下:4.圖像實(shí)施腐蝕操作:se=[1;1;1];I3=imerode<I2,se>;%對圖像實(shí)施腐蝕操作,即膨脹的反操作figure<4>,imshow<I3>;title<'腐蝕后圖像'>;5.平滑圖像se=strel<'rectangle',[25,25]>;%構(gòu)造結(jié)構(gòu)元素以正方形構(gòu)造一個seI4=imclose<I3,se>;%圖像聚類、填充圖像figure<5>,imshow<I4>;title<'平滑圖像'>;結(jié)果如下所示:6.刪除二值圖像的小對象I5=bwareaopen<I4,2000>;%去除聚團(tuán)灰度值小于2000的部分figure<6>,imshow<I5>;title<'從對象中移除小的對象'>;結(jié)果如下所示:二、車牌定位[y,x,z]=size<I5>;%返回I5各維的尺寸,存儲在x,y,z中myI=double<I5>;%將I5轉(zhuǎn)換成雙精度tic%tic表示計(jì)時的開始,toc表示計(jì)時的結(jié)束Blue_y=zeros<y,1>;%產(chǎn)生一個y*1的零陣fori=1:yforj=1:xif<myI<i,j,1>==1>%如果myI<i,j,1>即myI的圖像中坐標(biāo)為<i,j>的點(diǎn)值為1,即該點(diǎn)為車牌背景顏色藍(lán)色%則Blue_y<i,1>的值加1Blue_y<i,1>=Blue_y<i,1>+1;%藍(lán)色像素點(diǎn)統(tǒng)計(jì)endendend[tempMaxY]=max<Blue_y>;%Y方向車牌區(qū)域確定%temp為向量white_y的元素中的最大值,MaxY為該值的索引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方向車牌區(qū)域確定%%%%%%X方向%%%%%%%%%Blue_x=zeros<1,x>;%進(jìn)一步確定x方向的車牌區(qū)域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-1;%對車牌區(qū)域的校正PX2=PX2+1;dw=I<PY1:PY2-8,PX1:PX2,:>;t=toc;figure<7>,subplot<1,2,1>,imshow<IY>,title<'行方向合理區(qū)域'>;%行方向車牌區(qū)域確定figure<7>,subplot<1,2,2>,imshow<dw>,title<'定位裁剪后的車牌彩色圖像'>;的車牌區(qū)域如下所示:三、字符分割及處理1.車牌的進(jìn)一步處理對分割出的彩色車牌圖像進(jìn)行灰度轉(zhuǎn)換、二值化、均值濾波、腐蝕膨脹以及字符分割以從車牌圖像中分離出組成車牌的單個字符圖像,對分割出來的字符進(jìn)行預(yù)處理〔二值化、歸一化,然后分析提取,對分割出的字符圖像進(jìn)行識別給出文本形式的車牌。代碼如下:imwrite<dw,'彩色車牌.jpg'>;%將彩色車牌寫入彩色車牌文件中a=imread<'彩色車牌.jpg'>;%讀取車牌文件中的數(shù)據(jù)b=rgb2gray<a>;%將車牌圖像轉(zhuǎn)換為灰度圖imwrite<b,'車牌灰度圖像.jpg'>;%將灰度圖像寫入文件中figure<8>;subplot<3,2,1>,imshow<b>,title<'車牌灰度圖像'>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,'均值濾波前.jpg'>;subplot<3,2,2>,imshow<d>,title<'均值濾波前'>%均值濾波前%濾波h=fspecial<'average',3>;%建立預(yù)定義的濾波算子,average為均值濾波,模板的尺寸為3*3d=im2bw<round<filter2<h,d>>>;%使用指定的濾波器h對h進(jìn)行d即均值濾波imwrite<d,'均值濾波后.jpg'>;subplot<3,2,3>,imshow<d>,title<'均值濾波后'>%某些圖像進(jìn)行操作%膨脹或腐蝕%se=strel<'square',3>;%使用一個3X3的正方形結(jié)果元素對象對創(chuàng)建的圖像進(jìn)行膨脹%'line'/'diamond'/'ball'...se=eye<2>;%eye<n>returnsthen-by-nidentitymatrix單位矩陣[m,n]=size<d>;%返回矩陣b的尺寸信息,并存儲在m,n中ifbwarea<d>/m/n>=0.365%計(jì)算二值圖像中對象的總面積與整個面積的比是否大于0.365d=imerode<d,se>;%如果大于0.365則圖像進(jìn)行腐蝕elseifbwarea<d>/m/n<=0.235%計(jì)算二值圖像中對象的總面積與整個面積的比是否小于0.235d=imdilate<d,se>;%如果小于則實(shí)現(xiàn)膨脹操作endimwrite<d,'膨脹或腐蝕處理后.jpg'>;subplot<3,2,4>,imshow<d>,title<'膨脹或腐蝕處理后'>;運(yùn)行結(jié)果如下所示:2.字符分割在汽車牌照自動識別過程中,字符分割有承前啟后的作用。它在前期牌照定位的基礎(chǔ)上進(jìn)行字符的分割,然后再利用分割的結(jié)果進(jìn)行字符識別。字符識別的算法很多,因?yàn)檐嚺谱址g間隔較大,不會出現(xiàn)字符粘連情況,所以此處采用的方法為尋找連續(xù)有文字的塊,若長度大于某閾值,則認(rèn)為該塊有兩個字符組成,需要分割。一般分割出來的字符要進(jìn)行進(jìn)一步的處理,以滿足下一步字符識別的需要。但是對于車牌的識別,并不需要太多的處理就已經(jīng)可以達(dá)到正確識別的目的。在此只進(jìn)行了歸一化處理,然后進(jìn)行后期處理。%尋找連續(xù)有文字的塊,若長度大于某閾值,則認(rèn)為該塊有兩個字符組成,需要分割%首先創(chuàng)建子函數(shù)qiege與getword,而后調(diào)用子程序,將車牌的字符分割開并且進(jìn)行歸一化處理d=qiege<d>;[m,n]=size<d>;%subplot<3,2,5>,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%認(rèn)為是左側(cè)干擾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;endd<:,[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>;figure<9>;subplot<2,7,1>,imshow<word1>,title<'1'>;subplot<2,7,2>,imshow<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>;%商用系統(tǒng)程序中歸一化大小為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<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<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,'2.jpg'>;imwrite<word3,'3.jpg'>;imwrite<word4,'4.jpg'>;imwrite<word5,'5.jpg'>;imwrite<word6,'6.jpg'>;imwrite<word7,'7.jpg'>;運(yùn)行結(jié)果如下:車牌匹配識別模板匹配是圖象識別方法中最具代表性的基本方法之一,它是將從待識別的圖象或圖象區(qū)域f<i,j>中提取的若干特征量與模板T<i,j>相應(yīng)的特征量逐個進(jìn)行比較,計(jì)算它們之間規(guī)格化的互相關(guān)量,其中互相關(guān)量最大的一個就表示期間相似程度最高,可將圖象歸于相應(yīng)的類。也可以計(jì)算圖象與模板特征量之間的距離,用最小距離法判定所屬類。此處采用相減的方法來求得字符與模板中哪一個字符最相似,然后找到相似度最大的輸出。汽車牌照的字符一般有七個,大部分車牌第一位是漢字,通常代表車輛所屬省份,緊接其后的為字母與數(shù)字。車牌字符識別與一般文字識別在于它的字符數(shù)有限,漢字共約50多個,大寫英文字母26個,數(shù)字10個。為了實(shí)驗(yàn)方便,結(jié)合本次設(shè)計(jì)所選汽車牌照的特點(diǎn),只建立了7個數(shù)字26個字母與10個數(shù)字的模板。其他模板設(shè)計(jì)的方法與此相同。首先取字符模板,接著依次取待識別字符與模板進(jìn)行匹配,將其與模板字符相減,得到的0越多那么就越匹配。把每一幅相減后的圖的0值個數(shù)保存,即為識別出來的結(jié)果。識別的流程圖如下所示:建立自動識別的代碼表建立自動識別的代碼表讀取分割出來的字符第一個字符與模板中的漢字模板進(jìn)行匹配第二個字符與模板中的字母模板進(jìn)行匹配待識別字符與模板字符相減,值越小相似度越大,找到最小的一個即為匹配的最好的識別完成,輸出此模板對應(yīng)值后5個字符與模板中的字母與數(shù)字模板進(jìn)行匹配源代碼如下:liccode=char<['0':'9''A':'Z''京遼魯陜豫浙']>;%建立自動識別字符代碼表SubBw2=zeros<40,20>;%產(chǎn)生40*20的全0矩陣l=1;forI=1:7ii=int2str<I>;%轉(zhuǎn)為串t=imread<[ii,'.jpg']>;%讀取圖片文件中的數(shù)據(jù)SegBw2=imresize<t,[4020],'nearest'>;%對圖像做縮放處理SegBw2=double<SegBw2>>20;ifl==1%第一位漢字識別kmin=37;kmax=43;elseifl==2%第二位A~Z字母識別kmin=11;kmax=36;elsel>=3%第三位以后是字母或數(shù)字識別kmin=1;kmax=36;endfork2=kmin:kmaxfname=strcat<'字符模板\',liccode<k2>,'.jpg'>;%把行向量轉(zhuǎn)化成字符串SamBw2=imread<fname>;SamBw2=double<SamBw2>>1;fori=1:40forj=1:20SubBw2<i,j>=SegBw2<i,j>-SamBw2<i,j>;endend%以上相當(dāng)于兩幅圖相減得到第三幅圖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>='';%輸出最大相關(guān)圖像l=l+1;endfigure<10>,imshow<dw>,title<['車牌:',Code],'Color','r'>;子程序代碼:functione=qiege<d>[m,n]=size<d>;top=1;bottom=m;left=1;right=n;%intwhilesum<d<top,:>>==0&&top<=mtop=top+1;endwhilesum<d<bottom,:>>==0&&bottom>1bottom=bottom-1;endwhilesum<d<:,left>>==0&&left<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論