meanshift聚類演算法跟蹤原理

2021-08-15 19:36:56 字數 1426 閱讀 3155

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

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

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

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

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

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

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

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

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

Mean Shift 聚類演算法

原文 一 mean shift 演算法理論 mean shift 演算法是基於核密度估計的爬山演算法,可用於聚類 影象分割 跟蹤等,因為最近搞乙個專案,涉及到這個演算法的影象聚類實現,因此這裡做下筆記。1 均值漂移的基本形式 給定d維空間的n個資料點集x,那麼對於空間中的任意點x的mean shif...

聚類之meanshift演算法

在k means 演算法中,最終的聚類效果受初始的聚類中心的影響,k means 演算法的提出,為選擇較好的初始聚類中心提供了依據 選擇的的初始聚類中心盡可能的遠 但是演算法中,聚類的類別個數k仍需事先確定,對於類別個數事先未知的資料集,k means和k means 將很難對其精確求解。mean ...

目標跟蹤方法 Mean Shift 演算法

一 概述 mean shift,即均值向量偏移,該理論是一種無引數密度估計演算法,最早由 fukunaga 等人於1975年提出。cheng等人對基本的 mean shift 演算法進行了改進,一方面將核函式引入均值偏移向量,使得隨著樣本與被偏移點的距離不同,對應的偏移量對均值偏移向量的貢獻也不同 ...