基于Matlab的車牌識別(完整版)_第1頁
基于Matlab的車牌識別(完整版)_第2頁
基于Matlab的車牌識別(完整版)_第3頁
基于Matlab的車牌識別(完整版)_第4頁
基于Matlab的車牌識別(完整版)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./基于Matlab的車牌識別摘要:車牌識別技術(shù)是智能交通系統(tǒng)的重要組成部分,在近年來得到了很大的發(fā)展。本文從預(yù)處理、邊緣檢測、車牌定位、字符分割、字符識別五個(gè)方面,具體介紹了車牌自動識別的原理。并用MATLAB軟件編程來實(shí)現(xiàn)每一個(gè)部分,最后識別出汽車車牌。一、設(shè)計(jì)原理或格二、設(shè)計(jì)步驟車輛→圖像采集→圖像預(yù)處理→車牌定位→字符分割→字符定位→輸出結(jié)果基本的步驟:a.定位,定位圖片中的車牌位置;b.字符分割,把車牌中的字符分割出來;c.字符識別,把分割好的字符進(jìn)行識別,最終組成車牌號碼。識別過程中,顏色的識別依據(jù)算法不同,可能在上述不同步驟實(shí)現(xiàn),通常與識別互相配合、互相驗(yàn)證。<1定位:自然環(huán)境下,汽車圖像背景復(fù)雜、光照不均勻,如何在自然背景中準(zhǔn)確地確定車牌區(qū)域是整個(gè)識別過程的關(guān)鍵。首先對采集到的視頻圖像進(jìn)行大范圍相關(guān)搜索,找到符合汽車車牌特征的若干區(qū)域作為候選區(qū),然后對這些侯選區(qū)域做進(jìn)一步分析、評判,最后選定一個(gè)最佳的區(qū)域作為車牌區(qū)域,并將其從圖象中分割出來。車牌定位對圖像開閉運(yùn)算邊緣提取圖像預(yù)處理增強(qiáng)效果圖像導(dǎo)入原始圖像流程圖:車牌定位對圖像開閉運(yùn)算邊緣提取圖像預(yù)處理增強(qiáng)效果圖像導(dǎo)入原始圖像〔2字符分割:完成車牌區(qū)域的定位后,再將車牌區(qū)域分割成單個(gè)字符,然后進(jìn)行識別。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符間或字符內(nèi)的間隙處取得局部最小值的附近,并且這個(gè)位置應(yīng)滿足車牌的字符書寫格式、字符、尺寸限制和一些其他條件。利用垂直投影法對復(fù)雜環(huán)境下的汽車圖像中的字符分割有較好的效果。流程圖:按左右寬度切割出字符分析垂直投影找到每個(gè)字符中心位置計(jì)算水平投影進(jìn)行車牌水平校正去掉車牌的框架按左右寬度切割出字符分析垂直投影找到每個(gè)字符中心位置計(jì)算水平投影進(jìn)行車牌水平校正去掉車牌的框架〔3字符識別:字符依次分析顯示誤差最小的圖片名字分析之差最小的圖片是哪張與數(shù)據(jù)庫的圖片相減切割出的字符送入庫中字符識別方法目前主要有基于模板匹配算法和基于人工神經(jīng)網(wǎng)絡(luò)算法?;谀0迤ヅ渌惴ㄊ紫葘⒎指詈蟮淖址祷?并將其尺寸大小縮放為字符數(shù)據(jù)庫中模板的大小,然后與所有的模板進(jìn)行匹配,最后選最佳匹配作為結(jié)果。基于人工神經(jīng)元網(wǎng)絡(luò)的算法有兩種:一種是先對待識別字符進(jìn)行特征提取,然后用所獲得特征來訓(xùn)練神經(jīng)網(wǎng)絡(luò)分配器;另一種方法是直接把待處理圖像輸入網(wǎng)絡(luò),由網(wǎng)絡(luò)自動實(shí)現(xiàn)特征提取直至識別出結(jié)果。實(shí)際應(yīng)用中,識別系統(tǒng)的識別率與質(zhì)量和拍攝質(zhì)量密切相關(guān)。車牌質(zhì)量會受到各種因素的影響,如生銹、污損、油漆剝落、字體褪色、車牌被遮擋、車牌傾斜、高亮反光、多車牌、假車牌等等;實(shí)際拍攝過程也會受到環(huán)境亮度、拍攝亮度、車輛速度等等因素的影響。這些影響因素不同程度上降低了車牌識別的識別率,也正是車牌識別系統(tǒng)的困難和挑戰(zhàn)所在。為了提高識別率,除了不斷的完善識別算法,還應(yīng)該想辦法克服各種光照條件,使采集到的圖像最利于識別。字符依次分析顯示誤差最小的圖片名字分析之差最小的圖片是哪張與數(shù)據(jù)庫的圖片相減切割出的字符送入庫中字符依次分析顯示誤差最小的圖片名字分析之差最小的圖片是哪張與數(shù)據(jù)庫的圖片相減切割出的字符送入庫中流程圖:字符依次分析顯示誤差最小的圖片名字分析之差最小的圖片是哪張與數(shù)據(jù)庫的圖片相減切割出的字符送入庫中三各模塊的實(shí)現(xiàn):3.1輸入待處理的原始圖像:clear;closeall;%Step1獲取圖像裝入待處理彩色圖像并顯示原始圖像Scolor=imread<'3.jpg'>;%imread函數(shù)讀取圖像文件圖3.1原始圖像3.2圖像的灰度化:彩色圖像包含著大量的顏色信息,不但在存儲上開銷很大,而且在處理上也會降低系統(tǒng)的執(zhí)行速度,因此在對圖像進(jìn)行識別等處理中經(jīng)常將彩色圖像轉(zhuǎn)變?yōu)榛叶葓D像,以加快處理速度。由彩色轉(zhuǎn)換為灰度的過程叫做灰度化處理。選擇的標(biāo)準(zhǔn)是經(jīng)過灰度變換后,像素的動態(tài)范圍增加,圖像的對比度擴(kuò)展,使圖像變得更加清晰、細(xì)膩、容易識別。%將彩色圖像轉(zhuǎn)換為黑白并顯示Sgray=rgb2gray<Scolor>;%rgb2gray轉(zhuǎn)換成灰度圖figure,imshow<Sgray>,title<'原始黑白圖像'>;圖3.2原始黑白圖像3.3對原始圖像進(jìn)行開操作得到圖像背景圖像:s=strel<'disk',13>;%strei函數(shù)Bgray=imopen<Sgray,s>;%打開sgrays圖像figure,imshow<Bgray>;title<'背景圖像'>;%輸出背景圖像圖3.3背景圖像3.4灰度圖像與背景圖像作減法,對圖像進(jìn)行增強(qiáng)處理:Egray=imsubtract<Sgray,Bgray>;%兩幅圖相減figure,imshow<Egray>;title<'增強(qiáng)黑白圖像'>;%輸出黑白圖像圖3.4黑白圖像3.5取得最佳閾值,將圖像二值化:二值圖像是指整幅圖像畫面內(nèi)僅黑、白二值的圖像。在實(shí)際的車牌處理系統(tǒng)中,進(jìn)行圖像二值變換的關(guān)鍵是要確定合適的閥值,使得字符與背景能夠分割開來,二值變換的結(jié)果圖像必須要具備良好的保形性,不丟掉有用的形狀信息,不會產(chǎn)生額外的空缺等等。車牌識別系統(tǒng)要求處理的速度高、成本低、信息量大,采用二值圖像進(jìn)行處理,能大大地提高處理效率。閾值處理的操作過程是先由用戶指定或通過算法生成一個(gè)閾值,如果圖像中某中像素的灰度值小于該閾值,則將該像素的灰度值設(shè)置為0或255,否則灰度值設(shè)置為255或0。fmax1=double<max<max<Egray>>>;%egray的最大值并輸出雙精度型fmin1=double<min<min<Egray>>>;%egray的最小值并輸出雙精度型level=<fmax1-<fmax1-fmin1>/3>/255;%獲得最佳閾值bw22=im2bw<Egray,level>;%轉(zhuǎn)換圖像為二進(jìn)制圖像bw2=double<bw22>;figure,imshow<bw2>;title<'圖像二值化'>;%得到二值圖像圖3.5二值圖像3.6邊緣檢測:兩個(gè)具有不同灰度值的相鄰區(qū)域之間總存在邊緣,邊緣就是灰度值不連續(xù)的結(jié)果,是圖像分割、紋理特征提取和形狀特征提取等圖像分析的基礎(chǔ)。為了對有意義的邊緣點(diǎn)進(jìn)行分類,與這個(gè)點(diǎn)相聯(lián)系的灰度級必須比在這一點(diǎn)的背景上變換更有效,我們通過門限方法來決定一個(gè)值是否有效。所以,如果一個(gè)點(diǎn)的二維一階導(dǎo)數(shù)比指定的門限大,我們就定義圖像中的次點(diǎn)是一個(gè)邊緣點(diǎn),一組這樣的依據(jù)事先定好的連接準(zhǔn)則相連的邊緣點(diǎn)就定義為一條邊緣。經(jīng)過一階的導(dǎo)數(shù)的邊緣檢測,所求的一階導(dǎo)數(shù)高于某個(gè)閾值,則確定該點(diǎn)為邊緣點(diǎn),這樣會導(dǎo)致檢測的邊緣點(diǎn)太多??梢酝ㄟ^求梯度局部最大值對應(yīng)的點(diǎn),并認(rèn)定為邊緣點(diǎn),去除非局部最大值,可以檢測出精確的邊緣。一階導(dǎo)數(shù)的局部最大值對應(yīng)二階導(dǎo)數(shù)的零交叉點(diǎn),這樣通過找圖像強(qiáng)度的二階導(dǎo)數(shù)的零交叉點(diǎn)就能找到精確邊緣點(diǎn)。grd=edge<bw2,'canny'>%用canny算子識別強(qiáng)度圖像中的邊界figure,imshow<grd>;title<'圖像邊緣提取'>;%輸出圖像邊緣圖3.6像邊緣提取3.7對得到圖像作開操作進(jìn)行濾波:數(shù)學(xué)形態(tài)非線性濾波,可以用于抑制噪聲,進(jìn)行特征提取、邊緣檢測、圖像分割等圖像處理問題。腐蝕是一種消除邊界點(diǎn)的過程,結(jié)果是使目標(biāo)縮小,孔洞增大,因而可有效的消除孤立噪聲點(diǎn);膨脹是將與目標(biāo)物體接觸的所有背景點(diǎn)合并到物體中的過程,結(jié)果是使目標(biāo)增大,孔洞縮小,可填補(bǔ)目標(biāo)物體中的空洞,形成連通域。先腐蝕后膨脹的過程稱為開運(yùn)算,它具有消除細(xì)小物體,并在纖細(xì)處分離物體和平滑較大物體邊界的作用;先膨脹后腐蝕的過程稱為閉運(yùn)算,具有填充物體內(nèi)細(xì)小空洞,連接鄰近物體和平滑邊界的作用。對圖像做了開運(yùn)算和閉運(yùn)算,閉運(yùn)算可以使圖像的輪廓線更為光滑,它通常用來消掉狹窄的間斷和長細(xì)的鴻溝,消除小的孔洞,并彌補(bǔ)輪廓線中的斷裂。bg1=imclose<grd,strel<'rectangle',[5,19]>>;%取矩形框的閉運(yùn)算figure,imshow<bg1>;title<'圖像閉運(yùn)算[5,19]'>;%輸出閉運(yùn)算的圖像bg3=imopen<bg1,strel<'rectangle',[5,19]>>;%取矩形框的開運(yùn)算figure,imshow<bg3>;title<'圖像開運(yùn)算[5,19]'>;%輸出開運(yùn)算的圖像bg2=imopen<bg3,strel<'rectangle',[19,1]>>;%取矩形框的開運(yùn)算figure,imshow<bg2>;title<'圖像開運(yùn)算[19,1]'>;%輸出開運(yùn)算的圖像閉運(yùn)算的圖像圖3.7.2開運(yùn)算的圖像圖3.7.3開運(yùn)算的圖像3.8對二值圖像進(jìn)行區(qū)域提取,并計(jì)算區(qū)域特征參數(shù)。進(jìn)行區(qū)域特征參數(shù)比較,提取車牌區(qū)域:a.對圖像每個(gè)區(qū)域進(jìn)行標(biāo)記,然后計(jì)算每個(gè)區(qū)域的圖像特征參數(shù):區(qū)域中心位置、最小包含矩形、面積。[L,num]=bwlabel<bg2,8>;%標(biāo)注二進(jìn)制圖像中已連接的部分Feastats=imfeature<L,'basic'>;%計(jì)算圖像區(qū)域的特征尺寸Area=[Feastats.Area];%區(qū)域面積BoundingBox=[Feastats.BoundingBox];%[xywidthheight]車牌的框架大小RGB=label2rgb<L,'spring','k','shuffle'>;%標(biāo)志圖像向RGB圖像轉(zhuǎn)換figure,imshow<RGB>;title<'圖像彩色標(biāo)記'>;%輸出框架的彩色圖像彩色圖像b.計(jì)算出包含所標(biāo)記的區(qū)域的最小寬和高,并根據(jù)先驗(yàn)知識,比較誰的寬高比更接近實(shí)際車牌寬高比,將更接近的提取并顯示出來。計(jì)算矩形的高度框架的寬度和高度的范圍計(jì)算矩形的高度框架的寬度和高度的范圍車牌的開始列車牌的開始行計(jì)算車牌長寬比獲取車牌二值子圖計(jì)算矩形的寬度程序流程圖圖3.8.2灰度子圖和二值子圖3.9對水平投影進(jìn)行峰谷分析:對水平投影進(jìn)行峰谷分析,計(jì)算出車牌上邊框、車牌字符投影、車牌下邊框的波形峰上升點(diǎn)、峰下降點(diǎn)、峰寬、谷寬、峰間距離、峰中心位置參數(shù)。histcol1=sum<sbw1>;%計(jì)算垂直投影histrow=sum<sbw1'>;%計(jì)算水平投影figure,subplot<2,1,1>,bar<histcol1>;title<'垂直投影〔含邊框'>;%輸出垂直投影subplot<2,1,2>,bar<histrow>;title<'水平投影〔含邊框'>;%輸出水平投影圖3.9.1垂直投影和水平投影figure,subplot<2,1,1>,bar<histrow>;title<'水平投影〔含邊框'>;%輸出水平投影subplot<2,1,2>,imshow<sbw1>;title<'車牌二值子圖'>;%輸出二值圖對水平投影進(jìn)行峰谷分析:求水平投影的最小值取閾值求水平投影的最小值取閾值計(jì)算谷寬度計(jì)算峰距離計(jì)算下降點(diǎn)找到峰中心位置求水平投影的平均值圖3.9.2水平投影和二值圖程序流程圖3.10計(jì)算車牌旋轉(zhuǎn)角度:a.車牌傾斜的原因?qū)е峦队靶Ч骞晒炔幻黠@,在這里需要做車牌矯正處理。這里采取的線性擬合的方法,計(jì)算出車牌上邊或下邊圖像值為1的點(diǎn)擬合直線與水平X軸的夾角。求最大寬度為字符求最大寬度為字符檢測上邊從頂邊至第一個(gè)峰下降點(diǎn)掃描從底邊至最后一個(gè)峰的上升點(diǎn)掃描找第一個(gè)為1的點(diǎn)標(biāo)示出圖像大小程序流程圖<2>線性擬合,計(jì)算與x夾角fresult=fit<xdata',ydata','poly1'>;%poly1表示一介擬合Y=p1*x+p2p1=fresult.p1;angle=atan<fresult.p1>*180/pi;%弧度換為度,360/2pi,pi=3.14<3>旋轉(zhuǎn)車牌圖象subcol=imrotate<subcol1,angle,'bilinear','crop'>;%旋轉(zhuǎn)車牌圖象sbw=imrotate<sbw1,angle,'bilinear','crop'>;%旋轉(zhuǎn)圖像figure,subplot<2,1,1>,imshow<subcol>;title<'車牌灰度子圖'>;%輸出車牌旋轉(zhuǎn)后的灰度圖像標(biāo)題顯示車牌灰度子圖subplot<2,1,2>,imshow<sbw>;title<''>;%輸出車牌旋轉(zhuǎn)后的灰度圖像title<['車牌旋轉(zhuǎn)角:',num2str<angle>,'度'],'Color','r'>;%顯示車牌的旋轉(zhuǎn)角度圖3.10.1旋轉(zhuǎn)后的灰度圖像和旋轉(zhuǎn)角度b.旋轉(zhuǎn)車牌后重新計(jì)算車牌水平投影,去掉車牌水平邊框,獲取字符高度:histcol1=sum<sbw>;%計(jì)算垂直投影histrow=sum<sbw'>;%計(jì)算水平投影figure,subplot<2,1,1>,bar<histcol1>;title<'垂直投影〔旋轉(zhuǎn)后'>;subplot<2,1,2>,bar<histrow>;title<'水平投影〔旋轉(zhuǎn)后'>;圖3.10.2垂直投影〔旋轉(zhuǎn)后和水平投影〔旋轉(zhuǎn)后figure,subplot<2,1,1>,bar<histrow>;title<'水平投影〔旋轉(zhuǎn)后'>;subplot<2,1,2>,imshow<sbw>;title<'車牌二值子圖〔旋轉(zhuǎn)后'>;圖3.10.3水平投影〔旋轉(zhuǎn)后和車牌二值子圖〔旋轉(zhuǎn)后3.11去水平〔上下邊框,獲取字符高度:a.通過以上水平投影、垂直投影分析計(jì)算,獲得了車牌字符高度、字符頂行與尾行、字符寬度、每個(gè)字符的中心位置,為提取分割字符具備了條件。maxhight=max<markrow2>;findc=find<markrow2==maxhight>;rowtop=markrow<findc>;rowbot=markrow<findc+1>-markrow1<findc+1>;sbw2=sbw<rowtop:rowbot,:>;%子圖為<rowbot-rowtop+1>行maxhight=rowbot-rowtop+1;%字符高度<rowbot-rowtop+1>b.計(jì)算車牌垂直投影,去掉車牌垂直邊框,獲取車牌及字符平均寬度histcol=sum<sbw2>;%計(jì)算垂直投影figure,subplot<2,1,1>,bar<histcol>;title<'垂直投影〔去水平邊框后'>;%輸出車牌的垂直投影圖像subplot<2,1,2>,imshow<sbw2>;%輸出垂直投影圖像title<['車牌字符高度:',int2str<maxhight>],'Color','r'>;%輸出車牌字符高度%對垂直投影進(jìn)行峰谷分析求垂直投影的最小值取閾值求垂直投影的最小值取閾值計(jì)算字符上升點(diǎn)計(jì)算谷寬度計(jì)算字符距離找到字符中心位置求垂直投影的平均值圖3.11垂直投影圖像和車牌字符高度程序流程圖c.計(jì)算車牌上每個(gè)字符中心位置,計(jì)算最大字符寬度maxwidthl=0;fork=1:n1markcol3<k>=markcol<k+1>-markcol1<k+1>;%字符下降點(diǎn)markcol4<k>=markcol3<k>-markcol<k>;%字符寬度〔上升點(diǎn)至下降點(diǎn)markcol5<k>=markcol3<k>-double<uint16<markcol4<k>/2>>;%字符中心位置endmarkcol6=diff<markcol5>;%字符中心距離〔字符中心點(diǎn)至下一個(gè)字符中心點(diǎn)maxs=max<markcol6>;%查找最大值,即為第二字符與第三字符中心距離findmax=find<markcol6==maxs>;markcol6<findmax>=0;maxwidth=max<markcol6>;%查找最大值,即為最大字符寬度d.提取分割字符,并變換為22行*14列標(biāo)準(zhǔn)子圖l=1;[m2,n2]=size<subcol>;figure;fork=findmax-1:findmax+5cleft=markcol5<k>-maxwidth/2;cright=markcol5<k>+maxwidth/2-2;ifcleft<1cleft=1;cright=maxwidth;endifcright>n2cright=n2;cleft=n2-maxwidth;endSegGray=sbw<rowtop:rowbot,cleft:cright>;SegBw1=sbw<rowtop:rowbot,cleft:cright>;SegBw2=imresize<SegBw1,[2214]>;%變換為22行*14列標(biāo)準(zhǔn)子圖subplot<2,n1,l>,imshow<SegGray>;ifl==7title<['車牌字符寬度:',int2str<maxwidth>],'Color','r'>;endsubplot<2,n1,n1+l>,imshow<SegBw2>;fname=strcat<'F:\MATLAB\work\sam\image',int2str<k>,'.jpg'>;%保存子圖備選入樣本庫,并建立樣本庫imwrite<SegBw2,fname,'jpg'>l=l+1;end3.12將計(jì)算計(jì)算獲取的字符圖像與樣本庫進(jìn)行匹配,自動識別出字符代碼:進(jìn)行車牌識別前需要使用樣本對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后使用訓(xùn)練好的網(wǎng)絡(luò)對車牌進(jìn)行識別。其具體流程為:使用漢字、字母、字母數(shù)字、數(shù)字四個(gè)樣本分別對四個(gè)子網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到相應(yīng)的節(jié)點(diǎn)數(shù)和權(quán)值。對已經(jīng)定位好的車牌進(jìn)行圖像預(yù)處理,逐個(gè)的特征提取,然后從相應(yīng)的文件中讀取相應(yīng)的節(jié)點(diǎn)數(shù)和權(quán)值,把車牌字符分別送入相應(yīng)的網(wǎng)絡(luò)進(jìn)行識別,輸出識別結(jié)果。樣本與數(shù)據(jù)庫中圖片相減計(jì)算誤差樣本與數(shù)據(jù)庫中圖片相減計(jì)算誤差找到誤差最小圖片依次識別并識別建立數(shù)據(jù)庫程序流程圖圖3.12識別的車牌號碼四、設(shè)計(jì)結(jié)果及分析原始圖像:預(yù)處理后:車牌定位和提?。鹤址姆指詈妥R別:可以看出對于這個(gè)車牌,可以準(zhǔn)確的識別。原始圖像:預(yù)處理

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論