楊 碩,周霜菊,張志杰
(1.沈陽化工大學 計算機科學與技術學院,遼寧 沈陽 110142;2.成都大學 美術與影視學院, 四川 成都 610106;3.西南民族大學 計算機科學與技術學院,四川 成都 610041)
車牌定位算法是一種已經被學者深入研究的算法,現有的算法可以分為以下幾類:①基于邊緣、紋理等幾何特征的算法:車牌的形狀、字符的邊緣梯度和紋理等,都是常用的幾何特征。這些特征可以通過邊緣(或直線)檢測算法[1-3]、數學形態學[4,5]算法或特征點檢測[6,7]算法等檢出。該類算法具有簡單、高效的優點,因此被廣泛使用;②基于顏色特征的算法:顏色特征一般通過色彩空間變換提取[3,5,8]。顏色特征容易受到光照變化的干擾,因此,常將顏色與邊緣、紋理等幾何特征結合使用;③基于圖像變換的算法:使用圖像變換可以提高算法抵抗復雜環境和噪聲干擾的能力。如:使用圖像金字塔[9]在空間域對車牌圖像變換可以增強算法抵抗噪聲干擾的能力;使用小波變換[10,11]可以在頻率域內提取車牌的紋理特征,并可以提高算法抵抗光照變化的能力;④基于分類器的算法:使用神經網絡[7]、支持向量機[11]、Adaboost[12]等算法,可以將車牌定位問題轉化為目標檢測問題,提高了算法在復雜環境下的車牌檢測效果;⑤基于多特征融合的算法。使用單一特征容易受到環境制約,新近的算法至少使用兩種或者兩種以上的特征定位車牌,如:使用邊緣-顏色特征組合[3],使用紋理-顏色特征組合等[5]。在本文的前期工作中,即文獻[6],甚至使用了5種特征:水平垂直邊緣、車牌矩形、字符紋理、顏色和車牌色飽和度投影,進行精確的車牌定位。
上述提到的邊緣、顏色和角點等特征是圖像處理領域最常使用的特征,這些特征雖然能夠較好地完成車牌檢測,但不一定是最優的,具體表現在:這些簡單特征并非專為車牌設計,且上述算法往往只是在時間上依次利用多種特征,而不是在同一時間融合使用,因此難免會出現流程復雜、特征融合程度和利用率不高等問題。為此,本文提出了一種點-段結構的新特征專用于車牌檢測:點是指圖像邊緣上的點,并且只篩選那些具有車牌顏色的點,同時使用了顏色和邊緣特征;段是指由點連成的線段,通過計算線段上像素值的統計特性可以獲得車牌的紋理特征,對于藍白車牌,段可以分為藍段和白段,藍段對應車牌背景底色,白段對應車牌字符筆畫,同時使用了筆畫特征。因此,從特征的使用上,點-段特征在同一時間融合了4種車牌特征。
在特征的處理上,點-段特征使用了聚類算法。車牌字符筆畫的寬度是近似相同的,因此,對于白段,可以用聚類算法對白段的長度聚類,保留那些長度一致的白段,作為特征候選。同理,圖像中,車牌局部的亮度分布一般情況下是均勻的,這樣可以繼續依據顏色飽和度分對藍段進行聚類,保留顏色均勻的段作為最終的候選。因此,本文算法是一種多特征融合的車牌檢測算法,同時,由于筆畫特征的加入,明顯提高了車牌定位的成功率。
車牌字符作為一種打印字體,筆畫具有一定的粗度,其英文和數字字符的粗度近似相同,這種固有的結構特征是區分車牌字符與圖像中其它目標的一個重要的標志。文獻[13]提出了一種在街景中定位廣告牌或標示牌中字符位置的算法,算法的依據就是打印體下字符筆畫同寬的性質,其算法獲得字符寬度的原理如圖1所示。

圖1 打印體字符寬度的獲取
圖1中,算法首先獲得邊界的梯度方向,兩個相反梯度所對應的線段的長度就是筆畫的寬度。本文方法借鑒了這種思路。
本文以最常見的藍白牌為例說明算法原理,算法流程如圖2所示。對于黃黑等車牌,采用的方法與藍白牌類似。

