meanshift運動跟蹤算法詳解

這幾天學習《學習openCV》中的第十章運動跟蹤,裏面講到了meanshift算法,根據書上所講實在難以理解,meanshift在運動跟蹤這個過程中到底起到什麼作用,於是經過幾天不斷地看相關資料和別人的博客文章,慢慢思路清晰了,也終於知道了meanshift這個算法它到底是什麼作用,起到什麼樣的角色,雖然爲了弄明白這個算法花了幾天的時間,但是通過這個過程學到了很多其他的知識。好了,接下來進入正題。

         首先要介紹一下meanshift這個算法,它的本質是一個迭代的過程,那麼這個算法的最終效果是什麼呢?或者說這個算法能做什麼事情?它能夠在一組數據的密度分佈中尋找到局部極值,它比較穩定,而且是無參密度估計(它不需要事先知道樣本數據的概率密度分佈函數,完全依靠對樣本點的計算),而且它在採樣充分的情況下,一定會收斂,即可以對服從任意分佈的數據進行密度估計。下面來根據幾張圖片來理解一下meanshift算法的最終效果:

         這裏就不把meanshift的數學公式什麼的都寫出來了,只爲了讓大家知道meanshift是什麼作用;高維的我們也先不考慮,以二維來說明可能更容易理解,下圖中的很多的紅點就是我們的樣本特徵點,meanshift就是在這些點中的任意一個點爲圓心,然後以半徑R畫一個圓(在OpenCV中是一個矩形),然後落在這個圓中的所有點和圓心都會對應的一個向量,把所有這些向量相加(注意是向量相加),最終我們只得到一個向量,就是下圖中用黃色箭頭表示的向量,這個向量就是meanshift向量。

 

         然後再以這個meanshift向量的終點爲圓心,繼續上述過程,又可以得到一個meanshift向量,如下圖:

 

         然後不斷地繼續這樣的過程,我們可以得到很多連續的meanshift向量,這些向量首尾相連,最終得到會在一個地方停下來(即我們說的meanshift算法會收斂),最後的那個meanshift向量的終點就是最終得到的結果(一個點),如下圖:

 

         從上述的過程我們可以看出,meanshift算法的過程最終的效果就是:從起點開始,最終會一步一步到達樣本特徵點最密集的點那裏(當然在哪個點就是終點這個要取決於我們設定的閾值)。

         注:如果還是不明白爲什麼會向密集的地方走去,可以利用向量的加法規則自己畫個簡單的圖去理解一下。

         到這裏可能只知道meanshift算法的作用是向數據密集的地方走的一個效果,但是還是不明白它是怎麼在運動跟蹤中發揮作用的,尤其是不理解它這個樣本特徵點(就是上圖中的紅點點)到底和我們圖像中的什麼對應的。

       對於上面這個問題,我們需要先了解一下運動跟蹤算法是一個什麼樣的過程,知道了這個過程之後就可以知道meanshift算法在這個過程中發揮什麼角色了。運動跟蹤說到底就是在一開始告訴程序一個跟蹤目標,即我想跟蹤什麼,然後程序就在接下來的視頻幀中去尋找這個目標了。給定跟蹤目標很簡單,直接在圖像中給一個ROI給程序就可以了,那麼程序接下來要做的就是在下一幀圖像中去找這個ROI,但這個ROI是移動了的,已經不在之前的那個位置了,那麼這個時候程序要怎麼來找到這個ROI呢?那麼在計算機視覺中我們是這麼來解決的:首先對跟蹤目標進行描述,這個描述是將跟蹤目標區域轉換爲顏色HSV空間,然後得到H的這個通道的分佈直方圖,有了這個描述之後,我們就是要在下一個視頻幀中找到和這個描述的一樣的區域,但是我們知道要找到完全一樣的區域很難,所以我們就用了一個相似函數來衡量我們找到的區域和我們的目標區域的相似度,通過這個相似函數,相似函數值越大說明我們找打的區域和目標區域越相似,所以我們的目標就是要找這個對應最大相似值的區域,那麼怎麼來找呢?這個時候meanshift就排上用場了,它可以通過不斷地迭代得到有最大相似值的區域(具體裏面的是怎麼算的,可以參考博文地底下的參考博客),meanshift的作用可以讓我們的搜索窗口不斷向兩個模型相比顏色變化最大的方向不斷移動,直到最後兩次移動距離小於閾值,即找到當前幀的位置,並以此作爲下一幀的起始搜索窗口中心,如此重複,這個過程每兩幀之間都會產生一個meanshift向量,整個過程的meanshift向量連起來就是目標的運動路徑。所以講到這裏了,我們已經知道了meanshift算法在整個運動跟蹤過程中扮演什麼角色了。

         整個運動跟蹤過程就是如下圖所示:

 

參考博客:

http://blog.csdn.net/jinshengtao/article/details/30258833

http://www.cnblogs.com/liqizhou/archive/2012/05/12/2497220.html

         

發佈了50 篇原創文章 · 獲贊 86 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章