卓俊宇,胡志慧
(湖北汽車工業學院 電氣與信息工程學院,湖北 十堰 442002)
隨著社會的迅猛發展及交通問題的日益嚴重,為了提高車輛的管理效率,智能交通系統(ITS)由此而生。智能交通系統是融合前沿的信息技術、數據通訊技術、電子傳感技術、電子控制技術以及計算機處理技術等于一身的交通運輸管理體系,它是一種能在大范圍內全方位發揮作用的,擁有實時、準確、高效的綜合運輸和管理系統。汽車車牌的自動識別是智能交通系統中的一項重要技術,可以切實有效地提高交通系統的車輛監控和管理的自動化程度,是實現交通管理現代化和智能化的重要前提。車牌定位技術是汽車車牌的自動識別系統中關鍵的環節,它是后續的車牌字符分割和識別工作的基礎。
本項目在基于Visual C++平臺與Intel開源計算機視覺庫OpenCV,來實現靜態復雜背景下的車牌識別系統。其中OpenCV是Intel開源計算機視覺庫,它作為一個開源的跨平臺計算機視覺庫,可以在Linux、Windows和Mac OS操作系統上運行。OpenCV的設計目標是執行速度盡量快,主要關注實時應用。它由一系列C函數和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,在圖像處理和計算機視覺方面的很多通用算法都可實現。OpenCV的編寫采用優化的C語言代碼,因此能夠充分利用多核處理器的優勢,它的結構如圖1所示。
圖1 OpenCV的結構
世界各國都根據本國國情設計了自己特色的車牌,中國也不例外,但相較于別國的車牌,由于地域原因以及漢字的復雜性,使得中國的車牌類別要復雜得多。我國機動車輛使用的號牌,是按照GA36-2007“中華人民共和國機動車號牌標準”設計的。
我國車牌中的字符由漢字、英文字母和阿拉伯數字總共7個字符構成。其中,第一個字符是各個省、自治區、直轄市、行政區的漢字簡稱,其余的均為英文字母或阿拉伯數字組合。雖然我國的汽車車牌存在一定的復雜性,但是根據總結它是存在一定的共同特點的。以下就是總結出的幾個明顯且通用的特點:
(1)車牌一般位于沒有明顯的邊緣密集區域的車身底部。
(2)車牌字符的大小和個數一定,且字符間隔距離一定。
(3)車牌區域的像素點明顯多于其他部分。
圖像預處理是圖像識別的重要組成部分,是對輸入的圖像進行特征抽取、分割以及識別前所進行的操作。通常采集獲取的汽車牌照的圖像,由于在拍攝圖像的過程中受到各種環境限制,如霧天、光照不強、灰塵等會導致拍攝的圖像質量明顯下降。車牌圖像預處理是車牌識別系統的前提條件,它直接關系到系統后續字符分割和識別的準確性。
本文采用拍攝的含有汽車車牌的圖片作為原始識別圖像進行相關處理。首先,借助OpenCV提供的cvCvtColor函數將色彩空間轉參數,采用CV_RGB2GRAY將彩色圖像轉換為灰度圖像:Y=0.299*R+0.587*G+0.114*B。然后,采用cvSmooth函數進行平滑高斯濾波處理。
最后,根據汽車車牌具有四邊形的外觀、車牌區域與其他區域之間的灰度具有很大跳變的特征,可以獲得圖像邊緣檢測圖作為后續處理的基礎。邊緣檢測的方法很多,常見的經典邊緣檢測算法有Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、Log算子以及Canny算子等。這些算子利用了邊緣處灰度級劇烈變化進行圖像邊緣檢測。不同的算子適用類型不同,不同的算子對不同邊緣類型的敏感度不同,提取的邊緣結果也不相同。通過調用OpenCV中帶的cvCanny函數實現,其中threshold1為小閾值,這里通過編寫函數獲取圖像的平均灰度值作為自適應閾值,它是用來控制邊緣連接的;threshold2為大的閾值,用來控制強邊緣,通過CV_IMAGE_ELEM函數遍歷獲取圖像最大灰度值的70%作為它的閾值。Canny算子邊緣檢測得到的輪廓更加清晰并且具有很好的抗干擾性,處理前后的效果如圖2所示。
圖2 圖像邊緣檢測
大多數情況下,一幅圖片中車牌的字符總是近似于豎向的,利用其豎向特征可以將車牌與復雜背景分離出來。車牌區域所在的行相鄰像素之間的變化(0~255,255~0)會很頻繁,這樣跳變次數會大于一個臨界值,可以作為尋找車牌區域的一個依據。這里可以用CV_IMAGE_ELEM函數方便獲取相鄰像素的灰度值。由于車牌字符大小、個數、字符間隔距離一定,找出像素變化數據量最大的地方,統計計算其連續20行最大跳變數據量的開始,說明此行在車牌區域內。最后通過循環比較相鄰行的值大于一個臨界值(一般而言,車牌每個字符至少跳變2次以上,這里設置為18),探測到車牌的上下邊界的行號。
通過橫向掃描圖像,確定車牌上下邊界行號,這樣可假定車牌區域在最高和最低行之間的條狀區域內。這時大致可確定車牌的高,根據車牌寬與高的比例可得到它的寬帶,將一個寬度為車牌寬度的窗口由左至右移動,統計窗口中每一列內相鄰像素的變化總數,逐個比較之后最大的那個就是車牌區域,把它保留并記錄此時的左右邊界,從而得到車牌的具體區域??偠灾褪撬椒指睢⒋怪狈指詈筮M行歸一化。利用OpenCV庫中的CvRect確定車牌的矩形區域,然后在原圖像中利用cvSetImageROI函數設置敏感區域,接著用cvCopy函數從原圖像中把敏感區域(即探尋的車牌區域)拷貝出來。再利用cvResize函數進行圖像大小轉換,用線性插值方法將車牌變成統一大小為cvSize(40*HIGH_WITH_CAR,40),這樣方便后續車牌分割字符處理,車牌定位截取后效果如圖3所示。
圖3 車牌定位提取圖片
車牌定位以后的圖像還是一個整體,包括文字和文字之間的空白。字符分割就是將車牌中的7個字符分割出來以便逐個進行字符識別。大部分字符分割的算法以垂直投影、字符間隔及尺寸的測定、輪廓分析或分割識別組合技術為基礎。本系統采用車牌字符布局特征與垂直投影積分相結合的方法進行分割。最后采用模板匹配的方法,它將從待識別的圖像提取若干特征量與模板對應的特征量進行比較,計算圖像和模板特征量之間的距離,用最小距離法判定所屬類,完成車牌號碼字符的識別。
車牌識別是智能交通系統中的重要應用,具有很強的實際應用價值。本文借助開源計算機視覺庫OpenCV,在Visual C++平臺下對車牌識別系統中圖像預處理、車牌定位等方面功能實現進行了初步研究,但是經過對實驗結果的分析驗證,還有待進一步地深入研究。當前,很多學者致力于車牌識別技術的研究,也相繼提出一些可行的車牌識別系統,相信在不久將來車牌識別系統會有更大地發展。
[1]Gary Bradski,等.學習OpenCV[M].于仕琪,等,譯.北京:清華大學出版社,2009.
[2]駱雪超.一種基于車牌特征信息的車牌識別方法[J].華南理工大學學報:自然科學版,2002,31(4):70-72.
[3]楊曉玲.基于幾何特征的車牌定位與字符分割技術研究[D].廈門:廈門大學,2014.
[4]楊思源.基于OPENCV的車輛牌照識別系統研究[D].西安:西安電子科技大學,2013.
[5]姜宇.基于OpenCV的車牌識別系統研究[J].遼寧師范大學學報:自然科學版,2011,34(2):170-174.