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