張三友 姜代紅



摘要:智能車牌識別系統是結合數字圖像處理技術、計算機視覺和模式識別為一體的綜合系統,包含對車牌圖像進行預處理、車牌區域定位、字符分割以及字符識別等功能。在車牌識別技術中,采用了BP神經網絡技術,能快速根據提取的車牌字符特征與已知樣本中特征進行比對以獲取車牌字符。通過運用OPENCV計算機視覺庫,大大降低了系統實現復雜度,實現了快速準確識別車牌號碼。
關鍵詞:車牌識別;車牌定位;BP神經網絡;智能系統;OPENCV
DOIDOI:10.11907/rjdk.161130
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2016)005-0087-03
0 引言
隨著機動車保有量的持續增長,道路安全和車輛監控成為焦點問題,除了加大交通基礎設施投入外,還要科學使用交通設備,加強智能化應用水平。隨著城市報警和監控系統建設的深入,監控數據的分析愈來愈重要,依靠人工很難進行。車牌識別是車輛智能化分析的前提,實現準確識別車牌,可以完善安保系統和城市道路交通安全系統,如在交通路口和高速公路上可以利用智能車牌識別系統快速發現違章車輛,對被盜車輛進行攔截等,為城市安全提供全方位信息化支撐[1-2]。
基于OPENCV的智能車牌識別系統可對街道或路口的車輛流量進行統計,一方面解決了人工分析海量數據的困難,另一方面通過機動車輛統計,對城市道路建設以及交通管理提供數據參考,具有良好應用前景。
1 OPENCV計算機視覺函數庫
OPENCV是一個開源的跨平臺計算機視覺庫,由C和C++語言編寫,包含了許多圖像處理和計算機視覺方面的算法。OPENCV由CV、MLL、HighGUI、CXCORE[3]四個功能模塊組成,各模塊主要功能及關系如圖1所示。
2 BP神經網絡
BP神經網絡[4-5]是一種基于概率的統計分類,利用訓練樣本產生的概率分布情況來設計判別函數,再進行分類。如圖2所示,BP神經網絡神經元結構由輸入層、隱含層和輸出層組成,前一層的輸出作為后一層的輸入不斷向后計算。由于誤差的存在,要進行校正,而對誤差校正是從后向前反向進行的,這樣可以逐層導出隱含層的誤差。
3 系統設計
3.1 系統組成
智能車牌識別系統是一個基于數字圖像處理及模式識別算法的系統,由圖像預處理、車牌定位、字符分割和字符識別4部分組成,其關系如圖3所示。
圖像預處理分為灰度化、二值化、邊緣增強3部分,目的是去除圖像的噪聲對后續工作的干擾。車牌定位用來確定車牌位置,通過掃描整幅圖像,當水平超過12個跳變、垂直超過10個跳變時就判斷為車牌區域。字符分割將定位好的車牌區域傳入垂直方向的像素和,會發現在某些區域出現峰值,這些峰值區域即字符區域。字符識別以神經網絡的方式通過和訓練集中提取特征進行比對,當誤差小于一定值時就認為是樣本將其輸出。
3.2 圖像預處理
(1)灰度化。本文選擇加權值方法對圖像進行灰度化,采用OPENCV的庫函數:cvCvtColor(const CvArr*src,const CvArr*dst,int code),其中通過宏CV_BGR2GRAY設置將彩色圖像轉化為灰度圖像。原始圖像如圖4(a)所示,灰度化結果如圖4(b)所示。
(2)二值化。二值化處理采用的OPENCV庫函數為cvThreshold(const CvArr* src, CvArr* dst,double threshold,double max_value,int threshold_type) 。處理過的圖像如圖5所示。
(3)邊緣增強。用邊緣增強方法來增強車牌的紋理,更加快速、準確地定位車牌。常用的邊緣檢測算子[6-7]有:Roberts算子、Sobel算子、Prewitt算子、Canny算子等。這里采用Canny算子來實現。本文采用OPENCV提供的cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size )方法進行邊緣增強處理,處理后的圖像如圖6所示。
3.3 車牌定位
輸入圖像為二值圖像,可以通過數灰度值為255的像素點個數來判斷峰值的位置并記錄。由于我國的車牌號碼由7個字符組成,所以車牌位置至少有14個跳變數,為了更精確地定位,本文選擇在檢測到12個跳變時就確定車牌的位置。
垂直投影定位方法與水平投影定位類似,首先對圖像進行垂直方向投影,將上一小節得到的水平投影圖像從左至右再次掃描,計算圖像垂直方向的跳變數。經過多次實驗發現,當垂直方向跳變數多于10個時就可認定為車牌的垂直位置。再對車牌的寬高比進行計算,若為3∶1則可以確定定位區域為車牌區域。通過調用OpenCV庫中的cvFindContours函數得到車牌區域,再進行分割得到車牌圖像,如圖7所示。
3.4 字符分割
常用的字符分割算法有很多,包括垂直投影法、聚類連通域法和模版匹配法等等,各有優劣[8],本文采用垂直投影法進行車牌字符分割。垂直投影法是將輸入的二值化圖像按垂直方向像素的灰度值累加,在折線圖上會出現峰值,而由于亮點僅有可能出現在車牌字符的位置,因此可以通過峰值位置來判斷車牌的位置。通過調用OpenCV中的cvSetImageROI()函數,在確定車牌字符的位置后用紅色矩形邊框線將之框起來,以此作為分割的依據。結果如圖8所示。
3.5 字符識別
(1)字符歸一化。字符歸一化發生在特征向量的提取之前,通過系數變換的方式,在方便提取字符特征和提高車牌識別準確性的前提下,將分割好的車牌字符圖像變換為高度、寬度都相等的圖像。字符的歸一化由OPENCV的庫函數完成,通過函數的默認值CV_INTER_LINEAR采用雙線性插值法進行字符歸一化。
(2)字符特征提取。本文采用逐像素特征提取法進行車牌字符特征提取。該方法對圖像的每一行每一列進行掃描,當遇到亮點時就將0輸入矩陣中,當遇到黑點時就將空格輸入矩陣中。掃描結束后得到一個與字符歸一化圖像像素點個數相同的特征向量矩陣,將得到的矩陣送入BP神經網絡分類器分類,最終得到結果。實現核心代碼如下:
4 結語
本文設計并實現了基于OPENCV的智能車牌識別系統,詳細介紹了圖像預處理、車牌定位、字符分割、字符識別等關鍵技術。在字符識別算法的選擇上,本文沒有采用傳統的模版識別算法,而是選擇了近年較為熱門的BP神經網絡算法。因為該算法具有較快的識別速度、較好的魯棒性和非線性計算能力,能有效提升系統性能。
參考文獻:
[1]周閱宇. 汽車牌照識別系統研究與設計[D].長春: 吉林大學, 2013.
[2]寧彬. 圖像處理技術在機動車車牌自動識別技術中的應用[J]. 科學技術與工程, 2013, 13(2):366-371.
[3]BRADSKI G, KAEHLER A. Learning OpenCV: computer vision in C++ with the OpenCV library[M]. O'Reilly Media, Inc., 2013.
[4]海金. 神經網絡與機器學習[M]. 北京:機械工業出版社, 2011.
[5]QU Z, CHANG Q, CHEN C, et al. An improved character recognition algorithm for license plate based on BP neural network[J]. Open Electrical & Electronic Engineering Journal, 2014(8): 202-207.
[6]趙芳, 欒曉明, 孫越. 數字圖像幾種邊緣檢測算子檢測比較分析[J]. 自動化技術與應用, 2009, 28(3):68-68.
[7]楊婷婷, 顧梅花, 章為川,等. 彩色圖像邊緣檢測研究綜述[J]. 計算機應用研究, 2015(9):2566-2571.
[8]謝光俊. 車牌識別系統中車牌定位與字符分割算法的研究[D]. 長沙:湖南大學, 2015.
(責任編輯:杜能鋼)