1. 程式人生 > >運動目標跟蹤

運動目標跟蹤

第三章 運動目標跟蹤

目標檢測之後就是目標跟蹤,目標跟蹤是在事先不瞭解目標運動資訊的條件下,通過來自資訊源的資料實時估計出目標的運動狀態,從而實現對目標的位置和運動趨勢的判定。

基於邊緣的目標跟蹤,是假設已知邊緣的狀態變數,包括邊緣線段位置、方向、強度,通過影象變形獲得包含目標的備選區域,再對規範化邊緣進行跟蹤。

基於背景估計的目標跟蹤,是在背景靜止或背景緩慢變化的情況下進行目標跟蹤的,主要通過背景建模,利用影象序列幀來估計影象序列中不變的背景,進而提取當前幀中的非背景畫素集合(運動目標包含其中)。

基於運動場估計的目標跟蹤,主要有光流法(OFE)、塊匹配(BMA)、基於貝葉斯最大後驗概率(MAP)模型的統計方法。

基於團塊的目標跟蹤,是對候選畫素進行影象分割,判斷該畫素是屬於目標還是屬於背景或是其他區域。與傳統的影象分割不同在於:目標視覺跟蹤目的在於在影象序列中進行目標定位,可以有一定程度的畫素分類不準確,只需分割結果足以區分目標和背景;而傳統的影象分割演算法需要精確的目標輪廓,分割線索一般有目標的運動特徵,紋理特徵和影象深度資訊等。

基於模板匹配的區域跟蹤是對影象的外部特徵做匹配運算,與參考模板區域匹配程度最高的就是目標。

基於主動輪廓線的目標跟蹤,Snake模型,根據影象資訊來改變曲線位置和形狀。中心思想是最小化影象能量函式,Snake利用對光照變化相對不敏感的輪廓資訊來對目標物體進行建模,並對輪廓的曲率和物體的運動加入平滑性約束。

1.     運動目標的分割

在利用背景差分演算法獲得的前景後,採用連通區域標記演算法來獲得每個運動區域。一般使用目標畫素的左上、上、右下、左這四個鄰域畫素的標記作為標準,通過分析得出當前目標畫素可能遇到的情形的標記:


在標記完每個目標畫素後要將等價對合並,這樣就可以確定出連通區域,一般以最小外接矩形來表示每個連通區域。這種傳統的標記演算法標記的物件是畫素,為了提高運動目標分割的效率,目前有基於邊緣輪廓和線段的標記的方法。OpenCV提供了cvFindContours函式完成目標邊緣的提取。利用此函式可以方便地得到背景差分檢測出來的運動前景影象中的目標輪廓,並得到運動目標的外接輪廓或者外接矩形以及所處的位置。

如果處理的影象中目標出現粘連,處理辦法有求取區域核心種子點分水嶺演算法,這些演算法基於線段編碼的影象,輪廓跟蹤獲取的輪廓是鏈碼格式,就需要將鏈碼轉換為線段表。

2.     卡爾曼濾波跟蹤

卡爾曼濾波器是一個最優化自迴歸資料處理演算法,對於離散控制過程的系統,可用一個線性隨機微分方程來描述:

系統的測量值:

X(k)是k時刻的系統狀態,U(k)是k時刻對系統的控制量。A和B是系統引數,對於多模型系統,他們為矩陣。Z(k)是k時刻的測量值,H是測量系統的引數,對於多測量系統,H為矩陣。W(k)和V(k)分別正態分佈的運動和測量噪聲,他們的先驗誤差分別是Q,R(假設不隨系統狀態變化而變化)。

假設現在的系統狀態是k,根據系統的模型,可以基於系統的上一狀態而預測出現在狀態:

                  (1)

X(klk-1)是利用上一狀態預測的結果,X(k-l lk-1)是上一狀態最優的結果,U(k)為現在狀態的控制量,如果沒有控制量,它可以為0。

用P表示先驗誤差的矩陣

                     (2)

P(klk-1)是X(klk-1)對應的先驗誤差,P(k-Ilk-1)是X(k-Ilk-1)對應的後驗誤差, 表示A的轉置矩陣,Q是系統過程的先驗誤差。式子(1)(2)表示對系統的預測。

結合預測值和測量值,我們可以得到現在狀態(k)的最優化估算值X(klk):

       (3)

其中K為卡爾曼增益矩陣:

           (4)

更新k狀態下X(klk)的先驗誤差:

                      (5)

