蔡曉宇
(安徽師范大學皖江學院,蕪湖241000)
基于樹莓派開發板的車輛識別系統設計*
蔡曉宇
(安徽師范大學皖江學院,蕪湖241000)
本設計著手于具有較大實用價值的“車牌識別”,用小巧的嵌入式開發板接入互聯網,實現物聯網技術下的車輛識別。該系統主要由嵌入式開發板、攝像頭、臺式機組成。嵌入式開發板采用當下流行的樹莓派開發板,負責調用外置的攝像頭模塊采集車牌照片,配合在云端的臺式機,將采集好的相片通過互聯網上傳至臺式機,臺式機處理傳送來的車牌照片,并返回識別結果,從而完成整個識別過程。
物聯網技術;嵌入式;車牌識別
隨著社會城鎮化建設的不斷推進,不但城市人口的數量變得日益龐大,而且城市中最重要的交通工具汽車的數量急劇增加,與日俱增的車輛時刻考驗著城市交通管理的能力。高效、可靠地管理車輛已成為每個城市迫切需求。
隨著信息化的高速發展,交通管理的自動化、智能化受到了越來越多的關注。車牌識別系統(License Plate Recognition,LPR)作為智能交通管理系統(Intelligent Traffic System,ITS)的重要組成部分,越來越被重視。車牌識別技術的探索,促進交通管理的智能化和網絡化,對于日益趨多的車輛管理的工作有較大幫助。本文提出基于樹莓派開發板的車牌識別系統,實現物聯網技術下的車牌識別。
該車輛識別系統主要由臺式機、嵌入式開發板、攝像頭模塊三個部分組成設計圖如圖1所示。

圖1 車輛識別設計圖
該車輛識別系統包括嵌入式開發板、電源模塊、攝像頭模塊、臺式機模塊、通信模塊。臺式機作為服務器,控制與之連接的樹莓派開發板對車牌進行拍照;通信模塊采用Java語言編寫,它們之間的通信通過TCP/IP協議,實現數據的交換和傳輸。 嵌入式開發板接入互聯網,配合攝像頭模塊可實現在停車場、小區門禁等需要進行車輛身份驗證的類似場景,快速識別車牌信息。
2.1 臺式機
臺式機部分在Windows環境下,搭載了由VC2010開發,OpenCV軟件輔助的識別系統。臺式機不斷接收來自嵌入式開發板的圖像數據,圖像被處理識別后再由無線傳輸,將識別結果返回至嵌入式開發板。
開發環境如下:Visual Studio是由微軟公司推出的開發環境。它是目前最流行的Windows平臺應用程序開發環境之一。Microsoft Visual Studio 2010版本還支持支持微軟云計算架構(Windows Azure)、移動與嵌入式裝置開發以及當前最熱門的敏捷軟件開發模型,OpenCV(Open Source Computer Vision Library)于1999年由Intel公司建立,現如今為其提供支持的是Willow Garage。OpenCV是一個計算機視覺函數庫,它是基于開源和跨平臺發行的。

圖2 TCP方式傳遞圖片
OpenCV作為一個外部函數庫,可以通過在Windows、Linux環境下的IDE下配置連接,在編程開發時直接調用函數庫中各種算法對應的函數就可以實現所需的操作,可以有效地加快開發速度。由于OpenCV專門針對Intel的處理器做了優化,因此在Intel平臺下則表現出更快的速度。
Tesseract是由Ray Smith于1985~1995年間在惠普布里斯托實驗室開發出來的一個光學字符識別(Optical Character Recognition,OCR)引擎,曾經在1995年UNLV精確度測試中名列前茅,但1996年后就停止了開發。2006年,Google邀請Smith加盟,重新啟動了該項目。該項目目前可以支持Windows、Linux和Mac OS等主流平臺。Tesseract-OCR 3.0.1以后發布的版本中加入了中文字符識別庫,可以實現對tif、bmp格式中含中文字符的圖像的識別。為了提高識別率,Tesseract-OCR還提供了樣本訓練功能,用戶可以通過收集大量的樣本素材來訓練自己的識別庫,從而可以提高用戶對某些特定性的字符的識別率。在Microsoft Visual Studio 2010平臺下用戶可以通過調用Tesseract-OCR提供的API接口,將自己訓練的識別庫放入安裝目錄的tessdata中,配置環境變量后,對待識別的字符圖像進行識別。
2.2 嵌入式開發板
嵌入式開發板采用了當下較為流行的樹莓派開發板。Raspberry,是世界上最小的臺式機,又稱卡片式電腦,外形只有信用卡大小,卻具有電腦的所有基本功能。它是一款基于ARM的微型電腦主板,以SD/Micro SD卡為內存硬盤,可連接鍵盤、鼠標和網線,同時擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口,只需接通電視機和鍵盤,就能執行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能。
本次使用的是樹莓派3B,相較于上代樹莓派,3B的性能更加強大,搭載1.2 GHz 的64位四核處理器,增加802.11 b/g/n無線網卡和低功耗的藍牙4.1,功耗也有小幅度的增加。
由于臺式機接收到的圖像質量好壞會直接影響到最終識別的準確,因此如何將攝像頭拍攝的圖像準確性、快速地傳遞給臺式機成了重中之重。
TCP(Transmission Control Protocol,傳輸控制協議)是基于連接的協議,在正式收發數據前,必須和對方建立可靠的連接。由于TCP連接方式的可靠性,如圖2所示,使得圖片在傳輸過程中,數據的完整性得到保障。
樹莓派官方預搭載的編程開發環境包含了Java語言。Java語言是一種面向對象的語言,它提供了基本的封裝方法來完成指定的任務,只需要傳入必要參數,即可調用相應方法,得到想要的結果。Java也適用于小型機,它的基本解釋器及類的支持只有40 KB左右。此外,Java是面向網絡的語言,通過它提供的類庫可以處理TCP/IP協議,用戶可以通過URL地址在網絡上很方便地訪問其他對象。本次設計就使用了Java語言的TCP/IP封裝的方法。
① MAC地址是上網設備的“身份證號碼”,具有全球唯一性。所以使用路由器綁定臺式機的MAC地址以及多臺樹莓派的MAC地址,指定其內部網絡IP地址,可以方便管理。
② 臺式機作為本次方案的服務器端,使用了Java多線程技術,監聽來自不同IP地址的數據,并將數據保存在指定文件目錄下。
③ 樹莓派作為本次方案的客戶端,通過Java封裝好的方法,實例化Socket流,連接指定IP地址的服務器端。在其拍照結束并檢查文件的合法性,確認文件無異常后,通過字節流將文件發送給服務器。

