Matlab車牌識別系統(tǒng)_第1頁
Matlab車牌識別系統(tǒng)_第2頁
Matlab車牌識別系統(tǒng)_第3頁
Matlab車牌識別系統(tǒng)_第4頁
Matlab車牌識別系統(tǒng)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河 南 農(nóng) 業(yè) 大 學數(shù)字圖像處理課程設計說明書題 目: 基于神經(jīng)網(wǎng)絡的車牌識別 學 院: 理學院 專 業(yè): 信息安全專門化 班 級: 10信安三班 學 號: 1008105072 姓 名: 高凱強 指導教師: 李寶方 成 績: 時 間: 2013年 5 月 20 日至 2013 年 6 月 5 日基于matlab的車牌識別一、 課程設計目的與要求(一)熟練掌握Matlab和數(shù)字圖像處理函數(shù)的應用;(二)思考并理解所學過的數(shù)字圖像算法的實現(xiàn)過程;(三)通過Matlab數(shù)字圖像處理技術實現(xiàn)這一車輛牌照識別的功能。(隨著我國交通運輸?shù)牟粩喟l(fā)展,智能交通系統(tǒng)(Intelligent Traffic

2、System,簡稱ITS)的推廣變的越來越重要,而作為ITS的一個重要組成部分,車輛牌照識別系統(tǒng)(vehicle license plate recognition system,簡稱LPR)對于交通管理、治安處罰等工作的智能化起著十分重要的作用。它可廣泛應用于交通流量檢測,交通控制于誘導,機場,港口,小區(qū)的車輛管理,不停車自動收費,闖紅燈等違章車輛監(jiān)控以及車輛安全防盜等領域,具有廣闊的應用前景。由于牌照是機動車輛管理的唯一標識符號,因此,車輛牌照識別系統(tǒng)的研究在機動車管理方面具有十分重要的實際意義?。┒?、實驗內(nèi)容本次課程實際的任務是設計一個基于matlab的汽車牌照識別程序,能夠?qū)崿F(xiàn)車牌圖像

3、預處理,車牌定位,字符分割,然后通過神經(jīng)網(wǎng)絡對車牌進行字符識別,最終從一幅圖像中提取車牌中的字母和數(shù)字,給出文本形式的車牌號碼。三、總體方案設計車輛牌照識別系統(tǒng)的基本工作原理為:將攝像頭拍攝到的包含車輛牌照的圖像通過視頻卡輸入到計算機中進行預處理,再由檢索模塊對牌照進行搜索、檢測、定位,并分割出包含牌照字符的矩形區(qū)域,然后對牌照字符進行二值化并將其分割為單個字符,然后輸入JPEG或BMP格式的數(shù)字,輸出則為車牌號碼的數(shù)字。字符分割車牌定位圖片預處理車輛圖片輸出結果字符圖像匹配字符樣本采集車牌識別系統(tǒng)原理圖四、車輛牌照識別系統(tǒng)組成(一)圖像預處理:對汽車圖像進行圖像灰度轉(zhuǎn)換、圖像增強和邊緣檢測等

4、。(二)車牌定位:從預處理后的汽車圖像中分割出車牌圖像。即在一幅車輛圖像中找到車牌所在的位置。(三)字符分割:對車牌圖像進行幾何校正、去噪、二值化以及字符分割以從車牌圖像中分離出組成車牌號碼的單個字符圖像(四)字符識別:對分割出來的字符進行預處理(二值化、歸一化),然后分析提取,對分割出的字符圖像進行識別給出文本形式的車牌號碼。五、各個功能模塊的主要實現(xiàn)程序(一)圖像預處理輸入的彩色圖像包含大量顏色信息,會占用較多的存儲空間,且處理時也會降低系統(tǒng)的執(zhí)行速度,因此對圖像進行識別等處理時,常將彩色圖像轉(zhuǎn)換為灰度圖像,以加快處理速度。對圖像進行灰度化處理、邊緣提取、再利用形態(tài)學方法對車牌進行定位。具

5、體步驟如下:首先對圖像進行灰度轉(zhuǎn)換,二值化處理然后采用4X1的結構元素對圖像進行腐蝕,去除圖像的噪聲。采用25X25的結構元素,對圖像進行閉合應算使車牌所在的區(qū)域形成連通。在進行形態(tài)學濾波去除其它區(qū)域。1. 原始圖像此處用兩個圖片作為卻別,分別為:豫A*A375G 和 渝AN7968 2.代碼部分% 選擇車牌圖片 %filename, pathname = uigetfile('*.jpg''*.bmp''*.gif','選擇圖片');str = pathname filename;I =imread(str); %將選擇的圖片讀

