張建飛
(中北大學 信息與通信工程學院, 山西太原 030051)
智能交通系統(tǒng)是目前世界各國交通領(lǐng)域競相研究和開發(fā)的前沿研究課題和熱點。它是將先進的信息技術(shù)、數(shù)據(jù)通訊傳輸技術(shù)、電子控制技術(shù)、傳感器技術(shù)以及計算機處理技術(shù)等有效地綜合運用于整個交通體系,從而建立起的一種在大范圍內(nèi)、全方位發(fā)揮作用的實時、準確、高效的交通綜合管理系統(tǒng)。運動目標檢測與跟蹤是智能交通系統(tǒng)的一個重要組成部分,因此該課題的研究就顯得尤為重要[1]。
圖像灰度化就是將彩色圖像中的彩色信息剔除,只包含亮度信息。計算機中表示灰度圖是把亮度值進行量化等分成0~255共256個級別,0最暗(全黑),255最亮(全白),而在RGB模型中,如果R=G=B,則顏色(R,G,B)就表示灰度色??紤]到圖像的合理性,本文選用下面的公式進行灰度轉(zhuǎn)換:
其中Gray表示圖像中像素的灰度值,R表示該像素的紅色分量,G表示綠色分量,B表示藍色分量。在opencv函數(shù)庫中,圖像的灰度化可以通過cvCvtColor(const CvArr*src, CvArr* dst, int code)函數(shù)實現(xiàn)的。
中值濾波是由Tukey首先提出的一種基于排序統(tǒng)計理論,能有效抑制噪聲的非線性信號處理技術(shù)。它也是一種鄰域運算,類似于卷積,但是計算的不是加權(quán)求和,而是把數(shù)字圖像或數(shù)字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍像素灰度值的差比較大的像素改取與周圍的像素值接近的值,從而可以消除孤立的噪聲點。它能減弱或消除傅立葉空間的高頻分量,但影響低頻分量。因為高頻分量對應圖像中的區(qū)域邊緣的灰度值具有較大較快變化的部分,該濾波可將這些分量濾除,使圖像平滑。標準一維中值濾波器的定義為:
式中med 表示取中值操作,中值濾波的濾波方法是對滑動窗口2N+1內(nèi)的像素做大小排序,濾波結(jié)果的輸出像素值規(guī)定為該序列的中值。
圖像分割是圖像處理和計算機視覺中基本而關(guān)鍵的技術(shù)之一,它是將目標與背景分離,為后續(xù)的分類、識別和檢索提供依據(jù)。圖像分割方法通常包括閾值法、邊緣檢測法、區(qū)域跟蹤法等。在圖像分割的諸多方法中,二值化技術(shù)是一種簡單有效的方法。圖像的二值化按下述公式進行:
式中,G(x,y)是原圖像中位于(i,j)處像素的灰度;Gb(i,j)是二值化后該處的像素值,它只能取O或l,將上式所得二值圖像中數(shù)值為0的部分表示背景,數(shù)值為1的部分表示對象圖形。T為用于二值化處理的閉值。二值化的過程本身比較簡單,關(guān)鍵問題就是閩值的選取。本文采用了大津法(OTSU)進行了閾值的選取。
在OpenCV中,圖像的二值化是由函數(shù)void cvTheshold(const CvArr* src,CvArr*dst, double threshold,double max_value, int threshold_type )
在數(shù)學形態(tài)學處理中采用了閉運算、開運算和孔洞填充等操作[3],定義形式如下。
(a) A被B的形態(tài)學閉運算記做A·B,是先膨脹再腐蝕的結(jié)果,用數(shù)學公式表示為:
(b) A被B的形態(tài)學開運算記做A?B,是先腐蝕再膨脹的結(jié)果,用數(shù)學公式表示為:
(c)假設(shè)一幅標記圖像fm,該圖像的邊緣部分的值為1-f,其余部分的值為0。
則填充圖像f中的孔洞的公式為:
視頻圖像中運動目標的檢測主要有幀間差分、光流法和背景差分等3種方法[5]。由于前兩種方法存在提取的目標不精確、實時性差和抗噪性弱等缺點,對后期的分類識別不利,因此本文采用surendra背景更新算法實現(xiàn)對運動目標的檢測。具體的過程如下:
(a) 將第一幀圖像I0作為背景B0
(b) 選取閾值T,該閾值根據(jù)背景變化情況進行噪聲選擇。
(c) 求當前幀的幀間差分圖像Ri(x,y),span為幀抽取間隔:
(d)用二值圖像Ri(x,y)控制更新背景圖像Bi(x,y):
式中:Bi(x,y),Ri(x,y)為背景圖像和差分二值圖像在(x,y)的灰度值,Ii為輸入的第i幀圖像,為迭代速度系數(shù)。
(e)迭代次數(shù)m=m+1,當?shù)螖?shù)m=MAX_STEPS時結(jié)束迭代,此時Bi(x,y)在一定程度上可以視為背景圖像。
(f)當前幀與背景進行差分得到運動目標的前景F(x,y):
Surendra 背景更新算法有效降低運動目標對背景的干擾,能夠提供更好的運動目標檢測結(jié)果[6]。
運動目標的跟蹤是把運動的物體檢測出來后,對目標編號并獲取其運動軌跡。為了實現(xiàn)該功能,本文基于Kalamn濾波[7]的MeanShift[8]目標跟蹤算法將整個過程分成如下幾個模塊實現(xiàn):前景檢測模塊、新團塊檢測模塊、團塊跟蹤模塊、軌跡生成模塊和軌跡后處理模塊,最后由跟蹤流程模塊CvBlobTrackAuto將這5個模塊連接起來,構(gòu)成一個完整的跟蹤流程。下面對各模塊簡單介紹一下:
(a)前景檢測模塊:對每一個像素判斷其是前景還是背景。
(b)新團塊檢測模塊:使用前景檢測的結(jié)果檢測新進入場景的團體。
(c)團塊跟蹤模塊:使用新團塊檢測模塊的結(jié)果初始化該模塊,并跟蹤新進入的團體。
(d)軌跡生成模塊:主要是保存操作。收集所有團塊的位置,并在每條軌跡結(jié)束時將其保存到硬盤上。
(e)軌跡后處理模塊:進行軌跡的平滑操作。
(f)跟蹤流程模塊:將前面提到的5個模塊連接起來,形成一個處理流程。
根據(jù)本文的算法用VC++6.0軟件編寫實現(xiàn),采用OpenCV對視頻進行讀取和顯示。其程序是一個基于對話框的MFC應用程序,對話框上3個按鈕分別實現(xiàn)打開視頻、目標檢測和目標跟蹤的功能。如圖1所示。
圖1 程序界面
點擊對話框上的‘打開視頻’按鈕,選擇‘yas12.avi’,點擊打開。如圖2所示。
圖2 程序讀取視頻
打開視頻后,點擊對話框上的‘檢測處理’按鈕,可實現(xiàn)對運動目標的檢測。如圖3~5所示。
圖3 視頻播放
圖4 提取背景
圖5 檢測出運動目標
點擊對話框上的‘跟蹤處理’按鈕,可實現(xiàn)對運動目標的跟蹤。運動車輛都被跟蹤上,并分配好了ID號碼實現(xiàn)了計數(shù),該程序還能標記跟蹤狀態(tài)的好壞,紅色環(huán)圈住的區(qū)域中顯示了一個abnormal,表示該目標跟蹤異常,綠色則表示穩(wěn)定跟蹤,如圖6所示。
圖6 跟蹤運動目標
本文結(jié)合了Surendra背景更新算法和動態(tài)閾值自動提取的OTSU算法,穩(wěn)定地提取了背景圖像,實現(xiàn)了運動目標的檢測。采用了基于Kalamn濾波的MeanShift目標跟蹤算法進行了運動目標的跟蹤。最后在OpenCV開發(fā)平臺下驗證了算法的可行性,實驗取得了較好的效果。
[1]STEFANO MESSLODI,CARLA MARIA MODEN.Vision-based bicycle and motorcycle classification[J].Pattern Recognition Letters,.2007(28): 1719-1726.
[2]馬桂珍,朱玲贊,段麗.基于OpenCV 的視頻應用程序的開發(fā)方法[J].現(xiàn)代電子技術(shù),2007(4):78-79.
[3]Serra J.Introduction to Mathematical Morphology[J].Computer Vision, Graphics and Image processing,1998,35(1):283-305.
[4]Jen-Chao Taj,Shung-Tseng.Real time Image Tracking for Automatic Traffic Monitoring and Enforcement Applications Visual track in[J].Image and Vision Computing ,2004,22(6):640-649.
[5]楊學超,劉文萍.視頻圖像序列中的運動目標檢測技術(shù)[J].計算機應用與軟件,2008(1):215-217.
[6]張偉,鮑旭東.基于自適應卡爾曼濾波的運動車輛檢測[J].電腦知識與技術(shù),2008(9).
[7]王建文,稅海濤,馬宏緒.卡爾曼體系下的濾波算法計算框架[J].數(shù)據(jù)采集與處理,2009(1).
[8]尹彥,耿兆豐.基于背景模型的運動目標檢測與跟蹤[J].微計算機信息,2008(1):298-300.