張建飛
(中北大學 信息與通信工程學院, 山西太原 030051)
智能交通系統是目前世界各國交通領域競相研究和開發的前沿研究課題和熱點。它是將先進的信息技術、數據通訊傳輸技術、電子控制技術、傳感器技術以及計算機處理技術等有效地綜合運用于整個交通體系,從而建立起的一種在大范圍內、全方位發揮作用的實時、準確、高效的交通綜合管理系統。運動目標檢測與跟蹤是智能交通系統的一個重要組成部分,因此該課題的研究就顯得尤為重要[1]。
圖像灰度化就是將彩色圖像中的彩色信息剔除,只包含亮度信息。計算機中表示灰度圖是把亮度值進行量化等分成0~255共256個級別,0最暗(全黑),255最亮(全白),而在RGB模型中,如果R=G=B,則顏色(R,G,B)就表示灰度色。考慮到圖像的合理性,本文選用下面的公式進行灰度轉換:

其中Gray表示圖像中像素的灰度值,R表示該像素的紅色分量,G表示綠色分量,B表示藍色分量。在opencv函數庫中,圖像的灰度化可以通過cvCvtColor(const CvArr*src, CvArr* dst, int code)函數實現的。
中值濾波是由Tukey首先提出的一種基于排序統計理論,能有效抑制噪聲的非線性信號處理技術。它也是一種鄰域運算,類似于卷積,但是計算的不是加權求和,而是把數字圖像或數字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍像素灰度值的差比較大的像素改取與周圍的像素值接近的值,從而可以消除孤立的噪聲點。它能減弱或消除傅立葉空間的高頻分量,但影響低頻分量。因為高頻分量對應圖像中的區域邊緣的灰度值具有較大較快變化的部分,該濾波可將這些分量濾除,使圖像平滑。標準一維中值濾波器的定義為:

式中med 表示取中值操作,中值濾波的濾波方法是對滑動窗口2N+1內的像素做大小排序,濾波結果的輸出像素值規定為該序列的中值。
圖像分割是圖像處理和計算機視覺中基本而關鍵的技術之一,它是將目標與背景分離,為后續的分類、識別和檢索提供依據。圖像分割方法通常包括閾值法、邊緣檢測法、區域跟蹤法等。在圖像分割的諸多方法中,二值化技術是一種簡單有效的方法。圖像的二值化按下述公式進行:

式中,G(x,y)是原圖像中位于(i,j)處像素的灰度;Gb(i,j)是二值化后該處的像素值,它只能取O或l,將上式所得二值圖像中數值為0的部分表示背景,數值為1的部分表示對象圖形。T為用于二值化處理的閉值。二值化的過程本身比較簡單,關鍵問題就是閩值的選取。本文采用了大津法(OTSU)進行了閾值的選取。
在OpenCV中,圖像的二值化是由函數void cvTheshold(const CvArr* src,CvArr*dst, double threshold,double max_value, int threshold_type )
在數學形態學處理中采用了閉運算、開運算和孔洞填充等操作[3],定義形式如下。
(a) A被B的形態學閉運算記做A·B,是先膨脹再腐蝕的結果,用數學公式表示為:

(b) A被B的形態學開運算記做A?B,是先腐蝕再膨脹的結果,用數學公式表示為:

(c)假設一幅標記圖像fm,該圖像的邊緣部分的值為1-f,其余部分的值為0。

則填充圖像f中的孔洞的公式為:

視頻圖像中運動目標的檢測主要有幀間差分、光流法和背景差分等3種方法[5]。由于前兩種方法存在提取的目標不精確、實時性差和抗噪性弱等缺點,對后期的分類識別不利,因此本文采用surendra背景更新算法實現對運動目標的檢測。具體的過程如下:
(a) 將第一幀圖像I0作為背景B0
(b) 選取閾值T,該閾值根據背景變化情況進行噪聲選擇。
(c) 求當前幀的幀間差分圖像Ri(x,y),span為幀抽取間隔:

(d)用二值圖像Ri(x,y)控制更新背景圖像Bi(x,y):

