學習 meanshift演算法通俗講解

2021-09-19 19:08:52 字數 1349 閱讀 3053

複製鏈結

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

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

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

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

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

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

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

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

Meanshift演算法學習

ref 參考自 這裡 目標跟蹤 meanshift影象分割 這裡 最近看到ft演算法使用meanshift演算法進行顯著圖的分割,於是就來學習他的姿勢 對於集合中的每乙個元素,對它執行下面的操作 把該元素移動到它鄰域中所有元素的特徵值的均值的位置,不斷重複直到收斂。準確的說,不是真正移動元素,而是把...

Meanshift演算法學習筆記

meanshift演算法實際是乙個自適應的梯度上公升搜尋峰值的演算法 epanechnikov核 剖面函式位為 高斯核 剖面函式為 在x 0時,定義核函式的剖面函式為k x c k,d 是歸一化常量,並假設其為嚴格正實性。採用只有乙個引數的核密度估計得到如下公式 採用剖面函式使得上式變為 核函式這種...

meanShift演算法介紹

meanshift,均值漂移,在聚類 影象平滑 分割 跟蹤等方面有著廣泛的應用。meanshift這個概念最早是由fukunage在1975年提出的,其最初的含義正如其名 偏移的均值向量 但隨著理論的發展,meanshift的含義已經發生了很多變化。如今,我們說的meanshift演算法,一般是指乙...