Mean Shift(均值漂移)原理及在視頻跟蹤中的使用


MeanShift(均值漂移)

MeanShift(均值漂移)的核心思想就是通過計算均值,將一個點移動到密度最大的地方。具體的實現步驟及原理,通過迭代隨機選擇一個特征點作為圓心,計算設置的半徑范圍內所有的特征點到圓心的向量,圓心是七點起點。最終得到一個向量,這個向量就是這個選擇的圓心將要移動的距離和方向;繼續迭代到當這個向量的模小於設置的閾值的時候,停止迭代,這個點就是我們要找的中心點。

計算公式就是:

給定\(d\)維空間\(R_d\)\(n\)個樣本點 ,\(i=1,…,n\),在空間中任選一點\(x\),那么Mean Shift向量的基本形式定義為:

\[M_{h}=\frac{1}{K} \sum_{x_{i} \in S_{k}}\left(x_{i}-x\right) \]

\(S_k\)是一個半徑為h的高維球(這里我們就討論的二位圖像)區域,滿足以下關系的y點的集合,

\[S_{h}(x)=\left\{y:\left(y-x_{i}\right){T}\left(y-x{i}\right)<h^{2}\right\} \]

\(k\)表示在這\(n\)個樣本點\(x_i\)中,有\(k\)個點落入\(S_k\)區域中.

MeanShift示意圖


任選一個點,然后以這個點為圓心,h為半徑做一個高維球,因為有d維,d可能大於2,所以是高維球。落在這個球內的所有點和圓心都會產生一個向量,向量是以圓心為起點落在球內的點位終點。然后把這些向量都相加。相加的結果就是下圖中黃色箭頭表示的MeanShift向量。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xPLojCz5-1638881993883)(MeanShift(%E5%9D%87%E5%80%BC%E6%BC%82%E7%A7%BB)]%2013eff07ada194d13bc3b2498cd986c9b/Untitled.png)

然后,再以這個MeanShift 向量的終點為圓心,繼續上述過程,又可以得到一個MeanShift 向量。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GLMb4t0M-1638881993892)(MeanShift(%E5%9D%87%E5%80%BC%E6%BC%82%E7%A7%BB)]%2013eff07ada194d13bc3b2498cd986c9b/Untitled%202.png)

MeanShift算法在視頻目標跟蹤中的應用


MeanShift算法在視頻跟蹤中的應用首先就需要建立向上面一樣的特征點用於計算加和的向量。這里不能直接用圖像中的像素值來作為向量,我個人的理解就是圖像中的像素並沒有什么特別的地方,這個選擇特征點呢!

那么就必須對圖像進行處理才能得到我們想要的特征圖,方法就是獲取反向投影圖。

反向投影圖

反向投影圖的獲取

首先我們需要得到上一幀中的感興趣區域(也就是目標區域),就是我們平時所理解的給定的第一幀的目標區域,我們的目標就是在下一幀中找到這上一幀的給定的目標區域相識的區域。

比如下圖中紅色框中的人是我們要跟蹤的對象,我們需要統計這個框中的顏色直方圖(表示的是框里面的個像素值出現的次數,這里我們需要做歸一化處理,像素值出現的次數可以大於255)。就得到0-1之間的概率值,可以這么理解。
在這里插入圖片描述
在這里插入圖片描述

然后到下一幀圖像中,去對應整張圖像的像素值,對應到的0-1之間的概率值。可以根據這個概率值進行閾值分割,就可以得到如上面所示的分割圖像。感覺上面這個圖並沒有做閾值分割(這是我在網上找到的圖)。

MeanShift會存在一些問題,就是上圖中的紅色的車和和穿紅色衣服的人之間,如果距離很近的話就會造成跟蹤錯誤,因為他們的方向投影圖都很相似。

我們隨機選取一個比較亮的值來作為特征點,就可以進行上面的均值漂移操作了。

補充:

顏色直方圖的地方,一般將RGB圖像轉化為了HSV圖像,原因在於在 HSV 顏色空間中要比在 BGR 空間中更容易表示一個特定顏色。在 OpenCV 的 HSV 格式中,H(色度)的取值范圍是 [0,179], S(飽和度)的取值范圍 [0,255],V(亮度)的取值范圍 [0,255]),,然后得到H(色調)的這個通道的分布直方圖,即表示不同顏色出現的頻數,這個H(色調)這個通道的直方圖分布指的是在第一幀所框住的目標圖像的(即便也就是目標的直方圖分布)。

在MeanShift中加入核函數


為什么要在MeanShift中加入核函數?

\[M_{h}=\frac{1}{K} \sum_{x_{i} \in S_{k}}\left(x_{i}-x\right) \]

上面的公式表示所有的相加的權重的是一樣的,如果極個別的特征點在里中心點比較遠的地方,就容易參數比較大的誤差。如果我們在這里加上核函數,即便就是在前面加上了一個權重值,距離越遠權重值就越小,距離越近權重值就越大,就可以抵消一些特殊的特征點造成的誤差影響。

改進后的向量疊加公式為:

\[M_{h}(X)=\frac{\sum_{X^{i} \in S_{h}}\left[K\left(\frac{X^{i}-X}{h}\right) \cdot\left(X^{i}-X\right)\right]}{\sum_{X^{i} \in S_{h}}\left[K\left(\frac{X^{i}-X}{h}\right)\right]} \]

其中\(K\left(\frac{X^{i}-X}{h}\right)\)表示高斯核函數。高斯核函數的對應權重示意圖如下。相減越接近0,權重值就越大。上面公式下面是權重值相加,原來是\(K\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM