【摘 要】提出了一種利用OpenCV函數庫來進行圖像處理,并進行圖像基本處理,AOI區域定位,特征點坐標提取的方法,定位時采用行列掃描的方法確定車輛上下和左右邊界,然后對存在車輛信息噪聲的情況進行了過濾,AOI區域定位采用了邊緣檢測閾值比較的方法,特征點的坐標提取是采用平均模板匹配法,得到了很好的效果。
【關鍵詞】AOI區域定位;特征點提取;邊緣檢測
智能交通系統,簡稱ITS(Intelligent Transportation System),是目前世界各國交通領域競相研究和開發的前沿研究課題和熱點。ITS系統是人們將先進的信息技術、數據通訊傳輸技術、電子控制技術、傳感器技術以及計算機處理技術等有效地綜合運用于整個交通體系,從而建立起的一種在大范圍內,全方位發揮作用的實時、準確、高效的交通綜合管理系統。車輛信息檢測系統是智能交通系統中一個非常重要的方向,主要由圖像采集、AOI區域定位、特征點坐標提取以及信息識別四部分組成,己經越來越受到人們的重視。它具有良好的實際應用價值,目前主要應用于公路治安卡口、開放式收費站、車載移動查車、違章記錄系統、門禁管理、停車場管理等場合。
利用VC++,在OpenCV計算機視覺庫的基礎上,對車輛進行圖像獲取,圖像處理,最終得到車輛信息,主要包括以下幾個步驟,如圖1所示:
圖1 主要步驟
1.圖像獲取
利用OpenCV庫函數可以對攝像機進行操作的特性,首先定義CvCapture結構變量并初始化capture=0,CvCapture結構包含從攝像機或視頻文件讀取幀所需的信息,然后使用OpenCV庫函數cvCreateCameraCapture()從攝像機得到視頻信息,即:capture= cvCreateCameraCapture(-1)。獲取視頻信息后還要獲得圖像,首先要定義IplImage結構變量并進行初始化frame=0,獲取圖像利用OpenCV的庫函數cvQueryFrame(),即:frame=cvQueryFrame(capture)[1]。
2.圖像預處理
利用OpenCV庫函數獲取到的圖像是彩色圖像,即每個像素點由紅色(R),綠色(G)和藍色(B)3個分量組成,如果直接用彩色圖像計算量會很大, 很難達到實時、快速識別的目的。在實際應用中,我們可以采用如下公式將彩色圖像轉換為灰度圖像:
Y=0.299*R+0.587*G+0.114*B
其中,Y代表轉換后灰度圖像的像素值,R、G、B分別代表彩色圖像中紅、綠、藍三原色的分量[3]。利用cvCvtColor(src,pImgCanny,CV_RGB2GRAY);對圖像進行灰度化處理。如圖2所示:
圖2 灰度圖像
下一步對灰度化圖像進行二值化處理。二值化就是選擇一個閾值T,如果圖像中的某個灰度值大于T,就將這個像素的灰度值設為255,否則設為0.公式如下:
g(x,y)=255,g(x,y)≥T
0,g(x,y) 選擇閾值T時,本文采用自適應閾值法,利用cvAdaptiveThreshold()函數得到[1]。并采用Robert算子邊緣檢測二值化,二值化后的圖像如圖3所示,邊緣檢測的圖像如圖4所示。 圖3 二值化圖像 圖4 邊緣檢測圖像 3.AOI區域定位 預處理完的車牌圖像就可以進行AOI區域定位了,由于車輛信息在圖片中自身的特殊性,可以根據車輛圖像的自身特點進行定位。 3.1車輛的特點 (1)車輛輪廓最低點一般是車身最低點,其下方沒有明顯的邊緣密集區域。 (2)車輛輪軸大小、 個數明顯,并且圓心到邊界距離一定。 (3)拍攝環境不同,可能會造成車輛圖像有一定的噪聲。 (4)車輛信息區域的像素點明顯多于其他部分。 因此,可以對邊緣檢測后的圖像進行行掃描和列掃描,從而得到車輛信息區域。 3.2車輛信息行與列掃描 設定方法: (1)將邊緣檢測圖像中每行灰度級為255的像素的個數介于一定范圍內。設定車輛區域中每行灰度級為255的像素個數最大最小值分別為num1、num2。若某行中灰度級為255的像素個數集中介于[num1,num2],則可以將此行的行號存入車輛AOI候選區域。 (2)對(1)中得到的車牌候選區域相鄰兩行號做平均,若均值誤差小于某個值M,說明此行在AOI區域內。 (3)通過(2)中得到的行號分割圖像得到了AOI區域,記錄此時的車輛邊界特征點。 圖5 AOI區域確定圖像 3.3 車輛信息特征點提取 為了檢測車輛長度,首先要確定車頭與車尾的兩個特征點。通過對圖像的分析,我們可以看出圖像中車輛的區域存在以下特點: 車輛區域灰度值比較大: 檢測的前提條件是兩個圖像不存在位置的誤差和角度誤差,實際往往無法達到100%的精確,因此會存在較小的誤差,從而在對圖像進行二值化處理的時候往往產生如椒鹽噪聲似的亮點,盡管通過二次濾波可以消除大部分亮點,但仍會存在少量亮點。 通過對車輛圖像的一系列處理,我們得到了最終的車輛單色圖像。通過對圖像特點的分析,我們可以看到車輛區域在圖像中顯示為白色,基于這個特點利用平均模板進行匹配,從而實現車輛的車頭車尾與車身的自動搜索,特征點定位如圖6所示: 圖6 特征點確定圖像 3.4輪軸信息的確定 輪軸的定位就是在車輛圖像中把輪軸區域提取出來,是輪軸檢測的關鍵技術,是提高輪軸檢測識別率的前提和基礎。定位的準確度直接影響著輪軸信息檢測的識別性能。 我們使用一種綜合的定位方法,將灰度特征和幾何特征結合起來進行定位的方法。由于車輛輪軸自身的一些特點,例如,一般位于一張圖片的底部、輪軸為圓形、輪軸周圍的像素點比中心像素點較多等。本文利用OPenCV函數庫中的cvFindCircles()在圖片中找到輪軸圈,初步確定輪軸區域。 在此基礎上進行特征檢測,精確定位,進行輪軸特征匹配,利用CV_IMAGE_ELEM得到每一點的灰度值,記錄每一個AOI區域所有的灰度值特征,找到輪軸中心的位置,然后記錄每一個圓心的圖像坐標值,利用單位轉換的原理得到圖像中物體對應的實際物體的尺寸,利用cvSetImageROI()設置敏感區域,將定位到的輪軸區域放大處理,cvCopy()從源圖像中拷貝圖像,從而得到輪軸區域圖片,如圖7所示,為進一步判斷輪軸半徑等參數做下一步分析。 圖7 輪軸區域圖像 這里利用Xu提出的隨機Hough變換(RHT),相對于Hough變換,RHT能夠大量降低內存需求和計算時間。把圖像空間隨機選取的不共線的三個點映射成參數空間的一個點,是多對一的映射,避免一到多映射的巨大計算量。在處理復雜圖像時,由于隨機采樣仍引入大量的無效單元,從而造成大量無效積累。論文針對實際應用需要提出一些改進利用隨機Hough 變換用于圓檢測。 算法實現基本流程如下: <1>構造邊緣點集P,初始化參數單元集Q,循環次數n=0.S為確定真實圓閾值。 <2>按一定規則從P中選取3個點Pi,Pj,Pk,計算確定的圓參數O(a,b,r)。 <3>從Q中找出Oi,滿足‖O(a,b,r)-Oi‖≤δ則繼續。否則轉<2>。 <4>取Pm(m≠i,j,k)計算dm-0,若滿足dm-0<δ,則Qi=Qi+1。P=P-{Pm},n=n+1,直至取完滿足條件。 {Pm|a+r-t≤xm≤a+r+t,a+r-t≤ym≤a+r+t}的點。 <5>如果計數Qi>S,確認O(a,b,r)為真實圓,否則從Q中去除Qi,轉<2>。 <6>判斷并檢測圓的數目是否符合規定,達到結束程序;否則轉<2>。 4.結論 本文利用了行掃描和列掃描的方法對車輛AOI區域進行粗定位,利用特征點定位并進行閾值平均得到車輛高度與車長特征,并通過Hough變換對輪軸圖像進行處理,便于進一步的圓特征確定,最后利用特征點坐標比較得出車輛信息,得到了很好的效果,從實驗的300張圖像得到的結果來看,車輛特征信息確定成功率達到95%以上,但在實際的應用中,車牌圖像還要受到很多因素的干擾,因此要進一步提高識別率和識別速度是下一步要研究的內容。 【參考文獻】 [1]劉瑞禎,于仕琪.OpenCV教程——基礎篇[M].北京航空航天大學出版社,2007. [2]曾麗華,李超.基于邊緣與顏色信息車牌精確定位算法[J].北京航空航天大學學報,2007:33-9,1112-1115. [3]岡薩雷斯.數字圖像處理[M].北京電子工業出版,2007. [4]孫炎增,張前進.車牌字符識別技術的研究與實現[J].微電子學與計算機,2008:25-6,101-104. [5]龐茂群,鄧開發.一種基于灰度圖像的車牌定位方法[J].計算機工程與科學,2009:31-10,39-41.