呂昆 金晅宏
摘 要:研究了一種基于OpenCV的車牌識別方法。在車牌定位階段,提出一種綜合邊緣信息和顏色信息,并結合車牌幾何特征定位方法,通過SVM機器學習實現(xiàn)車牌精確定位。在車牌字符分割階段,通過設定像素跳變閾值去除邊框,提出一種結合垂直投影法和字符特征的字符分割算法。在字符識別階段,提出結合投影和網(wǎng)格的字符特征提取方法,并利用4個BP神經網(wǎng)絡進行字符識別。實驗表明,該方法定位率高,字符識別快速準確,具有較強的魯棒性和實用性。
關鍵詞:車牌定位;字符分割;字符識別;BP神經網(wǎng)絡
DOIDOI:10.11907/rjdk.161821
中圖分類號:TP317.4
文獻標識碼:A 文章編號文章編號:16727800(2016)011019303
0 引言
隨著汽車工業(yè)的迅猛發(fā)展,人們在享受車輛帶來便利的同時,也面臨著日益嚴重的交通問題,智能交通系統(tǒng)由此產生。車牌識別系統(tǒng)不僅是智能交通系統(tǒng)的重要組成部分,也是數(shù)字圖像處理、模式識別、計算機視覺等學科重要的研究內容,其實現(xiàn)方式是對攝像機所拍攝的車輛圖像或視頻序列進行分析,通過車牌定位、字符分割、特征提取、字符分割等技術,得到汽車唯一的車牌號碼,在智能小區(qū)停車管理、高速公路收費系統(tǒng)及公共安全等方面有著廣泛應用。本文提出了一種結合邊緣信息和顏色信息的車牌定位方法和基于BP神經網(wǎng)絡的車牌字符識別方法,可以獲得較高的識別準確率。
1 車牌定位
車牌定位就是采用一定算法將車牌區(qū)域從整張車輛圖片中準確定位出來。車牌定位準確率直接關系到字符識別的成敗。目前車牌定位方法較多,常見的有基于數(shù)學形態(tài)學方法、基于邊緣檢測方法、基于顏色空間方法等[13]。本文提出一種綜合邊緣信息和色彩信息,同時結合車牌紋理特征的方法實現(xiàn)車牌粗定位,再結合SVM方法實現(xiàn)車牌精確定位方法,定位流程如圖1所示。
1.1 邊緣檢測
首先讀取車牌的原始圖像,結果如圖2(a)所示,然后利用OpenCV庫中的cvtColor函數(shù)將彩色圖像轉換為灰度圖像,接著利用medianBlur函數(shù)對灰度圖像作中值濾波處理,去除圖像存在的噪聲點干擾,模板大小為3×3。車身紋理主要是水平邊緣,而車牌字符紋理主要為垂直邊緣,針對這個特點使用Sobel函數(shù)對圖像作垂直邊緣檢測,提取字符的邊緣信息[4]。利用threshold函數(shù)對邊緣檢測后的圖像作閾值化處理,得到邊緣二值圖像,結果如圖2(b)所示。
1.2 基于HSV顏色空間的二值化
由于攝像機采集的車輛圖像均是RGB模型,而該模型下R、G、B這3個分量對光線的強弱較敏感,因此需要將RGB模型轉換為對光照等外部因素不敏感的HSV模型。HSV是根據(jù)顏色的直觀性創(chuàng)建六角錐體模型, 其中H表示色調,S表示飽和度,V表示明度。RGB到HSV轉換如式(1)所示。
1.3 形態(tài)學處理
得到二值圖像后,需要對圖像進行開運算和閉運算處理。其中開運算可去除圖像中較小的區(qū)域,閉運算能夠填充圖像內小型黑洞,連接鄰近物體,并可平滑圖像的輪廓。本文選用的腐蝕膨脹核大小為10×5。首先采用閉運算,使車牌區(qū)域連通為一個整體,結果如圖4(a)所示,接著采用開運算去除較小區(qū)域,結果如圖4(b)所示。
1.4 粗定位
提取形態(tài)學處理后的圖像輪廓,對輪廓求外接旋轉矩形,并利用車牌的幾何特征對外接旋轉矩形進行濾除, 即計算:①外接旋轉矩形寬高比Ratio;②外接旋轉矩形面積 Area。假設有40%誤差范圍,設定車牌的寬高比為22/7,再設定車牌面積的最大值和最小值,然后逐個判斷外接旋轉矩形的 Ratio 和 Area 是否同時滿足設定條件。粗定位結果如圖5所示,其中圖5(a)為提取的輪廓圖,圖5(b)為提取出的車牌候選區(qū)域。
1.5 SVM精確定位
在開始分類前,需要訓練分類器。本文使用200車牌圖像和200張非車牌但大小為144×48像素的圖像訓練車牌識別模型。分類器特征向量選用HOG特征向量,使用CvSVMParams結構設置參數(shù),利用CvSVM類訓練分類器。分類器訓練好后,提取候選車牌區(qū)域的HOG特征向量,將提取的特征向量輸入訓練好的車牌判別模型,從而預測候選區(qū)域是否為車牌,實現(xiàn)車牌精確定位。
2 字符分割
2.1 傾斜校正
由于拍攝的角度問題,車牌圖像可能會出現(xiàn)傾斜情況,這樣會對字符分割結果造成較大影響,因此,需要對圖像進行傾斜校正。本文利用Hough 變換將直線提取出來,并計算直線與水平和垂直方向的角度,然后將原有圖像旋轉完成傾斜校正[5]。傾斜校正完成后,再采用Otsu方法對圖像進行閾值化處理,將字符作為前景提取出來,結果如圖6(a)所示。
2.2 邊框去除
車牌邊框和鉚釘會對字符分割產生較大影響,所以在字符分割前,需要消除邊框和鉚釘?shù)母蓴_。本文采用基于像素跳變次數(shù)的統(tǒng)計方法來去除邊框和柳釘?shù)母蓴_[6],具體步驟如下:
(1)設定水平像素跳變閾值為14。從車牌二值圖像的中間向上進行行掃描,統(tǒng)計每一行的像素跳變次數(shù),當某一行的像素跳變次數(shù)小于14時,該行即為字符區(qū)域的上邊界;同理,可以得到字符區(qū)域下邊界。
(2)字符區(qū)域的垂直像素跳變次數(shù)一般大于或等于2,設定一個閾值Q,從車牌二值圖像的左邊界向中間進行列掃描,統(tǒng)計每一列的像素跳變次數(shù),當存在連續(xù)的Q列像素跳變次數(shù)都大于或等于2時,就判斷為字符左邊界。同理,可以找到字符右邊界。結果如圖6(b)所示。
2.3 車牌字符分割
中國標準車輛牌照有7個字符, 其中首字符為漢字, 第2個字符是英文大寫字母,后面5個為大寫字母與數(shù)字的混合。單個字符寬45mm,高90mm,字符間距一般為10mm,其中第二、三個字符間距為34mm。本文結合車牌的字符特征和垂直投影法,提出了一種字符分割方法[7]。
由于字符區(qū)域白色像素較多,而非字符區(qū)域黑色像素較多,因此通過檢測字符與字符間白色像素數(shù)目的波谷,確定每個字符的左右邊界。因為車牌第二、三個字符之間距離比其它字符間距離大很多,所以先根據(jù)字符大概的像素大小,找到第二字符的右邊界。接著從第二個字符的右邊界向左搜索,先分割前面兩個字符,接著從第二個字符的右邊界向右搜索,分割后面5個字符。最后,對分割得到的字符進行歸一化處理,結果如圖6(c) 所示。
3 字符識別
字符識別方法有模板匹配法、統(tǒng)計特征匹配法和神經網(wǎng)絡法等[810],本文采用BP神經網(wǎng)絡對字符進行識別。在字符識別前,需要提取字符特征,本文根據(jù)車牌字符特點,使用基于像素點網(wǎng)格和像素投影的方法進行特征提取。首先將分割得到的字符大小歸一化為12×24的圖像,然后對圖像分別進行行投影和列投影,并統(tǒng)計每行和每列目標像素點數(shù)目,得到36維特征向量。然后將字符圖像均勻劃分為4×8的網(wǎng)格,再從左向右、從上到下,依次提取每個子網(wǎng)格的占空比、梯度特征,最后連接成一個組合特征,形成一個96維的特征向量。
本文采用4個BP網(wǎng)絡來完成字符識別,4個BP網(wǎng)絡分別是區(qū)分漢字、英文和數(shù)字字符的分類BP網(wǎng)絡、識別數(shù)字的BP網(wǎng)絡、識別英文的BP網(wǎng)絡、識別漢字的BP網(wǎng)絡,所有的BP網(wǎng)絡都是三層結構。由于提取的字符特征向量維數(shù)為96,因此可以確定輸入層的節(jié)點數(shù)為96。由于訓練樣本限制,車牌漢字只選取了25個省份的車牌數(shù)據(jù),加上10個數(shù)字字符,24個字母字符(除去字符I和O),這樣確定4個BP網(wǎng)絡輸出層節(jié)點數(shù)分別為3、10、24、25,網(wǎng)絡輸出采用對應類別取1的方式來表達。隱含層的節(jié)點數(shù)按公式n=sqrt(n1+n2)+a進行設計,其中n1為輸入層節(jié)點數(shù),n2為輸出層節(jié)點數(shù),a為l~10的整數(shù)。
本文選取sigmoid 函數(shù)作為BP網(wǎng)絡激活函數(shù),使用CvANN_MLP_TrainParams類來設置訓練參數(shù),最終利用CvANN_MLP類訓練分類器。分類器訓練好后,提取待識別字符的特征向量,輸入訓練好的分類器完成字符識別。數(shù)字、字母和漢字各選用200張測試樣本進行實驗。實驗結果表明,數(shù)字的識別率達97.0%,英文字母的識別率達96.6%,漢字的識別率達86.2%。
4 結語
本文提出了一種綜合邊緣信息和色彩信息,結合車牌紋理特征的定位方法,對車牌進行粗定位。通過SVM機器學習篩選符合車牌特征的候選區(qū)域實現(xiàn)車牌精確定位,提出一種結合像素投影和網(wǎng)格的字符特征提取方法,并利用4個BP神經網(wǎng)絡對字符進行識別。本文軟件開發(fā)平臺為Microsoft Visual Studio 2013,選用300張不同環(huán)境下的車牌圖片進行實驗,車牌定位率達97.5%,車牌字符識別率達92.5%。實驗結果表明,本文提出的方法定位率高、字符識別快速準確,具有較強的魯棒性和實用性。
參考文獻:
[1] 盧雅琴,鄔凌超.基于數(shù)學形態(tài)學的車牌定位方法[J].計算機工程,2005,31(3):224226.
[2] 沈勇武,章專.基于特征顏色邊緣檢測的車牌定位方法[J].儀器儀表學報,2008,29(12):26732677.
[3] 郭捷,施鵬飛.基于顏色和紋理分析的車牌定位方法[J].中國圖像圖形學報,2002,7(5):432476.
[4] 毛星云,冷雪飛.OpenCV3編程入門[M].北京:電子工業(yè)出版社,2015:154312.
[5] 楊思源.基于OpenCV的車輛牌照識別系統(tǒng)研究[D].西安:西安電子科技大學,2013.
[6] 黃驥.汽車牌照識別系統(tǒng)中車牌定位與校正及字符分割的研究[D].南京:南京航空航天大學,2007.
[7] 王璐.基于 MATLAB 的車牌識別系統(tǒng)研究[D].上海:上海交通大學,2009.
[8] 谷秋頔,白艷萍.基于模板匹配的車牌數(shù)字與字母識別[J].數(shù)學的實踐與認識,2011,42(20):6671.
[9] DANIEL LELIS BAGGIO.深入理解OpenCV:實用計算機視覺項目解析[M].劉波,譯.北京:機械工業(yè)出版社,2014:116136.
[10] 郭榮艷,胡雪惠.BP神經網(wǎng)絡在車牌字符識別中的應用研究[J].計算機仿真,2010,27(9):299301.
(責任編輯:杜能鋼)