天天看點

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

車牌識别系統設計與實作

車牌識别系統主要分為三部分:車牌圖像預處理、特征提取以及基于BP神經網絡對特征進行訓練和分類,流程圖如圖1所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 車牌識别系統組成示意圖

1 車牌圖像預處理

車牌圖像預處理是對車牌進行智能識别的基礎,處理結果直接影響後續車牌識别的精度。車牌圖像預處理過程主要包括車牌定位和字元分割,作用是将車牌從複雜的背景中分割出來,并按照國内車牌的設計規則,将其分割為7個字元塊,以便進行後續的特征提取及字元識别。

1.1車牌定位

車牌定位主要采用圖像進行中的一些去噪算法及數學形态學方法,流程圖如圖2所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖2 車牌定位流程圖

主要步驟包括:

1)将圖像灰階化以增強圖像效果,如圖3所示;

2)采用均值濾波平滑圖像,去除圖像中的噪聲;

3) 利用Sobel算子對圖像進行邊緣提取 , 将圖檔中的車牌邊緣保留, 如圖4所示;

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖3 圖像灰階化前後圖檔

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

4) 利用HSV模型和RGB模型中的藍色區域取交集, 得到疑似藍色區域位置, 如圖5所示;

5) 利用[15] 的矩形結構元素對圖像先進行膨脹, 再進行腐蝕, 并和Sobel算子提取到的邊緣資訊取交集, 去掉無

用的邊緣資訊,選出豎向紋理複雜的疑似車牌區域,如圖6所示;

6)利用結構元素為[1040]的矩形對疑似車牌區域進行閉運算,得到一些内部填充較為完整的區域,如圖7所示;

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖5 藍色區域取交集

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖6 疑似車牌區域

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖7 閉運算後的圖像

7)删除連通區域小于1300的小區域,如圖8所示;

8)通過計算矩形區域的長寬比,去除長寬比低于2.5或大于3.8的區域[6],得到真正的車牌區域,并将車牌區域剪切出來,如圖9所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖8 從圖像中移除小對象

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖9 剪切後車牌區域

1.2 字元分割

根據《中華人民共和國機動車号牌》行業标準,國内普通汽車車牌寬度為44cm,高度為14cm,字元寬度為4.5cm,高度為9cm[71。對車牌定位後得到的剪切後的車牌區域首先進行灰階化,再進行二值化,如圖10所示。對圖10中二值化後的車牌圖像進行垂直方向像素統計,根據車牌字元的寬度和高度、字元間距離等特征,将車牌分為七個區域,最後歸一化為32×40像素的統一格式,如圖11所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖10 二值化圖像

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖11 字元分割後的車牌圖像

2 車牌字元特征提取

對分割後的每個車牌字元二值圖像進行基于白像素的特征提取,共提取13維特征。以上述字元分割後的第5個字元為例,将單個字元按照兩行兩列分為8塊小區域,統計每個小區域中白像素的個數,得到第1-8維特征,如圖12所示。

在水準方向畫兩條橫線,将單個字元在水準方向上分為三部分,統計兩條橫線上的白色像素個數,得到第9-10維特征,如圖13所示。在垂直方向上畫兩條豎線,将單個字元在垂直方向上分為三部分,統計兩條豎線上的白色像素個數,得到第11-12維特征,如圖14所示。最後,統計整個字元圖檔上白色像素的總點數,作為第13維特征。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 2 第1-8維特征

圖1 3 第9、10維特征

圖1 4 第11、12維特征

3 BP神經網絡訓練與分類

神經網絡是由多輸入、單輸出或多輸出的神經元連接配接而成的網絡,能通過學習外界環境中的知識不斷優化自身的網各參數,進而提高自身性能18]。由于神經網絡可以采用并行方式大規模、高速地處理大型問題,目前已經被廣泛應用在車牌識别領域19].

BP神經網絡是一種基于最速下降法的多層前饋神經網絡,由輸入層、隐含層、輸出層三部分構成,其拓撲結構如圖15所示。BP神經網絡的激活函數通常采用非線性轉移函數,即S型函數-Sigmoid函數。BP神經網絡主要通過來自每個神經元資訊的前向傳播和誤差的反向傳播來不斷調整自身網絡的權重和門檻值,進而使整個網絡的平方誤差之和最小化。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 5 BP神經網絡的結構

基于BP神經網絡的車牌字元識别算法主要分為以下三個步驟:建立BP神經網絡、利用字元特征對BP神經網絡進行訓練、對輸入車牌的字元特征進行分類。

3.1建立BP神經網絡

根據國内普通車牌字元内容的特點, 基于MATLAB平台建立了三個BP子網分别識别不同位置的字元。其中第一個BP子網用于識别車牌的第一個漢字字元(由于資料采集局限性,選取6個漢字字元進行訓練和測試),第二個BP子網用于識别車牌的第二個英文字母字元,第三個BP子網用于識别車牌的第3-7個字元,這5個字元為英文字母+數字組合形式。在資料進入神經網絡之前, 首先采用pre mn mx函數對資料進行歸一化, 防止出現較大誤差。

對于第一個BP子網,建立13個輸入、4個隐含層、6個輸出的BP神經網絡;對于第二個BP子網,建立13個輸入、6個隐含層、24個輸出的BP神經網絡;對于第三個BP子網,建立13個輸入、10個隐含層、34個輸出的BP神經網絡。三個BP子網的第一層神經元的激活函數均為log sig, 第二層均為pure lin, 學習方法均采用train gdx。

3.2訓練BP神經網絡

對于三個BP子網,分别輸入其對應種類字元的13維特征值進行訓練。對于第一個BP子網,收集了“滬”“京”“閩”“蘇”“粵”“浙”六種漢字字元,共計1249幅字元圖檔進行13維特征提取,并輸入BP子網進行訓練,部分訓練樣本如圖16所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 6 部分漢字字元訓練庫

對于第二個BP子網,由于車牌号中不含有字母“"和“O”,收集了除這兩種字母之外的24種英文字母字元,共計3198幅字元圖檔進行13維特征提取,并輸入BP子網進行訓練,部分訓練樣本如圖17所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 7 部分英文字母字元訓練庫

對于第三個BP子網,收集了上述24種英文字母字元以及數字0-9共34種字元,共計4285幅字元圖檔進行13維特征提取,并輸入BP子網進行訓練,部分訓練樣本如圖18所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 8 部分英文字母+數字字元訓練庫

3.3 BP神經網絡分類結果

對于每個測試字元,将提取到的13維特征輸入訓練好的BP神經網絡進行分類,輸出BP神經網絡識别結果。對于上述車牌号為“京PKR 676”的原圖, 識别結果正确顯示為“京PKR 676”, 如圖19所示。

【車牌識别】基于matlab GUI BP神經網絡車牌識别【含Matlab源碼 858期】

圖1 9 識别結果

1 matlab版本

2014a

2 參考文獻

[1] 蔡利梅.MATLAB圖像處理——理論、算法與執行個體分析[M].清華大學出版社,2020.

[2]楊丹,趙海濱,龍哲.MATLAB圖像處理執行個體詳解[M].清華大學出版社,2013.

[3]周品.MATLAB圖像處理與圖形使用者界面設計[M].清華大學出版社,2013.

[4]劉成龍.精通MATLAB圖像處理[M].清華大學出版社,2015.

繼續閱讀