張明軍,俞文靜,李偉濱,朱曉丹
(廣州大學(xué)華軟軟件學(xué)院 網(wǎng)絡(luò)技術(shù)系,廣東 廣州 510990)
智能交通系統(tǒng)(intelligent traffic system,ITS)是解決交通問題的一個重要手段,而車輛牌照識別(license plate recognition,LPR)技術(shù)在ITS中起著關(guān)鍵作用[1-2]。車輛牌照識別(簡稱車牌識別)系統(tǒng)能夠?qū)Λ@得的車輛圖像信息進(jìn)行分析,自動定位出車輛牌照的位置,并識別出車牌號碼。
車牌識別系統(tǒng)主要由兩部分構(gòu)成:車牌檢測和車牌識別。車牌檢測的任務(wù)是從采集的車輛圖像中檢測并提取車牌區(qū)域,主要包括車牌定位和車牌判斷。車牌定位是從車輛圖像中定位出候選車牌區(qū)域,其常見方法有如下幾種:(1)基于邊緣檢測的車牌檢測法,通過檢測車牌的矩形區(qū)域定位候選車牌,但在垂直邊緣交錯的情況下往往定位不準(zhǔn)[3];(2)基于顏色信息的車牌檢測法,通過車牌顏色定位候選車牌,但在低照度、低對比度等情況下無法定位[4];(3)基于文字的車牌檢測法,使用MSER(maximally stable extremal regions)算法[5]提取文字區(qū)域,然后使用種子生長法將這些圖塊連接起來,最終組合成候選車牌區(qū)域[6]。車牌判斷是從定位的候選車牌區(qū)域中提取真實(shí)的車牌區(qū)域,常采用SVM(support vector machine)方法[7-9]。車牌識別的任務(wù)是從檢測到的車牌區(qū)域中識別出車牌字符,主要包括字符分割和字符識別。字符分割是將字符從車牌區(qū)域圖像中逐一分割提取出來,并按順序排列,最常見的算法包括垂直投影法[10]和連通域搜索法[11-12]。字符識別是對已分割提取出的字符進(jìn)行內(nèi)容解析的過程,常見采用神經(jīng)網(wǎng)絡(luò)方法[9,13-14]。
隨著計(jì)算機(jī)技術(shù)以及機(jī)器視覺技術(shù)的不斷發(fā)展,車牌識別技術(shù)日趨成熟,大量運(yùn)用于城市道路交通管理中。但由于特殊天氣、光線和視角等各種不可控因素,車牌識別問題依然面臨挑戰(zhàn)[15-16]。文中以車牌識別的實(shí)用性為目的,設(shè)計(jì)了一種車牌識別系統(tǒng)。其中,首先設(shè)計(jì)了一種車牌定位方法選擇候選車牌區(qū)域,然后采用SVM算法對候選車牌區(qū)域進(jìn)行車牌判斷;最后對車牌區(qū)域進(jìn)行字符分割,采用改進(jìn)的LeNet-5深度網(wǎng)絡(luò)模型進(jìn)行車牌字符識別。實(shí)驗(yàn)證明該系統(tǒng)具有較好的魯棒性和識別準(zhǔn)確率。
車牌定位綜合邊緣檢測法和顏色定位法的優(yōu)勢,提出了Sobel-Color定位算法,以Sobel邊緣和顏色兩種特征進(jìn)行車牌定位,提高了定位的準(zhǔn)確率。同時(shí),為了保證車牌定位的可靠性,在Sobel-Color定位的基礎(chǔ)上,增加了MSER定位法,即經(jīng)過Sobel-Color算法無法定位車牌則由MSER算法定位車牌。設(shè)計(jì)的車牌檢測流程如圖1所示。
Sobel-Color定位算法將Sobel邊緣和顏色兩個特征同時(shí)作為車牌的特征進(jìn)行檢測,具體算法步驟如下:
Step1:輸入車輛圖像I=(x1,x2,…,xn,…,xN)。
Step2:將I轉(zhuǎn)化為灰度圖像IGray和HSV圖像IHSV。
Step3:對IGray進(jìn)行Sobel運(yùn)算,得到二值圖像Gx=(g1,g2,…,gn,…,gN)。
Step4:讀取IHSV的三個通道值,分別記作hi,si,vi,i=1,2,…,N。
Step5:若hi∈B或者h(yuǎn)i∈Y,且s∈SX,v∈VX,則令xi=255,否則為0,得到二值圖像KBY=(k1,k2,…,kn,…,kN)。
圖1 車牌檢測流程
Step6:將Gx與KBY合并成圖像LB=(l1,l2,…,ln,…,lN)。合并規(guī)則如下:如果gi=255,且ki的八連通區(qū)域不為0的像素個數(shù)≥1,則li=255,否則li=0,i=1,2,…,N。
Step7:對LB進(jìn)行形態(tài)學(xué)操作,輪廓檢測,明顯非車牌區(qū)域剔除。
Step8:依據(jù)LB中的候選區(qū)域坐標(biāo)和大小,從I中截圖候選車牌區(qū)域。
Sobel-Color算法中B為藍(lán)色車牌色調(diào)值范圍,Y為黃色車牌色調(diào)值范圍,SX為車牌顏色的飽和度范圍,VX為車牌顏色的亮度值范圍,取經(jīng)驗(yàn)值。
MSER算法是由Matas[5]提出,能夠?qū)σ环鶊D像選擇適當(dāng)?shù)拈撝刀玫竭B通分量,并對這些連通分量的平穩(wěn)性進(jìn)行檢測獲得最終的平穩(wěn)區(qū)域。MSER獲取區(qū)域如式(1)所示。
(1)
其中,Qi表示二值化閾值i對應(yīng)的二值圖像中某一連通區(qū)域,當(dāng)二值化閾值由i變成i+Δ和i-Δ時(shí),Δ為變化值,連通域Qi相應(yīng)變成了Qi+Δ和Qi-Δ。當(dāng)Qi面積隨二值化閾值i變化而發(fā)生較小變化即q(i)為局部極小值時(shí),Qi為最大穩(wěn)定極值區(qū)域。
使用MSER算法進(jìn)行車牌定位的步驟如下:
Step1:輸入車輛圖像I=(x1,x2,…,xn,…,xN)。
Step2:將I轉(zhuǎn)化為灰度圖像IGray+和反向灰度圖像IGray-=255-IGray+。
Step3:分別對IGray+和IGray-執(zhí)行MSER檢測,記作MSER+和MSER-操作。
Step4:根據(jù)檢測區(qū)域點(diǎn)生成MSER+圖像IMSER+和MSER-圖像IMSER-。
Step5:將IMSER+和IMSER-進(jìn)行位與操作,生成圖像IMSER。
Step6:對IMSER進(jìn)行形態(tài)學(xué)操作,輪廓檢測,明顯非車牌區(qū)域剔除。
Step7:依據(jù)IMSER中的候選區(qū)域坐標(biāo)和大小,從I中截圖候選車牌區(qū)域。
支持向量機(jī)(support vector machine,SVM)[7]是一種基于統(tǒng)計(jì)學(xué)習(xí)理論的機(jī)器學(xué)習(xí)算法,具有較強(qiáng)的泛化能力。SVM的訓(xùn)練過程實(shí)際上等價(jià)于求解一個線性約束的二次規(guī)劃問題,其目標(biāo)是在訓(xùn)練樣本集中尋找一個最優(yōu)的超平面,將樣本數(shù)據(jù)最大限度地分開,使兩類數(shù)據(jù)之間的邊界最大且分類誤差最小,且能保證得到的解為全局最優(yōu)解。
直方圖特征的特征量豐富,適用于SVM分類,因此文中使用圖像的直方圖特征作為SVM的輸入特征,分別在圖像水平和垂直方向統(tǒng)計(jì)直方圖。其中水平方向的特征維度為36,垂直方向的特征維度為136,輸入的特征維度是172。使用SVM進(jìn)行車牌區(qū)域判斷的具體步驟如下:
Step1:輸入候選車牌區(qū)域圖像,并對其進(jìn)行二值化處理。
Step2:統(tǒng)計(jì)圖像中一行元素中為1的數(shù)目,輸入圖像共36行,得到36個數(shù)據(jù)。
Step3:統(tǒng)計(jì)圖像中一列元素中為1的數(shù)目,輸入圖像有136列,得到136個數(shù)據(jù)。
Step4:將Step2與Step3得到的這些數(shù)據(jù)作為SVM的輸入特征,輸入特征維度為172。
SVM訓(xùn)練的數(shù)據(jù)集中正樣本數(shù)量為1 400個,負(fù)樣本數(shù)量為2 174個;測試集中正樣本和負(fù)樣本分別為1 400個。SVM使用OpenCV中的函數(shù)庫,設(shè)置為徑向基核函數(shù),通過實(shí)驗(yàn)可知,該模型對于車牌區(qū)域的判別正確率達(dá)到0.999 7,滿足本系統(tǒng)的需求。
車牌識別是從獲取的車牌區(qū)域中識別出字符,首先需要進(jìn)行字符分割,然后進(jìn)行字符識別,其中字符識別采用卷積神經(jīng)網(wǎng)絡(luò)(CNN),流程如圖2所示。
車牌字符分割的步驟如下:
Step1:輸入車牌區(qū)域圖像P。
Step2:將圖像P灰度化PGray。
Step3:使用OSTU算法[17]對PGray二值化。
Step4:取輪廓,選取每個字符輪廓,同時(shí)剔除虛假字符和去除鉚釘。
圖2 車牌識別流程
Step5:截取每個字符圖塊,并歸一化處理。
其中Step4和Step5的操作往往存在兩個問題:(1)車牌的邊緣部分往往存在虛假字符,難以剔除;(2)部分中文字符選取的輪廓并非一個整體,提取字符區(qū)域則不完整。解決思路主要是首先定位一個特殊字符,以第二個字符作為特殊字符,然后根據(jù)這個特殊字符來定位其他字符,具體方法如下:
(1)在Step4中統(tǒng)計(jì)每個字符輪廓外接矩形的高H和寬W,并進(jìn)行比較,獲取最大的H和W,記作(Hmax,Wmax)。
(2)對所有字符矩形進(jìn)行判斷,如果滿足其高度和寬度分別大于0.8Hmax和0.8Wmax,且其距離車牌左邊緣為1/7至2/7倍車牌寬度之間,將此字符作為特殊字符,即車牌里的城市代碼字符,其坐標(biāo)和尺寸分別記作(xs,ys),(Hs,Ws)。
(3)以特殊字符作為基準(zhǔn),則可定位前面的中文字符,即車牌里的省份簡稱。定位方法為:中文字符矩形的坐標(biāo)為(xp,yp)=(xs-1.32Ws,ys),中文字符矩形的尺寸為(Hp,Wp)=(Hs,1.15Ws)。
(4)同步驟(3),定位特殊字符的后續(xù)字符,并可刪除這幾個字符之外的其他虛假字符。至此,完成字符分割。
對車牌字符識別采用LeNet-5網(wǎng)絡(luò)。LeNet-5網(wǎng)絡(luò)[18]是一種簡單但經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型,主要用于手寫數(shù)字識別,網(wǎng)絡(luò)結(jié)構(gòu)由7層組成,每層包含訓(xùn)練參數(shù),7層主要包含卷積層、池化層、全連接層3種連接方式。
由于LeNet-5網(wǎng)絡(luò)輸出類別數(shù)目為10,而中國車牌包括10個數(shù)字之外,還包括24個英文大寫字母(字母I和O除外),31個省市簡稱的漢字(不包括港澳臺)。因此需要對LeNet-5進(jìn)行改進(jìn),具體如下:
(1)改進(jìn)輸出層。車牌的字符數(shù)一共65個,但考慮漢字與數(shù)字或字母有較大出入,因此設(shè)計(jì)兩個分類器,一個用于漢字分類,則改進(jìn)輸出層的單元數(shù)為31個;另一個用于數(shù)字和字母分類,則改進(jìn)輸出層的單元數(shù)為34個。
(2)調(diào)整特征平面數(shù)。由于模型的識別數(shù)量修改為31和34,比原來模型的輸出類別大,而且有較為復(fù)雜的漢字識別,為了更全面地提取圖像特征,需要調(diào)整一些層的特征平面的數(shù)量。因此,將C1層和S2層的特征平面的數(shù)量由6個增加到24個,將C3和S4層的特征平面的數(shù)量由16個增加到52個,將C5層的特征平面的數(shù)量由120個增加到480個。調(diào)整各層參數(shù),將對輸出的結(jié)果產(chǎn)生影響。
設(shè)計(jì)的車牌識別系統(tǒng)的實(shí)現(xiàn)平臺為Windows 10,Visual C++和OpenCV3,界面采用QT設(shè)計(jì),字符訓(xùn)練和識別部分采用Tensorflow+Python3.6。為了驗(yàn)證系統(tǒng)的有效性,首先從網(wǎng)絡(luò)上收集了大量車牌,制作了車牌字符數(shù)據(jù)集,數(shù)量約為16 000個,并歸一化為32×32大小。同時(shí),收集了大量真實(shí)車牌用于測試。設(shè)計(jì)實(shí)驗(yàn)如下:
(1)正常條件下的單幅車牌圖像識別實(shí)驗(yàn),目的在于測試系統(tǒng)對車牌字符識別的準(zhǔn)確性。部分測試結(jié)果如圖3(a)~3(d)所示。測試了多個城市的車牌圖像共172個,正確率100%,其主要原因有:一是采集的車牌圖像分辨率較高,且角度、距離以及圖像光線等都比較理想;二是測試圖像并未全部覆蓋全國各個省份,測試樣本量不夠大。
圖3 正常條件下的單幅車牌圖像識別實(shí)驗(yàn)結(jié)果
(2)惡劣條件下的單幅車牌圖像識別實(shí)驗(yàn),目的在于測試系統(tǒng)在惡劣條件下的性能。文中測試的惡劣條件主要包括:大角度成像、雨天成像、夜晚成像、霧天成像等,測試結(jié)果如圖4(a)~4(d)所示。一共測試了21個惡劣條件下的圖像,識別錯誤為2個,正確率為90.5%。由此表明,該系統(tǒng)在惡劣條件下依然能夠準(zhǔn)確定位車牌,并具有較好的識別率。
(3)單幅車牌圖像識別速率實(shí)驗(yàn),目的在于測試系統(tǒng)的識別效率。選取單幅車牌圖像共100個,分為三組多批次進(jìn)行測試,統(tǒng)計(jì)識別速率的結(jié)果如表1所示。
表1 單幅車牌圖像識別速率實(shí)驗(yàn)結(jié)果
由表1可知,車牌識別速率較快,系統(tǒng)具有較好的效率,能滿足系統(tǒng)實(shí)用性的目的。選取的車牌圖像分辨率較高,數(shù)據(jù)量則較大,因此系統(tǒng)的初始化處理以及識別過程中的相關(guān)處理所花時(shí)間較多。如果還需要提高系統(tǒng)的識別效率,可以適當(dāng)降低車牌圖像的分辨率。
以車牌識別的實(shí)用性為目的,設(shè)計(jì)了一種魯棒的車牌識別系統(tǒng),在各種環(huán)境干擾的情況下也具有較好效果,識別率高于90%。提出了一種有效的車牌定位方法,并采用SVM進(jìn)行車牌檢測,提高了車牌檢測的準(zhǔn)確率;提出了一種車牌字符分割策略,并針對車牌字符識別的需求改進(jìn)了LeNet-5深度網(wǎng)絡(luò)模型,提高了字符識別的準(zhǔn)確率。但該系統(tǒng)在新能源車牌、雙行分布的車牌、軍警車牌等特殊車牌識別上仍需進(jìn)一步完善。