Meanshift(均值漂移)

2021-06-23 05:19:04 字數 2410 閱讀 6279

通過給出一組多維資料點,其維數是(x,y,r,g,b),均值漂移可以用乙個視窗掃瞄空間來找到資料密度最大的區域,可以理解為資料分布最集中的區域。

在這裡需要注意,由於空間位置(也就是上面的x和y)的變化範圍與顏色的變化範圍(上面的r,g,b)有極大的不同,所以,meanshift對這兩個維數要採用不同的視窗半徑。在opencv自帶的meanshift分割函式cvpyrmeanshiftfiltering()中,就專門有2個半徑引數,分別是spatialradius和colorradius,這兩個引數分別代表的是空間半徑(x,y)和顏色(r,g,b)半徑。

當均值漂移視窗移動時,經過視窗變換後收斂到資料峰值的所有點都會連通起來,並且屬於該峰值。這種所屬關係從密集的尖峰輻射,形成了影象的分割。opencv中的meanshift分割實際上是由比例金字塔(cvpyrup(),cvpyrdown())完成的,相關的介紹大家可以看年learning opencv中關於影象金字塔的介紹。

下面的**是我自己寫的,大家可以參考一下。ps:我執行的時候發現實際上cvpyrmeanshiftfiltering的執行效率並不是很高,特別是把spatialradius的值增大以後迭代時感覺很費時。 

[cpp]view plain

copy

#include"highgui.h"

#include"cv.h"

#include 

using

namespace

cv;  

using

namespace

std;  

iplimage* src;  //source image

iplimage* dst;  //the dst image after meanshift

intspatialrad=10,colorrad=20,maxprylevel=1;  

void

on_meanshift(

int)  

//the callback function

void

main()    

在**中使用了trackbar,因此可以自己 改變spatialrad,colorrad,maxprylevel的值,以便觀察不同引數下的效果。截圖如下

下面圖是源

在opencv

裡面關於

meanshift

演算法的應用還有兩個函式

cvmeanshift

和cvcamshift

函式,都是用於跟蹤的,效果還不錯。

meanshift方法+

卡爾曼濾波還是挺流行的。

opencv之meanshift篇

有很多經過這個函式處理後很難感覺出輸入輸出有什麼大區別,其實是被平滑了。觀察仔細點可以看出來。

輸入:

輸出影象:

之meanshift篇

本文主要是介紹了opencv裡的meanshift分割函式

cvpyrmeanshiftfiltering

函式。關於演算法的詳細敘述可參考《》

d,comaniciu 2003.

該函式基本參照上文所描述的演算法流程編寫的。在opencv實現裡加入了金字塔分層分割的概念。meanshift分割可供選擇的只有乙個引數即分割的精細度,也就是選擇的核寬。cvpyrmeanshiftfiltering函式只能輸入8位三通道的rgb影象,輸出時分割結果,沒有提供分割的具體資訊如類別數,模態等。該函式採用的是uniform核,選擇的矩形區域為核覆蓋區。meanshift演算法在每個樣本上都執行一次確定類別,所以複雜度比較高o(n*w),w是操作係數,處理一幅320*240需要2,3秒的時間。函式在實現時也沒有考慮消除一些小的類別(數量較少的)。使得這個函式更像是discontinuity preserve smoothing.

有很多經過這個函式處理後很難感覺出輸入輸出有什麼大區別,其實是被平滑了。觀察仔細點可以看出來。

輸入:

輸出影象:

MeanShift 均值漂移演算法

前面說了k means聚類演算法,這裡我們介紹一種新的聚類演算法 meanshift,它常被用在影象識別中的目標跟蹤,資料聚類 分類等場景,前者的核函式使用了epannechnikov核函式,後者使用了gaussian 高斯核函式 一 演算法的原理理解 1 核函式 在mean shift演算法中引入...

均值漂移 Meanshift 演算法流程

均值漂移演算法是一種常見的聚類演算法,經常被應用在影象識別中的目標跟蹤 資料聚類等場景中。該演算法思想比較簡單,對於給定的一定數量樣本,首先隨便選擇乙個點,然後計算該點一定範圍之內所有點到中心點的距離向量的平均值作為偏移均值 也就是改點範圍內的質心 然後將中心點移動到偏移均值位置,通過這種不斷重複的...

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

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