視頻中對運動物體跟蹤的算法_第1頁
視頻中對運動物體跟蹤的算法_第2頁
視頻中對運動物體跟蹤的算法_第3頁
視頻中對運動物體跟蹤的算法_第4頁
視頻中對運動物體跟蹤的算法_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

-.z視頻中對多目標(biāo)運動物體跟蹤的算法解析1.算法目的:運動目標(biāo)跟蹤算法的目的就是對視頻中的圖象序列進展分析,計算出目標(biāo)在每幀圖象上的位置。這里要根據(jù)區(qū)域分割過程給出的目標(biāo)質(zhì)心位置,計算出目標(biāo)位移,并且根據(jù)質(zhì)心位置的變化判斷出目標(biāo)的運動方向,以及運動目標(biāo)是否在觀察窗口,實現(xiàn)對客流量的統(tǒng)計。因為該跟蹤是對多目標(biāo)的追蹤,需要找出運動目標(biāo)在相鄰幀上的對應(yīng)區(qū)域。系統(tǒng)具有固有噪聲,目標(biāo)周圍背景的干擾可能會產(chǎn)生誤差,但這些噪聲在前面的過程已經(jīng)去除,如有必要可做適當(dāng)調(diào)整修正。2.算法難點:〔1〕因為要跟蹤的是多目標(biāo),需要找到相鄰幀之間對應(yīng)的運動目標(biāo)區(qū)域不致跟蹤混亂?!?〕如何判斷運動目標(biāo)區(qū)域是否是新的目標(biāo)進入觀測窗口〔3〕運動目標(biāo)是否離開了觀測窗口以及離開的方向;即計數(shù)器何時加1、是否加1〔4〕對跟蹤過程中出現(xiàn)的一些偏差和問題,要進展必要的修正3.算法描述:〔1〕跟蹤首先要判斷的是:幀與幀之間如何將運動目標(biāo)對應(yīng)起來。追蹤過程中的追蹤特征是物體的質(zhì)心〔由運動區(qū)域分割過程中給出〕,這里判斷對應(yīng)目標(biāo)可以:a.只利用質(zhì)心間的最短距離做為特征;b.利用加權(quán)系數(shù)將最短距離,運動目標(biāo)區(qū)域的長度,寬度以及長寬比和面積等綜合起來作為特征。〔2〕根據(jù)判斷特征設(shè)置目標(biāo)鏈,記錄每個被跟蹤目標(biāo)的最新質(zhì)心位置,為下步判斷提供條件。另外將每個目標(biāo)的質(zhì)心位置存儲起來,可以隨時掌握目標(biāo)的運動情況,為以后要輸出目標(biāo)的運動曲線做根底。〔3〕每進入觀察窗口一個新的運動目標(biāo),就將它的最新質(zhì)心位置參加該目標(biāo)鏈。如何判斷該運動目標(biāo)是新的:設(shè)置門限值ymin,yma*〔當(dāng)ymin<y<yma*視為在觀測窗口,當(dāng)y>yma*或y<ymin可認(rèn)為是新目標(biāo)區(qū)域〕,當(dāng)有目標(biāo)的質(zhì)心位置目標(biāo).y<ymin或目標(biāo).y>yma*并且它的標(biāo)志位為未被跟蹤,則肯定是新目標(biāo)〔在新目標(biāo)區(qū)域出現(xiàn)的目標(biāo)有可能是要離開觀測窗口的目標(biāo),不過它們的標(biāo)志位肯定為被跟蹤〕。這樣判斷出來的新目標(biāo)方向是有出、入之分的?!?〕與目標(biāo)鏈〔MB[h][l]〕相對應(yīng)的還有位置數(shù)組(WZ[m][n]),用來存放目標(biāo)鏈中相應(yīng)目標(biāo)的質(zhì)心位置。最初進展處理時,目標(biāo)鏈?zhǔn)强盏?,在?dāng)前幀中假設(shè)有新目標(biāo),則將其橫、縱坐標(biāo)參加到目標(biāo)鏈中,并存儲在對應(yīng)的位置數(shù)組中,置標(biāo)記為被跟蹤?!?〕處理新的當(dāng)前幀時,首先將目標(biāo)鏈MB中每個元素〔代表前一幀中所有運動目標(biāo)〕依次與當(dāng)前幀中記錄的每個運動目標(biāo)進展距離計算,求出其中最小距離d〔假設(shè)是MB[i]與當(dāng)前幀中運動目標(biāo)t的質(zhì)心距離〕則判斷d與門限值λ的大小,假設(shè)d<λ,則說明運動目標(biāo)t就是前一禎MB[i]對應(yīng)的運動目標(biāo)區(qū)域,則將t的質(zhì)心位置更新代替MB[i]中的橫縱坐標(biāo)〔MB[i]中記錄目標(biāo)i的最新質(zhì)心位置〕,并將其質(zhì)心位置參加到WZ[i]中去,記錄該目標(biāo)運動質(zhì)心的記錄,將該運動目標(biāo)標(biāo)記為被跟蹤;如d>λ則說明該最小值缺乏以證明它們是對應(yīng)目標(biāo),可能MB[i]代表的目標(biāo)已經(jīng)不在跟蹤窗口,則做如下處理:檢查對應(yīng)MB[i]代表的目標(biāo)質(zhì)心位置的最新記錄,如果MB[i][1](縱坐標(biāo))>yma*,可認(rèn)為目標(biāo)離開觀測窗口,并且方向是進入,則計數(shù)器加1;如果MB[i][1]<ymin,目標(biāo)離開觀測窗口,但方向是出去,計數(shù)器不動作?!?〕設(shè)置數(shù)組CC[m][n],存儲離開觀測窗口并且方向是進入的運動目標(biāo)質(zhì)心位置記錄,象〔5〕中的MB[i]假設(shè)是進入就將對應(yīng)位置記錄WZ[i]存放在數(shù)組CC中,同時去除MB[i]中的特征值和WZ[i]中的質(zhì)心記錄。這里可以另外設(shè)置一個空閑位置數(shù)組KWZ[i],記錄被清空的WZ中的位置,每次有新目標(biāo)到來,須分配數(shù)組空間就先檢查是否有被清空的記錄?!?〕直至目標(biāo)鏈中的目標(biāo)檢查完畢,則查看當(dāng)前禎中的各運動目標(biāo),如有未被標(biāo)記的,且在新目標(biāo)區(qū)域中則將其參加到目標(biāo)鏈中,標(biāo)記設(shè)為已被跟蹤?!?〕接收新的當(dāng)前禎,繼續(xù)如此處理。處理過程中可能出現(xiàn)的幾個問題為:〔1〕如果當(dāng)前禎中一個運動目標(biāo)t已經(jīng)被標(biāo)記,但是當(dāng)處理到目標(biāo)鏈中下一個目標(biāo)是最小距離的仍是t,說明目標(biāo)鏈中有兩個目標(biāo)都與t的距離最小,這樣就需要調(diào)整?!?〕如果門限值λ設(shè)置不當(dāng),則可能產(chǎn)生誤判?!?〕如果目標(biāo)鏈中所有目標(biāo)檢查完畢,但是在當(dāng)前禎中有未被標(biāo)記并且不在新目標(biāo)區(qū)域,即不是新目標(biāo),又不是被跟蹤目標(biāo)的相應(yīng)目標(biāo),則有過失出現(xiàn),可能是噪聲?!?〕是否將離開觀測窗口并且運動方向是出去的目標(biāo)質(zhì)心位置存儲在數(shù)組CC中。4.算法實現(xiàn)數(shù)據(jù)構(gòu)造:a.設(shè)置數(shù)組WZ[m][n]用來存放跟蹤過程中被跟跟蹤目標(biāo)的各時刻質(zhì)心位置,WZ[i][0]存放下次填寫質(zhì)心記錄的位置,從WZ[0][1]開場記錄橫坐標(biāo)。b.設(shè)置數(shù)組MB[M][2]存放目標(biāo)鏈,記錄被跟蹤目標(biāo)的最新質(zhì)心位置,MB[0][0]存放被跟蹤目標(biāo)的個數(shù),MB[0][1]閑置。c.設(shè)置數(shù)組CC[h][l]存放離開觀察窗口已跟蹤完畢的各目標(biāo)的質(zhì)心位置,供假設(shè)質(zhì)心位置曲線,提高精度用。d.設(shè)置KWZ[m]記錄清空的WZ數(shù)組序號;KWZ[0]表示清空的WZ數(shù)組元素的個數(shù),假設(shè)再次分配數(shù)組空間給新目標(biāo)時,先檢查KWZ數(shù)組中KWZ[0]是否為0,假設(shè)為0,則分配新數(shù)組空間,否則重新利用被清空的數(shù)組位置e.設(shè)置門限值λ,yma*,ymin.f.接收到的運動目標(biāo)為一個struct初始化:For(I=0;I<m;I++){WZ[I][0]=1;MB[I][0]=-1;置初值;MB[I][1]=-1;}for(I=0;I<n;I++)CC[I][0]=-1;初始化數(shù)組CC,初始化數(shù)組KWZ;KWZ[0]=0;初始化時沒有清空的數(shù)組MB[0][0]=0;記錄目標(biāo)鏈中目標(biāo)的數(shù)目Cursorm=1;記錄目標(biāo)鏈中最末位置Cursorc=0;記錄數(shù)組CC中最末位置Count=0;計數(shù)器While(有下一禎數(shù)據(jù)傳送){for(I=1;I<cursorm;I++)依次對目標(biāo)鏈各目標(biāo)進展處理{*=MB[I][0];y=MB[I][1];p=head;p指向一禎數(shù)據(jù)的頭do{接收當(dāng)前禎的數(shù)據(jù);d=sqrt(pow(*-p.*,2)+pow(y-p.y,2));if(d<dmin){dmin=d;q=p;}繼續(xù)接收當(dāng)前禎的下個運動目標(biāo)的數(shù)據(jù)構(gòu)造;p=p->ne*t;}while(當(dāng)前禎的數(shù)據(jù)接收完全)if(d<λ){MB[I][0]=q.*;MB[I][1]=q.y;WZ[I][WZ[I][0]]=q.*;WZ[I][WZ[I][0]]=q.y;WZ[I][0]=WZ[I][0]+2;q.mark=’y’;}else{if(MB[I][1]>yma*)離開觀測窗口方向是進入{count++;將WZ[I]中的記錄轉(zhuǎn)存到CC數(shù)組中;cursorc++;去除WZ[I]和MB[I]中的數(shù)據(jù);KWZ[0]++;標(biāo)記空閑數(shù)組元素個數(shù)KWZ[KWZ[0]]=I;}if(MB[I][1]<ymin)離開觀測窗口方向是出去{去除WZ[I]和MB[I];KWZ[0]++;KWZ[KWZ[0]]=I;}}}目標(biāo)鏈中的所有目標(biāo)處理完畢且目標(biāo)鏈不空則:{判斷當(dāng)前禎中各運動目標(biāo)的標(biāo)記;p=head;重新指向一禎的開頭while(p!=null){if(p.mark==’n’)if(p.y<ymin||p.y>yma*){將該新目標(biāo)參加到目標(biāo)鏈中;p.mark=’y’;}else出錯處理,修正;出現(xiàn)既非新目標(biāo)又非被跟蹤目標(biāo)p=p->ne*t;}}if(MB[0][0]==0)說明還未有被跟蹤目標(biāo),目標(biāo)鏈為空{(diào)依次讀取當(dāng)前禎的數(shù)據(jù);p=head;while(當(dāng)前禎數(shù)據(jù)未完){if(p.mark==’n’&&(p.y<ymin||p.y>yma*))在新目標(biāo)區(qū)域{MB[cursorm][0]=p.*;MB[cursorm][1]=p.y;修改最新質(zhì)心位置MB[0][0]++;WZ[cursorm][WZ[cursorm][0]]=p.*;WZ[cursorm][WZ[cursorm][0]]=p.y;WZ[cursorm][0]=WZ[cursorm][0]+2;p.mark=’y’;}cursorm++;p=p->ne*t;}}接收下一禎運動目標(biāo)的數(shù)據(jù)構(gòu)造;}對應(yīng)while循環(huán)5.算法優(yōu)化:其中λ,ymin和yma*的取值要得當(dāng),否則會出現(xiàn)過失,這需要反復(fù)測試得到適宜的值。另外對圖象的噪聲影響和跟蹤過程中出現(xiàn)的不期望的結(jié)果如果進展修正,則結(jié)果可能會更準(zhǔn)確。6.各個函數(shù)功能及其輸入輸出所有函數(shù)在程序track..c中存放。〔1〕voidInit()初始化函數(shù),將程序中全局變量——數(shù)組WZ和MB初始化,kwhead是指向空閑數(shù)組位置的指針,初始化為NULL,cursorm的值表示數(shù)組WZ和MB的最大下標(biāo)+1;其中MB[0][0]存放正在被跟蹤目標(biāo)個數(shù),WZ[I][0]存放第I個被跟蹤目標(biāo)的下一個軌跡質(zhì)心存放位置〔在數(shù)組WZ中〕,countin,countout分別記錄進入和出去的人數(shù);〔2〕voidAddkw(int*h):功能:將釋放的數(shù)組元素下標(biāo)參加一個鏈表中,便于以后分配。輸入:剛釋放的數(shù)組元素的下標(biāo)*h;輸出:無輸出,下次分配時,利用指針頭kwhead依次分配數(shù)組空間。〔3〕intDelkw():功能:有新的目標(biāo)出現(xiàn)在運動區(qū)域,找到適宜的數(shù)組下標(biāo),將此數(shù)組空間分配給該目標(biāo)。輸入:無輸入,直接調(diào)用該函數(shù),從kwhead所指的鏈表中〔為空閑數(shù)組下標(biāo)〕依次分配空間。輸出:輸出要分配的數(shù)組下標(biāo)?!?〕intGet*yma*(intWZtemp[Nma*]):功能:從數(shù)組Wztemp所記錄的運動軌跡中找到最大的橫坐標(biāo)或縱坐標(biāo)。輸入:輸入該運動目標(biāo)的所有運動軌跡記錄Wztemp.輸出:輸出找到的最大的橫坐標(biāo)或縱坐標(biāo)〔如果定義Coordinate則找最大的橫坐標(biāo),此時運動目標(biāo)在橫軸上運動幅度較大而縱軸上幾乎不變〕〔6〕intGet*ymin(intWZtemp[Nma*]):功能:從數(shù)組Wztemp所記錄的運動軌跡中找到最小的橫坐標(biāo)或縱坐標(biāo)。輸入:輸入該運動目標(biāo)的所有運動軌跡記錄Wztemp;輸出:輸出找到的最小的橫坐標(biāo)或縱坐標(biāo)。〔7〕voidHandledataY():如果沒有定義Coordinate〔表示目標(biāo)運動方向是順著或逆著縱坐標(biāo)〕則運行該程序。功能:處理得到的運動質(zhì)心,將各質(zhì)心位置一一對應(yīng),找到各個運動目標(biāo)的運動軌跡,并記數(shù)。輸入:無輸入,數(shù)據(jù)的得到靠指針的傳遞,Crhead是每一幀目標(biāo)質(zhì)心位置的頭指針,靠指針

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論