圖3 IP地址分配圖
④ 待文件確認傳輸完畢后,釋放所有資源,等待下次命令的開啟。圖片通過網絡,在發送端利用TCP/IP協議傳遞給臺式機,若成功識別,會在指定目錄下生成txt文檔,保存車牌號。
臺式機服務器端多線程部分:
final ServerSocket server = new ServerSocket(PORT);
new Thread(new Runnable() {
public void run() {
while (true) {
try {
System.out.println("開始監聽...");
Socket socket = server.accept();
System.out.println("有鏈接");
receiveFile(socket);
}
catch (Exception e) {
System.out.println("服務器異常");
e.printStackTrace();
}
}
}
}).start();
樹莓派客戶端發送數據部分:
while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
sumL += length;
if(flag != (int)((sumL/l)*100)){
flag = (int)((sumL/l)*100);
System.out.println("已傳輸:"+flag+"%");
}
dos.write(sendBytes, 0, length);
dos.flush();
}
基于樹莓派的云端識別車牌方法,準備過程如下:
① 開啟云端的電腦,接入互聯網。
② 打開電腦和樹莓派之間相應的通信軟件和識別車輛的軟件,等待樹莓派連接,每連接一個樹莓派,開啟一條線程處理。
③ 樹莓派連接電源模塊,接通電源,為方便管理,為每一臺樹莓派設置好靜態固定的IP地址,通過無線網卡連接路由器。
④ 攝像頭正確連接樹莓派,裝入樹莓派保護盒內,保證工作狀態下減少外界干擾。并將樹莓派盒子內攝像頭正對道路口, 擺在需要車牌識別的地方。
⑤ 通過SSH方式開啟樹莓派通信模塊,驅動攝像頭,開始工作。
捕捉車輛過程如下:
① 樹莓派開啟后,拍攝圖片,并啟用上傳程序,發送給云端臺式機。
② 云端臺式機收到連接請求,同意連接,并接受樹莓派發來的數據,保存在指定目錄下,啟動識別車牌程序進行車牌的識別。
③ 若識別程序成功定位到車牌,進行識別車牌中的字符,并將結果保存在指定目錄。
若識別程序未定位到車牌,將舍棄此次數據,等待下次樹莓派數據的傳輸。云端識別流程圖如圖4所示。
識別程序工作過程如下:
本系統基于開源發行的OpenCV跨平臺計算機視覺函數庫進行設計和實現,采用Microsoft Visual Studio 2010開發平臺,運用MFC框架設計界面,使用C++語言編程,調用Tesseract-OCR對提取出的車牌字符進行識別,主要分三步來實現車牌識別技術:即車牌定位、字符分割、字符識別。車牌識別系統的工作的總流程如圖5所示。

圖4 云端識別流程圖

圖5 車牌識別流程圖
① 圖像的輸入。本系統處理的圖像都統一調整為像素為2 592×1 456,經過大量實驗,當判定條件的面積選擇為大于10 000時,能夠有效地去除掉微小噪點
Vehicle Identification System Based on Raspberry Pi
Cai Xiaoyu
(Wanjiang College of Anhui Normal University,Wuhu 241000,China)
In the paper,license plate recognition is concerned.With a small development board connecting to the Internet,the license plate recognition is achieved.The system mainly consists of the embedded development board,the camera,the desktop components.The embedded development board uses the current popular Raspberry development board tocall the external camera module acquisition license plate photos.Then the collected photos are uploaded to the desktop through the Internet.The desktop machine processes the transmitted license plate photos and returns the recognition results.
internet of things technology;embedded system;license plate recognition
2016國家級大學生創新創業訓練計劃項目(項目編號:201613617002)。
TP27
A