圖2 算法流程
對于輸入的彩色圖像,首先進行預處理,以提高圖像質量。預處理的步驟為:
(1)圖像去噪:使用高斯濾波器去除噪聲,圖像經過高斯平滑后,可以提高后續的梯度和邊緣算法的準確性。
(2)將圖像色彩空間轉換到HSV空間并對亮度通道進行直方圖均衡化處理。這樣做可以提高圖像對比度,改善光照不均帶來的影響。
我國藍白車牌的形狀為矩形,大小為440 mm×140 mm,藍底白字,由1位漢字和6位字母或數字組成。由于車牌在設計之初就考慮了容易辨認的問題,因此,從圖像上看,車牌的外形輪廓和字符邊緣與圖像中的其它目標相比非常明顯。
拍攝車牌圖像時,一般能夠保證車牌近似水平,在此前提下,掃描圖像時,水平掃描車牌要依次進過7個字符,而垂直掃描僅進過1個字符,或不經過任何字符(從字符間隔穿過)。因此在計算圖像梯度和邊緣時,僅在水平方向上進行,不僅能有效降低計算量,同時對后續檢測的影響也很小。
令Irgb為車牌的RGB彩色圖像,Igray為灰度圖像。本文使用Sobel算子提取車牌梯度,使用的算子模板為
(1)
式中:kx為x方向的Sobel算子模板,用kx與Igray卷積可以獲得x方向上的梯度圖像Gx。
對Gx進行二值化處理可以得到邊緣圖像E
(2)
其中,a是由Otsu算法獲取的自適應閾值。
首先,根據邊緣圖像E指示出的邊緣位置,篩選藍色的像素點,篩選條件如下
(3)
其中:Ir,Ig和Ib分別為彩色圖像的紅、綠和藍通道;λ為大于0的閾值,本文中設置為5,較低的閾值可以保留較多的藍色像素,防止在后續的流程中發生漏檢現象。經過顏色挑選后的邊緣圖像稱作藍色邊緣圖像,記作Eb(x,y)。
同時,為了降低后續處理的計算量,需要在水平方向上對Eb(x,y)進行細化,具體做法為:水平掃描Eb(x,y),根據連通性得到具有一定寬度的邊緣,僅保留中心邊界作為細化結果,如圖3所示。

圖3 水平邊緣細化結果
經過細化后的邊緣,邊緣僅由1個像素點組成,這些點同時帶有車牌的顏色和邊緣特征,即藍色邊緣像素點,記作Ebe(x,y)。
同時,為了組成點-段特征,對于Ebe(x,y)中的每個邊緣點,需要獲得邊緣的梯度方向。根據前面的分析,這里只需要確定梯度的朝向即可,即:朝向左(角度為180°)或者朝向右(0°),而不需要精確計算梯度的角度。令Ang為梯度方向,Ang的獲取的方法為
(4)
點-段特征由3個點和2個線段組成,如圖4所示。

圖4 點-段特征
3個點分別為Pl,Pc和Pr,均定義在Ebe(x,y)中,2個線段為Sl和Sr,Pc作為線段的公共點。點-段特征的獲取和篩選方法為:
步驟1 沿水平方向掃描藍色邊緣圖像Ebe(x,y),每遇到連續的3個邊緣像素點,將它們記作Pl,Pc和Pr,轉步驟2繼續。
步驟2 檢測這3點是否滿足以下條件:Pl和Pr梯度方向相同,即Ang(Pl)=Ang(Pr),且Pc的梯度方向與Pl和Pr不同。滿足以上條件轉步驟3,否則轉步驟2繼續掃描圖像。
步驟3 定義段長度比例為Rt=Max(Sl,Sr)/Min(Sl,Sr)。過濾掉Rt>11的點-段特征,轉步驟4(極限情況下,如車牌中“L”字符和“J”字符相鄰出現,此時Rt的值大致為11,其它情況下均遠小于該閾值)。
步驟4 分別統計Sl和Sr段內像素的RGB均值,用下式計算段的平均亮度和藍色平均對比度

(5)

