文/張恒宇 何金蓉 叢金亮 張洪禮 張耀武
本文將車牌識別門禁系統進行模塊化分解,并對其中圖像預處理、車牌定位、字符分割、字符識別模塊等幾個難點問題進行分析并仿真。對圖像進行預處理除掉拍攝時環境因素的影響;使用邊緣檢測法和顏色定位法準確定位車牌位置;使用水平投影法去除車牌在水平方向多余的邊框,再利用垂直投影法除去字符間距分割得到單個的字符圖像;使用HOG特征提取構建兩個SVM分類器,一個用于漢字字符識別,一個用于字母和數字識別用來完成車牌字符識別模塊。
近年來,隨著汽車數量的逐漸增加,我國停車位與汽車數量很不平衡,兩到三輛汽車共用一個車位,而國際上是兩輛汽車共用三個停車位,。早期,停車場對車輛進出管理使用IC讀取卡的方式完成的,隨著社會發展該方式的弊端越發明顯,當車多時出入口易出現擁堵,周圍的道路也會受到影響[1]。在車輛管理系統中,添加電動車牌識別門禁系統趨于常態化。當有車輛出入場時,通過識別車牌號碼,然后將車牌結果和數據庫中信息進行對比,系統作出判斷就可完成已授權車輛和非授權車輛的管理[2]。能夠快高效的完成車輛進出的管理工作。
本系統的基本流程為從輸入車輛圖像開始,到完成字符串的輸出,具體工作的流程圖如圖1所示。

圖1.1 系統基本工作框圖
1.1 獲取車輛圖片。本文采用視頻檢測法:對運動中的車輛,采用軟件算法的方式檢測對車輛進出視場內判斷[3],判斷有車輛進入則拍攝一張車輛圖像。該方法的優點是不需要其他硬件支持,減少了硬件成本。
1.1.1 車牌定位。車牌定位是車牌識別算法中的一個難點問題。本文先是對邊緣檢測法進行模擬仿真,再使用顏色定位法進行二次定位,一個準確的定位可以提高車牌識別系統的效率。基于邊緣檢測的定位方法是利用了車牌部分和背景部分邊緣的不同,以此完成車牌的定位,但在背景含有大量與車牌邊緣相似的邊緣時,僅用邊緣檢測法不能準確的定位車牌[1]。基于顏色分割法是利用了車牌底色只有幾個特定的顏色,使系統對這幾個特定顏色進行識別達到定位車牌的目的,但當遇到環境顏色和車牌顏色相同時就不能準確識別。考慮了兩種方法的優缺點后,本文把這兩種方法相互結合達到車牌定位的目的。
1.1.2 車牌字符分割。字符分割是把定位后的圖像分割為單個字符圖像,本文使用投影分析法完成。使用水平方向投影分割[4],去掉水平方向上與字符無關的車牌邊緣部分,然后進行垂直方向上投影分析,除掉字符之間的間距、車牌的原點,僅留下單個的字符圖像[5]。
1.1.3 車牌字符識別。車牌字符識別就是把車牌的字符圖像集識別為字符串,也就是把圖像信息提取出來用字符的方式顯示供計算機識別的字符,本文使用模板匹配法完成分類識別。基于模板匹配法原理是對樣本進行模板訓練得到樣本特征向量分類器,再將單個字符圖像的信息與標準字符模板信息作比較,比較后輸出標準模板中最相似的那個字。在車輛管理系統中,門禁系統只是整套系統的一部分,也是最重要的一部分。車輛管理系統能夠完成車輛的入庫、出庫以及費用管理等,車輛管理系統的功能區分如圖2所示。

圖2系統功能劃分框圖
云端系統主要進行車牌號碼庫的建立、維護、車輛進出收費等數據的處理,車牌識別門禁系統主要車牌的識別和車輛的進出時間記錄。
2.1 硬件平臺比較與選擇。目前市場上,在平臺的選擇上主要有兩種,一種是基于PC機,但PC機平臺的成本高、體積大、CPU資源浪費大[6],另一種是采用嵌入式處理器,成本相對較低,也能夠滿足各項需求。本文采用基于嵌入式處理器的方案。常見嵌入式處理器:C51、DSP、ARM、FPGA等,采用列表對比的方式對比優缺點如表1所示。

表1常用嵌入式處理器對比
綜合考慮,本文中門禁系統對處理器的成本、運算能力等方面的問題,選擇ARM處理器,進而使用樹莓派(RaspBerryPi3B+)平臺。
2.1.1 RaspBerry Pi3B+簡介。樹莓派3B+平臺功能強大、技術成熟,配有攝像頭模塊、GPIO輸出模塊、顯示模塊,還可使用藍牙、WiFi等主要的硬件相關信息如表2所示。

表2 RaspBerry Pi3B+硬件介紹
2.1.2 圖像采集設備。樹莓派3B+可以用CSI接口采集圖像,CSI接口是通過串行接口進行數據傳輸,數據傳輸快、支持500W高分辨率圖像數據[7]、抗干信號擾能力強等優點,文采用CSI接口,CSI接口圖如圖3所示。