式子1、2、3、4、5是卡爾曼濾波器的5個基本公式。OpneCV提供了卡爾曼濾波器的資料結構CvKalman與函式CreateKalman、KalmanPredict、KalmanCorrect和ReleaseKalman來完成卡爾曼濾波。

3.     CamShift跟蹤演算法

該演算法的基本原理是將跟蹤目標的色彩資訊作為特徵,將這些資訊計算處理後投影到下一幀影象中,計算出這幅影象中的目標,用這幅影象作為新的源圖,分析下一幀影象,重複這個過程就可以實現對目標的連續跟蹤。該演算法是通過顏色匹配找到運動目標,在運動目標運動的過程中,顏色資訊變化不大,故該演算法具有良好的魯棒性。


灰色的部分是Camshifl演算法的核心——MeanShift演算法,主要目標是在視訊影象到運動目標所在的位置。MeanShift演算法中,給定一個彩色影象和該影象某個初始搜尋區域對應的色度直方圖, 就可以使用這個直方圖作為一個查詢表來建立以畫素色調濃度為灰度值的單通道反射投影影象,MeanShift利用這個反射投影影象,用迭代的方法尋找目標中心,當搜尋視窗中心的移動RoU小於某個定值,或者已經到達最大迭代次數的時候,就返回已經求取到的目標的位置資訊。在彩色影象將MeanShifl演算法擴充套件到連續影象序列,這樣就形成了CamShifl演算法。它的基本思想是將視訊影象的所有幀作MeanShift運算,並將對上一幀的運算結果作為對下一幀運算的輸入值,如此迴圈迭代,就可以實現對活動目標的在每個影象幀中的檢測和跟蹤。

1)     影象的色彩特徵

常見的色彩空間有:RGB、CMYK、YcrCb(YUV)、HSV。

RGB空間。RGB空間是按照光譜理論形成的,在RGB色彩空間,所有的顏色是通過紅、綠、藍三個分量按照一定的比例混合實現的,每一個分量被稱作一個色彩通道。

HSV空間。HSV空間反應了人類感知色彩的方式,亮度(value)和反映色彩本質特性的兩個引數色度(Hue)和飽和度(Saturation)一一分開。當我們需要對彩色影象進行分析的時候,直接利用能夠反映色彩本質特徵的色度和飽和度會獲得比較好的效果。MeanShift演算法主要運用的就是HSV空間中的色度(Hue)資訊。

2)     MeanShift演算法

把影象轉換到HSV空間後,就可以將H通道分離出來建立一個新單通道灰度影象,其灰度值就是HSV空間中的色度Hue值。然後在這個單通道影象以中建立初始搜尋區域灰度直方圖——也就是原影象在搜尋區域的色度直方圖。

從區域色度直方圖反向投影的過程是以初始搜尋區域建立的色度直方圖為查詢表,將Hue通道影象中超過查詢表數值的畫素按座標位置對映到新的灰度影象中,這樣就建立了一張反射影象。

在反射影象中計算目標質心,假定(x,y)為搜尋視窗中的畫素位置,I(x,y)是投影圖中(x,y)處的畫素值,定義搜尋視窗的零階矩 和一階矩 、 分別如下:


搜尋視窗內的質心位置為:


4.     OpenCV的跟蹤框架


1)     前景檢測模組:判斷每一個畫素是前景還是背景。輸入資料為當前幀影象,輸出為當前幀的前景掩碼。

前景檢測模組將當前幀上的畫素分為前景畫素和背景畫素。運動的物體為前景、不動的部分都被當做背景區域。

2)     團塊特徵檢測模組:使用前景檢測的結果檢測場景中運動物體的畫素集合一團塊,輸入資料為當前幀的掩碼和已有的團塊,輸出資料為新檢測到的團塊,為了滿足在雷達系統上的應用,團塊的圖形特徵和運動相關性分析都要考慮,而且要考慮團塊之間以及團塊與背景畫素融合以後的處理。

3)     團塊跟蹤模組:包括團塊列表和單團塊跟蹤,使用新團塊檢測的結果,輸入資料為當前幀、當前幀掩碼和新團塊,輸出資料為當前幀的團塊資訊(ID資訊、位置資訊等)。

4)     軌跡生成模組:收集所有團塊的位置,建立軌跡列表,進行相關性處理。輸入資料為當前幀的所有團塊,輸出資料為儲存的軌跡列表。

5)     軌跡後處理模組:進行運動物體標定時去除位置和運動趨勢的抖動,對軌跡進行平滑處理。此模組可以是卡爾曼濾波或其他平滑濾波。