基于嵌入式開(kāi)發(fā)板的車(chē)輛識別系統設計
如今經(jīng)濟迅速發(fā)展,不但城市人口的數量變得日益龐大,而且城市中最重要的交通工具汽車(chē)的數量急劇增加,與日俱增的車(chē)輛時(shí)刻考驗著(zhù)城市交通管理的能力。高效,可靠地管理車(chē)輛已成為每個(gè)城市迫切需求。因此車(chē)牌識別系統作為智能交通管理系統的重要組成部分,越來(lái)越被重視。車(chē)牌識別技術(shù)的探索,促進(jìn)交通管理的智能化和網(wǎng)絡(luò )化,對于日益趨多的車(chē)輛管理的工作有較大幫助。本文提出基于樹(shù)莓派開(kāi)發(fā)板的車(chē)牌識別系統,實(shí)現物聯(lián)網(wǎng)技術(shù)下的車(chē)牌識別。
1.總體結構
該車(chē)輛識別系統主要由臺式機、嵌入式開(kāi)發(fā)板、攝像頭模塊三個(gè)部分組成設計圖如圖1所示。
圖1 車(chē)輛識別設計圖
該車(chē)輛識別系統包括嵌入式開(kāi)發(fā)板、電源模塊、攝像頭模塊、臺式機模塊、通信模塊。臺式機作為服務(wù)器,控制與之連接的樹(shù)莓派開(kāi)發(fā)板對車(chē)牌進(jìn)行拍照;通信模塊采用Java語(yǔ)言編寫(xiě),它們之間的通信通過(guò)TCP/IP協(xié)議,實(shí)現數據的交換和傳輸。嵌人式開(kāi)發(fā)板接入互聯(lián)網(wǎng),配合攝像頭模塊可實(shí)現在停車(chē)場(chǎng)、小區門(mén)禁等需要進(jìn)行車(chē)輛身份驗證的類(lèi)似場(chǎng)景,快速識別車(chē)牌信息。
2.組件分析
2.1臺式機
臺式機部分在Windows環(huán)境下,搭載了由VC2010開(kāi)發(fā),OpenCV軟件輔助的識別系統。臺式機不斷接收來(lái)自嵌入式開(kāi)發(fā)板的圖像數據,圖像被處理識別后再由無(wú)線(xiàn)傳輸,將識別結果返回至嵌人式開(kāi)發(fā)板。
開(kāi)發(fā)環(huán)境如下:Visual Studio是由微軟公司推出的開(kāi)發(fā)環(huán)境。它是目前最流行的Windows平臺應用程序開(kāi)發(fā)環(huán)境之一。Microsoft Visual Studio 2010版本還支持支持微軟云計算架構(Windows Azure)、移動(dòng)與嵌入式裝置開(kāi)發(fā)以及當前最熱門(mén)的敏捷軟件開(kāi)發(fā)模型。
OpenCv(Open Source Computer Vision Library)于1999年由 Intel公司建立,現如今為其提供支持的是 Wil-low Garage。OpenCV是一個(gè)計算機視覺(jué)函數庫,它是基于開(kāi)源和跨平臺發(fā)行的。
OpenCV作為一個(gè)外部函數庫,可以通過(guò)在 Windows、Linux環(huán)境下的IDE下配置連接,在編程開(kāi)發(fā)時(shí)直接調用函數庫中各種算法對應的函數就可以實(shí)現所需的操作,可以有效地加快開(kāi)發(fā)速度。由于OpenCV專(zhuān)門(mén)針對Intel的處理器做了優(yōu)化,因此在Intel平臺下則表現出更快的速度。
Tesseract是由Ray Smith于1985~1995年間在惠普布里斯托實(shí)驗室開(kāi)發(fā)出來(lái)的一個(gè)光學(xué)字符識別(Optical Charac-ter Recognition,OCR)引擎,曾經(jīng)在1995年UNLV精確度測試中名列前茅,但1996年后就停止了開(kāi)發(fā)。2006年,Google邀請Smith加盟,重新啟動(dòng)了該項目。該項目目前可以支持 Windows、Linux和 Mac OS等主流平臺。Tes-seract-OCR 3.0.1以后發(fā)布的版本中加入了中文字符識別庫,可以實(shí)現對tif、bmp格式中含中文字符的圖像的識別。
為了提高識別率,Tesseract-OCR還提供了樣本訓練功能,用戶(hù)可以通過(guò)收集大量的樣本素材來(lái)訓練自己的識別庫,從而可以提高用戶(hù)對某些特定性的字符的識別率。在Microsoft Visual Studio 2010平臺下用戶(hù)可以通過(guò)調用Tesseract-OCR提供的API接口,將自己訓練的識別庫放入安裝目錄的tessdata中,配置環(huán)境變量后,對待識別的字符圖像進(jìn)行識別。
2.2嵌入式開(kāi)發(fā)板
嵌入式開(kāi)發(fā)板采用了當下較為流行的樹(shù)莓派開(kāi)發(fā)板。Raspberry是世界上最小的臺式機,又稱(chēng)卡片式電腦,外形只有****大小,卻具有電腦的所有基本功能。它是一款基于A(yíng)RM的微型電腦主板,以SD/Micro SD卡為內存硬盤(pán),可連接鍵盤(pán)、鼠標和網(wǎng)線(xiàn),同時(shí)擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口,只需接通電視機和鍵盤(pán),就能執行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能。
本次使用的是樹(shù)莓派3B,相較于上代樹(shù)莓派,3B的性能更加強大,搭載1.2GHz的64位四核處理器,增加802.11 b/g/n無(wú)線(xiàn)網(wǎng)卡和低功耗的藍牙4.1,功耗也有小幅度的增加。
3.無(wú)線(xiàn)通信傳輸
由于臺式機接收到的圖像質(zhì)量好壞會(huì )直接影響到最終識別的準確,因此如何將攝像頭拍攝的圖像準確性﹑快速地傳遞給臺式機成了重中之重。TCP(Transmission Control Protocol,傳輸控制協(xié)議)是基于連接的協(xié)議,在正式收發(fā)數據前﹐必須和對方建立可靠的連接。由于TCP連接方式的可靠性,如圖2所示,使得圖片在傳輸過(guò)程中,數據的完整性得到保障。
圖2 TCP方式傳遞圖片
樹(shù)莓派官方預搭載的編程開(kāi)發(fā)環(huán)境包含了Java語(yǔ)言。Java語(yǔ)言是一種面向對象的語(yǔ)言,它提供了基本的封裝方法來(lái)完成指定的任務(wù),只需要傳人必要參數,即可調用相應方法,得到想要的結果。Java也適用于小型機,它的基本解釋器及類(lèi)的支持只有40KB左右。此外,Java是面向網(wǎng)絡(luò )的語(yǔ)言,通過(guò)它提供的類(lèi)庫可以處理TCP/IP協(xié)議,用戶(hù)可以通過(guò)URL地址在網(wǎng)絡(luò )上很方便地訪(fǎng)問(wèn)其他對象。本次設計就使用了Java語(yǔ)言的TCP/IP封裝的方法。
?、費AC地址是上網(wǎng)設備的“身份證號碼”,具有全球唯一性。所以使用路由器綁定臺式機的MAC地址以及多臺樹(shù)莓派的MAC地址,指定其內部網(wǎng)絡(luò )IP地址,可以方便管理。
?、谂_式機作為本次方案的服務(wù)器端,使用了Java多線(xiàn)程技術(shù),監聽(tīng)來(lái)自不同P地址的數據,并將數據保存在指定文件目錄下。
?、蹣?shù)莓派作為本次方案的客戶(hù)端,通過(guò)Java封裝好的方法,實(shí)例化Socket流,連接指定IP地址的服務(wù)器端。在其拍照結束并檢查文件的合法性,確認文件無(wú)異常后,通過(guò)字節流將文件發(fā)送給服務(wù)器。
圖3 IP地址分配圖
?、艽募_認傳輸完畢后,釋放所有資源,等待下次命令的開(kāi)啟。圖片通過(guò)網(wǎng)絡(luò ),在發(fā)送端利用TCP/IP協(xié)議傳遞給臺式機,若成功識別,會(huì )在指定目錄下生成txt文檔,保存車(chē)牌號。
臺式機服務(wù)器端多線(xiàn)程部分:
樹(shù)莓派客戶(hù)端發(fā)送數據部分:
4.車(chē)輛識別過(guò)程
(1)基于樹(shù)莓派的云端識別車(chē)牌方法,準備過(guò)程如下:
?、匍_(kāi)啟云端的電腦,接入互聯(lián)網(wǎng)。
?、诖蜷_(kāi)電腦和樹(shù)莓派之間相應的通信軟件和識別車(chē)輛的軟件,等待樹(shù)莓派連接,每連接一個(gè)樹(shù)莓派,開(kāi)啟一條線(xiàn)程處理。
?、蹣?shù)莓派連接電源模塊,接通電源,為方便管理,為每一臺樹(shù)莓派設置好靜態(tài)固定的IP地址,通過(guò)無(wú)線(xiàn)網(wǎng)卡連接路由器。
?、軘z像頭正確連接樹(shù)莓派,裝入樹(shù)莓派保護盒內,保證工作狀態(tài)下減少外界干擾。并將樹(shù)莓派盒子內攝像頭正對道路口,擺在需要車(chē)牌識別的地方。
?、萃ㄟ^(guò)SSH方式開(kāi)啟樹(shù)莓派通信模塊,驅動(dòng)攝像頭,開(kāi)始工作。
(2)捕捉車(chē)輛過(guò)程如下:
?、贅?shù)莓派開(kāi)啟后﹐拍攝圖片,并啟用上傳程序,發(fā)送給云端臺式機。
?、谠贫伺_式機收到連接請求,同意連接,并接受樹(shù)莓派發(fā)來(lái)的數據﹐保存在指定目錄下,啟動(dòng)識別車(chē)牌程序進(jìn)行車(chē)牌的識別。
?、廴糇R別程序成功定位到車(chē)牌,進(jìn)行識別車(chē)牌中的字符,并將結果保存在指定目錄。
若識別程序未定位到車(chē)牌,將舍棄此次數據,等待下次樹(shù)莓派數據的傳輸。云端識別流程圖如圖4所示。
(3)識別程序工作過(guò)程如下:
本系統基于開(kāi)源發(fā)行的OpenCV跨平臺計算機視覺(jué)函數庫進(jìn)行設計和實(shí)現,采用Microsoft Visual Studio2010開(kāi)發(fā)平臺,運用MFC框架設計界面,使用C++語(yǔ)言編程,調用Tesseract-OCR對提取出的車(chē)牌字符進(jìn)行識別,主要分三步來(lái)實(shí)現車(chē)牌識別技術(shù):即車(chē)牌定位、字符分割、字符識別。車(chē)牌識別系統的工作的總流程如圖5所示。
圖4 云端識別流程圖
圖5 車(chē)牌識別流程圖
?、賵D像的輸入。本系統處理的圖像都統一調整為像素為2592×1 456,經(jīng)過(guò)大量實(shí)驗,當判定條件的面積選擇為大于10 000時(shí),能夠有效地去除掉微小噪點(diǎn)帶來(lái)的干擾。
?、谲?chē)牌定位。此環(huán)節主要應用形態(tài)學(xué)方法,對車(chē)牌進(jìn)行定位。
?、圩址指瞽h(huán)節采用閥值分割法,去除掉噪音的干擾,實(shí)現對車(chē)牌字符的分割,從而提取出車(chē)牌字符。
?、茏址R別環(huán)節則利用樣本訓練方法,對字符分割后的圖像進(jìn)行識別。
5.測試結果
本系統最后對15張端正的車(chē)牌圖像進(jìn)行測試分析,統計了車(chē)牌完全識別正確率和車(chē)牌字符識別正確的個(gè)數。測試結果如表1所列,可以看出在共計15張照片中,完全識別正確的達到12,正確率為80.0%。字符共計105個(gè),完全識別正確的有820個(gè),字符識別的正確率達94.3%。
對于識別錯誤的車(chē)牌,經(jīng)過(guò)分析一般都是圖像中車(chē)牌的位置出現較大的強光光斑干擾和車(chē)牌附著(zhù)灰塵太多干擾造成,從而影響了對圖像車(chē)牌的識別。含有強光光斑的汽車(chē)圖像因素均會(huì )導致本系統的識別率下降。針對這一類(lèi)圖像的識別,可以在采集圖像時(shí),通過(guò)攝像頭前增加偏光鏡片,來(lái)降低強光光斑干擾的程度,使得識別率有所提高。
結語(yǔ)
以上就是基于嵌入式開(kāi)發(fā)板的車(chē)輛識別系統設計介紹了。該設計在成本上大大縮減了鋪設自動(dòng)識別車(chē)輛的設備的費用,也免去了布線(xiàn)麻煩,功耗低等問(wèn)題。
關(guān)注公眾號“優(yōu)特美爾商城”,獲取更多電子元器件知識、電路講解、型號資料、電子資訊,歡迎留言討論。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。