作者:bonteng 點擊次數:6190 發布時間:2020-7-25 7:16:25
針對車牌識別系統的車牌精確定位和車牌字符準確識別問題。提出一種基于SVM(支持向量機)和BP神經網絡的車牌定位與識別算法。通過將HSV顏色空間和形態學方法相結合確定候選輪廓,以判斷輪廓外接矩形的面積和長寬比篩選符合車牌特征的區域,并利用訓練好的SVM模型對候選車牌區域進行測試判斷,終精確定位車牌的位置。此外,還可使用了BP神經網絡進行車牌字符識別。經驗證,該系統適用于復雜的車牌定位環境,且識別速度快,準確率高。
車牌識別系統是圖像處理與模式識別技術在智能交通中的應用,車牌的精確定位和車牌字符的準確識別是車牌識別系統的關鍵問題。常用的車牌定位方法有基于數學形態學的方法、基于彩色分割的方法、基于顏色和紋理分析的方法、基于小波和形態學的方法和基于混合特征的方法等。車牌字符識別方法有基于模板匹配的方法、基于Gabor變換和支持向量機的方法、基于小波和神經網絡的方法等。本文首先利用HSV顏色空間和邊緣特征獲取車牌的候選區域,利用SVM機器學習方法判斷終的車牌區域,該方法可獲得較高的車牌定位率。提出一種改進的粗網格車牌字符特征提取方法,利用BP神經網絡進行訓練識別,可獲得較好地字符識別準確率。后利用OpenCV機器視覺庫設計了整個車牌識別系統。
1 車牌定位
本文采用HSV顏色模型、垂直邊緣檢測和SVM分類器結合的方法進行車牌的定位。算法的工作流程如圖1所示。
圖1 車牌定位流程
1.1 基于HSV顏色模型的二值化
由于RGB顏色模型對于兩種相近的顏色,其R、G、B值相差可能較大,因此在RGB顏色空間直接進行車牌定位變得困難。所以,本文使用HSV顏色模型來定位車牌。HSV顏色模型是根據顏色的直觀特性創建的一種圓錐模型,其中H表示色調(Hue);S表示飽和度(Saturation);V表示亮度(Value)。由RGB模型到HSV模型的轉化公式可由式(1)得到
其中,max=max(R,G,B),min=min(R,G,B)。
中國車牌的底色主要有藍色、黃色、黑色和白色4種,由統計數據可得到各顏色在HSV空間中的范圍,如表1所示。
其中藍底白字車牌和黃底黑字車牌使用為廣泛,車牌識別系統主要針對這兩種類型車牌進行顏色定位,對于其他類型車牌使用垂直邊緣檢測進行定位。
為防止黃色車身藍底車牌和藍色車身黃底車牌中車身顏色的干擾,本車牌識別系統對轉換為HSV空間的圖像分別進行了兩次二值化處理[9]。首先次以藍色底色為基準,將圖像中H、S、V分量落在表1藍色區域中的像素標記為白色像素,也即設為255,否則標記為黑色像素,即為0。第二次以黃色底色為基準,得到另一幅二值化圖像。這樣就將HSV圖像轉換為兩幅二值圖像了。實驗處理結果如圖2所示,其中圖2(a)為原始圖像,圖2(b)是以藍色為基準轉換的二值化圖像,圖2(c)是以黃色為基準轉換的二值圖像。得到的兩幅二值圖將送人后續流程進行處理識別。
1.2 垂直邊緣檢測
基于HSV顏色的車牌定位由于光照或者周圍環境顏色的干擾導致有些情況不能很好地定位,而根據車牌字符本身的特點,采用垂直邊緣檢測則可較好地實現車牌定位。由于輸入的原始圖像包含很多噪聲和細小的尖刺,這些對于后續的邊緣檢測會產生很多干擾,所以首先要對圖像進行去噪處理。本系統采用高斯模糊算法對原始圖像進行處理。
車身紋理主要是水平邊緣,而車牌字符紋理主要為垂直邊緣,針對這個特點采用垂直邊緣檢測可以對車牌進行粗定位。本系統采用Sobel算法實現垂直邊緣檢測。Sobel算法使用模板卷積的方法對圖像進行變換,計算過程如式(2)所示式中,A代表原始圖像;Gx和Gy分別代表經橫向及縱向邊緣檢測的圖像;G為合并橫向和縱向后的梯度大小;θ為梯度的方向。OpenCV中采用函數Sobel實現橫向的卷積計算,對所得結果求絕對值,這樣便得到了圖像在x方向上的Sobel檢測結果,也即檢測出了圖像的垂直邊緣。為便于后續形態學處理,需要對邊緣檢測的結果圖像進行二值化處理,使用OTSU閾值算法實現二值化,圖3(a)的處理結果如圖3(b)所示。
1.3 形態學處理
經過上述處理后,圖像中車牌區域部分由于字符的存在會包含眾多孔洞,為了去除噪聲并且填補這些孔洞,可采用數學形態學的方法進行處理。數學形態學運算包括腐蝕、膨脹、開運算和閉運算。
開運算可濾除圖像中較小的區域,閉運算能夠去除區域的孔洞,填平狹窄的溝壑和輪廓的缺口,并可平滑圖像的輪廓。系統采用閉運算使車牌字母可以連成連通區域便于取輪廓。閉運算處理前后結果分別如圖4(a)和圖4(b)所示,為方便顯示,圖中只截取了部分區域。從圖中可看出,經過閉運算處理后圖像中車牌部分由原先包含眾多裂痕和孔洞的區域連成了整體的一塊,這樣便于后續截取輪廓提取車牌。
1.4 SVM車牌定位
為使用SVM進行車牌精確定位,首先要得到候選車牌區域。為此先對形態學處理后的結果進行取輪廓,然后對輪廓求外接矩形。利用車牌的幾何特征對得到的外接矩形進行濾除,即計算:(1)外接矩形寬高比Ratio;(2)外接矩形面積Area。設定車牌的大小寬高比,車牌面積的大小值,然后逐個判斷外接矩形的Ratio和Area是否同時滿足設定的要求。以圖4(b)為例,經過處理后的結果如圖5(a)所示。因為車牌傾斜角通常較小,為此可通過角度判斷進一步去除不可能為車牌的矩形。后對剩下的矩形進行旋轉校正和偏斜扭正,再進行歸一化處理,這樣便得到了SVM判別模型的車牌候選區域。圖5(a)處理后的結果如圖5(b)所示。
圖5 候選車牌區域確定
SVM算法是以結構風險小化為準則的機器學習方法,在解決小樣本、非線性及高維模式識別中表現出很多特有優勢。本系統使用徑向基核函數映射的C-SVM實現車牌和非車牌的分類。
首先要訓練SVM車牌判別模型,通過前面的處理過程可得到歸一化了的車牌候選區域,手工分類處理,得到車牌區域的圖片1 000張,非車牌區域圖片2 000張。選取分類器特征向量為樣本的水平和垂直直方圖值,使用徑向基核函數將特征向量轉化為與數據總數一樣的數量,即3 000維。使用OpenCV函數svm.train_auto,設置相應參數可訓練得到車牌判別模型。將候選車牌區域的特征向量輸入訓練好了的車牌判別模型,從而可預測候選區域是否為車牌,這樣就實現了SVM車牌定位。以圖5(b)為例,經過判斷確定為車牌的是左上角首先個區域。
2 車牌字符分割
車牌字符分割是將車牌區域分割成單個的字符,是車牌字符識別的前提。中國的標準車輛牌照包含有7個字符,首字符為漢字,第2個字符是英文大寫字母,后面5個為大寫字母與數字的混合。單個字符寬度為45 mm,高度為90 mm,第2個字符和第3個字符之間的間隔為34 mm,間隔中間有一個小圓點,其余字符間隔為12 mm。利用車牌的這些特征,本文提出一種新的字符分割算法。
首先將定位得到的車牌區域進行二值化處理,如圖6(a)所示。設定每行元素的階躍數,當階躍數目<7時認為是柳釘,將該行元素都設置為0,這樣就去除了車牌上的柳釘的干擾,處理結果如圖6(b)所示。對二值化車牌圖像尋找外接輪廓,并求這些輪廓的小外接矩形,通過驗證矩形的長寬比和面積大小,去除不符合車牌字符區域的矩形。由車牌字符分布結構的特點,首先尋找滿足第2個車牌字符位置的矩形,按順序依次可得到后面5個字符的矩形。由于漢字的特殊性,可通過第2個字符的位置往前推,猜測中文字符的位置和大小[10]。終,對上述分割處理得到的7個車牌字符進行歸一化處理,結果如圖6(c)所示。
3 BP神經網絡字符識別
目前車牌字符識別的方法有模板匹配法、特征匹配法和神經網絡等方法。本文采用BP神經網絡進行字符識別。根據車牌字符特點使用改進粗網格方法進行特征提取。首先把分割得到的字符大小歸一化為20×20的二值化圖像,統計水平直方圖值和垂直直方圖值,這樣得到40維特征向量。然后將字符縮放到10×10大小,這樣可得到100個小區域,把每個小區域的值作為特征數據。后可得到車牌字符的特征向量X=(x1,x2,…,x140)。由此可確定BP神經網絡輸入層神經元個數為140[9-10]。
由于訓練樣本限制,車牌漢字只選取了20個省份的車牌數據,加上10個數字字符,24個字母字符(除去字符I和O),這樣可確定輸出層神經元個數為54個,網絡輸出采用對應類別取1的方式來表達。確定隱含層神經元數目方法較多,本系統通過調試確定隱層數目為40。
選取sigmoid函數作為BP網絡激活函數,通過OpenCV提供的CvANN_MLP神經網絡類進行BP網絡的訓練。使用CvANN_MLP_TrainParams這一類設置神經網絡的訓練參數。終,利用CvANN_MLP的train函數進行樣本訓練,并將訓練結果保存在xml文件中。進行字符識別時首先要加載BP的訓練模型xml文件,然后使用Cv_ANN_MLP的predict函數進行字符識別。經過實驗驗證數字和英文字母的識別率可達96.23%,漢字的識別率可達84.56%。
4 結束語
本文中提出了基于SVM的車牌定位方法和基于BP神經網絡的車牌字符識別方法。采用OpenCV2.4.9和Visual Studio2010開發平臺實現了整個車牌識別系統。選用300張不同環境下的車牌圖片,經系統識別結果顯示,車牌定位率達到98.34%,車牌字符識別率達到92.46%。系統識別算法快速準確,對復雜環境的適應能力較好,且具有較強的魯棒性和實用性。
電 話:020-81978559
手 機:186-8885-8508
電子郵箱:bonteng@163.com
地址:廣東省廣州市天河區燕嶺路436號