根據(jù)上篇文章,MeanShift算法(一),了解了MeanShift算法的最基本理論。推導(dǎo)了如何利用核密度估計(jì)函數(shù)和密度梯度估計(jì)以及輪廓函數(shù)得到mean shift向量??墒怯辛诉@么一個(gè)理論總需要把它應(yīng)用在某個(gè)領(lǐng)域里吧。那么現(xiàn)在就開始進(jìn)入MeanShift運(yùn)動(dòng)目標(biāo)跟蹤的世界。以前在別人的博客里看見有人說MeanShift算法現(xiàn)在已經(jīng)不常用了,貌似被淘汰了,真假難辨?就算是真的,學(xué)習(xí)這一種算法那也能為以后理解其它算法打下一定基礎(chǔ)。在運(yùn)動(dòng)目標(biāo)跟蹤領(lǐng)域,Kalman Filter, Particle Filter 和 MeanShift是我目前唯一知道的幾種方法了,如果有牛人知道其它更有效的方法,還望不吝賜教??!我想這個(gè)也因應(yīng)用場(chǎng)景不同跟蹤效率和精確度等也不一樣吧。本文大多部分來自其他文章,起到一個(gè)總結(jié)作用。。。 再談MeanShift的應(yīng)用: MeanShift可以應(yīng)用在很多領(lǐng)域,比如聚類,圖像平滑,圖像分割。尤其是應(yīng)用在目標(biāo)跟蹤領(lǐng)域,其跟蹤算法是通過計(jì)算候選目標(biāo)與目標(biāo)模板之間相似度的概率密度分布,然后利用概率密度梯度下降的方向來獲取匹配搜索的最佳路徑,加速運(yùn)動(dòng)目標(biāo)的定位和降低搜索的時(shí)間,因此在目標(biāo)實(shí)時(shí)跟蹤領(lǐng)域有著很高的應(yīng)用價(jià)值。該算法由于采用了統(tǒng)計(jì)特征,因此對(duì)噪聲有很強(qiáng)的魯棒性;由于是一個(gè)單參數(shù)算法,容易作為一個(gè)模塊和別的算法集成;采用核函數(shù)直方圖建模,對(duì)邊緣阻擋、目標(biāo)的旋轉(zhuǎn)、變形以及背景運(yùn)動(dòng)都不敏感;同時(shí)該算法構(gòu)造了一個(gè)可以用MeanShift算法進(jìn)行尋優(yōu)的相似度函數(shù)。由于MeanShift本質(zhì)上是最陡下降法,因此其尋優(yōu)過程收斂速度快,使得該算法具有很好的實(shí)時(shí)性。 均值漂移在目標(biāo)跟蹤中的應(yīng)用: 一:目標(biāo)模型的描述 1)在起始幀,通過鼠標(biāo)確定一個(gè)包含所有目標(biāo)特征的橢圓,稱為被跟蹤目標(biāo)的目標(biāo)區(qū)域,這個(gè)區(qū)域也是核函數(shù)作用的區(qū)域,區(qū)域大小等于核函數(shù)的帶寬; 2)對(duì)目標(biāo)區(qū)域進(jìn)行描述,常用的方法是按照直方圖的方式將像素的值域分成k個(gè)區(qū)間。每個(gè)區(qū)間按照值域的大小對(duì)應(yīng)一個(gè)特征值。然后求出圖像的像素值取每個(gè)特征值的概率; 3)對(duì)在初始幀圖像中目標(biāo)區(qū)域內(nèi)所有的像素點(diǎn),計(jì)算每個(gè)特征值的概率,可稱為目標(biāo)模型的描述。
目標(biāo)區(qū)域的中心為x0,假設(shè)其中有n個(gè)像素用{xi}i=1…n表示。特征值得的個(gè)數(shù)為m個(gè),則目標(biāo)模型特征值為u=1...m,其概率密度估計(jì)為:
加入高斯核函數(shù)后為: 在有些文獻(xiàn)文獻(xiàn)中,上式被寫為如下形式:
幾點(diǎn)說明: 1)特征值概率密度估計(jì)函數(shù)兩種寫法中本質(zhì)都一樣,個(gè)人認(rèn)為第二種寫法更好理解。因?yàn)閎(xi)是顏色灰度級(jí)的索引函數(shù),與特征值u作比較,和u相等為1,否則為0; 2)k(x)為函數(shù)的輪廓函數(shù)。由于遮擋或者背景的影響,目標(biāo)模型中心附近的像素比外物像素更可靠。k(x)給中心像素一個(gè)大的權(quán)值,而遠(yuǎn)離中心的像素給一個(gè)小的權(quán)值; 3)C是一個(gè)標(biāo)準(zhǔn)化的常量系數(shù),使得; 4)由此可以得到基于圖像灰度特征的顏色直方圖。
二:候選模型的描述(candidate model) 運(yùn)動(dòng)目標(biāo)在第二幀及以后的每幀中可能包含目標(biāo)的區(qū)域稱為候選區(qū)域,其中心坐標(biāo)為y,也是核函數(shù)的中心坐標(biāo)。該區(qū)域中的象素用{xi}i=1…nh(h為下標(biāo))表示。對(duì)目標(biāo)候選模型的特征u=1...m的概率密度表示為:
其中為標(biāo)準(zhǔn)化常量。
三:相似性函數(shù)(similarity function) 模板區(qū)域:
候選區(qū)域:
相似性函數(shù)的定義:
根據(jù)Bhattacharyya系數(shù):
相似性函數(shù)描述目標(biāo)模型和候選模型之間的相似程度,在理想情況下兩個(gè)模型的概率分布是完全一樣的。其值在0到1之間,若值越大則兩個(gè)模型越相似。
四:目標(biāo)定位 為使f(x)最大,將當(dāng)前幀的目標(biāo)中心先定位為前一幀中目標(biāo)中的位置y0;從這一點(diǎn)開始尋找最優(yōu)匹配的目標(biāo),其中心為y??蓪(x)展開為:
由于第一項(xiàng)獨(dú)立于y之外且數(shù)值小于1,因此這里忽略不計(jì)。根據(jù) , 第二項(xiàng)可以表示為: ,由此化為關(guān)于y的密度估計(jì)函數(shù)。 其中:。 類似于核函數(shù)密度估計(jì),只是多了一個(gè)權(quán)值w,使得相關(guān)性函數(shù)的取值最大。令:
計(jì)算fn,K的mean shift向量,這樣就可以得到候選區(qū)域中y0移向真實(shí)區(qū)域y的向量:
其中。值得注意的是,一般在一幀中找到目標(biāo)的位置,需要MeanShift算法從開始若干次迭代才能得到。 化簡(jiǎn):截個(gè)圖,下圖的意思是因?yàn)楹撕瘮?shù)都是徑向?qū)ΨQ函數(shù),由于Epanechnikov核和高斯核的輪廓函數(shù)都是各向同性,所以可將y1化為:
對(duì)上圖理解水平有限,還需思考。。。
五:整個(gè)算法流程 1)在當(dāng)前幀以y0為起點(diǎn),計(jì)算候選目標(biāo)的特征{pu(y0)}u=1,2…..m; 5)若,則停止;否則y0←y1轉(zhuǎn)步驟2)。 限制條件:新目標(biāo)中心需位于原目標(biāo)中心附近。
六:MeanShift算法的優(yōu)缺點(diǎn) 優(yōu)點(diǎn): 1) 算法復(fù)雜度??; 缺點(diǎn): 1) 搜索窗的核函數(shù)帶寬保持不變; 4) 當(dāng)顏色區(qū)域?yàn)榫鶆虻臅r(shí)候,對(duì)h來說相似性是不變的;
|
|