圖3 CSI接口原理圖
2.1.3 GPIO接口。GPIO接口,是一排用于信號輸入輸出的接口,通過指令輸出或接受特定的高低電平、PWM信號等到達與外部設備的通訊交流。樹莓派3B+一共有26個GPIO接口,原理圖如圖4所示。

圖4 GPIO接口原理圖
通過控制GPIO接口的高低電平完成通道的開啟與關閉,從而完成車牌識別后LED開與關。本文使用GPIO-12輸出高電平控制道閘的開啟。
2.2 軟件環境搭建。完成車牌識別門禁系統在軟件方面,需要配置一個用于圖像處理的opencv庫。Opencv庫是一個能夠進行人臉識別、matlab調用、RGB加工等內容的算法庫[8]。Opencv庫編譯操作如下:
1):安裝cmake,完成opencv源碼的編譯;
2):圖像格式多種多樣需要安裝相應的操作包,使計算機能從硬盤上讀取不同格式的圖像;
3):進行cmake編譯參數設置,設置成功標志如圖5所示;

圖5 cmake編譯參數設置完成

4):以管理員身份執行sudo make進行編譯;
5):輸入sudo meke instell命令也就安裝成功opencv。完成opencv的編譯后即軟件環境搭建成功。
2.3 系統調試與優化
2.3.1 車牌特征提取
車牌是車輛的“身份證”,通過查詢《中華人民共和國汽車號牌》文檔可知,該文檔對各類型的機動車號碼牌進行了統一規定[9]。停車場環境下可能識別的車牌類型進行分析如表3所示。

表3車牌的顏色及適用范圍
由規定可知,黃牌和藍牌在大小、編碼規則方面是一樣的,如圖6所示。車牌是由7個字符構成的,其中第一個是漢字,第二個是機關代號,其余是字母與數字混合組成,是唯一的車牌號。它的大小是固定的440mm×140mm,長與寬的比例約3∶1,字符高、寬為90mm×45mm,分隔符“·”半徑為5mm,各個字符距離為12mm[7]。新能源車牌和傳統車牌在編碼和顏色上是不同的,如圖7所示。它的大小為480mm×140mm,字符高度、漢字寬度與傳統車牌一樣[10],該類車牌沒有分隔符“·”,新能源車牌有8個字符,第一、二個字符與傳統車牌內容一樣,第三位為新能源汽車標識,第四至第八位與傳統車牌編號規則一樣,代表車牌的序號。

圖6藍底牌照與黃底牌照

圖7新能源汽車車牌
2.3.2 圖像預處理
攝像頭在實際的拍照過程中,拍攝的圖像可能會因當時天氣、光照、車身顛簸造成的拍攝照片模糊等不確定因素影響圖像的質量[11]。因此,需要先對圖像完成圖像灰度化,灰度拉伸,圖像濾波降噪等預處理。
4.1 調試環境
將所有的代碼導入樹莓派3B+平臺上,外部硬件連接如圖8所示,硬件實物如圖9所示。由于現實條件的原因,欄桿部分使用LED燈代替接著按照流程圖10進行整體調試。在調試部分,首先上電開始運行樹莓派;然后通過寬帶鏈接樹莓派,使用軟件VNC進行代碼的傳輸;接著通過提前寫入的車輛識別代碼檢測車輛圖片并完成拍照;最后,處理器通過識別圖像輸出字符串并與系統內的數據庫作對比,然后GPIO口作出回應[12]——大門是否打開。
4.2 車牌識別效果
隨機挑取車輛圖片,使用研發的車牌識別門禁系統進行實際測試,系統運行后界面顯示結果如圖11、圖12所示。

圖8調試步驟

圖9運行效果圖

圖10運行效果圖
4.3 系統穩定性測試
完成實物設計后,對120輛車進行識別,得到車牌識別結果的準確度與識別所需時間,結果如表4所示。

表4牌識別測試結果
考慮到門禁系統的功能、成本需求后,本文采用在樹莓派3B+平臺完成門禁系統的設計和實現。通過運行測試,識別的正確率達到96%,識別時間在1.5秒內,滿足車牌識別門禁系統的各項任務要求。
本設計成功開發了一套嵌入式車牌識別門禁系統。本文先將車牌圖像進行預處理工作,這其中使用加權平均法將圖像進行灰度化處理,又使用灰度平均法把灰度圖像進行拉伸,除去圖像中的高光部分,使圖像更加清晰,接著使用高斯濾波模板進行濾波降噪,也就完成了圖像識別的前期過程了。完成了車牌識別以后就只需要將字符串與內置的車牌數據庫作對比,系統作出相應的反應就可以完成門禁的實現了。本文所有的程序都是在樹莓派3B+平臺上實現的。通過運行測試結果可以知道,本文設計的車牌識別門禁系統在正確率方面大于96%,識別時間也小于1.5秒,性能方面比市面更為優秀,成本也比市面更低。