天天看點

基于MeanShift的目标跟蹤算法及實作

       這次将介紹基于MeanShift的目标跟蹤算法,首先談談簡介,然後給出算法實作流程,最後實作了一個單目标跟蹤的MeanShift算法【matlab/c兩個版本】

      csdn貼公式比較煩,原諒我直接截圖了…

一、簡介

     首先扯扯無參密度估計理論,無參密度估計也叫做非參數估計,屬于數理統計的一個分支,和參數密度估計共同構成了機率密度估計方法。參數密度估計方法要求特征空間服從一個已知的機率密度函數,在實際的應用中這個條件很難達到。而無參數密度估計方法對先驗知識要求最少,完全依靠訓練資料進行估計,并且可以用于任意形狀的密度估計。是以依靠無參密度估計方法,即不事先規定機率密度函數的結構形式,在某一連續點處的密度函數值可由該點鄰域中的若幹樣本點估計得出。常用的無參密度估計方法有:直方圖法、最近鄰域法和核密度估計法。

     MeanShift算法正是屬于核密度估計法,它不需要任何先驗知識而完全依靠特征空間中樣本點的計算其密度函數值。對于一組采樣資料,直方圖法通常把資料的值域分成若幹相等的區間,資料按區間分成若幹組,每組資料的個數與總參數個數的比率就是每個單元的機率值;核密度估計法的原理相似于直方圖法,隻是多了一個用于平滑資料的核函數。采用核函數估計法,在采樣充分的情況下,能夠漸進地收斂于任意的密度函數,即可以對服從任何分布的資料進行密度估計。

     然後談談MeanShift的基本思想及實體含義:

基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作

    此外,從公式1中可以看到,隻要是落入Sh的采樣點,無論其離中心x的遠近,對最終的Mh(x)計算的貢獻是一樣的。然而在現實跟蹤過程中,當跟蹤目标出現遮擋等影響時,由于外層的像素值容易受遮擋或背景的影響,是以目标模型中心附近的像素比靠外的像素更可靠。是以,對于所有采樣點,每個樣本點的重要性應該是不同的,離中心點越遠,其權值應該越小。故引入核函數和權重系數來提高跟蹤算法的魯棒性并增加搜尋跟蹤能力。

      接下來,談談核函數:

基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作

    核函數也叫視窗函數,在核估計中起到平滑的作用。常用的核函數有:Uniform,Epannechnikov,Gaussian等。本文算法隻用到了Epannechnikov,它數序定義如下:

基于MeanShift的目标跟蹤算法及實作

二、基于MeanShift的目标跟蹤算法

     基于均值漂移的目标跟蹤算法通過分别計算目标區域和候選區域内像素的特征值機率得到關于目标模型和候選模型的描述,然後利用相似函數度量初始幀目标模型和目前幀的候選模版的相似性,選擇使相似函數最大的候選模型并得到關于目标模型的Meanshift向量,這個向量正是目标由初始位置向正确位置移動的向量。由于均值漂移算法的快速收斂性,通過不斷疊代計算Meanshift向量,算法最終将收斂到目标的真實位置,達到跟蹤的目的。

     下面通過圖示直覺的說明MeanShift跟蹤算法的基本原理。如下圖所示:目标跟蹤開始于資料點xi0(空心圓點xi0,xi1,…,xiN表示的是中心點,上标表示的是的疊代次數,周圍的黑色圓點表示不斷移動中的視窗樣本點,虛線圓圈代表的是密度估計視窗的大小)。箭頭表示樣本點相對于核函數中心點的漂移向量,平均的漂移向量會指向樣本點最密集的方向,也就是梯度方向。因為

Meanshift 算法是收斂的,是以在目前幀中通過反複疊代搜尋特征空間中樣本點最密集的區域,搜尋點沿着樣本點密度增加的方向“漂移”到局部密度極大點點xiN,也就是被認為的目标位置,進而達到跟蹤的目的,MeanShift 跟蹤過程結束。

基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作

運動目标的實作過程【具體算法】:

基于MeanShift的目标跟蹤算法及實作

三、代碼實作

說明:

1.       RGB顔色空間刨分,采用16*16*16的直方圖

2.       目标模型和候選模型的機率密度計算公式參照上文

3.       opencv版本運作:按P停止,截取目标,再按P,進行單目标跟蹤

4.       Matlab版本,将視訊改為圖檔序列,第一幀停止,手工标定目标,輕按兩下目标區域,進行單目标跟蹤。

matlab版本:

 運作結果:

基于MeanShift的目标跟蹤算法及實作

opencv版本:

運作結果:

基于MeanShift的目标跟蹤算法及實作
基于MeanShift的目标跟蹤算法及實作

初始目标直方圖:

基于MeanShift的目标跟蹤算法及實作

候選目标直方圖:

基于MeanShift的目标跟蹤算法及實作

源碼及素材的下載下傳位址我過會在評論裡給出。

繼續閱讀