張玉祖 羅素云
(上海工程技術(shù)大學(xué)機械與汽車工程學(xué)院 上海 201620)
據(jù)統(tǒng)計,截至2018年底全國汽車保有量達(dá)2.4億輛,道路交通問題出現(xiàn)的越來越頻繁。僅僅依賴增加多條道路的數(shù)量和人力資源的監(jiān)督,已經(jīng)不能夠解決當(dāng)今的交通道路問題。為了從根本上解決交通安全問題問題,建立智能交通系統(tǒng)(ITS)已成為必然的趨勢[1]。ITS為解決道路交通安全問題,全面考慮了汽車、行人、道路等多種因素。汽車牌照作為一種識別標(biāo)志,能夠既快速又準(zhǔn)確地識別車牌號碼在ITS中尤為重要。對于傾斜車牌矯正技術(shù),我國提出了霍夫變換[2~3]、Radon變換[2]等方法實現(xiàn)車牌的矯正。但是上述方法在邊框遮擋或車牌模糊的情況下卻仍然很難達(dá)到期望的效果。又因為識別系統(tǒng)采集的車牌圖像存在傾斜、字符粘連的情況,難以快速定位、矯正等問題,導(dǎo)致識別效果差,故本文提出一種傾斜車牌定位與矯正方法,實現(xiàn)車牌定位、傾斜矯正與字符分割、識別。
從彩色(REB)圖像中提取出有效信息,往往采用灰度化處理[5]。由于計算機處理灰度圖像更加快速,且占用的內(nèi)存更小,故將彩色圖像轉(zhuǎn)換為灰度圖像?;叶然幚碇傅氖菍GB圖像中三原色R、G、B分量分別乘上不相同的權(quán)值,再加權(quán)平均。公式[6]為
其中:經(jīng)過實驗論證,為得到較為合適的灰度圖,WR、WG、WG分別取值0.299、0.587、0.114。Y為灰度化處理后的圖像的像素值,R、G、B分別為彩色圖中紅、綠、藍(lán)三原色的分量。效果如圖1(a)所示。
圖1 圖像預(yù)處理
噪聲會影響圖像的質(zhì)量,故為降低噪聲對圖像的干擾,本文使用高斯濾波的方法將圖像進行去噪處理。高斯濾波屬于線性平滑濾波,是圖像減噪中應(yīng)用最廣的,其主要是用來消除高斯噪聲。圖像高斯濾波簡單來說,是通過高斯核函數(shù)對圖像進行卷積運算。高斯核函數(shù)[6]的公式為
其中,x和y分別表示距離坐標(biāo)原點的水平和垂直距離,σ為高斯分布中的標(biāo)準(zhǔn)差。本文為了去除掉在圖像中的多余噪聲,且保留更多的車牌字符信息,選用高斯濾波器5×5的核函數(shù),進行降噪處理。效果如圖1(b)所示。
基于顏色的二值化處理就是通過顏色信息將圖像二值化,正常曝光的車牌各個通道的顏色信息大約是Blue=138,Green=63,Red=23。但是顏色信息有一定的偏差,因此在二值化時放寬顏色條件,然后再通過其他特點來精確尋找車牌區(qū)域。本文設(shè)置各個通道的偏差值為50。
二值化指的是在圖像中選中一個閾值T,當(dāng)圖像中存在某個灰度值大于T時,將其灰度值設(shè)置為255,否則即為0。公式如下:
選擇閾值T時,采用自適應(yīng)閾值法。二值化后的圖像如圖1(c)所示。
從二值化的圖像可以看出車牌區(qū)域基本完整,其他地方有一些細(xì)小的干擾,接下來進行形態(tài)學(xué)處理,消除小區(qū)域干擾。形態(tài)學(xué)閉操作——先膨脹后腐蝕,其特點是填充細(xì)小空間,連接臨近物體和平滑邊界,不同矩形窗的大小會有不同的結(jié)果[5]。形態(tài)學(xué)效果如圖1(d)所示。
鑒于車牌本身就存在特殊性,如輪廓尺寸、形狀等,故能夠依據(jù)其特點來進行定位。
1)車牌的長、寬比例在一定范圍內(nèi)。車牌寬度為440mm,高度為140mm,寬高比大約為3.14。
2)車牌是一個矩形的邊框,在其邊框中存在均勻間隔的字符。
3)車牌的矩形區(qū)域中,有規(guī)則的紋理特征和豐富的邊緣信息。
4)字符和車牌底色的灰度值差異明顯,有突變。
5)車牌中字符的寬度和高度分別為45mm和90mm,其比值為0.5。
國內(nèi)標(biāo)準(zhǔn)的車牌外輪廓為矩形,尺寸為440×140mm2,其寬高比的比值約為3∶1[13]。故可以利用這種固有特征進行車牌邊框提取車牌。
先對原圖進行灰度化、降噪,再進行基于顏色信息圖像二值化,使用形態(tài)學(xué)的膨脹閉處理使圖片中的邊緣連通起來,形成類似矩形的區(qū)域。最后運用尺寸驗證算法得到車牌的區(qū)域。
處理步驟如下:
1)尋找各個空白區(qū)域外輪廓并計算面積;
2)為各個空白區(qū)域增加外接矩形并計算面積;
3)通過外輪廓面積與外接矩形的比值,判斷區(qū)域的矩形度;
4)進一步判斷長寬比;
5)滿足全部條件確定車牌區(qū)域。
6)提取車牌區(qū)域。
車牌定位圖像如圖所示。
圖2 車牌區(qū)域
圖3 提取車牌
在汽車車牌字符識別系統(tǒng)中,較為理想的是其采集的圖像中的車牌區(qū)域應(yīng)均近似為矩形,但在實際的道路環(huán)境中,拍攝的相機的位置是固定不變的,車輛的形態(tài)是變化的。這樣相機拍攝的角度有差異,會導(dǎo)致相機拍攝出來的車牌圖像存在傾斜的情況。其進行初步定位時,其閾值會存在一些偏差,造成初步定位后的車牌圖像會包含非車牌的部分圖像,如邊框、鉚釘?shù)?。這樣若直接進行下一步的字符分割與識別,可能會出現(xiàn)誤差[7,10]。所以,在車牌進行初步定位之后,需要將車牌傾斜矯正,再進行后續(xù)的車牌字符分割等處理。
車牌矯正的主要方法有兩種:霍夫變換和Radon變換?;舴蜃儞Q主要是對上下邊框的檢測,當(dāng)車牌的邊框存在不清晰或被污染的時候,無法實現(xiàn)計算需要傾斜的角度值[10]。Radon變換是將圖像在不同的角度的投影直方圖進行比較,來得到車牌需要傾斜角度,這種方法比較復(fù)雜,且計算量高,且容易受到噪聲的干擾,其魯棒性較差。
圖4 車牌傾斜矯正算法流程圖
本文提出了一種基于外接矩形與仿射變換相結(jié)合的車牌矯正方法,首先提取每個字符的外接矩形和最小的外接矩形;再利用RANSAC算法作直線擬合;最后采用仿射變換的方法,將車牌四個頂點仿射變換后的矩陣,得到變換后的車牌標(biāo)準(zhǔn)尺寸。
圖像的預(yù)處理能夠提取到感興趣的連通區(qū)域,并且去除了部分噪聲[15]。本文主要的預(yù)處理步驟如下。
1)直方圖均衡化。將定位后的車牌圖像進行灰度化處理,將灰度圖像進行直方圖均衡化,作用是使得圖像的對比度提高,且亮度更加均衡。
2)形態(tài)學(xué)去噪。將圖像采用3×3的形態(tài)學(xué)算子進行先腐蝕后膨脹的操作,作用是除去細(xì)小噪聲區(qū)域。
在預(yù)處理后的車牌圖像中,提取字符外接矩形,字符的外接矩形端點位置大致分布在一條直線上,其余偏離此直線的點為噪聲點。在實際應(yīng)用中獲取到的數(shù)據(jù),存在噪聲數(shù)據(jù)不利于模型的構(gòu)建,噪聲數(shù)據(jù)點稱為outliers,反之,有積極作用的數(shù)據(jù)點就為inliers。RANSAC算法是隨機的選取一些點構(gòu)建一個模型,用此模型去篩選其余的數(shù)據(jù)點,若該數(shù)據(jù)點在誤差范圍內(nèi),判為inlier,否則為outlier。inliers的數(shù)量需滿足設(shè)定的某閾值,則數(shù)據(jù)點集就可以接受,否則需要不斷重復(fù)該步驟,直到滿足該閾值。此時構(gòu)建的模型為最優(yōu)模型。
因此,車牌圖像需要進行以下處理:
1)首先先建立候選點集合P包括全部的外接矩形端點。
2)采用RANSAC算法對P中的點隨機取點,擬合直線L。
3)從P中刪除掉距離該直線L上最遠(yuǎn)的點。
4)重復(fù)步驟2)、3),直到點集中,且剩余點的個數(shù)為14。
執(zhí)行以上步驟后,能夠刪除掉字符區(qū)域以外的大部分的噪聲點。設(shè)置閾值T為22.5,將外接矩形的端點到直線L的距離小于T的矩形作為侯選矩形集合。
仿射變換屬于線性變換,表示的是兩幅圖之間的一種映射關(guān)系。仿射變換可表示:旋轉(zhuǎn)(線性變換)、平移(向量加)、縮放操作(線性變換)。其優(yōu)勢是圖像能夠保持平直性、平行性。仿射變換主要利用getRotationMatrix2D()函數(shù)得到。
圖5 仿射變換原理圖
在原始坐標(biāo)系下,點P的坐標(biāo)是(Xsp,Ysp)。旋轉(zhuǎn)坐標(biāo)系中某個點,能夠等同于旋轉(zhuǎn)坐標(biāo)軸,故建立屏幕水平垂直和以(Xs0,Ys0)為中心的虛線坐標(biāo)系。在此坐標(biāo)系中找到P的坐標(biāo),和在原坐標(biāo)系中旋轉(zhuǎn)后P的坐標(biāo)是等同的。故只需計算出P在新坐標(biāo)系中的坐標(biāo),P在新坐標(biāo)系中的X和Y坐標(biāo)為(Yspsin θy+Xspcos θx,Yspcos θy-Xspsin θx)。仿射變換模型為
旋轉(zhuǎn)后,在P在新坐標(biāo)系中的位置基礎(chǔ)上加上其在X軸、Y軸的偏移量,得到:
使用仿射變換的傾斜矯正主要分為三個步驟:求解仿射變換矩陣,對頂點直接的映射,解出變換矩陣。對于定位后的車牌,首先進行旋轉(zhuǎn)角度的判定,在-5°~5°范圍內(nèi)車牌直接輸出,在-60°~-5°和5°~60°范圍內(nèi)車牌,首先進行偏斜程度的判定,如果偏斜程度不嚴(yán)重,旋轉(zhuǎn)后輸出,否則旋轉(zhuǎn)角度后還需要仿射變換。
圖6 算法效果圖
本文提出的算法與傳統(tǒng)算法相比,在車牌邊框殘缺或無邊框時,其矯正速度快且準(zhǔn)確率較高。為驗證本文算法的有效性,設(shè)計了兩組實驗:車牌邊框不完整的圖像和去除車牌邊框的圖像各100張。分別采用Hough變換、Radon變換和本文方法進行車牌圖像傾斜矯正,實驗結(jié)果如下。
實驗一,對車牌邊框殘缺圖像進行矯正,結(jié)果見表1。
表1 實驗一
實驗二,去除車牌邊框的圖像進行矯正,實驗結(jié)果見表2。
表2 實驗二
從以上實驗結(jié)果可以看出:Hough變換由于缺失邊框信息,其矯正的準(zhǔn)確率明顯下降。在沒有車牌邊框時,其準(zhǔn)確率最低。Radon變換雖然準(zhǔn)確率較好,但其矯正速度過慢。本文算法對于邊框的有無,幾乎沒有影響,且矯正速度較快,準(zhǔn)確率也好。
汽車車牌上的第2和3個字符中間,存在一個圓圈的間隔點,在字符分割時,容易被誤判為一個字符,使得字符分割錯誤。首先,去除間隔符,以免分割時誤認(rèn)為車牌字符[9]。本文基于數(shù)學(xué)形態(tài)學(xué)的相關(guān)知識,在OpenCV中,進行核為(5×5)的開運算(先腐蝕后膨脹),消除掉間隔符,如圖7所示。
圖7 去除間隔符后圖像
字符分割的基本方法是將字符進行垂直投影。簡單來說,以(x,y)處像素值來進行判斷,當(dāng)像素值為255時,p(x,y)的值為1;像素值為0時,p(x,y)的值就為0。由此所得的f(x)會有峰谷的特征,在每個相應(yīng)的波谷處,進行垂直方向的分割,便獲得了單個的字符[14],如圖8所示。
圖8 字符分割結(jié)果
車牌字符主要分為三種:阿拉伯?dāng)?shù)字、漢字和英文字母。阿拉伯?dāng)?shù)字0~9;英文字母取A~Z(其中數(shù)字1和字母I、數(shù)字0和字母O不容易辨別,故去除英文字母O、I);漢字共有31個,除專用號牌外,一般為省、自治區(qū)、直轄市的簡稱,如“豫”,“滬”,“蘇”等。
本文采用KNN算法實現(xiàn)。k近鄰法是一種基本分類與回歸方法[4]。對于分類問題,給定l個訓(xùn)練樣本(xi,yi),其中,xi和yi分別代表特征向量和標(biāo)簽值,k和a分別代表設(shè)定的參數(shù)和類型數(shù),x代表待分類樣本的特征向量。
其算法的流程:在訓(xùn)練樣本集中取k個距離x最近的樣本并將選取的這些樣本的集合記為M。統(tǒng)計集合M中每一類樣本的個數(shù)Ai,i=1,…,a,其得到的最終分類結(jié)果為arg maxiAi。距離函數(shù)采用的是歐幾里得距離[11~12]。對于Rn空建中有兩個點x和y,這兩點間的距離函數(shù)為
車牌字符識別步驟:
1)采集車牌字符的圖像:訓(xùn)練圖片有數(shù)字0~9,字母A~Z(除O、I外),漢字,各30張圖片。
2)提取圖像特征:將圖像轉(zhuǎn)換為由0和1組成的txt文件且大小都為32×32。
3)kNN算法識別:將二進制的圖像32×32轉(zhuǎn)換為向量1×1024。對測試樣本進行kNN分類并得到測試樣本的結(jié)果。識別結(jié)果如圖9所示。
圖9 車牌識別號碼
本文利用了顏色特征與形態(tài)學(xué)相結(jié)合方法對車牌區(qū)域進行粗定位,并基于車牌字符外接矩形與仿射變換相結(jié)合的方法來進行車牌的矯正方法。字符分割采用垂直投影的方法,可以有效地分割字符,并用KNN算法對字符進行識別,取得了較好的效果。但在實際的道路應(yīng)用中,情況會更復(fù)雜多變,車牌圖像會受到很多因素的干擾,故還需要進一步提高識別率和速度。