馬永杰,陳振宇,馬蕓婷
(西北師范大學(xué)物理與電子工程學(xué)院,甘肅 蘭州 730070)
目前,國內(nèi)單行車牌號分割技術(shù)相對成熟,但對雙行車牌號的分割方法較少,并且正確分割率較低。單行車牌常見于小型車輛,如民用轎車等,雙行車牌主要用于大型車輛、摩托車以及電動自行車等。近年來,由于部分摩托車、電動自行車等未遵守交通規(guī)則而導(dǎo)致多起交通事故發(fā)生,對人民的生命和財產(chǎn)安全造成重大威脅。因此,研究雙行車牌號的識別與分割技術(shù)是非常有必要的。
常用車牌字符分割方法主要有3種。第1種是基于神經(jīng)網(wǎng)絡(luò)的車牌分割方法。趙漢理等人[1]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的雙行車牌分割算法,將包含中文字符、數(shù)字、字母的單雙行車牌進行分類,將雙行車牌分割成單行車牌,然后識別出雙行車牌號。Shi等人[2]提出了一個端到端訓(xùn)練的神經(jīng)網(wǎng)絡(luò),識別自然場景中的文字。Sharma等人[3]利用一個空間轉(zhuǎn)換網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò),直接對字符進行識別。丁進超等人[4]提出基于ROI(Region Of Interest)區(qū)域,搭建雙向長短期記憶網(wǎng)絡(luò)(BLSTM) 模型,將車牌內(nèi)字符串直接識別出來。以上基于神經(jīng)網(wǎng)絡(luò)的車牌分割技術(shù)可以準確地分割出大部分車牌,正確分割率比較高,但以上方法需要大量數(shù)據(jù),并且訓(xùn)練周期長。
第2種是基于連通域法的車牌分割方法。王艷等人[5]提出了一種數(shù)字字母都獨立的連通域分割方法,該方法首先校正分割定位成功區(qū)域內(nèi)的連通域,然后提取骨架并歸一化,與細化和歸一化后的模板匹配,最終分割出字符。牛博雅等人[6]提出了一種連通域的字符分割方法,對已去除上下邊框的車牌,提取圖像中的各個連通區(qū)域,并根據(jù)連通區(qū)域的寬度和高度對粘連字符進行分割。文獻[7,8]利用連通域分量法對車牌進行分割。其中,文獻[5-7]主要針對單行車牌進行分割,無法分割雙行車牌,文獻[8]較早提出了一種雙行車牌的分割方法,但正確分割率為55.3%,準確率比較低。
Figure 1 License plate segmentation steps圖1 車牌分割步驟
第3種是基于投影法的車牌分割方法。但斌斌等人[9]使用投影法分割圖像,對單行車牌有較好的分割效果,但投影法單一統(tǒng)計各個像素點,受噪聲的影響較大。文獻[10-15]同樣使用投影法分割車牌,對單行車牌分割效果良好,但無法分割雙行車牌。謝永祥等人[16]提出將水平投影后的圖像,用下一行車牌圖像的像素值減去上一行的,根據(jù)差值大小判斷邊界,并分割圖像。此方法雖可以分割雙行車牌號,但由于受圖像邊緣噪聲的影響,容易混淆字符和邊緣。此外,文獻[17]用水平投影分割的方法對手寫文稿進行分割,正確分割率較高,效果良好。但是,由于車牌號與手寫文稿相比,前者有邊框、磨損等諸多條件的限制,文獻中所提方法對車牌圖像分割效果不理想。
單行牌號有固定的字符排列規(guī)則,且牌號尺寸和字符寬度較大。機動車輛牌號中,最常見的雙行車牌號為大型汽車所掛牌號,有固定的字符排列規(guī)則,且牌號尺寸和字符寬度也相對較大。常見機動車輛單行和雙行牌號的這些固有特征給車牌分割帶來了方便。電動自行車等牌號與以上2種牌號相比,前者牌號尺寸和字符寬度較小,無固定的字符排列規(guī)則,且車牌底色變化多樣,這些特征給電動自行車等車牌號的分割帶來了挑戰(zhàn)。由于基于神經(jīng)網(wǎng)絡(luò)的車牌分割方法需要大量數(shù)據(jù)集,而目前電動自行車等非機動車輛數(shù)據(jù)集數(shù)量十分有限,加上此類車牌號尺寸和字符寬度較小等特點,基于連通域的方法分割效果也不理想,所以本文根據(jù)電動自行車等非機動車車牌圖像本身特點,提出一種改進的自適應(yīng)投影分割方法,可有效分割出牌號字符。
本文通過對不同底色車牌的研究,針對雙行車牌提出了一種基于HSV(Hue Saturation Value)顏色空間二值化的自適應(yīng)閾值投影方法。首先將已傾斜矯正的RGB圖像轉(zhuǎn)換為HSV圖像,然后二值化圖像,最后使用本文方法分割字符。在分割過程中,本文針對雙行車牌的特征,提出了一種自適應(yīng)閾值的分割方法。實驗表明,本文方法對雙行車牌號分割效果良好,可以對不同底色的多種雙行車牌號進行有效分割。
本文所提方法主要由圖像預(yù)處理、去邊框和字符分割3部分組成。圖像二值化過程建立在HSV顏色空間的基礎(chǔ)上,極大提高了分割的準確率。去邊框過程通過水平和垂直2個方向上的投影,去掉圖像邊框。字符分割首先把雙行車牌分割成單行車牌,然后對2個單行車牌作垂直投影,分割出字符。本文方法的具體分割步驟由圖1給出,其中,輸入為已進行傾斜矯正后的圖像。
圖像預(yù)處理部分主要由圖像二值化和圖像形態(tài)化操作2部分組成。傳統(tǒng)的圖像二值化方法首先把RGB圖像轉(zhuǎn)換為灰度圖像,然后根據(jù)灰度圖直接二值化圖像。本文方法首先遍歷圖像的色調(diào)H、飽和度S和透明度V共3個通道,通過設(shè)定閾值,修改各通道對應(yīng)像素點的值,再將得到的圖像轉(zhuǎn)化為灰度圖并二值化。圖像預(yù)處理具體步驟如下所示:
步驟1將RGB
圖像轉(zhuǎn)換為HSV圖像。轉(zhuǎn)換方法由式(1)給出,其中,(r,g,b) 分別代表某一點顏色的紅、綠、藍的顏色值,max為r,g,b中的最大值,min為r,g,b中的最小值。
v=max
步驟2遍歷HSV圖像的每個通道,根據(jù)閾值Hs二值化圖像,(x,y)處像素值F(x,y)由式(2)得到:
(2)
Tth=f(c)(x,y),c∈(H,S,V)
(3)
Figure 2 Border removal圖2 去邊框
其中,Tth為圖像坐標(x,y)的值,閾值Hs可根據(jù)實際情況設(shè)定,f(c)(x,y)表示HSV空間中的f(x,y)。本文實驗建立在OpenCV的基礎(chǔ)上,因此取Hs的值為70,此方法對藍底白字、白底紅字、綠底黑字和黃底黑字的車牌圖像可以達到理想的二值效果。
步驟3將步驟2中所得圖像轉(zhuǎn)換為灰度圖像,并再次用傳統(tǒng)方式二值化圖像。圖像灰度化方法分別由式(4)和式(5)給出,其中,R(i,j),G(i,j)和B(i,j)分別代表紅、綠、藍3個通道在坐標(i,j)處的灰度值,Gray(i,j)表示3個通道灰度值的平均值。式(5)中,dst(x,y)為二值化后的(x,y)處像素值,thresh表示所設(shè)定的一個閾值,當實際圖像的像素值src(x,y)大于這個閾值時,取其本身作為該像素點的值,否則取0。
Gray(i,j)=(R(i,j)+G(i,j)+B(i,j))/3
(4)
(5)
步驟4根據(jù)白點個數(shù),確定前景色和背景色,并進行形態(tài)化操作。
圖像膨脹的定義如式(6)所示:
A⊕B={l|Bv+l∩A≠?}
(6)
其中,A表示目標圖像,B表示結(jié)構(gòu)元素,Bv由B做自身關(guān)于原點的對稱得到,l表示當前位置。式(6)表示的意義為:首先將結(jié)構(gòu)元素的原點移至A的起始部分,求出交集,如果交集非空,將此結(jié)構(gòu)元素的原點位置像素記為1,否則記為0,然后繼續(xù)遍歷圖像A的所有區(qū)域,最后得到的結(jié)果即為膨脹后的圖像。
圖像腐蝕的定義如式(7)所示:
AΘB={d|B+d?A}
(7)
式(7)表示的意義為:將結(jié)構(gòu)元素B在目標圖像A上移動,每次將B移動d距離后,仍包含A內(nèi)的所有點組成的集合,最終得到的圖像即為圖像腐蝕的結(jié)果。
由于受各種因素的影響,所取車牌往往會包含邊框。去邊框分為去上下邊框和左右邊框2部分。圖2為去除邊框的示例,圖2d和圖2e分別為去除上下邊框和左右邊框的結(jié)果。從圖2中可以看出,本文方法可以準確去除車牌邊框。
2.2.1 去上下邊框
對于上下邊框,主要有上下邊框都有、只有上邊框、只有下邊框和上下邊框都沒有4種情況。本文針對以上4種情況,提出了一種自適應(yīng)閾值水平投影去除上下邊框的方法。具體步驟如下所示:
步驟1對車牌作水平投影。根據(jù)直方圖計算出每行包含的白點個數(shù),按從小到大的順序存儲在列表list中。
步驟2確定自適應(yīng)水平分割基準值,記為Th,其大小可由式(8)求出:
(8)
其中,L為表list的長度,k為表list的前k個數(shù),Ai為列表中的第i個數(shù),Z為波峰個數(shù)。
步驟3從上至下遍歷圖像,依此找出在閾值為Th時,波峰的起始點和終止點,并存于列表Hlist中。
步驟4根據(jù)波峰個數(shù)、波峰寬度和圖像上下邊框上白點的分布情況,確定邊框位置,并根據(jù)位置去除上下邊框,具體流程如圖3所示。
Figure 3 Flow chart of top and bottom border removal圖3 去上下邊框流程圖
在圖3中,Gi為列表Hlist中的第i個數(shù),Hi為圖像第i行。
2.2.2 去左右邊框
對已經(jīng)去除水平邊框的圖像作垂直投影,統(tǒng)計波峰寬度,然后根據(jù)波峰寬度和圖像左右兩邊白點分布情況,確定垂直分割坐標,最后得到無邊框圖像。
自然條件下,由于第1行和第2行字符疊加投影的作用,左右邊框投影所得波峰寬度小于中間字符投影后的波峰寬度,因此波峰寬度可作為判斷是否為邊框的條件。特殊條件下,由于車牌左右邊緣噪聲和非車牌區(qū)域的影響,會出現(xiàn)邊框投影所得波峰寬度等于甚至大于字符投影所得的波峰寬度的情況,此時,可將圖像左右邊緣白點的分布情況作為判斷是否為車牌邊框的條件。左右邊框可以分為有左右邊框、只有左邊框、只有右邊框和左右邊框都沒有4種情況。圖4為4種情況的垂直投影圖。圖4a和圖4b中有左右邊框,前者左右邊框分布在圖像邊緣上,掃描檢測到后,可直接按車牌邊框處理,圖4b可根據(jù)波峰的寬度情況判定邊框并處理。圖4c和圖4d分別為只有左邊框和只有右邊框的情況,可根據(jù)波峰寬度結(jié)合邊框的位置分布情況,判定左右邊框,并去掉邊框。圖4e中無左右邊框,可根據(jù)波峰寬度情況以及第1個和最后1個波峰所在位置來判定,最終得到無邊框圖像。
Figure 4 Distribution projection of left and right borders圖4 左右邊框分布投影圖
首先對已去掉邊框的車牌圖像作水平投影,分割出每一行的車牌號,然后分別對每一行的車牌圖像做垂直投影,分割出每一個字符。國內(nèi)雙行車牌第1行字符通常包含漢字、點和字母,第2行字符只有數(shù)字和字母。在第1行的漢字當中,左右結(jié)構(gòu)的字在分割時容易發(fā)生字符斷裂的情況,垂直投影后所得圖像的波峰相對較寬,因此本文在字符分割時,2行字符使用的分割方法有所不同。
第1行車牌的分割方法為:首先,對第1行車牌圖像做垂直投影,記錄每一個波峰的起始和終止位置,計算出波峰和波谷的寬度及個數(shù);然后根據(jù)波峰和波谷的寬度及個數(shù),檢測出斷裂的字符和點;最后合并斷裂的字符并去掉字符連接點,分割出每一個字符。由于第2行車牌的字符由數(shù)字和字母組成,因此在分割第2行字符時,本文不考慮字符斷裂和字符連接點的影響,直接根據(jù)第2行的波峰和波谷寬度,檢測有黏粘的字符,然后計算出分割閾值,最后分割出每一個字符。車牌字符分割的過程與結(jié)果展示如圖5所示。
Figure 5 Character segmentation圖5 字符分割
本文根據(jù)車牌特點提出的二值化方法,可以有效減少使用單一傳統(tǒng)二值化方法帶來的噪聲。圖6為本文圖像二值化與傳統(tǒng)圖像二值化對比圖,圖6b和圖6c是已經(jīng)確定了前景色和背景色,并形態(tài)化處理后的結(jié)果。圖6b中傳統(tǒng)二值化方法會使圖像產(chǎn)生較多的噪聲,這對后期圖像分割有較大的影響。圖6c所示為本文所提車牌二值化方法的效果,相比之下噪聲大量減少,圖像顯得更加干凈,有利于后期圖像的處理。
Figure 6 Comparison of binaryzation effect圖6 二值化效果比較
本文分別測試了白底紅字、綠底白字、藍底白字和黃底黑字車牌??傮w上,本文所提二值化方法效果良好,但對于曝光嚴重的圖像,二值化效果不太理想。圖7a中,圖像在部分區(qū)域反光強烈,圖7b和圖7c分別為采用傳統(tǒng)二值化方法和本文二值化方法所得結(jié)果示例圖。從圖7中明顯可以看出,在反光較強的數(shù)字“7”區(qū)域,傳統(tǒng)二值化方法的效果優(yōu)于本文二值化方法的。
Figure 7 Strong reflective images圖7 反光強烈圖像
本文對150*100的白底紅字、綠底白字、黃底黑字和藍底白字總共200幅普通條件下的雙行車牌圖像進行分割。圖8為自然條件下正確分割案例。從圖8中可以看出,本文方法可以準確分割白底紅字、綠底白字、黃底黑字和藍底白字的雙行車牌號。
Figure 8 Correct segmentation cases under natural conditions圖8 自然條件下正確分割案例
本文方法可以對被塵埃覆蓋、非車牌區(qū)域干擾以及在旋轉(zhuǎn)矯正過程中車牌邊緣與圖像邊緣產(chǎn)生空隙的牌號進行準確分割。圖9表示特殊條件下的正確分割案例。從圖9a中可以看出,車牌由于沙塵、雨水等因素的影響,表面已被塵土籠罩,第2幅圖像更加嚴重,本文方法照樣可以正確分割出字符。圖9b中除車牌本身外,還有非車牌區(qū)域的干擾,車牌邊緣與圖像邊緣間隙較大。在第2幅圖像中,車牌不僅有非車牌區(qū)域的干擾,而且車牌本身還有變形,對于這一類車牌,本文方法也可以對其進行準確分割。
Figure 9 Correct segmentation cases under special conditions圖9 特殊條件下正確分割案例
為了研究車牌旋轉(zhuǎn)角度對車牌字符分割準確率的影響,本文將圖像旋轉(zhuǎn)角度范圍設(shè)置為0°~6°,角度值步長為0.5°,依次遞增,實驗數(shù)據(jù)由表1給出。其中,錯誤率表示分割失敗的圖像數(shù)占總圖像數(shù)的比例。從表1中可以看出,當旋轉(zhuǎn)角度小于1°時,錯誤率隨旋轉(zhuǎn)角度變化的增值變大(旋轉(zhuǎn)角度為0.5°時,錯誤率為0.03%,旋轉(zhuǎn)角度為1°時,錯誤率為0.10%),出現(xiàn)這種情況的原因是車牌邊框和字符在同一方向上投影所得的疊加白點數(shù)較少。當旋轉(zhuǎn)角度達到并超過5°時,由于車牌邊框和字符在同一方向上投影所得的疊加白點數(shù)較多,錯誤率為1.00%,意味著分割失敗。綜上所述,本文方法受小幅度旋轉(zhuǎn)角度的影響比較小,受大幅度旋轉(zhuǎn)角度的影響較大。
Table 1 Relationship between rotation angle and error rate表1 旋轉(zhuǎn)角度與錯誤率關(guān)系
圖10為錯誤分割案例。圖10a中“時”字斷裂,“臨”字缺少偏旁,主要原因為圖像的對比度較低,有輕度曝光現(xiàn)象,本文實驗對象在自然條件下獲得,并未作圖像增強的處理。圖10b中由于高反光區(qū)域影響,右半部分字符丟失。
Figure 10 Error segmentation cases圖10 錯誤分割案例
Figure 11 Rivets and words cross area圖11 鉚字交叉區(qū)
圖10c中,“甘”字和“A”字上半部分缺失,主要原因如圖11所示,假設(shè)把車牌鉚釘看作一個圓,則直線l2為2個圓的公切線,直線l1定義為字符末端切線。直線l1和l2之間既有車牌鉚釘存在,也有車牌字符存在,本文把介于l1和l2之間的區(qū)域稱為鉚字交叉區(qū)。由于鉚字交叉區(qū)的影響,在分割此類車牌時會出現(xiàn)字符殘缺的現(xiàn)象,因此對于有鉚字交叉區(qū)的車牌,本文方法分割效果不理想。
表2為本文方法與文獻[1]方法的對比結(jié)果。文獻[1]方法是一種基于CNN的雙行車牌分割方法,直接把雙行車牌水平分割為2個單行車牌,所使用的訓(xùn)練集包含116 423幅圖像,訓(xùn)練時間為1 h。由于本文所兼顧車型牌號訓(xùn)練集十分有限,而基于CNN方法分割的準確率受訓(xùn)練集數(shù)量的影響較大,因此本文所提方法不需要訓(xùn)練集,也不用花太多時間訓(xùn)練。從圖7中看到,本文方法可以分割多種底色、不同車型的牌號,是一種簡單高效的分割方法。
Table 2 Comparison between the methods in this paper and convolution neural network表2 本文方法與卷積神經(jīng)網(wǎng)絡(luò)方法對比
由于目前國家沒有對非機動車雙行車牌樣式作統(tǒng)一的規(guī)定,因此車牌字符排列沒有固定的規(guī)則,不同地區(qū)的車牌字符數(shù)也不相同,所以自動統(tǒng)計車牌的準確率有難度,因此本文采用手動統(tǒng)計正確分割率的方法。首先檢查從每一個車牌上分割出來的字符是否完整,字符邊緣與分割出來的圖像邊緣是否恰好相切,如果每一個字符都滿足以上條件,則表明分割準確,然后統(tǒng)計正確分割的車牌數(shù)量,結(jié)合所使用的總數(shù)據(jù)集,最后算出車牌分割的準確率。
本文使用的車牌圖像總共有200幅,其中,黃底黑字的機動車車牌25幅,非機動車車牌共175幅,包括電動自行車車牌155幅、電動三輪車車牌20幅,不同類型的車牌數(shù)量和準確率由表3給出。從表3中可以看出,本文方法對白底紅字的車牌分割準確率最高,達到90.2%,藍底白字和綠底白字的車牌分割準確率分別為89.2%和88.5%,黃底黑字的機動車車牌分割準確率為76.0%。相比于前3種車牌,黃底黑字的車牌分割準確率最低,主要原因是受車牌鉚釘?shù)挠绊?,部分圖像進行水平投影后,無法準確計算出字符上邊界的位置坐標,本文方法并未對車牌鉚釘做相應(yīng)的處理。在所有車牌圖像中,非機動車車牌正確分割數(shù)量為157幅,準確率為89.7%,機動車車牌分割準確率為76.0%,總分割準確率為88.0%,由此可見本文方法對非機動車車牌的分割準確率明顯高于機動車車牌的。
Table 3 Accuracy of different types of license plates表3 不同類型車牌準確率測試結(jié)果
本文方法和其它方法準確率對比數(shù)據(jù)由表4給出。文獻[8]使用連通域分量法分割車牌號,此方法對單行車牌號分割準確率較高,但分割雙行車牌號時,常將邊框與字符混淆,因此準確分割率較低。文獻[18]基于馬爾可夫鏈的先驗知識嵌入方法以及字符分割技術(shù)對雙行車牌號進行分割,取得了比較好的結(jié)果,但由于在去邊框時,利用Hough變換獲得二值化圖像中最長直線作為邊框并處理的方法,導(dǎo)致邊框去除不徹底,并且在進行連通域標記時,容易將邊框也標記進去,因此,該方法對自然條件下的圖像準確分割率比較低。文獻[8]和文獻[18]中所提方法都需要作連通域標記,對尺寸較大的大型客車等的機動車輛牌號分割效果稍佳,但對小尺寸車牌作連通域標記時,容易發(fā)生字符與邊框、字符與字符粘結(jié)的情況。本文使用改進的二值化方法二值化圖像,極大減少了圖像噪聲;提出的自適應(yīng)閾值投影方法,極大提升了水平切割的準確度;細化了去邊框過程,極大提高了去邊框準確度。從表4中可以看出,本文方法分割率明顯高于以上2種方法的。
Table 4 The accuracy of this method iscompared with other three methods表4 本文方法與其它3種方法準確率對比
文獻[1]基于CNN的方法直接將雙行車牌分割為2個單行車牌,并未分割出車牌單個字符,且使用大量訓(xùn)練集訓(xùn)練模型,所以準確率為97.53%,是目前機動車輛雙行車牌分割算法中準確率最高的方法。本文方法準確率雖然沒有文獻[1]方法高,但可以直接把車牌單個字符分割出來,能有效分割電動自行車等非機動車車牌圖像,同時規(guī)避了目前非機動車等車牌號訓(xùn)練集少,而基于CNN的方法需要大量訓(xùn)練集的問題,是一種簡單、便捷、高效的分割方法。
為了有效分割雙行車牌,本文提出了一種自適應(yīng)閾值投影分割方法,同時,針對車牌本身特點,提出了一種新的二值化方法,該方法利用車牌圖像在HSV顏色空間的特性,結(jié)合傳統(tǒng)二值化方法二值化圖像,通過自適應(yīng)閾值解決了國內(nèi)雙行車牌號分割方法針對車型單一且準確率低的問題。與已有方法相比,本文方法能在分割大型機動車輛牌號的同時,也能對電動自行車等非機動車牌號進行準確分割。未來需要進一步降低由于反光強烈、車牌鉚釘突出等因素導(dǎo)致的分割誤差。