徐莉 孫龍飛



摘? 要:為保證校園安全,提高車輛出入管理效率,外來訪客在高校訪問登記界面填寫個人信息,車輛到達時,高校車牌登記識別系統通過攝像頭捕獲車牌信息,系統自動識別放行。該系統包含車牌在線登記子系統和車牌識別子系統兩個部分。車牌在線登記子系統前端頁面使用JSP技術,通過DIV+CSS對頁面進行布局。后端基于Java語言、SSM框架開發,使用Maven進行項目管理。車牌識別子系統基于Python語言,使用OpenCV進行圖像處理,提取車牌字符,結合TensorFlow對所獲得的車牌字符進行分類識別。
關鍵詞:高校;車牌登記;車牌識別;Java語言;Python語言
中圖分類號:TP391.41 ? ? ?文獻標識碼:A 文章編號:2096-4706(2021)02-0001-05
Abstract:In order to ensure the safety of the campus and improve the management efficiency of vehicle access,outside visitors need to fill in their personal information in university visit registration interface. When vehicle arrive,the university license plate registration and identification system captures the license plate information through the camera,the system automatic identification and release. The system includes two parts of the license plate online registration subsystem and the license plate identification subsystem. License plate online registration subsystem uses JSP technology in its frontend page and make page layout through DIV+CSS,the backend is developed based on Java language,SSM frame,and uses Maven for items management. License plate identification subsystem is based on Python language,uses OpenCV for images processing,extracts license plate characters,and combines TensorFlow to classify and recognize the acquired license plate characters.
Keywords:university;license plate registration;license plate identification;Java language;Python language
0? 引? 言
隨著科學技術的飛速發展,人工智能與5G網絡逐漸普及,智慧交通系統[1]在這種情境下應時而生。車牌識別技術是智能交通系統的核心所在,已廣泛應用于交通流量檢測、小區車輛管理、街道違停監控、高速公路收費等領域,它改變了傳統的交通管理體系,大大降低了人力成本,提高了工作效率,更加科學高效地完善了交通管理系統[2-4]。車輛牌照識別系統分為硬件輸入和軟件處理兩部分。硬件輸入是指通過拍攝工具對車牌進行拍攝,軟件處理是對收集到的車牌圖像進行車牌定位、圖像處理、字符分割與識別等,最終將存儲識別結果[5]。近年來,隨著高校辦學規模的逐年擴大,進入校園的外來車輛不斷增加,為了保障校園安全,本文設計并實現了高校車牌登記識別系統。訪客進校前須在車輛管理頁面進行登記,填寫車牌號碼、訪問時間、訪客姓名、訪客單位、訪問對象、手機號碼等信息,當車輛駛近校門時,系統通過對車牌的快速識別比對實現車輛的自動放行。
1? 系統結構設計
高校車牌登記識別管理系統結構如圖1所示。
該系統包含車牌在線登記子系統和車牌識別子系統兩個部分。車牌在線登記子系統使用B/S架構通過Web訪問,運用J2EE架構搭建Web服務,使用MVC設計模式,通過JDBC技術訪問數據庫,使用Spring[6]、Spring MVC和MyBatis框架實現。車牌識別子系統與車牌在線登記子系統通過對同一數據庫的訪問完成信息交互。
1.1? 在線登記管理功能設計
訪客通過瀏覽器進入信息登記頁面,輸入訪問時間、車牌號碼、訪客姓名、性別、年齡、手機號等信息,為了校驗用戶信息,另外設有非必填字段,如單位、事由、攜帶物品、被訪人姓名,訪客可以有選擇性地填寫非必填字段,不影響其正常訪問。為防止惡意登記,在處理信息之前首先需要對信息進行驗證。在線登記流程如圖2所示。
1.2? 車牌識別功能設計
在本系統中,通過互聯網技術實現外來車輛的信息登記,使外來車輛在門禁閘機處可以被識別并放行。車輛通過門禁流程如圖3所示。
1.3? 系統框架環境搭建
在線登記管理系統使用Maven進行項目依賴管理,因此,需要首先在IDEA中配置Maven環境,新建Maven項目。完成項目創建后,在pom文件中添加并導入Spring、Spring MVC和MyBatis等框架依賴。
在項目中添加src級目錄Java,resource目錄resources。在Java目錄下完成項目編碼,在resources目錄下添加并配置Spring配置信息applicationContext.xml,Spring MVC配置文件springmvc.xml和MyBatis配置文件mybatis-config.xml,以及用于數據庫連接的db.properties和日志記錄log4j.properties。最后在web.xml中配置Spring。系統開發環境以及主要依賴版本如表1所示。
2? 系統實現
2.1? 在線登記注冊實現
在線登記注冊頁面為工程中jsp目錄下的register.jsp文件,此頁面在系統中被設置為默認首頁,主要為訪客做信息登記之用。后臺由VisitRegisterController接收并處理注冊請求,由CaptchaController接口完成驗證碼的生成、返回以及對驗證碼的校驗。對輸入信息的合法驗證由前臺頁面中的JS腳本完成。最終頁面效果如圖4所示。
2.2? 在線登記后臺管理實現
在線登記后臺管理頁面為系統工程中jsp目錄下的manage.jsp文件,由后臺VisitManger接收處理,所有訪問接口均被放在manage二級請求中,同時配置攔截器攔截manage下的請求,只有已經登錄的會話才可以訪問,否則將跳轉到登錄頁面。登錄頁面為系統工程文件中jsp目錄下的login.jsp文件,由后臺AdminController接收處理,完成管理員登錄。登錄頁面如圖5所示,后臺管理頁面如圖6所示。
2.3? 車牌識別系統實現
2.3.1? 圖像處理實現
圖像處理功能使用Python語言實現,通過調用OpenCV圖像處理庫完成大部分圖像處理功能。車牌識別系統的基本流程如圖7所示。
車牌識別系統開發環境如表2所示。
圖像處理過程主要包括圖像尺寸調整、圖像降噪、圖像灰度化、閾值分割、圖像邊緣檢測等環節:
(1)圖像尺寸調整。圖像尺寸調整通過調用OpenCV中所提供的resize函數完成,對圖像寬度設置閾值,當接收到的圖像寬度大于該閾值時,則計算圖像比例,重新調整圖像尺寸。本系統對圖像尺寸進行調整時將閾值常量MAX設置為1 000,讀取圖像文件后獲取圖像寬度,當圖像寬度大于設置的閾值時,使用閾值MAX除以圖像寬度得到圖像縮放比率。將閾值寬度MAX作為新的圖像寬度傳入,將縮放比率與圖像的高度乘積作為新的圖像高度。
(2)圖像降噪。圖像降噪由OpenCV庫中的Gaussian-Blur函數實現,利用高斯模糊消除圖像中的細小噪聲顆粒。
(3)圖像灰度化。圖像灰度化通過OpenCV庫中的cvtColor函數實現,指定其顏色轉換方式為cv2.COLOR_BGR2GRAY。
(4)閾值分割。本系統中采用OTSU方法[7]進行閾值分割,可以使用OpenCV庫中所提供的threshold函數以二值化方法完成閾值分割。
(5)圖像邊緣檢測。圖像邊緣檢測通過Canny邊緣檢測實現,設置Canny算法中低閾值和高閾值分別為100和200,得到的閾值分割效果如圖8所示。
完成圖像邊緣檢測后再通過一次閉運算和一次開運算,填充白色區域的內部細小黑色空洞,并平滑其邊緣,使圖像中的特征區域成為整體色塊,得到圖像中的連通域。不包含其他多余信息的連通域可以為車牌定位提供極大的便利,最終得到的連通域如圖9所示。
圖像處理過程核心算法如算法1所示:
算法1 圖像處理過程
if 圖像寬度 > 閾值寬度
then 縮放比 ← 閾值寬度 / 圖像寬度
img ← 將圖像進行等比縮放
img ← 對圖像進行高斯模糊
img ← 將圖像轉換為灰度圖
img_opening ← 使用20*20單位矩陣對img進行開運算并將結果與img重合
ret, img_thresh ← 對img_opening進行閾值二值化
img_edge ← 對img_thresh進行Canny邊緣檢測
img_edge1 ← 對img_edge進行閉運算
2.3.2? 車牌定位與字符分割實現
使用OpenCV中所提供的findContours函數將圖中所有色塊的輪廓提取出來。通過findContours函數得到的輪廓首先進行面積計算,濾除其中面積過小的區域,之后針對剩余的輪廓求出它們的最小旋轉矩形,并獲得最小旋轉矩形的寬和高。因為我國的車牌標準大小為寬440 mm,高140 mm,寬和高的比值約為3.14,所以對得到的旋轉矩形同樣計算其寬高比,設定寬高比在2.5到4.5之間的區域為車牌區域,否則就認為這個區域是背景將其舍棄,如圖10(a)、10(b)所示??梢钥吹狡渲幸粔K因為得到的旋轉矩形與車牌區域得到的旋轉矩形基本相同所以被錯誤地識別為車牌區域。我國民用車牌的顏色分為藍色、黃色和綠色,而警用、軍用醫療、消防、特勤等專用車牌不在本系統的應用范圍所以不做考慮,而右側的車燈和進氣孔顯然不存在這樣的顏色特征,故而排除。
提取車牌后將車牌中的每一個字符單獨切分取出,首先需要對車牌圖像進行二值化處理,之后對二值圖像進行垂直投影,通過遍歷圖像中的每一列,對每一列中的每一行累加,得到車牌的每一列中所包含的像素數,存儲在數組中。
將車牌垂直投影的數組作為直方圖輸出,可以得到圖11,可以發現在直方圖中有明顯的波峰和波谷,而波峰則對應著車牌中存在字符的地方,波谷則是在車牌中字符間隔的位置。通過直方圖還可以再次驗證得到的區域是否是車牌,當直方圖中波峰少于個6時,它就不符合車牌規則。
為了排除車牌邊框的干擾,將其中小于5的置0,得到圖12中所示的直方圖,此時每一個波峰已經獨立。將波峰起點到終點間隔小于2的認為是邊框而舍棄。
使用同樣的方法,對車牌進行水平投影以去除車牌中的上下邊框,最終切分出的字符如圖13所示。
2.3.3? 字符識別實現
本系統通過構建一個卷積神經網絡對得到的車牌字符圖像進行分類,數據集為CCPD中所提供的部分車輛圖像信息。首先將所有字符分為兩大類,一類是表示省份代碼的中文字符,另一類是車牌中的字母和數字。兩類數據分別用于兩個神經網絡的訓練,在兩類數據內部將數據再次按照字符內容分組放入不同文件夾內,之后將數據按7:2:1的方式分為訓練集、測試集和驗證集,形成最終用于訓練的數據。
采用Keras中ImageDataGenerator方法加載圖像形成數據集。將數據在神經網絡中不斷迭代,進行前向和反向傳播對網絡中的參數進行梯度更新,逐步使得目標函數趨于最小值。在Tensorflow2.0中通過Keras將構建好的模型編譯為model對象,利用model對象的fit方法完成訓練,經過15輪訓練后模型的準確率達到0.95,如圖14(a)、14(b)所示。
2.3.4? 應用模型預測
接收到OpenCV傳入的字符圖像數組后將其轉換為Tensor張量,并進行歸一化處理,然后加載保存的模型,編譯生成model對象,通過model對象的predict方法得到模型的預測結果,如圖15(a)、15(b)所示。
因為中文和字母數字是由兩個神經網絡分別識別的,所以在識別第一個字符時使用中文識別的網絡模型,對其他字符使用字母和數字識別的網絡模型。
在得到車牌中的字符后,就可以針對車牌信息檢索數據庫,查看該車輛是否已經登記。這里使用PyMySQL進行數據庫操作,當查詢到數據庫中有符合條件的記錄時,則向門禁系統發送指令放行,同時記錄該車輛信息,并保存車牌圖像以方便后續檢查。
應用模型進行字符識別主要過程見算法2:
算法2 應用模型進行識別
for i, image in enumerate(iamges)
img_tersor ← 將數組轉換為張量
if i == 0
then prob ← 中文字符識別
charactor ← 獲取prob對應字符
else prob ← 字母數字識別
charactor ← 獲取prob對應字符
predict_result += charactor
返回識別結果 predict_result
3? 結? 論
本文通過設計并實現高校車牌登記識別管理系統,將門禁系統和網絡相結合,利用Web在線登記信息,通過車牌識別結果檢索登記信息,從而實現了車輛出入校園時進行遠程登記、信息化、智能化的處理過程。本系統基于卷積神經網絡數據集進行訓練,對模型使用車牌字符數據集進行訓練后模型的準確率達到0.95,能夠準確識別車牌信息,輕松實現了校園車輛的高效管理。
參考文獻:
[1] ZHU F H,LI Z J,CHEN S H,et al. Parallel Transportation Management and Control System and Its Applications in Building Smart Cities [J]. IEEE Transactions on Intelligent Transportation Systems,2016,17(6):1576-1585.
[2] 李兵,易嘉聞,黃鋒,等.基于TensorFlow深度學習的車牌識別算法研究 [J].成都工業學院學報,2018,21(4):28-33.
[3] 張帆,王曉東,郝賢鵬.基于邊緣特征的智能車輛字符識別 [J].自動化與儀器儀表,2020(6):11-14+20.
[4] 朱鳳霞.基于神經網絡和圖像識別的車牌識別技術 [J].電子設計工程,2020,28(2):130-133+138.
[5] 梁大寬.復雜背景下多車牌識別算法的研究與軟件系統實 [D].太原:太原理工大學,2016.
[6] 黑馬程序員.Java EE企業級應用開發教程 [M].北京:人民郵電出版社,2017.
[7] 倪麟.基于Otsu理論的圖像分割算法的研究 [D].重慶:重慶大學,2013.
作者簡介:徐莉(1991.03—),女,漢族,河南信陽人,助教,碩士研究生,研究方向:數據挖掘,圖像處理;孫龍飛(1997.05—),男,漢族,河南洛陽人,本科,研究方向:圖像處理。