漆世錢
(武警海警學(xué)院 電子技術(shù)系,浙江 寧波 315801)
車牌識(shí)別技術(shù)是智能交通系統(tǒng)重要組成部分,被廣泛應(yīng)用,它能自動(dòng)將運(yùn)動(dòng)的汽車牌照或單幀圖像汽車牌照從復(fù)雜的背景中提取出來并識(shí)別字符,通過圖像預(yù)處理、車牌定位、字符分割、字符識(shí)別等技術(shù),達(dá)到車牌識(shí)別的目的[1]。其中,車牌定位技術(shù)是車牌識(shí)別系統(tǒng)的關(guān)鍵步驟,車牌定位的效果會(huì)影響后面對(duì)車牌字符分割和識(shí)別的成功率,進(jìn)一步影響整個(gè)車牌識(shí)別系統(tǒng)的成功率和識(shí)別速度[2-3]。
當(dāng)前使用比較多的車牌定位方法主要有紋理圖像的多特征融合、灰度圖像邊緣標(biāo)識(shí)與檢測、顏色信息的圖像分割和人工神經(jīng)網(wǎng)絡(luò)的方法等。多特征融合是對(duì)車牌橫向的小波紋理、梯度微分紋理等特征進(jìn)行分割,這種定位方法由于車牌圖像中可能多個(gè)區(qū)域具有車牌的紋理特征,很難準(zhǔn)確地判斷出車牌位置,所以識(shí)別率較低,尤其是車牌傾斜度過大時(shí),定位率顯著下降[4-5]。灰度圖像邊緣標(biāo)識(shí)與檢測方法對(duì)車牌圖像先后進(jìn)行灰度化、二值化處理,用投影法完成車牌定位,優(yōu)點(diǎn)是精確度較高,缺點(diǎn)是魯棒性偏低[6]。顏色信息的圖像分割方法通過對(duì)車牌的背景和字符顏色對(duì)車牌進(jìn)行定位,在各種復(fù)雜背景的影響下定位率仍保持較高水準(zhǔn),但是計(jì)算量大、定位速度慢[7]。基于神經(jīng)網(wǎng)絡(luò)方法的過程比較復(fù)雜,首先選取圖像樣本,然后對(duì)其進(jìn)行多層前饋網(wǎng)絡(luò)訓(xùn)練,通過反復(fù)的調(diào)整訓(xùn)練取得理想的網(wǎng)絡(luò)權(quán)值,最后利用多層前饋網(wǎng)絡(luò)對(duì)圖像進(jìn)行判斷定位,同樣是定位效果好,但時(shí)間開銷比較大[8]。
除了光照不均衡的影響,在車牌定位過程中車牌圖像可能還具有高噪聲、車牌角度傾斜等因素。針對(duì)以上車牌定位方法的部分問題,為彌補(bǔ)算法過于單一的缺點(diǎn),該文提出了一種基于輪廓識(shí)別和BGR顏色處理的車牌定位方法,結(jié)合兩種方法的優(yōu)勢,進(jìn)一步提高車牌定位的實(shí)時(shí)性和成功率。
車牌定位的目的是從車輛圖片中根據(jù)色彩、紋理、大小比例等特征找出車牌區(qū)域,并將其單獨(dú)分割出來。在車牌定位之前,車輛圖像經(jīng)過了平滑、灰度化、二值化、邊緣檢測等簡單的預(yù)處理過程,車牌大致區(qū)域已經(jīng)比較明顯。在定位過程中,首先對(duì)車牌進(jìn)行輪廓識(shí)別完成區(qū)域的篩選達(dá)到車牌粗定位,然后在粗定位的基礎(chǔ)上實(shí)現(xiàn)更加精準(zhǔn)的精確定位。其中區(qū)域檢測和區(qū)域篩選都屬于粗定位流程,基本步驟包括輪廓檢測、矩形區(qū)域識(shí)別、矩形篩選和截??;而在精確定位中,由于圖像信息通過處理后主要部分為車牌,通過建立BGR向量模型,利用BGR處理提取車牌關(guān)鍵位置,在檢測篩選后得到車牌圖像,最后把可能傾斜的車牌經(jīng)過校正和截取優(yōu)化,得到較高質(zhì)量的車牌精確定位圖。
輪廓識(shí)別是忽略被檢測圖像中的紋理和各種噪聲的影響,找出圖像邊界中含有相同密度和色彩值的像素點(diǎn),對(duì)目標(biāo)的外輪廓或者內(nèi)輪廓進(jìn)行提取和顯示的過程。圖像的輪廓之間有一定的層級(jí)關(guān)系,從輪廓大小和附屬關(guān)系來說有外部輪廓與內(nèi)部輪廓,也有父輪廓和子輪廓層級(jí),輪廓檢測的核心就是將圖像目標(biāo)物體所有像素點(diǎn)中的內(nèi)部點(diǎn)消除[9]。在粗定位中,使用OpenCV的cv::findContours()函數(shù)實(shí)現(xiàn)對(duì)圖像的目標(biāo)物體進(jìn)行輪廓檢測,并對(duì)檢測出的輪廓信息以數(shù)據(jù)鏈表的形式保存,利用鏈表的頭指針進(jìn)行返回。函數(shù)原形為:cv::findContours (InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy,int mode, int method, Point offset=Point())。參數(shù)Image表示輸入圖像,必須為一個(gè)8位的二值圖像,除0像素值繼續(xù)保留外,其余像素值將全部變?yōu)?;contours表示存儲(chǔ)輪廓的容器,每個(gè)輪廓都是以point向量的數(shù)據(jù)類型進(jìn)行表示;Hierarchy為輸出的輪廓層級(jí),將指向用來存儲(chǔ)輪廓信息的鏈表表頭;Mode為邊緣檢測模式,CV_RETR_LIST檢索所有輪廓,但是沒有Parent和Child的層級(jí)關(guān)系,所有輪廓都是同級(jí)的,該文只檢索最大的外部輪廓,沒有層級(jí)關(guān)系,只取根節(jié)點(diǎn)的輪廓,所以選擇CV_RETR_EXTERNAL;method用來表示輪廓邊緣的近似方法的,該文選擇CV_CHAIN_APPROX_SIMPLE的模式方法,壓縮水平的、垂直的和斜的部分,只保留終點(diǎn)部分;offset表示偏移量,默認(rèn)為point(0,0)。使用findContours()函數(shù)能檢測出圖像的輪廓,將輪廓繪制出來還需要結(jié)合函數(shù)DrawContours()從輪廓序列contour提取輪廓點(diǎn),車輛檢測繪制前后的輪廓效果如圖1所示。
圖1 車輛輪廓檢測
在形態(tài)學(xué)處理后得到的二值圖像基礎(chǔ)上,通過findContours()檢索并壓縮所有方向輪廓,使用rectangle()函數(shù)能夠通過多邊形逼近方法,減少輪廓中頂點(diǎn)的數(shù)量,趨近于垂直或者水平方向,給圖像中所有連通輪廓區(qū)域添加最小外接正方向矩形,且矩形一定是正方向的,不會(huì)發(fā)生傾斜和偏移,非常符合車牌大體上的正方向的矩形特征。輪廓區(qū)域矩形檢測效果如圖2所示,其顯示的是所有檢測到的矩形,整張圖片上包含了大大小小眾多矩形,中間最下方的較大矩形為系統(tǒng)的目標(biāo)矩形,需要進(jìn)一步篩選確定。
圖2 矩形檢測
目標(biāo)矩形篩選算法的設(shè)計(jì)原理主要基于矩形的基本輪廓信息,包括寬度、高度、寬高比、面積。由于中國現(xiàn)行車牌標(biāo)準(zhǔn)為九二式機(jī)動(dòng)車號(hào)牌國標(biāo)尺寸,普通車牌前后牌照尺寸都為440×140,即寬高比22∶7[10]。車輛二值圖中,車牌經(jīng)過形態(tài)學(xué)處理后,寬高比稍有變化,但由于膨脹腐蝕的協(xié)調(diào)使用,其變化并不明顯,仍然接近22∶7的標(biāo)準(zhǔn)比例,考慮到車牌由于側(cè)向或內(nèi)外傾斜造成的輕微寬高比變化,其矩形比例應(yīng)適當(dāng)放寬,比值在2.8至3.8之間都應(yīng)該作為篩選的候選區(qū)域。對(duì)于面積,由于圖像的品質(zhì)不同,寬高也就不同,車牌區(qū)域的寬高也不會(huì)相同,之前的寬高比除了在算法設(shè)計(jì)中整型比值會(huì)造成數(shù)據(jù)丟失以外,不會(huì)受到這方面的影響,但面積會(huì)深受影響,所以應(yīng)該使用矩形區(qū)域占原圖像總面積的比值作為篩選特征,系統(tǒng)中使用的篩選閾值為總面積的十分之一,在此基礎(chǔ)上得到的候選區(qū)域中面積最大的就認(rèn)為它是目標(biāo)區(qū)域。
此時(shí),篩選后應(yīng)該得到的返回值是矩形的序號(hào),序號(hào)對(duì)應(yīng)的是輪廓識(shí)別到區(qū)域識(shí)別一直遵循的自動(dòng)排序。假設(shè)得到序號(hào)的值為12,那么可以知道它是系統(tǒng)檢測的第12個(gè)輪廓,繪制的第12個(gè)矩形,其矩形信息儲(chǔ)存在第12個(gè)向量中,得到序號(hào)i后,調(diào)用第i個(gè)向量信息,可以得到第i個(gè)矩形的左上角為起始點(diǎn)和右下角為終止點(diǎn)、寬度、高度,計(jì)算機(jī)確定一個(gè)正方向矩形,得到這個(gè)矩形區(qū)域在整張圖像中的坐標(biāo)。使用OpenCV中的Rect函數(shù)可以在一個(gè)圖像中簡單截取一個(gè)正方向矩形區(qū)域,這樣就完成了粗定位,它用于截取的圖像正是經(jīng)過雙邊濾波處理過的車輛圖。
經(jīng)過車牌粗定位后,已經(jīng)初步確定了車牌區(qū)域,但車牌區(qū)域還包含了諸多無關(guān)信息和影響因素。一是車牌位置并不完全準(zhǔn)確,有很大的邊緣區(qū)域;二是車牌在圖中有些許傾斜,這對(duì)于截取車牌的精確圖像造成很強(qiáng)的干擾,也會(huì)使提取出來的字符保持傾斜,給后期字符識(shí)別增加難度或無法提取成功,所以需要進(jìn)一步精確提取。在車牌的精確提取中,BGR處理需要有兩個(gè)前提條件,一是處理圖像必須是三通道的BGR彩色圖像;二是確定BGR閾值,才能夠以此為界限區(qū)分圖像中的信息。在完成上述兩個(gè)前提后,建立BGR向量模型,用于承裝粗定位圖像像素點(diǎn)信息,通過對(duì)粗定位圖像逐像素點(diǎn)遍歷,讀取各點(diǎn)的B、G、R值。若H符合閾值界定范圍,則重新賦值(0,0,0),反之賦值為(255,255,255)。完成賦值之后,圖像就變成黑白圖,不是二值圖,因?yàn)閭鹘y(tǒng)的二值圖都是指在灰度圖基礎(chǔ)上進(jìn)行二值化變換形成的單通道圖像,但是這里的黑白圖本質(zhì)上還是三通道的BGR圖像,只是看上去一樣,其保存形式和處理方法都是基于BGR值的。以目前道路上最常見的藍(lán)色背景白色數(shù)字車牌為例,車牌背景色之所以為藍(lán)色,不僅僅突出藍(lán)色的底色,而是藍(lán)色的特征顏色比紅色和綠色分量大[11-12]。因此可以歸納出藍(lán)色背景特征顏色的公式:
H(x,y)=2B(x,y)-R(x,y)-G(x,y)
(1)
進(jìn)行BGR處理之后,還需要進(jìn)行灰度化,保證圖像的單通道狀態(tài)。
實(shí)現(xiàn)BGR處理過程之后進(jìn)行檢測和篩選,其原理與車牌粗定位的檢測和篩選相似。首先,對(duì)BGR處理灰度化后的圖片進(jìn)行輪廓檢測,效果如圖3所示。
圖3 車牌輪廓檢測
然后進(jìn)行連通域外界矩形繪制,與粗定位不同之處是矩形繪制函數(shù)不再是rectangle(),而是基于minAreaRect()函數(shù)獲取最小外接矩形頂點(diǎn),建立矩形區(qū)域向量,用于承裝矩形頂點(diǎn),通過直線繪制函數(shù)line將四個(gè)頂點(diǎn)連接起來,完成最小外接矩形繪制。在系統(tǒng)工作中,是不需要看到實(shí)際矩形的,只需獲得頂點(diǎn)信息即可,line函數(shù)只能作為一個(gè)調(diào)試工具檢查頂點(diǎn)獲取情況。對(duì)比兩種矩形繪制方法,前者更加快速,便于操作,只能繪制正方向矩形,并得到矩形的起始點(diǎn)和終止點(diǎn);后者操作起來更加復(fù)雜,而且容易出錯(cuò),但能夠確定輪廓最小外接矩形,可以保證矩形為360度無死角旋轉(zhuǎn)矩形,矩形繪制如圖4所示。
圖4 車牌輪廓最小外接矩形繪制示意圖
矩形區(qū)域向量容器中裝有大量的矩形頂點(diǎn)信息,車牌的內(nèi)外兩個(gè)輪廓比較相似,都能夠適應(yīng)精確定位的要求,但內(nèi)矩形能夠最接近系統(tǒng)的目標(biāo)車牌特征狀態(tài)。將內(nèi)矩形作為提取目標(biāo),確定容器中承裝的0-3號(hào)坐標(biāo)哪個(gè)是起始點(diǎn)坐標(biāo)哪個(gè)是終止點(diǎn)坐標(biāo),使得接下來的篩選、傾斜校正順利進(jìn)行。對(duì)于篩選條件,同樣采用寬高比、面積比的特征,篩選出寬高比約為22∶7,面積大于車牌圖像總面積50%的旋轉(zhuǎn)矩形中面積最小的旋轉(zhuǎn)矩形。
經(jīng)過篩選,算法返回的是旋轉(zhuǎn)矩形在容器中的儲(chǔ)存序號(hào)n,這樣系統(tǒng)就能夠確定這一旋轉(zhuǎn)矩形的四個(gè)頂點(diǎn)坐標(biāo),選擇其中橫縱坐標(biāo)和(x+y)最小的坐標(biāo)點(diǎn),即最接近(0,0)的坐標(biāo)點(diǎn)作為矩形起始點(diǎn)。為了實(shí)現(xiàn)通用的傾斜校正算法,也將會(huì)以此坐標(biāo)點(diǎn)作為旋轉(zhuǎn)中心對(duì)傾斜的車牌圖像進(jìn)行逆時(shí)針的旋轉(zhuǎn),旋轉(zhuǎn)角度計(jì)算原理如圖5所示。
圖5 車牌校正原理參考圖
已知車牌頂點(diǎn)O(x1,y1)、A、B(x2,y2)、C坐標(biāo),以O(shè)為旋轉(zhuǎn)中心,車牌需要逆時(shí)針旋轉(zhuǎn)α度角。已知頂點(diǎn)坐標(biāo),很容易求得矩形寬高w和h的值,還可以通過調(diào)取內(nèi)部函數(shù)運(yùn)算得到minRect(旋轉(zhuǎn)矩形區(qū)域)的size(尺寸,即面積)。通過簡單的三角函數(shù)運(yùn)算就能得到β的值,在三角形ABO中,β=arctan(h/w)。而在三角形OFB中,α+β=arctan[(y2-y1)/(x2-x1)],那么:α=arctan[(y2-y1)/(x2-x1)]-arctan(h/w)。
其中參數(shù)設(shè)置由于不考慮符號(hào)方向,所以可以適用各種方向和各種角度的矩形傾斜,若α值為負(fù)值,則表示順時(shí)針方向的旋轉(zhuǎn)。執(zhí)行旋轉(zhuǎn)指令可以通過getRotationMatrix2D()和warpAffine()兩個(gè)函數(shù)的協(xié)調(diào)使用完成。
在車牌校正后,系統(tǒng)就要截取出序號(hào)為n的矩形,但是經(jīng)過校正,圖像的坐標(biāo)排列已經(jīng)發(fā)生了變化,仍然保持不變的只有旋轉(zhuǎn)中心坐標(biāo)和矩形形狀,此時(shí)再通過Rect截取最為合適。已知旋轉(zhuǎn)中心作為起始點(diǎn),旋轉(zhuǎn)中心坐標(biāo)加上矩形的寬和高就是終止點(diǎn)坐標(biāo),不過這樣截取下來的區(qū)域還不完全是系統(tǒng)最想要的車牌信息,根據(jù)國標(biāo)車牌尺寸比例,調(diào)整Rect的起始點(diǎn)坐標(biāo)和截取矩形尺寸。通過理論計(jì)算和實(shí)驗(yàn)總結(jié),得到最適合的優(yōu)化尺寸為:起始點(diǎn)坐標(biāo)(x1,y1)中x1增加車牌圖像寬度的2%,y1增加車牌圖像高度的11.54%,終止點(diǎn)坐標(biāo)(x2,y2)也將在截取矩形尺寸的基礎(chǔ)上做出調(diào)整,矩形區(qū)域?qū)挾瓤s小為原來的96%,高度為原來的72%。其截取后經(jīng)預(yù)處理,效果如圖6所示。
圖6 車牌精確定位效果
系統(tǒng)的開發(fā)與試用全部在Windows7旗艦版64位操作系統(tǒng)下完成;車牌識(shí)別系統(tǒng)是在Microsoft Visual Studio2010下基于OpenCV3.2.0采用C++語言完成開發(fā);實(shí)驗(yàn)設(shè)備為AMD 2.30 GHz處理器計(jì)算機(jī)及其攝像頭、JVC攝影機(jī)。
(1)不同場景下的測試。
為驗(yàn)證該方法的有效性,在常規(guī)情況、車輛拍攝角度的不同和光照不均勻3個(gè)不同場景下對(duì)該方法分別進(jìn)行測試。任意選取80張常規(guī)情況下的車輛圖片和80張不同方向發(fā)生較大角度偏移的車輛圖片進(jìn)行測試,另外針對(duì)光線因素的識(shí)別測試,在采集的圖片中,有40張取自于雨后陰天情況下,另有40張取自陽光強(qiáng)烈的夏日正午時(shí)間,以此作為樣本分別進(jìn)行測試。上述影響識(shí)別的因素各異,干擾強(qiáng)度也各不相同,歸納如表1所示。通過實(shí)驗(yàn)結(jié)果可以看出,在常規(guī)情況下車牌的定位是最準(zhǔn)最快的,成功率為96.5%,平均定位時(shí)間為612 ms。在光照強(qiáng)度的影響下,車牌和車身的強(qiáng)烈反光會(huì)影響RGB提取和車牌定位;另外,系統(tǒng)雖然具有車牌的傾斜校正功能,但對(duì)于傾斜程度較大的車牌難以進(jìn)行車牌定位操作,導(dǎo)致識(shí)別率的下降。但是不管在常規(guī)環(huán)境下還是有光照和車輛角度偏移等外在因素影響下,該算法都具有較高的定位成功率和較快的定位速度。
表1 各類影響因素的測試數(shù)據(jù)
(2)相對(duì)于其他代表性車牌定位算法的測試。
任意選取90張車輛圖片,其中在常規(guī)情況下、車牌角度傾斜、復(fù)雜光線環(huán)境下各30張,利用常見有代表性的車牌定位算法和文中算法分別進(jìn)行車牌定位的測試,如多特征融合的車牌定位算法[13]、基于字符邊緣點(diǎn)提取的車牌定位方法[14]、基于顏色分割與Sobel算子相結(jié)合的車牌定位[15]。不同方法測試結(jié)果如表2所示。
表2 不同方法測試結(jié)果的比較
通過結(jié)果對(duì)比可以看出,文中所采用方法的車牌定位平均成功率達(dá)到96.7%,平均定位時(shí)間為631,與文獻(xiàn)[13-15]中的算法相比無論是在定位速度還是在定位成功率上都是最佳的。文獻(xiàn)[13]在常規(guī)條件下和車牌傾斜時(shí)的識(shí)別率很好,由于沒有使用圖像顏色的特征,所以在背景光的外在因素影響的情況下成功率不高。文獻(xiàn)[14]使用邊緣投影的途徑確定車牌水平和豎直邊界,計(jì)算量小,所以定位速度和文中算法最為接近,但是對(duì)外界影響因素較為敏感,定位效率最低。文獻(xiàn)[15]對(duì)車牌圖像執(zhí)行多尺度的分割方法,生成多個(gè)不同細(xì)節(jié)程度的分割結(jié)果,車牌定位的效果很好,但是計(jì)算量大,速度偏慢,光照不均對(duì)定位有一定影響。
針對(duì)車牌定位算法過于單一或者容易受到光線強(qiáng)度和車牌角度傾斜過大等因素影響導(dǎo)致定位成功率不高、定位時(shí)間長的缺陷,提出一種基于輪廓識(shí)別和BGR顏色空間的車牌定位方法。使用形態(tài)學(xué)輪廓定位比通過機(jī)器學(xué)習(xí)的車牌定位方法在開發(fā)難度、系統(tǒng)成本、運(yùn)算時(shí)間等方面都有明顯的優(yōu)勢;相比于直方圖分析方法可能會(huì)發(fā)生難以包容的錯(cuò)誤識(shí)別,在BGR處理后的去噪程度的圖像,能獲取車牌的準(zhǔn)確邊緣,并去除其他影響因素,只要車牌區(qū)域具有矩形特征并形成連通域就算作達(dá)到目標(biāo),具有較高的準(zhǔn)確度和普適性。此外,該方法還可以通過對(duì)顏色特征抽取公式參數(shù)和閾值的更改達(dá)到對(duì)軍警車車牌、黃色車牌定位的功能。不過,在粗定位算法的Rect截取中,也會(huì)發(fā)生未知的錯(cuò)誤,主要是坐標(biāo)的計(jì)算錯(cuò)誤或漏洞導(dǎo)致,截取坐標(biāo)超出原圖像范圍;在定位過程中還存在部分汽車前臉散熱格柵是水平和豎直形成的矩形、牌照容易污染、光線反射等因素影響定位的問題,接下來將深入研究,以期能夠找到進(jìn)一步優(yōu)化的方法。