式中:Bi(x,y),Ri(x,y)為背景圖像和差分二值圖像在(x,y)的灰度值,Ii為輸入的第i幀圖像,為迭代速度系數。
(e)迭代次數m=m+1,當迭代次數m=MAX_STEPS時結束迭代,此時Bi(x,y)在一定程度上可以視為背景圖像。
(f)當前幀與背景進行差分得到運動目標的前景F(x,y):

Surendra 背景更新算法有效降低運動目標對背景的干擾,能夠提供更好的運動目標檢測結果[6]。
運動目標的跟蹤是把運動的物體檢測出來后,對目標編號并獲取其運動軌跡。為了實現該功能,本文基于Kalamn濾波[7]的MeanShift[8]目標跟蹤算法將整個過程分成如下幾個模塊實現:前景檢測模塊、新團塊檢測模塊、團塊跟蹤模塊、軌跡生成模塊和軌跡后處理模塊,最后由跟蹤流程模塊CvBlobTrackAuto將這5個模塊連接起來,構成一個完整的跟蹤流程。下面對各模塊簡單介紹一下:
(a)前景檢測模塊:對每一個像素判斷其是前景還是背景。
(b)新團塊檢測模塊:使用前景檢測的結果檢測新進入場景的團體。
(c)團塊跟蹤模塊:使用新團塊檢測模塊的結果初始化該模塊,并跟蹤新進入的團體。
(d)軌跡生成模塊:主要是保存操作。收集所有團塊的位置,并在每條軌跡結束時將其保存到硬盤上。
(e)軌跡后處理模塊:進行軌跡的平滑操作。
(f)跟蹤流程模塊:將前面提到的5個模塊連接起來,形成一個處理流程。
根據本文的算法用VC++6.0軟件編寫實現,采用OpenCV對視頻進行讀取和顯示。其程序是一個基于對話框的MFC應用程序,對話框上3個按鈕分別實現打開視頻、目標檢測和目標跟蹤的功能。如圖1所示。

圖1 程序界面
點擊對話框上的‘打開視頻’按鈕,選擇‘yas12.avi’,點擊打開。如圖2所示。

圖2 程序讀取視頻
打開視頻后,點擊對話框上的‘檢測處理’按鈕,可實現對運動目標的檢測。如圖3~5所示。

圖3 視頻播放

圖4 提取背景

圖5 檢測出運動目標
點擊對話框上的‘跟蹤處理’按鈕,可實現對運動目標的跟蹤。運動車輛都被跟蹤上,并分配好了ID號碼實現了計數,該程序還能標記跟蹤狀態的好壞,紅色環圈住的區域中顯示了一個abnormal,表示該目標跟蹤異常,綠色則表示穩定跟蹤,如圖6所示。

圖6 跟蹤運動目標
本文結合了Surendra背景更新算法和動態閾值自動提取的OTSU算法,穩定地提取了背景圖像,實現了運動目標的檢測。采用了基于Kalamn濾波的MeanShift目標跟蹤算法進行了運動目標的跟蹤。最后在OpenCV開發平臺下驗證了算法的可行性,實驗取得了較好的效果。
[1]STEFANO MESSLODI,CARLA MARIA MODEN.Vision-based bicycle and motorcycle classification[J].Pattern Recognition Letters,.2007(28): 1719-1726.
[2]馬桂珍,朱玲贊,段麗.基于OpenCV 的視頻應用程序的開發方法[J].現代電子技術,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]楊學超,劉文萍.視頻圖像序列中的運動目標檢測技術[J].計算機應用與軟件,2008(1):215-217.
[6]張偉,鮑旭東.基于自適應卡爾曼濾波的運動車輛檢測[J].電腦知識與技術,2008(9).
[7]王建文,稅海濤,馬宏緒.卡爾曼體系下的濾波算法計算框架[J].數據采集與處理,2009(1).
[8]尹彥,耿兆豐.基于背景模型的運動目標檢測與跟蹤[J].微計算機信息,2008(1):298-300.