meanshift算法

轉自http://blog.csdn.net/lu597203933/article/details/17042331
可參考http://blog.csdn.net/carson2005/article/details/7337432
http://wenku.baidu.com/view/995c9c1fff00bed5b9f31d88.html?re=view
https://en.wikipedia.org/wiki/Mean_shift
http://blog.csdn.net/ttransposition/article/details/38514127

  • 原理說明:

      meanShift,均值漂移,在聚類、圖像平滑、分割、跟蹤等方面有着廣泛的應用。meanShift這個概念最早是由Fukunage在1975年提出的,其最初的含義正如其名:偏移的均值向量;但隨着理論的發展,meanShift的含義已經發生了很多變化。如今,我們說的meanShift算法,一般是指一個迭代的步驟,即先算出當前點的偏移均值,然後以此爲新的起始點,繼續移動,直到滿足一定的結束條件。
      在很長一段時間內,meanShift算法都沒有得到足夠的重視,直到1995年另一篇重要論文的發表。該論文的作者Yizong Cheng定義了一族核函數,使得隨着樣本與被偏移點的距離不同,其偏移量對均值偏移向量的貢獻也不同。其次,他還設定了一個權重係數,使得不同樣本點的重要性不一樣,這大大擴展了meanShift的應用範圍。此外,還有研究人員將非剛體的跟蹤問題近似爲一個meanShift的最優化問題,使得跟蹤可以實時進行。目前,利用meanShift進行跟蹤已經相當成熟。
      給定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向量加入核函數,核函數的性質在這篇博客介紹:http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html
    http://blog.csdn.net/carson2005/article/details/7243425
    那麼,meanshift算法變形爲
           這裏寫圖片描述          (1)

      解釋一下K()核函數,h爲半徑,Ck,d/nhd 爲單位密度,要使得上式f得到最大,最容易想到的就是對上式進行求導,的確meanshift就是對上式進行求導.
    這裏寫圖片描述 (2)
    令:
                  這裏寫圖片描述
    K(x)叫做g(x)的影子核,名字聽上去聽深奧的,也就是求導的負方向,那麼上式可以表示:
    這裏寫圖片描述

對於上式,如果採用高斯核,那麼,第一項就等於fh,k
         這裏寫圖片描述
第二項就相當於一個meanshift向量的式子:
         這裏寫圖片描述
那麼(2)就可以表示爲這裏寫圖片描述
  下圖分析的構成,如圖所以,可以很清晰的表達其構成。
         這裏寫圖片描述
  要使得這裏寫圖片描述=0,當且僅當這裏寫圖片描述=0,可以得出新的圓心座標:
                 這裏寫圖片描述              (3)

上面介紹了meanshift的流程,但是比較散,下面具體給出它的算法流程。

  1.選擇空間中x爲圓心,以h爲半徑爲半徑,做一個高維球,落在所有球內的所有點xi
  2.計算這裏寫圖片描述,如果這裏寫圖片描述<ε(人工設定),退出程序。如果這裏寫圖片描述>ε, 則利用(3)計算x,返回1.

  • 2.meanshift在圖像上的聚類:

      真正大牛的人就能創造算法,例如像meanshift,em這個樣的算法,這樣的創新才能推動整個學科的發展。還有的人就是把算法運用的實際的運用中,推動整個工業進步,也就是技術的進步。下面介紹meashift算法怎樣運用到圖像上的聚類核跟蹤。

      一般一個圖像就是個矩陣,像素點均勻的分佈在圖像上,就沒有點的稠密性。所以怎樣來定義點的概率密度,這纔是最關鍵的。

      如果我們就算點x的概率密度,採用的方法如下:以x爲圓心,以h爲半徑。落在球內的點位xi 定義二個模式規則。

      (1)x像素點的顏色與xi像素點顏色越相近,我們定義概率密度越高。

      (2)離x的位置越近的像素點xi,定義概率密度越高。

      所以定義總的概率密度,是二個規則概率密度乘積的結果,可以(4)表示

                 這裏寫圖片描述      (4)

      其中:代表空間位置的信息,離遠點越近,其值就越大,表示顏色信息,顏色越相似,其值越大。如圖左上角圖片,按照(4)計算的概率密度如圖右上。利用meanshift對其聚類,可得到左下角的圖。
                 這裏寫圖片描述

      另附網上別人整理的文檔和用例,感覺挺詳細的Mean-Shift原理概述.pdf

發佈了9 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章