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