6、取,并賦于Ifigure(1),subplot(3,2,1),imshow(I);title('原始圖像');I1=rgb2gray(I);%轉(zhuǎn)化為灰度圖像figure(1),subplot(3,2,2),imshow(I1),title('灰度圖像');I2=edge(I1,'roberts',0.09,'both');%采用robert算子進行邊緣檢測figure(1),subplot(3,2,3),imshow(I2),title('邊緣檢測后圖像');se=1;1;1; %線型結構元素 I3=imerode

7、(I2,se); %腐蝕圖像figure(1),subplot(3,2,4),imshow(I3),title('腐蝕后邊緣圖像');se=strel('rectangle',25,25); % 矩形結構元素I4=imclose(I3,se);%圖像聚類、填充圖像figure(1),subplot(3,2,5),imshow(I4),title('填充后圖像'); I5=bwareaopen(I4,2000);%去除聚團灰度值小于2000的部分figure(1),subplot(3,2,6),imshow(I5),title('形態(tài)濾波后

8、圖像');3.預處理過程中的圖片截圖 (2) 車牌定位1.代碼部分y,x=size(I5);%獲取濾波后圖像的尺寸,及長寬I6=double(I5); Y1=zeros(y,1);%創(chuàng)建一個y行1列的0矩陣 for i=1:y for j=1:x if(I6(i,j)=1) Y1(i,1)= Y1(i,1)+1; end end end ,MaxY=max(Y1);figure(2),subplot(2,2,1),plot(0:y-1,Y1); title('行方向像素點灰度值累計和'),xlabel('行值'),ylabel('像素')

9、;%求的車牌的行起始位置和終止位置% PY1=MaxY; while (Y1(PY1,1)>=50)&&(PY1>1) PY1=PY1-1; end PY2=MaxY; while (Y1(PY2,1)>=50)&&(PY2<y) PY2=PY2+1; end IY=I(PY1:PY2,:,:); X1=zeros(1,x); for j=1:x for i=PY1:PY2 if(I6(i,j,1)=1) X1(1,j)= X1(1,j)+1; end end end figure(2),subplot(2,2,2),plot(0:x-1

10、,X1); title('列方向像素點灰度值累計和');xlabel('列值');ylabel('像數(shù)');%求的車牌的列起始位置和終止位置% PX1=1; while (X1(1,PX1)<5)&&(PX1<x) PX1=PX1+1; end PX2=x; while (X1(1,PX2)<5)&&(PX2>PX1) PX2=PX2-1; end %分割出車牌圖像%dw=I(PY1:PY2,PX1:PX2,:); imwrite(dw,'dw.jpg','jpg&#

11、39;);figure(2),subplot(2,2,3),imshow(dw);title('定位剪切后的彩色車牌圖像');2. 定位結果截圖 (3) 字符切割1.代碼部分figure(3),subplot(2,2,1),imshow(dw);title('定位后的車牌圖像');I1 = rgb2gray(dw); %將RGB圖像轉(zhuǎn)化為灰度圖像g_max=double(max(max(I1);%獲取I1中灰度最大值g_min=double(min(min(I1);%獲取I1中灰度最小值T=round(g_max-(g_max-g_min)/3); % 計算二值

12、化的閾值后賦值于TI1=im2bw(I1,T/256);subplot(2,2,2);imshow(I1),title('二值化車牌圖像');I2=bwareaopen(I1,20);%刪除面積小于20的區(qū)域figure(3),subplot(2,2,3),imshow(I2);title('形態(tài)學濾波后的二值化圖像');y1,x1=size(I2);I3=double(I2);%去除圖像頂端和底端的不感興趣區(qū)域%Y1=zeros(y1,1); for i=1:y1 for j=1:x1 if(I3(i,j,1)=1) Y1(i,1)= Y1(i,1)+1 ;

13、end end endPy0=1;while (Y1(Py0,1)<20)&&(Py0<y1) Py0=Py0+1;endPy1=Py0; while(Y1(Py1,1)>=20)&&(Py1<y1) Py1=Py1+1; endI2=I2(Py0:Py1,:,:);figure(3),subplot(2,2,4),imshow(I2);title('目標車牌區(qū)域');% 分割字符按行積累量%X1=zeros(1,x1);for j=1:x1 for i=1:y1 if(I3(i,j)=1) X1(1,j)= X1(1,j

14、)+1; end end endfigure(4),plot(0:x1-1,X1);title('列方向像素點灰度值累計和'),xlabel('列值'),ylabel('累計像素量');%分割字符%Px0=1;k=1; %記錄存儲圖片的個數(shù)for i=1:7 while (X1(1,Px0)<5)&&(Px0<x1) Px0=Px0+1; end Px1=Px0; while (X1(1,Px1)>=5)&&(Px1<x1) Px1=Px1+1; end if(Px1-Px0)<15)

15、% 此處加一個if語句作用是除去識 Px0=Px1+1;% 別時區(qū)域X軸區(qū)域小于15的部分,為 while (X1(1,Px0)<5)&&(Px0<x1)% 了去除不是字符的部分,例如: Px0=Px0+1;% 豫 A * A 3 7 5 G 中兩個A之間 end% 的那個點,由于濾波不能濾掉這個比較 Px1=Px0;% 大一點的點,所以在此去除。不足是: while (X1(1,Px1)>=5)&&(Px1<x1)% 同時也去除了 渝 A N 7 9 6 8 中那 Px1=Px1+1;% 個渝字的偏旁 氵,所以識別出來的 end% 渝少

16、 氵。將錯就錯,我在樣本中用 end% 的也是少 氵的渝。 Z=I2(:,Px0:Px1,:); Z=imresize(Z,40 20);%將圖像Z轉(zhuǎn)換成尺寸為40*20的圖片 Px0=Px1; imwrite(Z,strcat('分割符號/PIN',num2str(k),'.jpg'),'jpg'); %分割出來的赴澳以.jpg格式存儲為圖片 k=k+1; %表示需要存儲的下一張圖片figure(5),subplot(1,7,i),imshow(Z);end2. 字符分割結果截圖 (4) 樣本采集并歸一化輸入1. 代碼部分(1) 歸一化函數(shù):p

17、retreatment.mfunction output = pretreatment(I1)I1=imresize(I1,40 20);%將圖片統(tǒng)一劃為40*20大小I1=im2bw(I1,0.9);m,n=size(I1);output=zeros(1,m*n);%將圖像按列轉(zhuǎn)換成一個行向量%for j=1:n for i=1:m output(1,m*(j-1)+i)=I1(i,j); %將各行元素依次排列成一個行向量 endend(2) 符號識別樣本輸入%歸一化訓練樣本%I=zeros(43,800);%創(chuàng)建一個由43個擁有800個元素行向量組成的矩陣for i=1:43 I(i,:)

18、=pretreatment(imread(strcat('識別樣本/',num2str(i-1),'.jpg');%將識別樣本中的每個樣本轉(zhuǎn)換成一個行向量存儲end%在矩陣I的每一行中P=I'%將的到的矩陣I轉(zhuǎn)置賦于P(5) bp神經(jīng)網(wǎng)絡參數(shù)設置T=eye(43,43);net=newff(minmax(P),1000,32,43,'logsig','logsig','logsig','trainrp');net.inputWeights1,1.initFcn ='randnr

19、9;net.layerWeights2,1.initFcn ='randnr'net.trainparam.epochs=5000;net.trainparam.show=50;net.trainparam.goal=0.0000000001;net=init(net);net,tr=train(net,P,T);(6) 分割字符的識別1.代碼部分%測試字符,得到識別數(shù)值%PIN=zeros(7,800); %定義一個有7個擁有800個元素組成的行向量組成的矩陣for i=1:7 PIN(i,:)=pretreatment(imread(strcat('分割符號/PIN

20、',num2str(i),'.jpg'); %將分割符號中的每個分離圖片轉(zhuǎn)換成一個行向量存儲在矩陣PIN的每一行中endP0=PIN' %將得到的矩陣PIN轉(zhuǎn)置后賦于P0Str=cell(1,7);%定義一個擁有7個元素字符串for i=1:7 T0 = sim(net ,P0(:,i); T1 = compet (T0) ; d = find(T1 = 1) - 1; if (d<10)%當d<10,說明符號識別為一個數(shù)字,再將數(shù)字d轉(zhuǎn)換成 str=num2str(d); %與之相對應的字符賦值于str elseif(d>=10)&&

21、amp;(d<=35)%當d>=10且d<=35,說明符號識別為一個字母,由于A的 str=char(d+55);%ASCII值為65,所以與之對應的d都要加55,再由char() else %函數(shù)轉(zhuǎn)換成對應的ASCII字符賦值于str switch d%在樣本中找到與之相應的漢字,并將漢字字符賦值于strcase 36, str='豫' case 37, str='京' case 38, str='蘇' case 39, str='遼'case 40, str='魯' case 41, str='陜' case 42, str

溫馨提示

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

最新文檔

評論

0/150

提交評論