林云
摘 要:隨著道路車輛的增多,傳統(tǒng)的人為交通管理方式越來越難以掌控復雜的道路交通情況,已逐漸退出大眾視野。而隨著機器視覺技術(shù)的快速發(fā)展,通過先進的目標檢測算法實現(xiàn)自動化、智能化和精密的交通管控已開始大量普及。因此,提出并設(shè)計了基于OpenCV的道路車牌識別系統(tǒng),可在復雜的道路環(huán)境下保持長時間工作并維持一定的準確率,提高交通管理效率,節(jié)約人力資源,方便人們出行。文中利用車牌特征輸入的圖像進行車牌定位,再通過灰度化,基于Radon變換的傾斜校正、二值化、腐蝕、膨脹等數(shù)字圖像處理算法來處理車牌圖像,去除車牌圖像因為環(huán)境而產(chǎn)生的干擾。之后運用垂直投影法分割車牌字符,最后用模板匹配的方法來識別車牌字符,并輸出識別信息。在實驗中,通過車牌數(shù)據(jù)檢測,該系統(tǒng)的識別準確率超90%。
關(guān)鍵詞:計算機視覺;OpenCV;目標檢測;特征提取;Radon變換;字符分割
中圖分類號:TP391.41文獻標識碼:A文章編號:2095-1302(2020)06-00-04
0 引 言
隨著人們生活質(zhì)量的不斷提高,對汽車的需求量也在逐年增長,道路的車流量亦在飛速增多。由于駕駛員的違章行為經(jīng)常導致城市道路交通產(chǎn)生一些問題,如何科學有效地改善交通管理秩序是有關(guān)部門及政府當下關(guān)心的問題。其中,車牌識別系統(tǒng)作為道路管理系統(tǒng)中最重要的部分,越來越受到人們的重視。它在實際生活中有著廣泛應(yīng)用。
(1)車輛出入管理。通過公路的入口和出口檢測,實現(xiàn)不停車收費,還可以通過識別出來的車牌號查詢車輛是否按時繳納相關(guān)費用,是否通過年檢等。
(2)超速檢測。當車輛超速行駛時,可以通過系統(tǒng)提取車牌號圖像和字符信息,作為違章處罰的證據(jù)。
(3)檢測車流。車牌識別系統(tǒng)可以通過捕獲的車牌圖像獲得某段時間內(nèi)的車流量及密度,特別在車流高峰時期,可以通過分析相關(guān)數(shù)據(jù)來分散車流,誘導交通。
(4)居民小區(qū)及單位的車輛安全管理。
車牌識別系統(tǒng)涉及許多復雜的任務(wù)處理過程,包括圖像檢測、圖像分割和圖像識別等。在實際應(yīng)用場景中,不同的傾斜角或圖像噪聲也使得問題變得更加復雜。同時,一個好的車牌識別系統(tǒng)應(yīng)兼具精度與速度。對于車牌識別的研究開始于20世紀90年代。Duan T D等提出運用圖像分割、特征提取、構(gòu)造模板、字符識別等計算機視覺技術(shù)和圖像處理技術(shù)實現(xiàn)車牌自動識別[1]。但早期的車牌識別系統(tǒng)無法做到實時處理,且精度較低,仍需要人力介入。同時,由于我國車牌是由漢字、數(shù)字、字母組合而成,識別難度大大增加。在許多研究工作中[2-3],均對圖像獲取、位置標定、圖像曝光量等問題進行了詳細的分析和討論。由于我國車牌系統(tǒng)的特殊情況,單一的識別技術(shù)難以奏效。因此,在綜合考慮環(huán)境因素、圖像誤差、背景環(huán)境多樣性、光線、角度等因素后,本文提出并設(shè)計了基于OpenCV的自動化車牌識別系統(tǒng),能夠?qū)崿F(xiàn)實時快速的車牌檢測與識別。
1 系統(tǒng)設(shè)計
本文所設(shè)計的車牌識別系統(tǒng)由車牌采集模塊、車牌定位模塊、車牌圖像預處理模塊、車牌字符分割模塊、車牌字符識別模塊、車牌識別結(jié)果輸出模塊組成。系統(tǒng)流程如圖1所示。
1.1 車牌采集
車牌采集是自動識別系統(tǒng)的第一步。攝像頭與計算機連接,將攝像頭實時拍攝的照片傳輸?shù)接嬎銠C,之后進行后續(xù)處理。
1.2 車牌定位
車牌定位是車牌識別的關(guān)鍵,一旦定位錯誤,將導致系統(tǒng)無法對圖像進行處理與識別。較常見的車牌圖像定位方法如下:
(1)運用Haar特征模板和Adaboost構(gòu)建分類器的方法對車牌進行定位,這種方法需要大量數(shù)據(jù)作為樣本進行訓練,然后再對輸入的圖像進行處理;
(2)通過邊緣檢測方法,如邊緣檢測算子Sobel算子,Roberts算子,Prewitt算子,經(jīng)過一定的實驗處理及比較,發(fā)現(xiàn)Roberts算子效果較好[4]。
本文利用車牌藍底白字的特征進行車牌定位。先對圖片進行y方向處理,逐行掃描并統(tǒng)計滿足一定要求的像素點,之后將滿足條件的像素點最多的一行定位為起點,并不斷向上掃描,當像素點小于閾值時,定為車牌上界。同理,不斷向下掃描,當像素點小于閾值時,定為車牌下界。再對圖像的x方向進行處理[2],為了防止中間出現(xiàn)斷層,特在y方向的基礎(chǔ)上由中間向兩邊逐列掃描并統(tǒng)計像素點,當藍色像素小于一定閾值時,即為邊界,由此確定x的起點和終點。為了減少干擾,需要通過計算長寬比來對車牌區(qū)域進行修正,需將原車牌區(qū)域增大或減小,然后將初步定位的車牌區(qū)域顯示在GUI上。
1.3 車牌圖像預處理
1.3.1 灰度化
輸入的圖像是彩色圖像,由紅、綠、藍三色組成,我們稱之為RGB。當R=G=B時,圖像呈現(xiàn)灰色,而這種由無規(guī)則RGB值到R=G=B的過程被稱為灰度化,灰度范圍為0~255。彩色圖像灰度化常見的處理方法有分量法、最大值法和加權(quán)平均法。
1.3.2 二值化
首先設(shè)定一個閾值,然后對要處理的灰度圖像進行變換,如果待處理的灰度圖像的灰度值大于125,則變?yōu)?55,小于等于125的則變?yōu)?,由此實現(xiàn)二值化。使用graythresh函數(shù),用最大類間方差法找到適合圖片的閾值,達到二值化效果。
1.3.3 去除噪聲
利用腐蝕和膨脹進行圖像處理,再通過去除小對象從而去除車牌上可能存在的污漬和磨損等噪聲。
文中利用開運算與閉運算處理方法。開運算先腐蝕后膨脹,可將圖像的輪廓變得平滑,將斷裂的地方截斷,去除輪廓上的邊邊角角;閉運算先膨脹后腐蝕,可去除圖像上的小洞,補全斷裂的地方[5]。
1.3.4 圖像裁剪
在消除噪聲后,為了提高后續(xù)的正確率,需要進一步對圖像進行裁剪。我們可以通過統(tǒng)計灰度值的集中范圍來確定車牌位置,便于分割圖像。二值化后,需要對圖像置反,以更好地查找黑色像素點,再通過投影法計算y方向和x方向的黑點個數(shù)。
為了避免邊緣造成的誤差,從車牌中心位置向兩邊查找,判斷黑色字符是否低于閾值,若低于閾值,則為上界和下界。為了避免左邊邊框的影響,需判斷x方向1/14處的黑色像素數(shù)是否小于1,若小于1,則判斷此處為左邊框,如若不是,則把x=1作為左邊框。
1.3.5 傾斜校正
由于拍攝車牌圖像時外界因素的影響,如攝像頭和車牌的角度不佳,車輛行駛過程中的抖動或車牌未正確懸掛,導致拍攝的車牌為傾斜狀態(tài),因此需要對車牌進行校正。若運用最基本的固定角度旋轉(zhuǎn),則可能使得正常車牌圖片或傾斜圖片的傾斜角度更大,對后續(xù)識別造成難以挽回的影響。在實際車牌識別的應(yīng)用中,常用到的傾斜校正方法有Hough變換。使用Hough變換提取邊框,確定拍攝到的車牌傾斜角,然后再通過空間變換,對圖像進行旋轉(zhuǎn);計算出車牌上每個字符連通區(qū)域的中心點,再將其擬合,由此得到車牌的傾斜角;通過計算車牌字符局部極小和極大特征點,之后投影確認車牌傾斜角。
本文利用Radon變換實現(xiàn)圖像旋轉(zhuǎn),可以對不同的圖像進行計算,從而得到不同的旋轉(zhuǎn)角。
Radon變換投影如圖2所示,均勻圖像Radon變換如圖3所示[5]。
1.4 車牌識別
1.4.1 車牌字符分割
常用于字符分割的方法有垂直投影、車牌字符間隔及車牌尺寸檢測、車牌字符輪廓檢測等。本文使用垂直投影方法,車牌字符分割流程如圖4所示。
設(shè)定閾值以判斷黑色和白色的像素點,定義一個數(shù)組,計算被置反后的圖像及其每一列垂直方向的黑色像素總數(shù)。將其與閾值比較,從而判斷該列的顏色。首先判斷第一列是否為黑,若為黑,無干擾時,則為第一個字符的邊界。由字符的組成可知,在無干擾時,若區(qū)域邊界的灰度值由255到0,再從0到255,則該區(qū)域為一個字符。
由于上述處理可能并不完善,因此可能留下一定干擾,其中一個就是漢字前面的干擾,為了清除漢字前面的干擾,采用如下方法:
(1)識別黑色區(qū)域黑色像素總和是否小于閾值,若小于閾值,則說明該黑色區(qū)域較小,并非車牌區(qū)域;
(2)識別的黑色塊區(qū)域是否小于下一塊黑色區(qū)域?qū)挾鹊囊话?,正常情況下,應(yīng)該大于該區(qū)域,或者與之相等。
如果有干擾,則通過循環(huán)將黑色區(qū)域去除。按照車牌規(guī)格,對分割出來的字符進行分類與后續(xù)的識別處理,并且在GUI上顯示車牌分割結(jié)果。
1.4.2 車牌字符識別
字符識別的方式總體來說分為兩種,即基于人工神經(jīng)網(wǎng)絡(luò)方式與基于模板匹配方式。本文利用模板庫與處理好的車牌字符進行匹配,找到相似度最大的模板,并識別字符。車牌字符的識別流程如圖5所示。
模板匹配先將得到的字符進行修正,通過雙線性插值算法將分割出來的字符修正成110×55的規(guī)格,然后分成三種格式存儲0~9,A~Z及省份簡稱的模板(漢字、字母、數(shù)字和字母),為了后續(xù)的模板匹配,需要將模板進行灰度化處理、二值化處理與修正操作。修正的格式與前文一致,均為110×55,計算車牌字符和每個模板相等像素點的個數(shù)總和的百分比,最大即為車牌字符對應(yīng)的模板。模板位置經(jīng)過前述步驟已經(jīng)確定,之后逐個位置一一比較,再將百分比結(jié)果放在對應(yīng)位置即可。最大百分比的位置即模板位置。在識別可能出現(xiàn)數(shù)字和字母的位置時先判斷最大百分比位置是否在前十,如果在,則為數(shù)字,不在則為字母。
模板匹配相對更簡單,當車牌字符規(guī)整時,系統(tǒng)對車牌字符受環(huán)境影響而產(chǎn)生的干擾,如車牌缺損、沾滿泥圬等具有很強的識別能力。
1.5 車牌識別結(jié)果輸出
在現(xiàn)實生活中,車牌識別結(jié)果通常由3種方式輸出,即輸出到屏幕、語音播報、輸出到系統(tǒng)下一級。在本文中,用OpenCV模擬車牌識別輸出,即以對話框、語音播報的方式輸出。
2 實驗和結(jié)果分析
為了評估提出的車牌識別系統(tǒng)的有效性,通過對32張具有不同復雜程度背景的車輛圖像進行檢測,統(tǒng)計結(jié)果見表1所列。
由表1可知,在車牌圖像為32張的情況下,識別成功了29張,識別率達到90.6%。
出錯的部分:車牌定位出錯;車牌字符分割出錯;車牌識別出錯。
造成這些錯誤的可能原因:車輛顏色偏藍色,或者背景偏藍,導致定位出錯;車牌處理過程中邊框的影響未能消除,導致車牌字符分割出錯;模板匹配過程中,0與D的相似可能會造成部分車牌識別出錯。
時間差異的原因:車牌離攝像頭越近,定位車牌區(qū)域所需要的時間越久;車牌傾斜程度越大,校正和再次剪切車牌區(qū)域所需的時間越長。
3 結(jié) 語
本文基于計算機視覺處理算法,以O(shè)penCV工具為開發(fā)平臺,提出并設(shè)計了車牌識別系統(tǒng)。該系統(tǒng)能夠處理在復雜環(huán)境下的車牌圖像,并識別車牌圖片。通過色彩因素對圖像中的車牌進行定位,并通過Radon變換計算傾斜角,然后經(jīng)過一系列的預處理、分割、識別操作,識別圖像中的車牌信息。在仿真實驗中,該系統(tǒng)識別準確率達到90.6%。
本論文中的車牌識別方法仍有不足,需要后續(xù)進行改正和提高。
(1)車牌圖像處理時,利用車牌特征對其進行定位與分割的方法存在一定的局限性與誤檢率,該方法只能應(yīng)用于車輛顏色不偏藍和背景無過于密集的藍色區(qū)域。
(2)在車牌字符定位時,若邊框過大將導致二值化后的左邊框存在很多非字符的黑色長條區(qū)域,在分割字符時將其錯誤的識別為第一塊字符區(qū)域。
參考文獻
[1] DUAN T D,DU T L H,PHUOC T V,et al. Building an automatic vehicle license plate recognition system [C]// Proc.Int.Conf.Comput.Sci.RIVF.2005:59-63.
[2]劉慶祥,蔣天發(fā).智能車牌識別系統(tǒng)中圖像獲取技術(shù)的研究[J].武漢理工大學學報(交通科學與工程版),2003,27(1):127-130.
[3]彭玲玲,任占廣,周勤.基于MATLAB的車牌識別系統(tǒng)研究[J].電子制作,2017(22):17.
[4]賈曉丹,李文舉,王海姣.一種新的基于Radon變換的車牌傾斜校正方法[J].計算機工程與應(yīng)用,2008(3):245-248.
[5]陳超.MATLAB應(yīng)用實例精講:圖像處理與GUI設(shè)計篇[M].北京:電子工業(yè)出版社,2011:86-87.
[6]孟祥興,宋宇飛,顧橋磊.基于OpenCV和嵌入式的工業(yè)圖像檢測系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2018,8(10):106-107.
[7]雷劍鋒,汪偉.基于OpenCV的圖像閾值分割研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(24):73-76.
[8]張學賀,張學東,丁寧.基于OpenCV的運動目標檢測與跟蹤[J].遼寧科技大學學報,2010(5):490-494.
[9]尹俊超,劉直芳.基于OpenCV的運動目標檢測與跟蹤[J].計算機工程與設(shè)計,2011(8):2817-2820.
[10]林啟亮.基于OpenCV2.x的車牌識別系統(tǒng)設(shè)計與實現(xiàn)[D].廈門:廈門大學,2013.