天天看點

03系統多界面_基于MATLAB的多方法車牌識别系統[帶GUI界面+萬字技術文檔+直播]

03系統多界面_基于MATLAB的多方法車牌識别系統[帶GUI界面+萬字技術文檔+直播]
一、課題介紹

随着汽車數量的增加,城市交通狀況日益受到人們的重視,如何進行有效的交通管理更是成為了人們關注的焦點。智能交通系統通過車輛檢測裝置對過往的車輛實施檢測,提取有關交通資料,達到監控、管理和指揮交通的目的。是以,它已成為世界交通領域研究的重要課題。 車牌識别系統作為智能交通系統的一個重要組成部分,已在高速公路、城市交通和停車場等項目的管理中占有無可取代的重要地位。它在不影響汽車狀态的情況下,由計算機自動完成車牌的識别,進而降低交通管理工作的複雜度。

該課題為基于MATLAB的汽車出入庫識别系統,帶有豐富的人機互動GUI界面。目前畢業設計選題中,傳統的中規中矩的車牌識别不易得到高分,必須要在此基礎上有所創新方得可以避開其他雷同課題,不會輕易被導師被否決而導緻畢設不過。是以建議在車牌識别基礎上加入多種方法的對比,看看哪種方法的精度高。雖然目前有很多方法的車牌識别,但是都是在各自的測試庫裡面測試的,比如測試的車牌圖像不同,字元庫不同,導緻無法做對比。整個設計在一個GUI界面上完成。

傳統基礎版:中規中矩的車牌識别【隻看到車屁股】

靓點1版本:可做成 複雜背景的車牌識别【可以看到全車以及周邊其他物體】

靓點2版本:可做成 具備判斷是否為庫内車牌的車牌識别,并且計時計費(智慧停車場)

靓點3版本:可做成 具備語音播報的車牌識别,把識别結果通過聲音方式播報出來

靓點4版本:可做成 兩種方法的對比,本課題為模闆比對和bp神經網絡方法的對比

二、基本流程 車牌識别部分: ①圖像預處理

:在整個車牌識别系統中,由于采集進來的圖像為真彩圖,再加上實際采集環境的影響以及采集硬體等原因,圖像品質并不高,其背景和噪聲會影響字元的正确分割。和識别,是以在進行車牌分割和識别處理之前,需要先對車牌圖像進行圖像預處理操作。

②車牌定位

:首先對車牌的二值圖檔進行形态學濾波,使車牌區域形成一個連通區域,然後根據車牌的先驗知識對所得到的連通區域進行篩選,擷取車牌區域的具體位置,完成從圖檔中提取車牌的任務。

③車牌分割

:首先對車牌進行水準投影,去除水準邊框;再對車牌進行垂直投影。通過對車牌進行投影分析可知,與最大值峰中心對應的為車牌中第二個字元和第三個字元的間隔,與第二大峰中心距離對應的即為車牌字元的寬度,并以此為依據對車牌進行分割。

④字元識别

神經網絡

:先用bp神經網絡訓練測試集中涉及到的字元,如粵、閩等,A-Z,0-9;進行比對識别;

模闆比對:

來對車牌進行識别。識别過程中,首先建立标準字庫,再将分割所得到的字元進行歸一化,将歸一化處理後的字元與标準字庫裡的字元逐一比較,最後把誤差最小的字元作為結果顯示出來。

