meanshift算法 java_Meanshift,聚类算法
記得剛讀研究生的時(shí)候,學(xué)習(xí)的第一個(gè)算法就是meanshift算法,所以一直記憶猶新,今天和大家分享一下Meanshift算法,如有錯(cuò)誤,請(qǐng)?jiān)诰€交流。
Mean Shift算法,一般是指一個(gè)迭代的步驟,即先算出當(dāng)前點(diǎn)的偏移均值,移動(dòng)該點(diǎn)到其偏移均值,然后以此為新的起始點(diǎn),繼續(xù)移動(dòng),直到滿足一定的條件結(jié)束.
1. Meanshift推導(dǎo)
給定d維空間Rd的n個(gè)樣本點(diǎn) ,i=1,…,n,在空間中任選一點(diǎn)x,那么Mean Shift向量的基本形式定義為:
Sk是一個(gè)半徑為h的高維球區(qū)域,滿足以下關(guān)系的y點(diǎn)的集合,
k表示在這n個(gè)樣本點(diǎn)xi中,有k個(gè)點(diǎn)落入Sk區(qū)域中.
以上是官方的說(shuō)法,即書(shū)上的定義,我的理解就是,在d維空間中,任選一個(gè)點(diǎn),然后以這個(gè)點(diǎn)為圓心,h為半徑做一個(gè)高維球,因?yàn)橛衐維,d可能大于2,所以是高維球。落在這個(gè)球內(nèi)的所有點(diǎn)和圓心都會(huì)產(chǎn)生一個(gè)向量,向量是以圓心為起點(diǎn)落在球內(nèi)的點(diǎn)位終點(diǎn)。然后把這些向量都相加。相加的結(jié)果就是Meanshift向量。
如圖所以。其中黃色箭頭就是Mh(meanshift向量)。
再以meanshift向量的終點(diǎn)為圓心,再做一個(gè)高維的球。如下圖所以,重復(fù)以上步驟,就可得到一個(gè)meanshift向量。如此重復(fù)下去,meanshift算法可以收斂到概率密度最大得地方。也就是最稠密的地方。
最終的結(jié)果如下:
Meanshift推導(dǎo):
那么,meanshift算法變形為
(1)
解釋一下K()核函數(shù),h為半徑,Ck,d/nhd為單位密度,要使得上式f得到最大,最容易想到的就是對(duì)上式進(jìn)行求導(dǎo),的確meanshift就是對(duì)上式進(jìn)行求導(dǎo).
(2)
令:
K(x)叫做g(x)的影子核,名字聽(tīng)上去聽(tīng)深?yuàn)W的,也就是求導(dǎo)的負(fù)方向,那么上式可以表示
對(duì)于上式,如果才用高斯核,那么,第一項(xiàng)就等于fh,k
第二項(xiàng)就相當(dāng)于一個(gè)meanshift向量的式子:
那么(2)就可以表示為
下圖分析
的構(gòu)成,如圖所以,可以很清晰的表達(dá)其構(gòu)成。
要使得
=0,當(dāng)且僅當(dāng)
=0,可以得出新的圓心坐標(biāo):
(3)
上面介紹了meanshift的流程,但是比較散,下面具體給出它的算法流程。
選擇空間中x為圓心,以h為半徑為半徑,做一個(gè)高維球,落在所有球內(nèi)的所有點(diǎn)xi
計(jì)算
,如果
>ε, 則利用(3)計(jì)算x,返回1.
2.meanshift在圖像上的聚類:
真正大牛的人就能創(chuàng)造算法,例如像meanshift,em這個(gè)樣的算法,這樣的創(chuàng)新才能推動(dòng)整個(gè)學(xué)科的發(fā)展。還有的人就是把算法運(yùn)用的實(shí)際的運(yùn)用中,推動(dòng)整個(gè)工業(yè)進(jìn)步,也就是技術(shù)的進(jìn)步。下面介紹meashift算法怎樣運(yùn)用到圖像上的聚類核跟蹤。
一般一個(gè)圖像就是個(gè)矩陣,像素點(diǎn)均勻的分布在圖像上,就沒(méi)有點(diǎn)的稠密性。所以怎樣來(lái)定義點(diǎn)的概率密度,這才是最關(guān)鍵的。
如果我們就算點(diǎn)x的概率密度,采用的方法如下:以x為圓心,以h為半徑。落在球內(nèi)的點(diǎn)位xi定義二個(gè)模式規(guī)則。
(1)x像素點(diǎn)的顏色與xi像素點(diǎn)顏色越相近,我們定義概率密度越高。
(2)離x的位置越近的像素點(diǎn)xi,定義概率密度越高。
所以定義總的概率密度,是二個(gè)規(guī)則概率密度乘積的結(jié)果,可以(4)表示
(4)
其中:
代表空間位置的信息,離遠(yuǎn)點(diǎn)越近,其值就越大,
表示顏色信息,顏色越相似,其值越大。如圖左上角圖片,按照(4)計(jì)算的概率密度如圖右上。利用meanshift對(duì)其聚類,可得到左下角的圖。
如有問(wèn)題,可在線討論。作者:BIGBIGBOAT/Liqizhou
總結(jié)
以上是生活随笔為你收集整理的meanshift算法 java_Meanshift,聚类算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux语言 翻译工具,Linux文本
- 下一篇: 截屏没有了_华为手机居然有6种截屏花招,