版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p><b> 目錄</b></p><p> 一.課程設(shè)計(jì)任務(wù)3</p><p> 二.課程設(shè)計(jì)原理及設(shè)計(jì)方案3</p><p><b> 1.系統(tǒng)簡述3</b></p><p&g
2、t; 2.圖像預(yù)處理:4</p><p><b> 3.車牌定位4</b></p><p><b> 4.字符分割5</b></p><p><b> 5.字符識別6</b></p><p> 三.課程設(shè)計(jì)的步驟和結(jié)果6</p><p&g
3、t;<b> 1.車牌定位6</b></p><p><b> 2.字符分割10</b></p><p><b> 3.字符識別12</b></p><p> 四.設(shè)計(jì)GUI界面16</p><p> 五.課程設(shè)計(jì)總結(jié)和體會17</p><
4、;p><b> 六.參考文獻(xiàn)17</b></p><p> 七.設(shè)計(jì)總代碼18</p><p> 1.chepai_main.m18</p><p> 2.chepaidingwei.m18</p><p> 3.fenge.m19</p><p> 4.rando_b
5、ianhuan.m21</p><p> 5.zifushibie2.m21</p><p><b> 一.課程設(shè)計(jì)任務(wù)</b></p><p> 在交通管理過程中,通常采用視頻監(jiān)控方式對闖紅燈和超速等違章車輛進(jìn)行監(jiān)督。對違章車輛,需要自動(dòng)檢測車牌信息,提取車牌號碼,以便查找車主信息和監(jiān)督管理。國內(nèi)常用的一般車牌通常是是藍(lán)底白字,長寬
6、比3:1。</p><p> 1、對車牌圖像進(jìn)行預(yù)處理,然后進(jìn)行車牌定位;</p><p><b> 2、進(jìn)行字符分割;</b></p><p> 2、對車牌中的數(shù)字、字母和漢字進(jìn)行提取和識別;</p><p> 3、要求自行設(shè)計(jì)方案、編寫代碼實(shí)現(xiàn)上述功能,并設(shè)計(jì)車牌識別的軟件界面。</p><
7、;p> 二.課程設(shè)計(jì)原理及設(shè)計(jì)方案</p><p><b> 1.系統(tǒng)簡述</b></p><p> 一個(gè)完整的車牌識別系統(tǒng)閉應(yīng)包括車輛檢測、圖像采集、圖像預(yù)處理、車牌定位、字符分割、字符識別等單元。當(dāng)車輛到達(dá)觸發(fā)圖像采集單元時(shí),系統(tǒng)采集當(dāng)前的視頻圖像。車輛識別單元對圖像進(jìn)行處理,定位出牌照位置,再將車牌中的字符分割出來進(jìn)行識別,然后組成車牌號碼輸出。車牌
8、識別系統(tǒng)原理如圖l所示。</p><p> 1)圖像預(yù)處理:對汽車圖像進(jìn)行圖像轉(zhuǎn)換、圖像增強(qiáng)等。</p><p> 2)車牌定位:從預(yù)處理后的汽車圖像中分割出車牌圖像。即在一幅車輛圖像中找到車牌所在的位置。</p><p> 3)字符分割:對車牌圖像進(jìn)行幾何校正、去噪、二值化以及字符分割以從車牌圖像中分離出組成車牌號碼的單個(gè)字符圖像</p>&l
9、t;p> 4)字符識別:對分割出來的字符進(jìn)行預(yù)處理(二值化、歸一化),然后分析提取,對分割出的字符圖像進(jìn)行識別給出文本形式的車牌號碼。</p><p> 為了用于牌照的分割和牌照字符的識別,原始圖象應(yīng)具有適當(dāng)?shù)牧炼?,較大的對比度和清晰可辯的牌照圖象。但由于該系統(tǒng)的攝像部分工作于開放的戶外環(huán)境,加之車輛牌照的整潔度、自然光照條件、拍攝時(shí)攝像機(jī)與牌照的矩離和角度以及車輛行駛速度等因素的影響,牌照圖象可能出現(xiàn)
10、模糊、歪斜和缺損等嚴(yán)重缺陷,因此需要對原始圖象進(jìn)行識別前的預(yù)處理。</p><p> 牌照的定位和分割是牌照識別系統(tǒng)的關(guān)鍵技術(shù)之一,其主要目的是在經(jīng)圖象預(yù)處理后的原始灰度圖象中確定牌照的具體位置,并將包含牌照字符的一塊子圖象從整個(gè)圖象中分割出來,供字符識別子系統(tǒng)識別之用,分割的準(zhǔn)確與否直接關(guān)系到整個(gè)牌照字符識別系統(tǒng)的識別率。</p><p> 由于拍攝時(shí)的光照條件、牌照的整潔程度的影響
11、,和攝像機(jī)的焦距調(diào)整、鏡頭的光學(xué)畸變所產(chǎn)生的噪聲都會不同程度地造成牌照字符的邊界模糊、細(xì)節(jié)不清、筆劃斷開或粗細(xì)不均,加上牌照上的污斑等缺陷,致使字符提取困難,進(jìn)而影響字符識別的準(zhǔn)確性。因此,需要對字符在識別之前再進(jìn)行一次針對性的處理。</p><p> 車牌識別的最終目的就是對車牌上的文字進(jìn)行識別。識別方法目前主要有基于模板匹配算法和基于人工神經(jīng)網(wǎng)絡(luò)算法。</p><p><b&g
12、t; 2.圖像預(yù)處理: </b></p><p> 1)RGB轉(zhuǎn)為灰度圖像</p><p> 輸入的彩色圖像包含大量顏色信息,會占用較多的存儲空間,且處理時(shí)也會降低系統(tǒng)的執(zhí)行速度,因此對圖像進(jìn)行識別等處理時(shí).常將彩色圖像轉(zhuǎn)換為灰度圖像,以加快處理速度??蓪D像進(jìn)行灰度化處理、提取背景圖像、增強(qiáng)處理、圖像二值化,邊緣檢測、濾波等處理。然后采用robert算子進(jìn)行邊緣檢測,再
13、用imopen和imclose對所得二值圖像作開、閉操作進(jìn)行濾波。</p><p> 彩色圖像分為R、G、B三個(gè)分量,分別顯示出紅、綠、藍(lán)等各種顏色,灰度化就是使彩色的R、G、B 分量相等的過程?;叶戎荡蟮南袼攸c(diǎn)比較亮(像素值最大為255,為白色) ,反之比較暗(像素值最小為 0,是黑色) 。 </p><p> 圖像灰度化的算法在matlab調(diào)用的格式為:I=rgb2gray(I0)
14、;</p><p> 2) RGB轉(zhuǎn)換到HSV空間</p><p> 表達(dá)顏色的彩色空間有許多種, 最常見的是 RGB 彩色空間, 但是在 RGB彩色模型中各像素值是由 R、 G、 B三種分量的亮度值疊加而成, 這三種亮度值隨光照強(qiáng)度的不同而改變, 而一般汽車圖像的光照強(qiáng)度是不定的, 所以用 RGB顏色模型進(jìn)行車牌識別是很困難的。HSV顏色模型對應(yīng)于畫家的配色模型, 它由色度 H、 飽
15、和度 S、 亮度 V三個(gè)分量組成。由于這種模型具有線性伸縮性, 可感知的色差與顏色分量的相應(yīng)樣值上的歐幾里德距離成比例, 因此 HSV顏色模型比 RGB顏色模型更直觀、 更容易接受。圖像RGB轉(zhuǎn)換到HSV 空間的算法在matlab調(diào)用的格式為:I=rgb2hsv(I0);但我們?nèi)∷牡诙ǖ繧=(:,:2)時(shí)可以去掉許多不必要的信息,非常有利于后續(xù)處理工作。</p><p><b> 3.車牌定位&
16、lt;/b></p><p> 在車牌定位中首先用顏色定位法,因?yàn)樵诓噬珗D像中,它分別由R,G,B三個(gè)分量合成的,在這種情況下,每個(gè)‘像素’由三個(gè)值來表征,并且可以表示為一個(gè)三維向量z=(z1,z2,z3)T,其分量是一個(gè)點(diǎn)的RGB彩色。當(dāng)我們想要從一副彩色圖像中提取具有指定顏色的所有區(qū)域,比如說,藍(lán)色。令a表示我們感興趣的平均藍(lán)色。基于這一參數(shù)來分割彩色圖像的一種方法是計(jì)算任意彩色點(diǎn)的z值和平均彩色a間
17、的距離測度D(z,a)。然后,我們按如下方式分割圖像:</p><p> 1,D(z,a)《T</p><p><b> g=</b></p><p><b> 0, 其它</b></p><p><b> 這里T為一個(gè)閾值。</b></p><
18、p> 用這樣的一種方法可以較好的,查找出車牌的大概區(qū)域,然后我們再用形態(tài)學(xué)操作進(jìn)行處理切割出車牌的水平區(qū)域,之后我們可以再用水平區(qū)域的圖像來確定車牌的垂直區(qū)域圖像,到此可以得到車牌的區(qū)域。但是可能這樣一個(gè)區(qū)域不太精細(xì),可以在后續(xù)工作中把它更精細(xì)的定位到字符區(qū)域。</p><p><b> 4.字符分割</b></p><p> 完成牌照區(qū)域的定位后,再將牌
19、照區(qū)域分割為單個(gè)字符,可采用垂直投影法。在此設(shè)計(jì)中,對車牌字符的所有噪聲都能很好的去除,字符與字符之間的間隙沒有雜點(diǎn)和粘連,因此垂直投影時(shí),七個(gè)峰值不會相連,所以查找切割字符時(shí)的步驟主要為如下: </p><p> 從第一列開始查找,當(dāng)?shù)谝粋€(gè)投影值不為0時(shí),記錄下第幾列,然后繼續(xù)查找投影值為0的點(diǎn),記錄下第幾列,之后就可以切割出第一個(gè)字符來。其余字符的切割也一樣。</p><p><
20、;b> 5.字符識別</b></p><p> 在這個(gè)設(shè)計(jì)中,運(yùn)用神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行識別,準(zhǔn)確度較高。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,需要足量的模板,建立好輸入,輸出量,其中輸入量就是每一字符樣本,輸出量就是一個(gè)樣本或一類樣本所要對應(yīng)的數(shù)據(jù)輸出。然后,建立訓(xùn)練網(wǎng)絡(luò),設(shè)置好相應(yīng)的一些參數(shù)等,當(dāng)精確度到達(dá)一定程度時(shí),就可以停止訓(xùn)練,至此網(wǎng)絡(luò)訓(xùn)練成功。當(dāng)進(jìn)行字符識別時(shí),就可以調(diào)用已經(jīng)訓(xùn)練好的網(wǎng)絡(luò),把每一個(gè)輸入
21、字符,與網(wǎng)絡(luò)中的函數(shù)進(jìn)行匹配,找到最匹配的進(jìn)行相對應(yīng)的數(shù)據(jù)輸出,就可以判斷究竟為那個(gè)字符。</p><p> 神經(jīng)網(wǎng)絡(luò)的matlab代碼:</p><p> 建立網(wǎng)絡(luò):net=newff(pr,[850 1],{'logsig' 'purelin'},'traingdx','learngdm'); </p>
22、<p> 訓(xùn)練網(wǎng)絡(luò):net=train(net,p,t);P為輸入量,t輸出量</p><p> 3)調(diào)用網(wǎng)絡(luò):t=sim(net,p)</p><p> 三.課程設(shè)計(jì)的步驟和結(jié)果</p><p> 設(shè)計(jì)中主要分為三大塊:車牌定位,字符分割,字符識別,因此就以上三塊分別一一做一個(gè)方法講解。</p><p> 此處以車牌1作
23、為示例圖像</p><p><b> 1.車牌定位</b></p><p> 主要分為:藍(lán)色區(qū)域查找,形態(tài)學(xué)操作,水平區(qū)域定位,垂直區(qū)域定位等部分。</p><p><b> 1.1藍(lán)色區(qū)域查找</b></p><p> Y=imread(’1.jpg’)</p><p&
24、gt; R=Y(:,:,1);</p><p> G=Y(:,:,2);</p><p> B=Y(:,:,3);</p><p> [m,n]=size(R);</p><p><b> for i=1:m</b></p><p><b> for j=1:n</b&
25、gt;</p><p> if (R(i,j)>20&&R(i,j)<82)&&(G(i,j)>10&&G(i,j)<255)&&(B(i,j)>108&&B(i,j)<255)</p><p> A8(i,j)=1;</p><p><b&
26、gt; else</b></p><p> A8(i,j)=0;</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p> figure,ims
27、how(A8)</p><p> 從上圖可以看出進(jìn)過這樣的一種顏色查找法,可以很好的找出車牌區(qū)域。在這個(gè)算法中,最難的一點(diǎn),就是如何確定R,G,B的范圍參數(shù),說實(shí)在話,我的這個(gè)參數(shù)是進(jìn)過不斷嘗試才得到的,在網(wǎng)上和相關(guān)書籍中,都沒有人提出過一致的看法,參數(shù)各有不同,可見對于不同的圖片,參數(shù)范圍是不同的,并沒有一致的參數(shù)。</p><p><b> 1.2形態(tài)學(xué)操作</b&
28、gt;</p><p> 從以上的圖中,我們很明顯的知道,車牌區(qū)域以凸顯出來了,之后的操作一定就要想辦法如何去除雜點(diǎn)和‘豐富‘車牌區(qū)域了。</p><p> se=strel('disk',8,8); </p><p> bg1=imdilate(A8,se);figure ,imshow(bg1);</p><p>
29、 I2 = imfill(bg1,'holes');figure,imshow(I2); </p><p> bw1=bwareaopen(I2,29000); figure,imshow(bw1) ; %去除面積小于29000的區(qū)域bw2=imclearborder(bw1);figure,imshow(bw2) ; %去除與邊界相連的區(qū)域</p><p> 1.3
30、水平車牌區(qū)域切割</p><p> 雖然我們看到上圖中,所有雜點(diǎn)都去除了,但是這只是一個(gè)特例,在其它大多數(shù)圖像中,到了以上那不,其實(shí)還有一些大于29000塊的區(qū)域還在的,但他們都有一個(gè)共同的特點(diǎn),就是都在車牌的上方并且不與車牌相連,在車牌下方的區(qū)域,則是相當(dāng)‘干凈‘的。因此,我的想法是先從水平放向切割出車牌的水平區(qū)域,在進(jìn)行下一步打算。</p><p><b> for x=
31、1:m</b></p><p> X(x)=sum(bw2(x,:));</p><p><b> end</b></p><p> x=1:m;figure,plot(x,X(x));</p><p> for i=m:-1:1</p><p> if X(i)~=0<
32、;/p><p><b> PX2=i;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> end</b></p><p> for j=PX2-1:-1
33、:1</p><p> if X(j)~=0</p><p><b> continue;</b></p><p> else PX1=j;</p><p><b> break;</b></p><p><b> end</b></p&
34、gt;<p><b> end</b></p><p> DW1=Y(PX1:PX2,:,:);</p><p> figure,imshow(DW1)</p><p> 1.4垂直車牌區(qū)域切割</p><p> 這段代碼的原理與以上1.1到1.3步的原理一樣,代碼類似。</p>&
35、lt;p> R1=DW1(:,:,1);</p><p> G1=DW1(:,:,2);</p><p> B1=DW1(:,:,3);</p><p> [a,b]=size(R1);</p><p><b> for i=1:a</b></p><p><b> f
36、or j=1:b</b></p><p> if (R1(i,j)>20&&R1(i,j)<82)&&(G1(i,j)>10&&G1(i,j)<255)&&(B1(i,j)>108&&B1(i,j)<255)</p><p> A9(i,j)=1;</p
37、><p><b> else</b></p><p> A9(i,j)=0;</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p>
38、<p> figure,imshow(A9);</p><p> se=strel('disk',8,8); </p><p> bg2=imdilate(A9,se);figure ,imshow(bg2)</p><p> I3 = imfill(bg2,'holes');figure,imshow(I3)<
39、;/p><p> bw3=bwareaopen(I3,29000) ; </p><p> figure,imshow(bw3)</p><p><b> for y=1:b</b></p><p> Y(y)=sum(bw3(1:a,y));</p><p><b> end&
40、lt;/b></p><p> y=1:b;figure,plot(y,Y(y));title('´¹Ö±Í¶Ó°');</p><p><b> for y=1:b</b></p><p> if Y(y)~=0</p>
41、<p><b> PY1=y;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> end</b></p><p> for y=b:-1:1</p>
42、<p> if Y(y)~=0</p><p><b> PY2=y;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> end</b></p>
43、<p> DW2=DW1(:,PY1:PY2,:);</p><p> figure,imshow(DW2);</p><p><b> 1.5傾斜校正</b></p><p> 使用雷登變換radon來進(jìn)行校正,主要步驟為:對圖像進(jìn)行1到180度的雷登變換,然后查找圖上每條直線的最大的角度進(jìn)行旋轉(zhuǎn)就是。具體代碼在文章尾給出的
44、全部代碼中可以找到。</p><p><b> 2.字符分割</b></p><p> 字符分割的設(shè)計(jì)主要有三大塊:去除鉚釘?shù)恼尺B和不必要的雜點(diǎn),車牌的再次精細(xì)定位,字符分割。因此分別對以上的算法做一一的介紹。</p><p> 2.1去除鉚釘?shù)恼尺B和不必要的雜點(diǎn)</p><p> 此步的意義在于,使得我們的車牌
45、字符切割時(shí)變得較為‘干凈‘,并且運(yùn)用垂直投影法切割時(shí)可以,很好的判斷切割出來。</p><p> I1=rgb2gray(I);</p><p> J=rgb2hsv(I);J=J(:,:,2);figure,imshow(J); I20=im2bw(J,graythresh(J));figure ,imshow(I20); bg10=bwareaopen(I20,2000);figu
46、re,imshow(bg10);</p><p> [m,n]=find(bg10==1); </p><p> rowmin=min(m);</p><p> rowmax=max(m); </p><p> colummin=min(n);</p><p> colummax
47、=max(n);</p><p> bg20=I1(rowmin:rowmax,colummin:colummax);figure,imshow(bg20);</p><p> se=strel('disk',20);</p><p> bg0=imopen(bg20,se);</p><p> bg1=imsubtr
48、act(bg20,bg0);figure,imshow(bg1); bg1=imadjust(bg1);figure ,imshow(bg1);</p><p> I2=im2bw(bg1,0.7);figure ,imshow(I2);</p><p> II2=im2bw(bg1,graythresh(bg1));figure,imshow(II2); I2=imresize(I2
49、,[120,420]); II2=imresize(II2,[120,420]); </p><p> se=[1,1,1];bg00=imerode(I2,se); bw3=imclearborder(bg00); bg2=bwareaopen(bw3,200); se2=strel('disk',1);</p><p> II=im
50、dilate(bg2,se2);</p><p> [m,n]=find(II==1); </p><p> rowmin=min(m);</p><p> rowmax=max(m);</p><p> colummin=min(n); </p><p> colummax=max(n);<
51、/p><p> bg200=II(rowmin:rowmax,colummin:colummax);figure,imshow(bg200); </p><p> 從以上可以看出,進(jìn)過這樣的處理后,右邊的車牌字符的鉚釘和雜點(diǎn)都去除的十分干凈,雖然有些字符斷裂了或丟失一部分,但切割字符時(shí)是以右邊的進(jìn)行垂直投影,而對左邊的車牌進(jìn)行切割的,所以不會使得字符丟失應(yīng)有的信息。</p>
52、<p> 2.2車牌的再次精細(xì)定位和垂直投影</p><p> 這步的操作主要在于把車牌高度的大小定位為與字符高度一樣,切割出的字符就可以大小相同</p><p> bg2000=II2(rowmin:rowmax,colummin:colummax);figure,imshow(bg2000);</p><p> [a,b]=size(bg200
53、);</p><p><b> for y=1:b</b></p><p> Y(y)=sum(bg200(1:a,y));</p><p><b> end</b></p><p> y=1:b;figure,plot(y,Y(y)); </p><p> 這樣可
54、以從投影圖看出,到達(dá)此步時(shí)可以很容易的分割出每個(gè)字符了。</p><p><b> 2.3字符分割</b></p><p> 把分割出來的字符寫入當(dāng)前的目錄下,有利于下一步字符識別的調(diào)用。</p><p><b> k=1;</b></p><p><b> figure;<
55、/b></p><p><b> for i=1:7</b></p><p><b> for y=k:b</b></p><p> if Y(y)~=0;</p><p><b> PY1=y;</b></p><p><b>
56、 break;</b></p><p><b> end</b></p><p><b> end</b></p><p> for x=PY1:b</p><p> if Y(x)==0;</p><p><b> PY2=x;</b
57、></p><p><b> break;</b></p><p><b> end</b></p><p> end </p><p><b> if i==7</b></p><p> bg4=bg2
58、000(:,PY1:b,:);</p><p> imwrite(bg4,strcat(num2str(7),'.jpg')) bg5=imresize(bg4,[90,40]); subplot(1,7,7),imshow(bg4);</p><p><b> break;</b></p><p><
59、b> end</b></p><p> bg4=bg2000(:,PY1:PY2,:); imwrite(bg4,strcat(num2str(i),'.jpg'));</p><p> bg5=imresize(bg4,[90,40]);</p><p> subplot(1,7,i),imshow(bg5);</p
60、><p><b> k=PY2+1;</b></p><p><b> end</b></p><p><b> 3.字符識別</b></p><p> 此部分采用的是BP神經(jīng)網(wǎng)絡(luò),主要有以下幾步:建立字符訓(xùn)練樣本,建立BP網(wǎng)絡(luò)訓(xùn)練,字符檢測。</p><
61、;p> 3.1建立字符訓(xùn)練樣本</p><p> 字符庫在num文件夾內(nèi),把字符讀入,進(jìn)行相關(guān)處理后,存在p矩陣中,然后對應(yīng)的輸出為t字符。在這里共有334個(gè)字符,包括漢字,字母和數(shù)字。</p><p><b> clear all</b></p><p><b> clc</b></p>&l
62、t;p> for kk= 0:333</p><p> p1=ones(10,10);</p><p> m=strcat('num\',int2str(kk),'.jpg');</p><p> x=imread(m);</p><p> rate=10/max(size(x)); </
63、p><p> I3=imresize(x,rate); </p><p> [i,j]=size(I3);</p><p> i1=round((10-i)/2);</p><p> j1=round((10-j)/2);</p><p> p1(i1+1:i1+i,j1+1:j1+j)=I3;</p&g
64、t;<p> for hh=1:10</p><p> p((hh-1)*10+1:(hh-1)*10+10,kk+1)=p1(hh,1:10);</p><p><b> end</b></p><p> switch kk</p><p> case {0,1,2,3,4,5,6,7,8,9
65、,10,11,12,13,14,15}</p><p> t(kk+1)=1;</p><p> case{16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34}</p><p> t(kk+1)=2;</p><p> case{35,36,37,38,39,40,41,4
66、2,43,44,45,46,47,48,49,50}</p><p> t(kk+1)=3;</p><p> case{51,52,53,54,55,56,57,58,59,60,61,62,63,64,65}</p><p> t(kk+1)=4;</p><p> case{66,67,68,69}</p><
67、;p> t(kk+1)=5;</p><p> case{70,71,72,73,74,75,76,77,78,79,80,81,82}</p><p> t(kk+1)=6;</p><p> case{83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104}<
68、;/p><p> t(kk+1)=7;</p><p> case{105,106,107,108,109,110,111,112,113,114,115,116,117,118,119}</p><p> t(kk+1)=8;</p><p> case{120,121,122,123,124,125,126,127,128,129,1
69、30,131,132,133}</p><p> t(kk+1)=9;</p><p> case{134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152}</p><p> t(kk+1)=10;</p><p> case{153,15
70、4,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187}</p><p> t(kk+1)=11;</p><p> case{188,189,190,191,192,193,
71、194}</p><p> t(kk+1)=12;</p><p> case{195,196,197,198,199,200,201}</p><p> t(kk+1)=13;</p><p> case{202,203,204,205,206}</p><p> t(kk+1)=14;</p>
72、<p> case{207,208,209,210}</p><p> t(kk+1)=15;</p><p> case{211,212,213,214,215,216,217}</p><p> t(kk+1)=16;</p><p> case{218,219,220,221,222,223,224,225,22
73、6,227}</p><p> t(kk+1)=17;</p><p> case{228,229,230,231,232,233,234}</p><p> t(kk+1)=18;</p><p> case{235,236}</p><p> t(kk+1)=20;</p><p>
74、; case{237,238,239,240}</p><p> t(kk+1)=21;</p><p> case{241,242,243,244,245}</p><p> t(kk+1)=22;</p><p> case{246,247,248}</p><p> t(kk+1)=23;</p
75、><p> case{249,250,251}</p><p> t(kk+1)=24;</p><p> case{252,253,254}</p><p> t(kk+1)=26;</p><p> case{255,256,257,258,259}</p><p> t(kk+1)
76、=27;</p><p> case{260,261}</p><p> t(kk+1)=28;</p><p> case{262,263,264,265,266}</p><p> t(kk+1)=29;</p><p> case{267,268,269,270,271,272}</p>
77、<p> t(kk+1)=30;</p><p> case{273,274}</p><p> t(kk+1)=31;</p><p> case{275,276,277}</p><p> t(kk+1)=32;</p><p> case{278,279,280,281,282}</p
78、><p> t(kk+1)=33;</p><p> case{283,284}</p><p> t(kk+1)=34;</p><p> case{285,286,287,288}</p><p> t(kk+1)=35;</p><p> case{289,290,291,292,
79、293,294}</p><p> t(kk+1)=36;</p><p> case{295,296,297,298,299,300,301,302}</p><p> t(kk+1)=37;</p><p><b> case{303}</b></p><p> t(kk+1)=42
80、;</p><p> case{304,305}</p><p> t(kk+1)=39;</p><p><b> case{306}</b></p><p> t(kk+1)=41;</p><p><b> case{307}</b></p>&
81、lt;p> t(kk+1)=43;</p><p><b> case{308}</b></p><p> t(kk+1)=40;</p><p> case{309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,33
82、0,331,332,333}</p><p> t(kk+1)=38;</p><p><b> end</b></p><p><b> end</b></p><p> save 51ET p t;</p><p> 3.2建立BP網(wǎng)絡(luò)訓(xùn)練</p>
83、<p> 在這里我們新建了一個(gè)BP神經(jīng)網(wǎng)絡(luò),訓(xùn)練步數(shù)為10000,目標(biāo)精確度為0.001,學(xué)習(xí)率為0.00001等,然后train(net,p,t)進(jìn)行訓(xùn)練。當(dāng)達(dá)到目標(biāo)后自會停止。在當(dāng)前路徑下會出現(xiàn)的文件,表示訓(xùn)練成功。</p><p> load 51ET p t; </p><p> pr(1:100,1)=0;</p><p&
84、gt; pr(1:100,2)=1;</p><p> net=newff(pr,[850 1],{'logsig' 'purelin'},'traingdx','learngdm'); net.trainParam.epochs=10000; </p><p> net.trainParam.goal=0.001
85、; </p><p> net.trainParam.show=10; </p><p> net.trainParam.lr=0.00001 </p><p> net=train(net,p,t); </p><p> save ET51net net;</p><p
86、><b> 3.3字符檢測</b></p><p> 輸入字符,然后調(diào)用ET51net就可以進(jìn)行測試。測試的結(jié)果是否正確,要看你3.1步,每一個(gè)輸入的p是否對應(yīng)了t。比如;輸入為12,查到3.1中12這個(gè)數(shù)對應(yīng)輸出t應(yīng)該為1,所以輸出正確應(yīng)該為1才對。不然的話,要從新訓(xùn)練網(wǎng)絡(luò),更改相關(guān)的參數(shù),進(jìn)行訓(xùn)練,以達(dá)到最佳的效果。</p><p> liccode=
87、char(['0':'9' 'A':'Z' '桂粵冀瓊京吉津晉警蘭遼領(lǐng)魯蒙閩寧青黑陜使蘇皖湘新學(xué)渝豫云浙']); </p><p> load ET51net net; </p><p> for l=1:7 </p><p> I=imread(strcat(num2str
88、(l),'.jpg'));</p><p> p=zeros(100,1);</p><p> p1=ones(10,10); </p><p> rate=10/max(size(I)); </p><p> I3=imresize(I,rate); </p><p> [i,j]=s
89、ize(I3);</p><p> i1=round((10-i)/2);</p><p> j1=round((10-j)/2);</p><p> p1(i1+1:i1+i,j1+1:j1+j)=I3;</p><p> for hh=1:10</p><p> p((hh-1)*10+1:(hh-1)*
90、10+10,1)=p1(hh,1:10);</p><p><b> end </b></p><p> k=sim(net,p); y=round(k); </p><p> res=liccode(y);</p><p> shibiejieguo(1,l)=res;</p><
91、p><b> l=l+1;</b></p><p><b> end</b></p><p> msgbox(shibiejieguo,'識別結(jié)果 ');</p><p><b> 四.設(shè)計(jì)GUI界面</b></p><p> 五.課程設(shè)計(jì)總結(jié)和
92、體會</p><p> 本次設(shè)計(jì)最得意的地方在車牌顏色定位方面,找到那些參數(shù)很容易把車牌初步找出來,并且開始這一步把許多不需要的信息都去除掉了,很利于后面的操作。但是此種方法也有缺點(diǎn),對于藍(lán)色的車輛是找不到的。在整個(gè)算法中投影法分割思想都占據(jù)的極大的比重。對于識別的階段,一開始我使用的是,字符模板相減法,但是效果很不好,最終用了不太熟悉的神經(jīng)網(wǎng)絡(luò)法,對于神經(jīng)網(wǎng)絡(luò)還是許多不懂的,但是看了相當(dāng)?shù)某绦蚶雍妥约郝龑?shí)
93、踐摸索,雖然還是朦朦濃濃,但還是嘗試的做了出來,并且效果不錯(cuò),真可謂功夫不負(fù)有心人!因?yàn)闀r(shí)間倉促,這個(gè)設(shè)計(jì)的代碼沒有進(jìn)行仔細(xì)的優(yōu)化,運(yùn)算起來相當(dāng)緩慢。</p><p> 總之,理論只有應(yīng)用到實(shí)際中才能學(xué)著更有意義。學(xué)習(xí)是一個(gè)長期積累的過程,在后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。此次設(shè)計(jì)也大大提高了我的動(dòng)手能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時(shí)的喜悅。雖然這個(gè)設(shè)計(jì)目前實(shí)現(xiàn)了
94、少數(shù)的車輛牌照識別,但是在設(shè)計(jì)過程中所學(xué)到的學(xué)習(xí)方法是我最大收獲和財(cái)富,相信定會使我受益終身。</p><p><b> 六.參考文獻(xiàn)</b></p><p> 1.岡薩雷斯.?dāng)?shù)字圖像處理(第三版).電子工業(yè)出版社</p><p> 2.matlab神經(jīng)網(wǎng)絡(luò)編程 張德豐</p><p> 3. ma
95、tlab數(shù)字圖像處理 張德豐</p><p> 4. 周科偉. Matlab環(huán)境下基于神經(jīng)網(wǎng)絡(luò)的車牌識別 西安電子科技大學(xué)碩士學(xué)位論文</p><p><b> 七.設(shè)計(jì)總代碼</b></p><p> 1.chepai_main.m</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96、%%%%%%%</p><p> clear all;</p><p><b> clc;</b></p><p> % ==============測定算法執(zhí)行的時(shí)間,開始計(jì)時(shí)=================</p><p><b> tic</b></p><p&g
97、t; %=====================讀入圖片================================</p><p> [fn,pn,fi]=uigetfile('*.jpg','選擇圖片');</p><p> Y=imread([pn fn]);figure,imshow(Y);title('原始圖像');%顯
98、示原始圖像</p><p> A=chepaidingwei(Y);</p><p> B=rando_bianhuan(A);</p><p> fenge(B);%字符分割</p><p><b> %然后每個(gè)字符識別</b></p><p> shibiejieguo=zifush
99、ibie2( );</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p> 2.chepaidingwei.m</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p
100、> unction A=chepaidingwei(I)</p><p><b> Y=I;</b></p><p> R=Y(:,:,1);</p><p> G=Y(:,:,2);</p><p> B=Y(:,:,3);</p><p> [m,n]=size(R);<
101、;/p><p><b> for i=1:m</b></p><p><b> for j=1:n</b></p><p> if (R(i,j)>20&&R(i,j)<82)&&(G(i,j)>10&&G(i,j)<255)&&(B
102、(i,j)>108&&B(i,j)<255)</p><p> A8(i,j)=1;</p><p><b> else</b></p><p> A8(i,j)=0;</p><p><b> end</b></p><p><b&
103、gt; end</b></p><p><b> end</b></p><p> %figure,imshow(A8)</p><p> se=strel('disk',8,8); </p><p> bg1=imdilate(A8,se);%figure ,imshow(bg1)
104、;title('膨脹');</p><p> I2 = imfill(bg1,'holes');%figure,imshow(I2);title('孔洞填充');%空洞填充</p><p> bw1=bwareaopen(I2,29000); %小于29000的面積去掉</p><p> %figure,im
105、show(bw1);title('小于29000的面積去掉');</p><p> bw2=imclearborder(bw1);%figure,imshow(bw2) ;title('去除邊界相通的區(qū)域'); %去除邊界相通的區(qū)域</p><p><b> for x=1:m</b></p><p>
106、X(x)=sum(bw2(x,:));</p><p><b> end</b></p><p> x=1:m;%figure,plot(x,X(x));title('水平投影');</p><p> for i=m:-1:1</p><p> if X(i)~=0</p><
107、p><b> PX2=i;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> end</b></p><p> for j=PX2-1:-1:1</p>
108、<p> if X(j)~=0</p><p><b> continue;</b></p><p> else PX1=j;</p><p><b> break;</b></p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&l
109、t;/p><p><b> 3.fenge.m</b></p><p> ########################################################3</p><p> function []= fenge(I)</p><p> %此分割主要在于不斷的進(jìn)行形態(tài)學(xué)變換,把所有與
110、子符無關(guān)的區(qū)域去除</p><p> I1=rgb2gray(I);%figure,imshow(I1)</p><p> J=rgb2hsv(I);J=J(:,:,2);figure,imshow(J);title('HSV空間');%%%rgb轉(zhuǎn)換到HSV空間來進(jìn)行處理</p><p> I20=im2bw(J,graythresh(J))
111、;figure ,imshow(I20);title('二值化');</p><p> bg10=bwareaopen(I20,2000);figure,imshow(bg10);title('去除面積20000的區(qū)域');%%%%%去除面積為2000的區(qū)域</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<
112、/p><p> [m,n]=find(bg10==1); </p><p> rowmin=min(m);</p><p> rowmax=max(m); %%%這段代碼相當(dāng)于切割圖像,把原先粗定位好的車牌,再進(jìn)行精細(xì)定位</p><p> colummin=min(n);</p><p&
113、gt; colummax=max(n);</p><p> bg20=I1(rowmin:rowmax,colummin:colummax);figure,imshow(bg20);title('再次確定車牌區(qū)域');</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p> se=
114、strel('disk',20);</p><p> bg0=imopen(bg20,se);%figure,imshow(bg0)</p><p> bg1=imsubtract(bg20,bg0);figure,imshow(bg1);title('頂帽變換后的圖');%%%%這三步主要在于把車牌進(jìn)行頂帽變換,以突出字符區(qū)(在書上433頁有原理)&l
115、t;/p><p> bg1=imadjust(bg1);figure ,imshow(bg1);title('字符區(qū)更加突出');</p><p> I2=im2bw(bg1,0.7);figure ,imshow(I2);title('閾值為0.7時(shí)的二值圖');</p><p> II2=im2bw(bg1,graythresh
116、(bg1));figure,imshow(II2);title('自動(dòng)閾值的圖,保留更多的信息');</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p> I2=imresize(I2,[120,420]);%figure,imshow(I2) %%%對大小不一的車牌進(jìn)行歸一化,以便于在后續(xù)的形態(tài)學(xué)操作中&
117、lt;/p><p> II2=imresize(II2,[120,420]); %%%%較好的處理</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p> se=[1,1,1];bg00=imerode(I2,se);%figure,imshow(bg00);title('腐
118、蝕后的圖');%%%%選擇se=[1,1,1]的結(jié)構(gòu)元主要是為了把與鉚釘相連的字符腐蝕開來,以利于垂直投影分割</p><p> bw3=imclearborder(bg00);%figure,imshow(bw3);</p><p> bg2=bwareaopen(bw3,200);%figure,imshow(bg2);</p><p> se2=
119、strel('disk',1);</p><p> II=imdilate(bg2,se2);%figure,imshow(II)%%%%%因?yàn)橐陨系母g操作后,造成車牌字符斷離,所以用膨脹操作以進(jìn)行恢復(fù)</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p>
120、 [m,n]=find(II==1); </p><p> rowmin=min(m);</p><p> rowmax=max(m);</p><p> colummin=min(n);%%%%%%%%%%%%%%%%%%%%%%%這段代碼主要是對車牌再次進(jìn)行精細(xì)分割,因?yàn)槲覀円呀?jīng)對鉚釘?shù)纫恍╇s點(diǎn)處理掉了</p><p>
121、 colummax=max(n);%%%%%%%%%%%%%%%%%%%%%%%就可以把車牌完全定位在字符大小的區(qū)域,而沒有其余噪聲了</p><p> bg200=II(rowmin:rowmax,colummin:colummax);figure,imshow(bg200);title('沒有噪聲點(diǎn)的車牌區(qū)域');</p><p> bg2000=II2(rowmi
122、n:rowmax,colummin:colummax);figure,imshow(bg2000);title('有噪聲點(diǎn)的車牌區(qū)域');</p><p> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p><p> %%%%%%%%%%%%%%%%%下面的代碼就是對字符進(jìn)行垂直投影分割,然后把每個(gè)
123、分割出來的字符,存放在當(dāng)前目錄下</p><p> %%%%%%%%%%%5%%%%%以利于下一步,字符的識別處理</p><p> [a,b]=size(bg200);</p><p><b> for y=1:b</b></p><p> Y(y)=sum(bg200(1:a,y));</p>
124、<p><b> end</b></p><p> y=1:b;figure,plot(y,Y(y));title('垂直投影');</p><p><b> k=1;</b></p><p><b> figure;</b></p><p>
125、<b> for i=1:7</b></p><p><b> for y=k:b</b></p><p> if Y(y)~=0;</p><p><b> PY1=y;</b></p><p><b> break;</b></p>
126、;<p><b> end</b></p><p><b> end</b></p><p> for x=PY1:b</p><p> if Y(x)==0;</p><p><b> PY2=x;</b></p><p>&l
127、t;b> break;</b></p><p><b> end</b></p><p> end </p><p><b> if i==7</b></p><p> bg4=bg2000(:,PY1:b,:);%figure,imsh
128、ow(bg4)</p><p> imwrite(bg4,strcat(num2str(7),'.jpg'));%在當(dāng)下文件夾存儲字符 </p><p> bg5=imresize(bg4,[90,40]);%字符大小規(guī)定化,以利于全部顯示時(shí)大小一致</p><p> subplot(1,7,7),imshow(bg4);</p>
129、<p><b> break;</b></p><p><b> end</b></p><p> bg4=bg2000(:,PY1:PY2,:);%figure,imshow(bg4)</p><p> imwrite(bg4,strcat(num2str(i),'.jpg'));&l
130、t;/p><p> bg5=imresize(bg4,[90,40]);</p><p> subplot(1,7,i),imshow(bg5);</p><p><b> k=PY2+1;</b></p><p><b> end</b></p><p> %%%%%
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車牌識別課程設(shè)計(jì)--車牌識別系統(tǒng)設(shè)計(jì)
- 基于matlab的圖像處理的課程設(shè)計(jì)(車牌識別系統(tǒng))
- 課程設(shè)計(jì)---簡易車牌識別系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告--車牌識別系統(tǒng)的設(shè)計(jì)
- 車牌識別系統(tǒng)的設(shè)計(jì)--課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告-車牌識別系統(tǒng)的設(shè)計(jì)
- matlab車牌識別課程設(shè)計(jì)報(bào)告
- 基于matlab車牌識別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于matlab的車牌識別系統(tǒng)
- 基于matlab的車牌識別系統(tǒng)設(shè)計(jì)論文
- 基于matlab的車牌識別系統(tǒng)設(shè)計(jì)論文-【完整】
- 基于MATLAB實(shí)現(xiàn)的車牌識別系統(tǒng).pdf
- 基于matlab的車牌識別系統(tǒng)的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于MATLAB的車牌識別系統(tǒng)實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)-- 基于matlab的車牌識別系統(tǒng)的設(shè)計(jì)
- 【畢業(yè)設(shè)計(jì)】基于matlab車牌識別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于MATLAB的車牌識別系統(tǒng)研究.pdf
- 基于 matlab 的車牌識別系統(tǒng)(論文和源碼)
- 車牌識別系統(tǒng)的設(shè)計(jì)
- 車牌識別系統(tǒng)
評論
0/150
提交評論