Meanshift演算法學習筆記

2021-07-10 14:52:44 字數 2070 閱讀 7415

meanshift演算法實際是乙個自適應的梯度上公升搜尋峰值的演算法

epanechnikov核:

剖面函式位為:

高斯核:

剖面函式為:

在x≥0時,定義核函式的剖面函式為k(x),c(k,d)是歸一化常量,並假設其為嚴格正實性。

採用只有乙個引數的核密度估計得到如下公式:

採用剖面函式使得上式變為:

核函式這種東西,有可能說的不夠明白,想深入了解的可以再找找其他相關資料。

給定d維空間rd的n個樣本點 ,i=1,…,n,在空間中任選一點x,那麼mean shift向量的基本形式定義為:

sk是乙個半徑為h的高維球區域,滿足以下關係的y點的集合

k表示在這n個樣本點xi中,有k個點落入sk區域中。

簡單地說,在d維空間中,任選乙個點,然後以這個點為圓心,h為半徑做乙個高維球(因為有d維,d可能大於2,所以是高維球)。落在這個球內的所有點和圓心都會產生乙個向量,向量是以圓心為起點落在球內的點為終點。然後把這些向量都相加。相加的結果就是meanshift向量。

如下圖所示。其中黃色箭頭就是mh(meanshift向量)

再以meanshift向量的終點為圓心,做乙個高維的球。如下圖所以,重複以上步驟,就可得到乙個meanshift向量。如此重複下去,meanshift演算法可以收斂到概率密度最大的地方(也就是最稠密的地方)。

最終的結果如下:

meanshift演算法中加入核函式,那麼,meanshift演算法變形為:

其中k(x)為核函式,h為半徑, c(k,d)/nhd 為單位密度,要使得上式f得到最大,對其求導,得到:

令g(x) = -k』(x),k(x)叫做g(x)的影子核,那麼上式可以表示為:

對於上式,如果採用高斯核,那麼,可分為三部分,第一項部分為:

第二部分相當於乙個meanshift向量的式子:

第三部分是乙個係數:2/h2 ,那麼該式可以表示為:

下面分析上式的構成,其構成比較清晰,如下所示:

要使整個式子為0,當且僅當mh,g(x) = 0,可以得出新的圓心座標:

1、選擇空間中點x為圓心,以h為半徑,做乙個高維球,落在球內的點記為xi

2、計算mh,g(x)

3、如果mh,g(x)ε,則利用下式

計算出新的圓心座標(下圖),並跳轉至步驟1

由於在計算的時候加入了與密度相關的權值,使得步長不僅與梯度大小有關,也與該點的密度大小有關,密度大的地方步長小,更精確,密度小的地方,步長大,收斂速度快,在滿足條件時,就會收斂到附近的峰值。

Meanshift演算法學習

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

OpenCV學習筆記 MeanShift

一 原理 假設我們有一堆點 比如直方圖反向投影得到的點 和乙個小的圓形視窗,我們要完成的任務就是將這個視窗移動到最大灰度密度處 也就是點最多的地方 如下圖所示 初始視窗是藍色的c1,它的圓心為藍色方框的c1 o,而視窗中所有點質心卻是c1 r,很明顯圓心和點的質心沒有重合。所以移動圓心c1 o到質心...

演算法 學習筆記

1.輸入輸出演算法至少有乙個或多個輸出 2.有窮性 3.確定性 4.可行性 1.正確性a.演算法程式沒有語法錯誤 b.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果 c.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果 d.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...