點-段特征經過初篩后,還有可能存在干擾,需要進一步過濾。對于段Sl和Sr,亮度較大的段(白段)的長度為實際上字符筆畫的寬度(圖1),而同一圖像同一車牌內字符筆畫的寬度是大致相同的,因此,可以根據筆畫的寬度排除不屬于車牌字符的點-段。另一方面,藍色飽和度較大的段對應著車牌底色背景,對于車牌局部,其底色(藍色)的飽和度是近似相同的,因此,可以再次根據藍色飽和度對點-段特征聚類,進一步排除干擾。具體使用的聚類算法為:
輸入:原始數據Din={d1,…,dN}。
輸出:聚類后的數據Dout={d1,…,dM},M 參數:聚類閾值τ,迭代次數最大值itMax。 步驟1 初始化令Dout=Din,迭代次數it=0。 步驟2it=it+1,計算Dout內數據的均值,記為μit。 步驟3 在數據Dout中尋找與μit差異最大的數據,假設為di,判斷:如果di-μit大于閾值τ,則將di從Dout中移除。 步驟4 繼續迭代,直到it大于itMax或者Dout中沒有數據與μit與差異大于τ。 圖5(a)為篩選、聚類后的點-段特征,圖5(b)是對“段”圖像進行形態學閉運算后的結果。 圖5 點-段特征及特征圖像 圖5(b)得到的“段”圖像指示出了車牌可能出現的區域。使用類似文獻[6]的做法定位車牌:首先,將圖5(b)中白色像素所在位置的色飽和度值向垂直方向投影,如圖6所示,色飽和度圖像中,車牌字符的飽和度值遠小于車牌藍色背景,因此投影后,字符間隔將出現峰值;然后,為了檢測這些峰值,定義一個柵欄狀濾波器,如圖6中豎線,將不同尺度的柵欄濾波器與飽和度投影圖像做卷積,響應最大的位置就是車牌在圖像的水平位置;最后,根據車牌的寬高比以及已經確定了的水平寬度,用矩形包圍框從上至下掃描圖5(b),包含白色像素最多的包圍框就是車牌定位的結果。 圖6 色飽和度投影 實現算法的軟件環境為:Windows 7操作系統,Qt5.0,OpenCV2.4.9,部分功能函數使用了GPU加速實現。主要硬件環境為:Thinkpad x230筆記本電腦,Core I3(2.4 GHz)四核CPU,8 G內存。實驗數據集包含800幅含車牌的圖像以及400幅不含車牌的圖像。包含車牌的圖像主要來自于網絡截圖、路口監控以及人工拍攝,每幅圖像中車尾或車頭所占圖像的比例不少于60%,多數車牌圖像帶有一定程度的傾斜,但傾角不大于30°。不包含車牌的圖像主要是路旁街景。同時,為了便于處理,在保證原圖像寬高比的情況下將所有圖像分辨率的大小調整到400×300以下。 表1為本文算法的主要參數設置。 表1 算法主要參數 圖7為本文算法的車牌定位效果,對于成功定位的車牌,使用了文獻[6]提到的車牌字符分割算法并將字符以二值化方式顯示。 圖7 本文算法定位結果 圖7的實驗中包含了大部分復雜環境,如:顏色干擾(“湘BY2054”和“粵JPG999”的車身均為藍色),傾斜的車牌(“粵CFL980”,“遼ANB082”和“粵BOPA09”),復雜的背景和光照條件(“遼M66B66”和“浙BY1V13”)等。從結果可以看出:本文算法在復雜條件下能夠準確地定位出車牌。 為了驗證本文算法的效果,這里選擇了4個在特征選取和算法上具有特色或具有代表性的車牌定位算法:①文獻[4]提出的基于邊緣特征和使用數學形態學處理的算法;②文獻[3]提出的基于邊緣、顏色和紋理特征的算法;③文獻[12]提出的基于顏色特征和使用AdaBoost分類器的算法;④文獻[6]中的基于邊緣、紋理和顏色多特征融合,并使用特征點分類的算法。這些對比算法均根據原論文描述實現,并在同本文算法完全相同的軟硬件環境下運行。 對比所使用的評價指標包括: (1)成功率:正確定位的數目/正例數目(800個),正確定位的標準是:算法輸出的車牌包圍框與絕對真包圍框的覆蓋比率大于50%; (2)精確度:正確定位的數目/(正確定位的數目 + 誤檢數目); (3)平均準確率:正確定位的車牌中,算法輸出的包圍框與絕對真包圍框的覆蓋比率的平均值。 詳細的對比結果見表2。 表2 算法比較結果 從結果可以看出,本文算法的成功率、精確度和平均準確率均不低于對比算法,特別是在成功率和精確度方面具有明顯的優勢。本文算法的車牌定位過程可以分為粗定位和精確定位:粗定位基于點-段特征,不僅利用了邊緣、顏色和紋理特征,同時也很好的利用了筆畫特征,因此能夠以較高的成功率得到車牌的大致位置;精確定位使用了文獻[6]提出的柵欄濾波器,因此平均準確率與文獻[6]算法一致。而對于其它3種算法:形態學算法因為沒有使用顏色特征導致實驗效果較差;邊緣顏色算法同時使用了兩種特征,并且邊緣和顏色能夠形成特征互補,表現稍好,但該算法僅使用灰度投影給出了車牌粗定位結果,因此定位的準確率較差;AdaBoost算法使用基于Haar特征的分類器,而Haar特征對車牌的筆畫結構響應較好,同時該算法也使用了顏色特征,因此該算法的定位效果較好;特征融合算法是本文的先期算法,融合了多種車牌特征,具有較好的檢測效果。 算法的運行時間對比見表3。 表3 算法效率比較 本文算法使用了OpenCV提供的GPU函數接口加速了矩陣處理和色彩空間變換等的運算過程,從運行效率上看,本文算法處于平均水平。對比算法中,形態學算法和邊緣顏色算法由于算法簡單,速度較快;AdaBoost算法由于要產生大量的Haar特征用于分類,因此速度較慢;特征融合算法在整幅圖像尺度上使用了特征點檢測算法,并使用了滑動窗口的方法精確定位車牌,因此在一定程度上影響了效率。 相比文獻[6],本文算法優化了處理的流程,先用處理速度較快的邊緣顏色特征排除大量的干擾,后面的筆畫和顏色聚類雖然較耗時,但此時處理的特征數目已經被大大降低,因此不會明顯地影響速度。 提出了一種專用于車牌定位的點-段特征,該特征較好地融合了邊緣、顏色、紋理和筆畫這4種最有效的車牌特征。同時,通過優化算法流程,在處理前期排除大量的干擾,提高了算法的效率。實驗結果表明,所提出的特征和算法能夠顯著提高車牌定位的成功率和精確度。 算法的不足方面:算法是以藍白車牌為主要處理對象,雖然通過簡單的修改能夠處理黃黑車牌,但目前還不能給自動的判斷車牌的類型,這些問題將會在進一步的研究中加以解決。
2.6 定位車牌

3 實驗及分析
3.1 參數設置

3.2 車牌定位效果

3.3 對比實驗


4 結束語