唐瀛,閆仁武
(江蘇科技大學計算機學院,鎮(zhèn)江 212003)
隨著我國經(jīng)濟的持續(xù)良好發(fā)展,機動車保有量持續(xù)增長[1]。汽車在給人們帶來便利的同時也帶來了交通擁擠、環(huán)境污染等一系列社會問題,這些問題隨著汽車數(shù)量的增加日益嚴重[2]。車牌識別系統(tǒng)[3]不僅可以實現(xiàn)車輛快速進出,減少碳排放量和車輛損耗,降低PM值,而且可以顯著降低交通管理中的運營成本,節(jié)約人力資源,提高服務速度[4]。車牌識別系統(tǒng)性能最重要的影響因素就是車牌字符識別的算法選擇。在一些小樣本分類問題上,SVM表現(xiàn)非常好,因此,本文提出了一種優(yōu)化SVM算法[5-6]的方案并進行深入研究。
在一個車牌識別系統(tǒng)中,一般按流程可分為以下4個步驟:①車牌圖像獲?。虎谲嚺贫ㄎ?;③車牌字符分割;④車牌字符識別。主要流程如圖1所示。
圖1 車牌識別系統(tǒng)流程
車牌圖像獲取又分為圖像灰度化[7]、平滑處理、邊緣檢測與提?。?]和形態(tài)學處理四個步驟,有助于車牌的定位與識別。
1.1.1 車牌圖像灰度化
圖像預處理包含許多方法,目的是讓后續(xù)的操作與程序運行具有更快的處理速度或者得到更符合識別信息的圖像,對整個系統(tǒng)的識別效能影響重大。一張普通的彩色圖像由很多像素點組成,而每個像素點都是由紅、綠、藍(RGB)三元色組成,而一張包含車牌的圖像除了車牌以外,還存在其他的顏色信息所干擾,所以本文選擇首先對車牌圖像進行灰度化處理,以過濾掉圖像中存在的其他信息,提高運算速度。其灰度化公式為:
其中,xyz是灰度化的處理系數(shù),當取值為x=2.99,y=0.587,z=0.114時,原圖以及得到的圖像如圖2和圖3所示。
圖2 原圖
圖3 灰度化處理后結(jié)果
1.1.2 平滑處理
“平滑處理”也稱“模糊處理”(blurring),是一項簡單且使用頻率很高的圖像處理方法。平滑處理的用途很多,但最常見的是用來減少圖像上的噪聲或者失真。通過提取邊緣和形態(tài)學處理能夠獲得大致的車牌區(qū)域,但還是會受到一些噪聲和其他因素的影響。高斯濾波的通用性與性能都比較好,并且由于是線性濾波,算法的時間復雜度很小。因此在實際項目中我們使用高斯模糊去噪對圖像進行平滑處理,來消除噪聲和其他因素的影響。得到的圖像如圖4所示。
圖4 平滑處理后結(jié)果
1.1.3 邊緣檢測
邊緣檢測本質(zhì)上就是一種濾波算法,通過濾波來提取圖像特征,消除圖像數(shù)字化時所混入的噪聲。常用的邊緣檢測算子有Soble算子、Rob?erts算子、Canny算子等。Roberts算子常用于獲取圖像的邊緣,而且定位準確,所以我們選擇它來進行邊緣檢測。Roberts算子是利用局部差分尋找邊緣線條,利用對角線方向相鄰兩元素之差近似梯度幅值來檢測邊緣,對于原始圖像f(x,y),Roberts邊緣檢測輸出圖像為g(x,y),該算法處理在圖像邊緣接近于+45°或-45°時效果最佳。在像素點P5處使用Roberts算子對x和y方向上的梯度大小gx和gy的計算原理如圖5所示。
圖5 Roberts算子原理
處理后的圖像效果如圖6所示。
圖6 提取邊緣結(jié)果
1.1.4 形態(tài)學車牌圖像處理
數(shù)學形態(tài)學主要用于從圖像中提取對表達和描繪區(qū)域形狀有意義的圖像分量,在圖像處理領(lǐng)域是應用最廣泛的技術(shù)之一。二值圖像的基本形態(tài)學運算有膨脹、腐蝕、開運算和閉運算[9]。使用形態(tài)學操作可以消除圖像中的干擾邊緣像素點,方法是通過形態(tài)學運算,找到可能包含車牌信息的矩形區(qū)域。形態(tài)學處理基本運算有:
處理后的圖像效果如圖7所示。
圖7 形態(tài)學處理結(jié)果
在我們進行處理之后會有許多區(qū)域,我們需要在其中找出最符合車牌輪廓的區(qū)域,然后篩選出車牌輪廓信息,最后確定車牌圖像的位置。我們通過設(shè)置車牌長寬比參數(shù)范圍來篩選確定車牌位置。首先分別計算這些圖形區(qū)域水平方向與垂直方向上不為0的像素點個數(shù),作為其長與寬,通過設(shè)置長寬比取值范圍進而確定矩形尺寸是否滿足要求,最終確定車牌位置;其次根據(jù)車牌位置把只包含車牌信息的圖像從原圖中提取出來。提取出的圖像效果如圖8所示。
圖8 車牌定位結(jié)果
車牌字符分割[10]是根據(jù)車牌的特點對字符進行分割,將車牌區(qū)域劃分為單個獨立的字符,所以獲得精確的單字符圖像對字符識別有著重要的影響。因為車牌字符存在間隔,所以在分割時不會出現(xiàn)多字符連接在一起的情況,然后去尋找具有連續(xù)文本的區(qū)域,字符分割效果如圖9所示。
圖9 字符分割結(jié)果
使用字符歸一化處理可以使字符大小統(tǒng)一,使字符識別更加快捷準確。本文調(diào)用opencv中的cv.resize函數(shù)將字符圖像統(tǒng)一尺寸大小,接著對字符進行特征提取,對于圖像都需要經(jīng)過特征提取之后才能使用相應的識別算法進行識別,本文采用的是基于HOG的特征提取,將提取的字符圖像黑白像素的特征參數(shù)用于SVM算法的分類標準,HOG特征在識別目標的形狀信息具有明顯的優(yōu)勢,該方法在提取過程中先將圖像劃分為小的連通區(qū)域,然后再從各區(qū)域上采集各像素點邊緣方向上的直方圖,接著將這些直方圖的數(shù)據(jù)組合,再由SVM算法識別特征數(shù)據(jù)。車牌識別結(jié)果如圖10所示。
圖10 車牌識別結(jié)果
基于統(tǒng)計學習理論的支持向量機算法(SVM)是處理小樣本數(shù)據(jù)集問題的機器學習分類算法。假設(shè)訓練樣本集為(xi,yi)(i=1,2,…,m),其中xi為輸入變量,yi是對應的預期值,m是樣本的數(shù)量,在線性回歸的情況下,利用SVM構(gòu)造一個目標函數(shù),可獲得最優(yōu)分割超平面的函數(shù)為:
式中:x∈Rm為權(quán)值矢量,b∈R為偏差量,求權(quán)值ω和偏差b可以通過下面的求解最優(yōu)問題來解決:
式中,Q是優(yōu)化目標,C是懲罰因子,δi,是松弛系數(shù),ε是精度參數(shù)。
對于處理非線性回歸問題的情況,SVM的處理方法是選擇一個核函數(shù),通過核函數(shù)將輸入空間映射到高維特征空間,最終在高維特征空間中構(gòu)造出最優(yōu)分離超平面,從而把平面上本身不好分的非線性數(shù)據(jù)分開。使用拉格朗日函數(shù)可獲得線性回歸函數(shù):
式 中:αi、是拉格朗日因子,K(x i,y i)是核函數(shù)。
本文采用高斯核函數(shù)來映射數(shù)據(jù)并求取最優(yōu)分類面,高斯核函數(shù)的計算公式為:
2.2.1 對關(guān)鍵參數(shù)C和核參數(shù)g使用網(wǎng)格搜索算法
為避免懲罰因子C和核參數(shù)g過學習和欠學習的發(fā)生,通過網(wǎng)格搜索算法優(yōu)化懲罰因子C和核參數(shù)g,把SVM算法中的懲罰因子C和核參數(shù)g在給定的范圍內(nèi)劃分為網(wǎng)格,遍歷所有網(wǎng)格節(jié)點的取值,然后獲得最高的分類準確率的點,并將該點對應的因子C和核參數(shù)g作為最優(yōu)參數(shù),提高SVM分類準確率。網(wǎng)格搜索算法[11]分為4步:
(1)設(shè)定C和核參數(shù)g的取值范圍都設(shè)為[2-8,28]以間隔為1構(gòu)造基于(C,g)坐標系的網(wǎng)格;
(2)順序選取一組參數(shù)(C,g),用于模型訓練和測試中;
(3)將訓練樣本集均分,共分為K個子集,從中任選一個訓練樣本子集作為測試集,剩余的K-1個訓練樣本子集作為訓練集,對選取的測試集中的(C,g)進行K倍交叉驗證,然后更換訓練集和測試集,直至每一組子集都作過測試集,計算K組分類準確率的平均值;
(4)重復(2)和(3),直至網(wǎng)格參數(shù)組合全部被選取,然后對各參數(shù)組合下準確率平均值由大到小排序,篩選出最大準確率平均值對應的(C,g)作為所求最優(yōu)參數(shù)。
2.2.2 基于密度的訓練樣本裁剪方法
基于密度的樣本裁剪[12]分為兩步:
設(shè)Dist(X,Y)為樣本集中X與Y之間的距離,定義X的ε鄰域為Nε(X)=Dist(X,Y)≤ε。
設(shè)定樣本集M=C1?C2?C3?C4?…Cm(i=1,2,…,m)代表一個樣本類別,且C i?Cj=?(i,j=1,2,…,m),任意的X∈Ci,如果X的ε鄰域的所有樣本都屬于Ci,則X位于類內(nèi)區(qū)域,否則X位于類邊界區(qū)域。
給定鄰域半徑ε和最少樣本數(shù)值Minpts(Minpts>0)。對于任意的樣本X和X鄰域內(nèi)的Y,若|Nε(X)|=Minpts,則X處于均勻密度區(qū)域;若|Nε(X)|>Minpts,則X處于高密度區(qū)域,且Y與X高密度可達;若|Nε(X)| (1)對訓練樣本X進行裁剪,當X位于類邊界區(qū)域,則將與樣本X高密度可達的樣本裁剪掉;若X位于類內(nèi)區(qū)域,則保留X的ε鄰域內(nèi)的所有訓練樣本,由此去除了樣本集的噪聲和冗余樣本,提高了分類準確率和降低了計算量; (2)給定鄰域半徑ε和整數(shù)low,對于任意從第一步中篩選出來的樣本X,如果|Nε(X)|>low,則將與X高密度可達的樣本裁剪掉,直到|Nε(X)|=low時停止裁剪;如果|Nε(X)|≤low,保留X的ε鄰域內(nèi)的所有訓練樣本。 為驗證改進SVM算法在汽車識別系統(tǒng)中的有效性,對互聯(lián)網(wǎng)上下載的500張不同條件下的車牌圖像,在配置為Windows 10系統(tǒng)I7 7700@2.9GHz CPU,16G內(nèi)存的計算機,使用Python 3.4版本,Pycharm工作運行環(huán)境中進行了車牌識別實驗,圖10為本文示范車牌識別的批量識別結(jié)果。 圖10 批量車牌識別 然后統(tǒng)計數(shù)據(jù),與神經(jīng)網(wǎng)絡法[13],傳統(tǒng)SVM算法在識別率和識別總時間上進行對比,在相同的實驗數(shù)據(jù)集上,實驗結(jié)果如表1所示。由表1中可以發(fā)現(xiàn),SVM改進算法與神經(jīng)網(wǎng)絡法相比具有更快的識別速度,且識別率差不多,與傳統(tǒng)SVM算法相比在識別速度和識別率上都有了較大的提升。 表1 實驗結(jié)果對比 本文介紹了車牌識別系統(tǒng)和SVM算法,并對SVM算法進行了改進,使用密度裁剪算法裁剪訓練樣本,適度的減少了訓練樣本的數(shù)量,去掉冗余數(shù)據(jù),降低了計算量。同時在裁剪后的新的訓練樣本集上對懲罰因子C和核參數(shù)g進行優(yōu)化,對SVM算法中的懲罰因子C和核參數(shù)g使用網(wǎng)格搜索算法獲得最高的分類準確率的點,并將該點對應的因子C和核參數(shù)g作為最優(yōu)的參數(shù)組合(C,g),提高SVM分類準確率,并在實際項目中獲得了較好的實驗結(jié)果,說明該優(yōu)化方案能夠提高車牌識別的性能。3 實驗結(jié)果
4 結(jié)語