三、GUI設計圖(

學習好GUI,有助于畢業後從事UI界面設計類工作,如深圳創維,康佳,彩虹電視等需要大量該類崗位,适合女孩子居多,該類工作居于程式員和文員之間

03系統多界面_基于MATLAB的多方法車牌識别系統[帶GUI界面+萬字技術文檔+直播]

運作預期效果圖

GUI制作說明:GUI是MATLAB的人機互動式GUI界面,有GUI界面,所有操作可在一個界面上完成,可以為畢設增分不少。GUI可在MATLAB指令行視窗輸入guide回車快速打開,GUI常用的控件有axes,edit,putton,text幾個元件,不同元件之間通過回調函數來進行連接配接,觸發操作,可教學GUI制作,以及友情推薦同類崗位工作。

四、代碼附錄[可語音講解,直播]

1、車牌載入

[filename,filepath]=uigetfile('.jpg','輸入車牌圖像');% 直接自動讀入%
file=strcat(filepath,filename); %strcat函數:連接配接字元串;把filepath的字元串與filename的連接配接,即路徑/檔案名
I=imread(file);
axes(handles.axes1)%讓車牌顯示在axes1控件中
imshow(I)%顯示
title(‘車牌’)
           

2、圖像預處理

I1=rgb2gray(I);  %灰階處理
I2=edge(I1,'roberts',0.15,'both');  %邊緣檢測
se=[1;1;1];  
I3=imerode(I2,se);  
se=strel('rectangle',[25,25]);  
I4=imclose(I3,se);  %閉運算,去除雜質影響
I5=bwareaopen(I4,2000);  %膨脹操作
 
           

3、車牌定位

[y,x,z]=size(I5);  
myI=double(I5);  
tic
 white_y=zeros(y,1);  
 for i=1:y  
 for j=1:x  
 if(myI(i,j,1)==1)   
                white_y(i,1)= white_y(i,1)+1;   
 end 
 end 
 end 
 [temp MaxY]=max(white_y);  
 PY1=MaxY;  
 while ((white_y(PY1,1)>=5)&&(PY1>1))  
        PY1=PY1-1;  
 end 
 PY2=MaxY;  
 while ((white_y(PY2,1)>=5)&&(PY2<y))  
        PY2=PY2+1;  
 end 
 IY=I(PY1:PY2,:,:);  
 white_x=zeros(1,x);  
 for j=1:x  
 for i=PY1:PY2  
 if(myI(i,j,1)==1)  
                white_x(1,j)= white_x(1,j)+1;                 
 end 
 end 
 end 
 
 PX1=1;  
 while ((white_x(1,PX1)<3)&&(PX1<x))  
       PX1=PX1+1;  
 end 
 PX2=x;  
 while ((white_x(1,PX2)<3)&&(PX2>PX1))  
        PX2=PX2-1;  
 end 
 PX1=PX1-2;  
 PX2=PX2+3;  
 dw=I(PY1:PY2-8,PX1:PX2,:);  
 axes(handles.axes2)
 imshow(dw)
 title('定位的車牌')
 
           

4、字元分割

% 切割出 7 個字元  
y1=10;y2=0.25;flag=0;word1=[];  
while flag==0  
    [m,n]=size(d);  
    left=1;wide=0;  
 while sum(d(:,wide+1))~=0  
        wide=wide+1;  
 end 
 if wide<y1   % 認為是左側幹擾  
        d(:,[1:wide])=0;  
        d=qiege(d);  
 else 
        temp=qiege(imcrop(d,[1 1 wide m]));  
        [m,n]=size(temp);  
        all=sum(sum(temp));  
        two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));  
 if two_thirds/all>y2  
            flag=1;word1=temp;   % WORD 1  
 end 
        d(:,[1:wide])=0;d=qiege(d);  
 end 
end 
% 分割出第二個字元  
[word2,d]=getword(d);  
% 分割出第三個字元  
[word3,d]=getword(d);  
% 分割出第四個字元  
[word4,d]=getword(d);  
% 分割出第五個字元  
[word5,d]=getword(d);  
% 分割出第六個字元  
[word6,d]=getword(d);  
% 分割出第七個字元  
[word7,d]=getword(d);  
 
           

5、字元識别

liccode=char(['0':'9' 'A':'Z' '京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川甯瓊']);%SubBw2=zeros(40,20);
l=1;
for I=1:7;
    ii=int2str(I);
    t=imread([ii,'.jpg']);
    SegBw2=imresize(t,[40 20],'nearest');
    SegBw2=double(SegBw2)>20;
 if l==1 %第一位漢字識别
        kmin=37;
        kmax=43;
 elseif l==2 %第二位字母識别
        kmin=11;
        kmax=36;
 else l>=3   %第三位後字母或數字識别
        kmin=1;
        kmax=36;
 
 end
 for k2=kmin:kmax
        fname=strcat('字元模闆',liccode(k2),'.jpg');
        SamBw2=imread(fname);
        SamBw2=double(SamBw2)>1;
 for i=1:40
 for j=1:20
                SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
 end
 end
 %相當于兩幅圖相減得第三幅圖
        Dmax=0;
 for k1=1:40;
 for l1=1:20
 if(SubBw2(k1,l1)>0 || SubBw2(k1,l1)<0)
                    Dmax=Dmax+1;
 end
 end
 end
        Error(k2)=Dmax;
 end
    Error1=Error(kmin:kmax);
    MinError=min(Error1);
    findc=find(Error1==MinError);
    Code(l*2-1)=liccode(findc+kmin-1);
    Code(l*2)=' ';
    l=l+1;
end
t=toc;
set(handles.text4,'string',Code)
           
五、運作預期效果圖
03系統多界面_基于MATLAB的多方法車牌識别系統[帶GUI界面+萬字技術文檔+直播]

預期圖

繼續閱讀