meanshift運動跟蹤演算法詳解

2021-08-03 19:11:07 字數 1426 閱讀 1062

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

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

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

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

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

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

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

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

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

目標跟蹤方法 Mean Shift 演算法

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

meanshift聚類演算法跟蹤原理

這幾天學習 學習opencv 中的第十章運動跟蹤,裡面講到了meanshift演算法,根據書上所講實在難以理解,meanshift在運動跟蹤這個過程中到底起到什麼作用,於是經過幾天不斷地看相關資料和別人的部落格文章,慢慢思路清晰了,也終於知道了meanshift這個演算法它到底是什麼作用,起到什麼樣...

目標跟蹤 Meanshift演算法 均值漂移演算法

傳統的meanshift演算法在跟蹤中有幾個優勢 1 演算法計算量不大,在目標區域已知的情況下完全可以做到實時跟蹤 2 採用核函式直方圖模型,對邊緣遮擋 目標旋轉 變形和背景運動不敏感。1 缺乏必要的模板更新 2 跟蹤過程中由於視窗寬度大小保持不變,當目標尺度有所變化時,跟蹤就會失敗 3 當目標速度...