




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、時(shí)空上下文視覺跟蹤(STC )算法的解讀與代碼復(fù)現(xiàn) HYPERLINK mailto:zouxy09 zouxy09 HYPERLINK /zouxy09 /zouxy09本博文主要是關(guān)注一篇視覺跟蹤的論文。這篇論文是Kaihua Zhang等人今年投稿到一個(gè)會(huì)議的文章,因?yàn)?會(huì)議還沒有出結(jié)果,所以作者還沒有發(fā)布他的Matlab源代碼。但為了讓我們先睹為快,作者把論文放在arxiv這個(gè) 網(wǎng)站上面供大家下載了。對(duì)于里面所描述的神奇的效果,大家都躍躍欲試,也有人將其復(fù)現(xiàn)了。我這里也花了一天 的時(shí)間去復(fù)現(xiàn)了單尺度的C+版本,主要是基于OpenCV。多尺度的有點(diǎn)復(fù)雜,這個(gè)后面再做考慮了。另外,能力 有
2、限,論文解讀和代碼實(shí)現(xiàn)可能會(huì)出現(xiàn)錯(cuò)誤,所以如果代碼里面出現(xiàn)錯(cuò)誤,還望大家不吝指點(diǎn)。論文見:Kaihua Zhang, Lei Zhang, Ming-Hsuan Yang,and David Zhang, Fast Trackingvia Spatio-Temporal Context Learning目前作者已公開了支持多尺度的Matlab代碼了哦??梢缘揭韵戮W(wǎng)址下載: HYPERLINK .hk/cslzhang/STC/STC.htm .hk/cslzhang/STC/STC.htm一、概述該論文提出一種簡(jiǎn)單卻非常有效的視覺跟蹤方法。更迷人的一點(diǎn)是,它速度很快,原作者實(shí)現(xiàn)的Matlab代
3、碼 在i7的電腦上達(dá)到350fps。該論文的關(guān)鍵點(diǎn)是對(duì)時(shí)空上下文(Spatio-Temporal Context)信息的利用。主要思想是通過貝葉斯框架對(duì)要 跟蹤的目標(biāo)和它的局部上下文區(qū)域的時(shí)空關(guān)系進(jìn)行建模,得到目標(biāo)和其周圍區(qū)域低級(jí)特征的統(tǒng)計(jì)相關(guān)性。然后綜合 這一時(shí)空關(guān)系和生物視覺系統(tǒng)上的focus of attention特性來評(píng)估新的一幀中目標(biāo)出現(xiàn)位置的置信圖,置信最大的位 置就是我們得到的新的一幀的目標(biāo)位置。另外,時(shí)空模型的學(xué)習(xí)和目標(biāo)的檢測(cè)都是通過FFT(傅里葉變換)來實(shí)現(xiàn), 所以學(xué)習(xí)和檢測(cè)的速度都比較快。二、工作過程具體過程見下圖:iji| Lu岫 MUJcial- i:-onu.i a
4、t ihi2 f-ib 曲nil:h|物hj心 hximiim ui iht “ * I 卜曲 tfr-usie(1)t幀:在該幀目標(biāo)(第一幀由人工指定)已經(jīng)知道的情況下,我們計(jì)算得到一個(gè)目標(biāo)的置信圖(Confidence Map,也就是目標(biāo)的似然)。通過生物視覺系統(tǒng)上的focus of attention特性我們可以得到另一張概率圖(先驗(yàn)概率)。 通過對(duì)這兩個(gè)概率圖的傅里葉變換做除再反傅里葉變換,就可以得到建模目標(biāo)和周圍背景的空間相關(guān)性的空間上下 文模型(條件概率)。然后我們用這個(gè)模型去更新跟蹤下一幀需要的時(shí)空上下文模型(可能這里還不太能理解,看 到后面的相關(guān)理論分析和算法描述后可能會(huì)清晰一
5、點(diǎn))。(2)t+1幀:利用t幀的上下文信息(時(shí)空上下文模型),卷積圖像得到一個(gè)目標(biāo)的置信圖,值最大的位置就 是我們的目標(biāo)所在地。或者理解為圖像各個(gè)地方對(duì)該上下文信息的響應(yīng),響應(yīng)最大的地方自然就是滿足這個(gè)上下文 的地方,也就是目標(biāo)了。三、相關(guān)理論描述3.1、上下文的重要性時(shí)間和空間上的上下文信息對(duì)跟蹤來說是非常重要的。雖然對(duì)跟蹤,我們一直利用了時(shí)間上的上下文信息(用 t去跟蹤t+1等),但對(duì)空間上下文信息的利用卻比較匱乏。為什么空間上下文信息會(huì)重要呢?考慮我們?nèi)耍?我們需要在人群中識(shí)別某個(gè)人臉(眾里尋他千百度),那我們?yōu)槭裁粗魂P(guān)注它的臉呢?如果這個(gè)人穿的衣服啊帽子 和其他人不一樣,那么這時(shí)候
6、的識(shí)別和跟蹤就會(huì)更加容易和魯棒。或者場(chǎng)景中這個(gè)人和其他的東西有一定的關(guān)系, 例如他靠在一棵樹上,那么他和樹就存在了一定的關(guān)系,而樹在場(chǎng)景中是不會(huì)動(dòng)的(除非你搖動(dòng)攝像頭了),那我 們借助樹來輔助找到這個(gè)人是不是比單單去找這個(gè)人要容易,特別是人被部分遮擋住的時(shí)候。還有一些就是如果這 個(gè)人帶著女朋友(有其他物體陪著一起運(yùn)動(dòng)),那么可以將他們看成一個(gè)集合結(jié)構(gòu),作為一組進(jìn)行跟蹤,這樣會(huì)比 跟蹤他們其中一個(gè)要容易。總之,一個(gè)目標(biāo)很少與整個(gè)場(chǎng)景隔離或者沒有任何聯(lián)系,因?yàn)榭偞嬖谝恍┖湍繕?biāo)運(yùn)動(dòng)存在短時(shí)或者長(zhǎng)時(shí)相關(guān) 的目標(biāo)。這種空間上下文的相關(guān)性就是我們可以利用的。在視覺跟蹤,局部上下文包括一個(gè)目標(biāo)和它的附近的一
7、定區(qū)域的背景。因?yàn)椋谶B續(xù)幀間目標(biāo)周圍的局部場(chǎng) 景其實(shí)存在著很強(qiáng)的時(shí)空關(guān)系。例如,上圖中的目標(biāo)存在著嚴(yán)重的阻擋,導(dǎo)致目標(biāo)的外觀發(fā)生了很大的變化。然而, 因?yàn)橹挥行〔糠值纳舷挛膮^(qū)域是被阻擋的,整體的上下問區(qū)域是保持相似的,所以該目標(biāo)的局部上下文不會(huì)發(fā)生很 大的變化。因此,當(dāng)前幀局部上下文會(huì)有助于幫助預(yù)測(cè)下一幀中目標(biāo)的位置。圖中,黃色框的是目標(biāo),然后它和它 的周圍區(qū)域,也就是紅色框包圍的區(qū)域,就是該目標(biāo)的上下文區(qū)域。左:雖然出現(xiàn)嚴(yán)重的阻擋導(dǎo)致目標(biāo)的外觀發(fā)現(xiàn) 很大的變化,但目標(biāo)中心(由黃色的點(diǎn)表示)和其上下文區(qū)域中的周圍區(qū)域的其他位置(由紅色點(diǎn)表示)的空間關(guān) 系幾乎沒有發(fā)生什么變化。中:學(xué)習(xí)到的時(shí)空
8、上下文模型(藍(lán)色方框內(nèi)的區(qū)域具有相似的值,表示該區(qū)域與目標(biāo)中 心具有相似的空間關(guān)系)。右:學(xué)習(xí)到的置信圖。時(shí)間信息:鄰近幀間目標(biāo)變化不會(huì)很大。位置也不會(huì)發(fā)生突變??臻g信息:目標(biāo)和目標(biāo)周圍的背景存在某種特定的關(guān)系,當(dāng)目標(biāo)的外觀發(fā)生很大變化時(shí),這種關(guān)系可以幫助 區(qū)分目標(biāo)和背景。對(duì)目標(biāo)這兩個(gè)信息的組合就是時(shí)空上下文信息,該論文就是利用這兩個(gè)信息來進(jìn)行對(duì)阻擋等魯棒并且快速的 跟蹤。3.2、具體細(xì)節(jié)跟蹤問題可以描述為計(jì)算一個(gè)估計(jì)目標(biāo)位置x似然的置信圖:c(x) = P(x|o)=E心=心)8 P(蟲(鞏以)P(e(圳。)置信圖c(x)最大的那個(gè)位置X*就是目標(biāo)的位置。從公式上可以看到,似然函數(shù)可以分解為
9、兩個(gè)概率部分。一 個(gè)是建模目標(biāo)與周圍上下文信息的空間關(guān)系的條件概率P(x|c(z),o),一個(gè)是建模局部上下文各個(gè)點(diǎn)X的上下文先驗(yàn) 概率P(c(x)|o)。而條件概率P(x|c(z),o),也就是目標(biāo)位置和它的空間上下文的關(guān)系我們需要學(xué)習(xí)出來。(1) Spatial Context Model 空間上下文模型空間上下文模型描述的是條件概率函數(shù):P(x|c(z),o) = hsc(x z)hsqx-z)是一個(gè)關(guān)于目標(biāo)x和局部上下文位置z的相對(duì)距離和方向的函數(shù),它編碼了目標(biāo)和它的空間上下文的 空間關(guān)系。需要注意的是,這個(gè)函數(shù)并不是徑向?qū)ΨQ的。這有助于分辨二義性。例如圖三,左眼和右眼相對(duì)于位置 x*
10、來說他們的距離是一樣的,但相對(duì)位置也就是方向是不一樣的。所以他們會(huì)有不一樣的空間關(guān)系。這樣就對(duì)防止 誤跟蹤有幫助。另外,這個(gè)模型是通過在線學(xué)習(xí)得到的。隨著跟蹤的進(jìn)行不斷更新。Context Prior Model上下文先驗(yàn)?zāi)P瓦@是先驗(yàn)概率,建模為:P(c(z)|o) = /(加舊二*)其中I(z)是點(diǎn)z的灰度,描述的是這個(gè)上下文z的外觀。w是一個(gè)加權(quán)函數(shù),z離x越近,權(quán)值越大。定義如 下:= ae K這個(gè)加權(quán)函數(shù)是由生物視覺系統(tǒng)的focus of attention啟發(fā)得到的,它表示人看東西的時(shí)候,會(huì)聚焦在一個(gè)確 定的圖像區(qū)域。通俗的來說,就是離我們的目標(biāo)越近的點(diǎn),會(huì)越受關(guān)注,越遠(yuǎn)就不好意思了
11、,你的光芒會(huì)被無情的 忽略掉。那多遠(yuǎn)的距離會(huì)被多大程度的忽略呢?這就得看參數(shù)sigma (相當(dāng)于高斯權(quán)重函數(shù)的方差)了,這個(gè)值越 大,越多的風(fēng)景映入眼簾,祖國(guó)大好河山,盡收眼底。如果這個(gè)值越小,那就相當(dāng)于坐井觀天了。Confidence Map 置信圖定義為:c(x) = P(x|o) = be這個(gè)公式的參數(shù)0是很重要的,太大太小效果可能差之千里。具體分析見原論文。這個(gè)置信圖是在給定目標(biāo) 的位置x*的基礎(chǔ)上,我們通過這個(gè)公式來計(jì)算得到上下文區(qū)域任何一點(diǎn)x的似然得到的。時(shí)空模型的快速學(xué)習(xí)我們需要基于上下文先驗(yàn)?zāi)P秃椭眯艌D來學(xué)習(xí)這個(gè)時(shí)空模型:里面的卷積可以通過FFT來加速(時(shí)域的卷積相當(dāng)于頻域的乘
12、積),具體如下:兄一 W) = *(/嚴(yán)(對(duì))O;(7(x)迪“X _ x*)這樣,我們就可以通過兩個(gè)FFT和一個(gè)IFFT來學(xué)習(xí)我們要的空間上下文模型了:力宜(乂)=產(chǎn)一】/邛L芋-)力宜(乂)=產(chǎn)一】Z(Z(x)w(T(x-x*)/然后我們用這個(gè)模型去更新時(shí)空上下文模型:H落=(1 p)H嚴(yán) + ph;。(4)最后的跟蹤得到時(shí)空上下文模型后,我們就可以在新的一幀計(jì)算目標(biāo)的置信圖了:9+i(x) = Z (x) 0It+i(x)wat(x - x*)同樣是通過FFT來加速。然后置信圖中值最大的位置,就是我們的目標(biāo)位置了。(5)多尺度的實(shí)現(xiàn)多尺度可以通過調(diào)整方差sigma來實(shí)現(xiàn)。具體分析見原論文
13、。(感覺這個(gè)是很remarkable的一點(diǎn))。尺度 和方差sigma的更新如下: TOC o 1-5 h z (/_ / HYPERLINK l bookmark41 o Current Document _ 1Jst-st-is*+i=(1 一人)st+端捉kJ+i=5七。t j四、算法描述簡(jiǎn)單的算法描述如下,編程實(shí)現(xiàn)其實(shí)也是這個(gè)過程。(另外,不知道我的尺度更新的位置對(duì)不對(duì),望指點(diǎn))(1)t 幀:根據(jù)該幀圖像I和得到的目標(biāo)位置x*。順序進(jìn)行以下計(jì)算:1)學(xué)習(xí)空間上下文模型:2)更新跟蹤下一幀目標(biāo)需要的時(shí)空上下文模型:H涪=(1 - p)H產(chǎn)十兩筍3)更新尺度等參數(shù):。/ 您金-V J(一 1
14、 !I St 7 Xri=l $一5t+i (1 A)s +l b+i = s 七 O* ?(2)t+1 幀:1)計(jì)算置信圖:烏+i=尸1 (H涪(對(duì))(對(duì) (乂一、;)2)找到最大值,這個(gè)最大值的位置就是我們要求的目標(biāo)位置:x;+i = arg max ct+i(x)xf2c (x() l五、代碼實(shí)現(xiàn)我的代碼是基于VS2010+OpenCV2.4.2的(暫時(shí)還沒加入邊界處理,也就是跟蹤框到達(dá)圖像邊緣的時(shí)候程序 就會(huì)出錯(cuò))。代碼可以讀入視頻,也可以讀攝像頭,兩者的選擇只需要在代碼中稍微修改即可。對(duì)于視頻來說,運(yùn) 行會(huì)先顯示第一幀,然后我們用鼠標(biāo)框選要跟蹤的目標(biāo),然后跟蹤器開始跟蹤每一幀。對(duì)攝像
15、頭來說,就會(huì)一直采 集圖像,然后我們用鼠標(biāo)框選要跟蹤的目標(biāo),接著跟蹤器開始跟蹤后面的每一幀。另外,為了消去光照的影響,需要先對(duì)圖像去均值化,還需要加Hamming窗以減少圖像邊緣對(duì)FFT帶來的 頻率影響。Hamming窗如下:054*046cos(0. 心?心 Tr r 2Ih 11 /!?i . jii-n-1 5,另外,OpenCV沒有復(fù)數(shù)(FFT后是復(fù)數(shù))的乘除運(yùn)算,所以需要自己編寫,參考如下: 復(fù)數(shù)除法:/S 1+初(白+加)+(匕+?。?c+di_ (“ +折一市)(flc 十 bd) H- (be ad )i-(5)(f) =復(fù)數(shù)乘法:具體代碼如下:STCTracker.hcpp
16、view plaincopyC/ Fast object tracking algorithm/Author:zouxy/Date:2013-11-21/HomePage: HYPERLINK /zouxy09 /zouxy09/Email: HYPERLINK mailto:zouxy09 zouxy09/ Reference: Kaihua Zhang, et al. Fast Tracking via Spatio-Temporal Context Learnin g/ HomePage : HYPERLINK .hk/cskhzhang/ .hk/cskhzhang/ Email: H
17、YPERLINK mailto:zhkhua zhkhua#pragma once10.#include 12.using namespace cv;using namespace std;15.class STCTrackerpublic:STCTracker();STCTracker();void init(constMatframe,constRectbox);void tracking(constMatframe,Rect&trackBox);23.private:voidcreateHammingWin();voidcomplexOperation(const Mat src1, c
18、onstMat src2, Mat &dst, int flag = 0);voidgetCxtPriorPosteriorModel(const Matimage);voidlearnSTCModel(const Mat image);29.private:31.double sigma;/ scale parameter (variance)32.double alpha;/ scale parameter33.double beta;/ shape parameter34.double rho;/ learning parameter35.Point center;/ the objec
19、t position36.Rect cxtRegion;/ context region37.38.Mat cxtPriorPro;/ prior probability39.Mat cxtPosteriorPro;/ posterior probability40.Mat STModel;/ conditional probability41.Mat STCModel;/ spatio-temporal context model42.Mat hammingWin;/ Hamming window43.;STCTracker.cppcpp view plaincopyC/ Fast obje
20、ct tracking algorithm/Author:zouxy/Date:2013-11-21/HomePage: HYPERLINK /zouxy09 /zouxy09/Email: HYPERLINK mailto:zouxy09 zouxy09/ Reference: Kaihua Zhang, et al. Fast Tracking via Spatio-Temporal g/ HomePage : HYPERLINK .hk/cskhzhang/ .hk/cskhzhang/ Email: HYPERLINK mailto:zhkhua zhkhua9.#include ST
21、CTracker.h11.12.STCTracker:STCTracker() TOC o 1-5 h z 14.16.17.STCTracker:STCTracker()19.21.22./* Create a Hamming window */void STCTracker:createHammingWin()for (int i = 0; i hammingWin.rows; i+)for (int j = 0; j hammingWin.cols; j+)hammingWin.at(i, j) = (0.54 - 0.46 * cos( 2 * CV gWin.rows )* (0.5
22、4 - 0.46 * cos( 2 * CV gWin.cols ); TOC o 1-5 h z Context LearninPI * i / hamminPI * j / hamminContext LearninPI * i / hamminPI * j / hammin35./* Define two complex-value operation */36.void STCTracker:complexOperation(const Mat src1, const Matsrc2, Mat&dst, int flag)37.38.CV_Assert(src1.size = src2
23、.size);39.CV_Assert(src1.channels() = 2);40.41.Mat A_Real, A_Imag, B_Real, B_Imag, R_Real, R_Imag;42.vector planes;43.split(src1, planes);44.planes0.copyTo(A_Real);45.planes1.copyTo(A_Imag);46.47.split(src2, planes);48.planes0.copyTo(B_Real);49.planes1.copyTo(B_Imag);50.51.dst.create(src1.rows, src1
24、.cols, CV_64FC2);52.split(dst, planes);53.R_Real = planes0;54.R_Imag = planes1;55.56.for (int i = 0; i A_Real.rows; i+)57.58.for (int j = 0; j A_Real.cols; j+)59.60.double a = A_Real.at(i, j);61.double b = A_Imag.at(i, j);62.double c = B_Real.at(i, j);63.double d = B_Imag.at(i, j);64.65.if (flag)66.
25、67./ division: (a+bj) / (c+dj)68.R_Real.at(i, j) = (a * c + b * d)/(c * c +d * d + 0.000001);69.R_Imag.at(i, j) = (b * c - a * d)/(c * c +d * d + 0.000001);70.71.else72.73./ multiplication: (a+bj) * (c+dj)74.R_Real.at(i, j) = a * c - b * d;75.R_Imag.at(i, j) = b * c + a * d;76.77.78.merge(planes, ds
26、t);81./* Get context prior and posterior probability */void STCTracker:getCxtPriorPosteriorModel(const Mat image)CV_Assert(image.size = cxtPriorPro.size);86.double sum_prior(0), sum_post(0);for (int i = 0; i cxtRegion.height; i+)for (int j = 0; j cxtRegion.width; j+)double x = j + cxtRegion.x;double
27、 y = i + cxtRegion.y;double dist = sqrt(center.x - x) * (center.x - x) + (center.y - y) * (c enter.y - y);95./ equation (5) in the papercxtPriorPro.at(i, j) = exp(- dist * dist / (2 * sigma * sigma);sum_prior += cxtPriorPro.at(i, j);99./ equation (6) in the papercxtPosteriorPro.at(i, j) = exp(- pow(
28、dist / sqrt(alpha), beta) ;sum_post += cxtPosteriorPro.at(i, j); TOC o 1-5 h z cxtPriorPro.convertTo(cxtPriorPro, -1,1.0/sum_prior);cxtPriorPro = cxtPriorPro.mul(image);cxtPosteriorPro.convertTo(cxtPosteriorPro,-1,1.0/sum_post);109./* Learn Spatio-Temporal Context Model */void STCTracker:learnSTCMod
29、el(const Mat image)/ step 1: Get context prior and posterior probabilitygetCxtPriorPosteriorModel(image);115./ step 2-1: Execute 2D DFT for prior probabilityMat priorFourier;Mat planes1 = cxtPriorPro, Mat:zeros(cxtPriorPro.size(), CV_64F);merge(planes1, 2,priorFourier);dft(priorFourier,priorFourier)
30、;121./ step 2-2: Execute 2D DFT for posterior probabilityMat postFourier;Mat planes2 = cxtPosteriorPro, Mat:zeros(cxtPosteriorPro.size(), CV_64F);merge(planes2, 2, postFourier);dft(postFourier, postFourier);127./ step 3: Calculate the divisionMat conditionalFourier;complexOperation(postFourier, prio
31、rFourier, conditionalFourier, 1);131./ step 4: Execute 2D inverse DFT for conditional probability and we obtain STM odeldft(conditionalFourier, STModel, DFT_INVERSE | DFT_REAL_OUTPUT | DFT_SCALE);134./ step 5: Use the learned spatial context model to update spatio-temporal cont ext modeladdWeighted(
32、STCModel, 1.0 - rho, STModel, rho, 0.0, STCModel);138./* Initialize the hyper parameters and models */void STCTracker:init(const Mat frame, const Rect box)/ initial some parametersalpha = 2.25;beta = 1;rho = 0.075;sigma = 0.5 * (box.width + box.height);147./ the object positioncenter.x = box.x + 0.5
33、 * box.width;center.y = box.y + 0.5 * box.height;151./ the context regioncxtRegion.width = 2 * box.width;cxtRegion.height = 2 * box.height;cxtRegion.x = center.x - cxtRegion.width * 0.5;cxtRegion.y = center.y - cxtRegion.height * 0.5;cxtRegion &= Rect(0, 0, frame.cols, frame.rows);158./ the prior, p
34、osterior and conditional probability and spatio-temporal context modelcxtPriorPro = Mat:zeros(cxtRegion.height, cxtRegion.width, CV_64FC1);cxtPosteriorPro = Mat:zeros(cxtRegion.height, cxtRegion.width, CV_64FC1);STModel = Mat:zeros(cxtRegion.height, cxtRegion.width, CV_64FC1);STCModel = Mat:zeros(cx
35、tRegion.height, cxtRegion.width, CV_64FC1);164./ create a Hamming windowhammingWin = Mat:zeros(cxtRegion.height, cxtRegion.width, CV_64FC1);createHammingWin();168.Mat gray;cvtColor(frame, gray,CV_RGB2GRAY);171./ normalized by subtracting the average intensity of that regionScalar average = mean(gray
36、(cxtRegion);Mat context;gray(cxtRegion).convertTo(context, CV_64FC1,1.0, - average0);176./ multiplies a Hamming window to reduce the frequency effect of image boundarycontext = context.mul(hammingWin);179./ learn Spatio-Temporal context modelfrom first framelearnSTCModel(context);183./* STCTracker:
37、calculate the confidence map and find the max position * */void STCTracker:tracking(const Mat frame, Rect &trackBox)Mat gray;cvtColor(frame, gray, CV_RGB2GRAY);189./ normalized by subtracting the average intensity of that regionScalar average = mean(gray(cxtRegion);Mat context;gray(cxtRegion).conver
38、tTo(context, CV_64FC1,1.0, - average0);194./ multiplies a Hamming window to reduce the frequency effect of image boundarycontext = context.mul(hammingWin);197./ step 1: Get context prior probabilitygetCxtPriorPosteriorModel(context);200./ step 2-1: Execute 2D DFT for prior probabilityMat priorFourie
39、r;Mat planes1 = cxtPriorPro, Mat:zeros(cxtPriorPro.size(), CV_64F);merge(planes1, 2,priorFourier);dft(priorFourier,priorFourier);206./ step 2-2: Execute 2D DFT for conditional probabilityMat STCModelFourier;Mat planes2 = STCModel, Mat:zeros(STCModel.size(), CV_64F);merge(planes2, 2, STCModelFourier)
40、;dft(STCModelFourier, STCModelFourier);212./ step 3: Calculate the multiplicationMat postFourier;complexOperation(STCModelFourier, priorFourier, postFourier, 0);216./ step 4: Execute 2D inverse DFT for posterior probability namely confidence m apMat confidenceMap;dft(postFourier, confidenceMap, DFT_
41、INVERSE | DFT_REAL_OUTPUT| DFT_SCALE);220./ step 5: Find the max positionPoint point;minMaxLoc(confidenceMap, 0, 0, 0,&point);224./ step 6-1: update center, trackBox and context regioncenter.x =cxtRegion.x + point.x;center.y =cxtRegion.y + point.y;trackBox.x= center.x - 0.5 * trackBox.width;trackBox
42、.y= center.y - 0.5 * trackBox.height;trackBox &= Rect(0, 0, frame.cols, frame.rows);231.cxtRegion.x = center.x - cxtRegion.width * 0.5;cxtRegion.y = center.y - cxtRegion.height * 0.5;cxtRegion &= Rect(0, 0, frame.cols, frame.rows);235./ step 7: learn Spatio-Temporal context model from this frame for
43、 tracking nex t frameaverage = mean(gray(cxtRegion);gray(cxtRegion).convertTo(context, CV_64FC1, 1.0, - average0);context = context.mul(hammingWin);learnSTCModel(context);runTracker.cppcpp view plaincopyC/ Fast object tracking algorithm/Author:zouxy/Date:2013-11-21/HomePage: HYPERLINK /zouxy09 /zouxy09/Email: HYPERLINK mailto:zouxy09 zouxy09/ Reference: Kaihua Zhang, et al. Fast Tracking via Spatio-Temporal Context Learnin g/ HomePage : HYPERLINK .hk/cskhzhang/ .hk/cskhzhang/ Email: HYPERLINK mailto:zhkhua zhkhua#include STCTracker.h/ Global variablesRect box;bool drawing_box = false;bool
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)聚酰亞胺(PI)薄膜行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景分析報(bào)告
- 2025福建省建筑安全員C證考試題庫(kù)
- 南京師范大學(xué)《統(tǒng)計(jì)學(xué)專業(yè)前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川農(nóng)業(yè)大學(xué)《醫(yī)學(xué)論文寫作與學(xué)術(shù)誠(chéng)信》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等專科學(xué)?!兜厍蛭锢韺W(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學(xué)院《研究型綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱工程大學(xué)《學(xué)前教育專業(yè)英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省百師聯(lián)考高三上學(xué)期11月考試歷史試卷
- 上海民遠(yuǎn)職業(yè)技術(shù)學(xué)院《服裝市場(chǎng)調(diào)研》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西信息職業(yè)技術(shù)學(xué)院《秘書學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海市建設(shè)工程施工圖設(shè)計(jì)文件勘察設(shè)計(jì)質(zhì)量疑難問題匯編(2024 版)
- 《康復(fù)工程學(xué)》課件-第一講 康復(fù)工程概論
- 2025年度智慧醫(yī)療服務(wù)平臺(tái)建設(shè)合同范本
- 2024項(xiàng)目管理人員安全培訓(xùn)考試題(審定)
- 2025四川宜賓市高縣縣屬國(guó)企業(yè)第一次招聘3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2024 年國(guó)家公務(wù)員考試《申論》(地市級(jí))真題及答案
- 2024年沈陽(yáng)職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫(kù)含答案解析
- 《榜樣9》觀后感心得體會(huì)一
- 2024年上海普陀區(qū)司法局招聘人民調(diào)解員考試真題
- 駕照考試題庫(kù)及答案(完整版)
- 2024年3、6、9月青少年軟件編程Python等級(jí)考試一級(jí)真題(全3套 含答案)
評(píng)論
0/150
提交評(píng)論