視頻中對(duì)運(yùn)動(dòng)物體跟蹤的算法_第1頁(yè)
視頻中對(duì)運(yùn)動(dòng)物體跟蹤的算法_第2頁(yè)
視頻中對(duì)運(yùn)動(dòng)物體跟蹤的算法_第3頁(yè)
視頻中對(duì)運(yùn)動(dòng)物體跟蹤的算法_第4頁(yè)
視頻中對(duì)運(yùn)動(dòng)物體跟蹤的算法_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、視頻中對(duì)多目標(biāo)運(yùn)動(dòng)物體跟蹤的算法解析1 算法目的:運(yùn)動(dòng)目標(biāo)跟蹤算法的目的就是對(duì)視頻中的圖象序列進(jìn)行分析,計(jì)算出目標(biāo)在每幀圖象上的位置。這里要根據(jù)區(qū)域分割過(guò)程給出的目標(biāo)質(zhì)心位置,計(jì)算出目標(biāo)位移,并且根據(jù)質(zhì)心位置的變化判斷出目標(biāo)的運(yùn)動(dòng)方向,以及運(yùn)動(dòng)目標(biāo)是否在觀察窗口,實(shí)現(xiàn)對(duì)客流量的統(tǒng)計(jì)。因?yàn)樵摳櫴菍?duì)多目標(biāo)的追蹤,需要找出運(yùn)動(dòng)目標(biāo)在相鄰幀上的對(duì)應(yīng)區(qū)域。系統(tǒng)具有固有噪聲,目標(biāo)周圍背景的干擾可能會(huì)產(chǎn)生誤差,但這些噪聲在前面的過(guò)程已經(jīng)去除,如有必要可做適當(dāng)調(diào)整修正。2 算法難點(diǎn):(1)因?yàn)橐櫟氖嵌嗄繕?biāo),需要找到相鄰幀之間對(duì)應(yīng)的運(yùn)動(dòng)目標(biāo)區(qū)域不致跟蹤混亂。(2)如何判斷運(yùn)動(dòng)目標(biāo)區(qū)域是否是新的目標(biāo)進(jìn)入觀測(cè)

2、窗口(3)運(yùn)動(dòng)目標(biāo)是否離開了觀測(cè)窗口以及離開的方向;即計(jì)數(shù)器何時(shí)加1、是否加1(4)對(duì)跟蹤過(guò)程中出現(xiàn)的一些偏差和問(wèn)題,要進(jìn)行必要的修正3 算法描述:(1)跟蹤首先要判斷的是:幀與幀之間如何將運(yùn)動(dòng)目標(biāo)對(duì)應(yīng)起來(lái)。追蹤過(guò)程中的追蹤特征是物體的質(zhì)心(由運(yùn)動(dòng)區(qū)域分割過(guò)程中給出),這里判斷對(duì)應(yīng)目標(biāo)可以:a.只利用質(zhì)心間的最短距離做為特征; b.利用加權(quán)系數(shù)將最短距離,運(yùn)動(dòng)目標(biāo)區(qū)域的長(zhǎng)度,寬度以及長(zhǎng)寬比和面積等綜合起來(lái)作為特征。(2)根據(jù)判斷特征設(shè)置目標(biāo)鏈,記錄每個(gè)被跟蹤目標(biāo)的最新質(zhì)心位置,為下步判斷提供條件。另外將每個(gè)目標(biāo)的質(zhì)心位置存儲(chǔ)起來(lái),可以隨時(shí)掌握目標(biāo)的運(yùn)動(dòng)情況,為以后要輸出目標(biāo)的運(yùn)動(dòng)曲線做基礎(chǔ)。(

3、3)每進(jìn)入觀察窗口一個(gè)新的運(yùn)動(dòng)目標(biāo),就將它的最新質(zhì)心位置加入該目標(biāo)鏈。如何判斷該運(yùn)動(dòng)目標(biāo)是新的:設(shè)置門限值ymin,ymax(當(dāng)ymin<y<ymax視為在觀測(cè)窗口,當(dāng)y>ymax或y<ymin可認(rèn)為是新目標(biāo)區(qū)域),當(dāng)有目標(biāo)的質(zhì)心位置 目標(biāo).y<ymin或目標(biāo).y>ymax并且它的標(biāo)志位為未被跟蹤,則肯定是新目標(biāo)(在新目標(biāo)區(qū)域出現(xiàn)的目標(biāo)有可能是要離開觀測(cè)窗口的目標(biāo),不過(guò)它們的標(biāo)志位肯定為被跟蹤)。這樣判斷出來(lái)的新目標(biāo)方向是有出、入之分的。(4)與目標(biāo)鏈(MBhl)相對(duì)應(yīng)的還有位置數(shù)組(WZmn),用來(lái)存放目標(biāo)鏈中相應(yīng)目標(biāo)的質(zhì)心位置。最初進(jìn)行處理時(shí),目標(biāo)鏈?zhǔn)强?/p>

4、的,在當(dāng)前幀中若有新目標(biāo),則將其橫、縱坐標(biāo)加入到目標(biāo)鏈中,并存儲(chǔ)在對(duì)應(yīng)的位置數(shù)組中,置標(biāo)記為被跟蹤。(5)處理新的當(dāng)前幀時(shí),首先將目標(biāo)鏈MB中每個(gè)元素(代表前一幀中所有運(yùn)動(dòng)目標(biāo))依次與當(dāng)前幀中記錄的每個(gè)運(yùn)動(dòng)目標(biāo)進(jìn)行距離計(jì)算,求出其中最小距離d(假設(shè)是MBi與當(dāng)前幀中運(yùn)動(dòng)目標(biāo)t的質(zhì)心距離)則判斷d與門限值的大小,若d<,則說(shuō)明運(yùn)動(dòng)目標(biāo)t就是前一禎MBi對(duì)應(yīng)的運(yùn)動(dòng)目標(biāo)區(qū)域,則將t的質(zhì)心位置更新代替MBi中的橫縱坐標(biāo)(MBi中記錄目標(biāo)i的最新質(zhì)心位置),并將其質(zhì)心位置加入到WZi中去,記錄該目標(biāo)運(yùn)動(dòng)質(zhì)心的記錄,將該運(yùn)動(dòng)目標(biāo)標(biāo)記為被跟蹤;如d>則說(shuō)明該最小值不足以證明它們是對(duì)應(yīng)目標(biāo),可能M

5、Bi代表的目標(biāo)已經(jīng)不在跟蹤窗口,則做如下處理:檢查對(duì)應(yīng)MBi代表的目標(biāo)質(zhì)心位置的最新記錄,如果MBi1(縱坐標(biāo))>ymax,可認(rèn)為目標(biāo)離開觀測(cè)窗口,并且方向是進(jìn)入,則計(jì)數(shù)器加1;如果MBi1< ymin,目標(biāo)離開觀測(cè)窗口,但方向是出去,計(jì)數(shù)器不動(dòng)作。(6)設(shè)置數(shù)組CCmn,存儲(chǔ)離開觀測(cè)窗口并且方向是進(jìn)入的運(yùn)動(dòng)目標(biāo)質(zhì)心位置記錄,象(5)中的MBi若是進(jìn)入就將對(duì)應(yīng)位置記錄WZi存放在數(shù)組CC中,同時(shí)清除MBi中的特征值和WZi中的質(zhì)心記錄。這里可以另外設(shè)置一個(gè)空閑位置數(shù)組KWZi,記錄被清空的WZ中的位置,每次有新目標(biāo)到來(lái),須分配數(shù)組空間就先檢查是否有被清空的記錄。(7)直至目標(biāo)鏈中的

6、目標(biāo)檢查完畢,則查看當(dāng)前禎中的各運(yùn)動(dòng)目標(biāo),如有未被標(biāo)記的,且在新目標(biāo)區(qū)域中則將其加入到目標(biāo)鏈中,標(biāo)記設(shè)為已被跟蹤。(8)接收新的當(dāng)前禎,繼續(xù)如此處理。處理過(guò)程中可能出現(xiàn)的幾個(gè)問(wèn)題為:(1) 如果當(dāng)前禎中一個(gè)運(yùn)動(dòng)目標(biāo)t已經(jīng)被標(biāo)記,但是當(dāng)處理到目標(biāo)鏈中下一個(gè)目標(biāo)是最小距離的仍是t,說(shuō)明目標(biāo)鏈中有兩個(gè)目標(biāo)都與t的距離最小,這樣就需要調(diào)整。(2) 如果門限值設(shè)置不當(dāng),則可能產(chǎn)生誤判。(3) 如果目標(biāo)鏈中所有目標(biāo)檢查完畢,但是在當(dāng)前禎中有未被標(biāo)記并且不在新目標(biāo)區(qū)域,即不是新目標(biāo),又不是被跟蹤目標(biāo)的相應(yīng)目標(biāo),則有差錯(cuò)出現(xiàn),可能是噪聲。(4) 是否將離開觀測(cè)窗口并且運(yùn)動(dòng)方向是出去的目標(biāo)質(zhì)心位置存儲(chǔ)在數(shù)組CC

7、中。4算法實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu):a. 設(shè)置數(shù)組WZmn用來(lái)存放跟蹤過(guò)程中被跟跟蹤目標(biāo)的各時(shí)刻質(zhì)心位置,WZi0存放下次填寫質(zhì)心記錄的位置,從WZ01開始記錄橫坐標(biāo)。b. 設(shè)置數(shù)組MBM2存放目標(biāo)鏈,記錄被跟蹤目標(biāo)的最新質(zhì)心位置,MB00存放被跟蹤目標(biāo)的個(gè)數(shù),MB01閑置。c. 設(shè)置數(shù)組CChl存放離開觀察窗口已跟蹤完畢的各目標(biāo)的質(zhì)心位置,供若質(zhì)心位置曲線,提高精度用。d. 設(shè)置KWZm記錄清空的WZ數(shù)組序號(hào);KWZ0表示清空的WZ數(shù)組元素的個(gè)數(shù),若再次分配數(shù)組空間給新目標(biāo)時(shí),先檢查KWZ數(shù)組中KWZ0是否為0,若為0,則分配新數(shù)組空間,否則重新利用被清空的數(shù)組位置e. 設(shè)置門限值,ymax,ymin.

8、f.接收到的運(yùn)動(dòng)目標(biāo)為一個(gè)struct初始化:For (I=0;I<m;I+) WZI0=1; MBI0=-1; 置初值;MBI1=-1;for(I=0;I<n;I+)CCI0=-1; 初始化數(shù)組CC,初始化數(shù)組KWZ;KWZ0=0; 初始化時(shí)沒(méi)有清空的數(shù)組MB00=0;記錄目標(biāo)鏈中目標(biāo)的數(shù)目Cursorm=1; 記錄目標(biāo)鏈中最末位置Cursorc=0; 記錄數(shù)組CC中最末位置Count=0; 計(jì)數(shù)器While ( 有下一禎數(shù)據(jù)傳送 ) for( I=1;I<cursorm;I+) 依次對(duì)目標(biāo)鏈各目標(biāo)進(jìn)行處理 x=MBI0;y=MBI1;p=head; p指向一禎數(shù)據(jù)的頭do

9、 接收當(dāng)前禎的數(shù)據(jù);d=sqrt(pow(x-p.x,2)+pow(y-p.y,2);if(d<dmin) dmin=d ; q=p; 繼續(xù)接收當(dāng)前禎的下個(gè)運(yùn)動(dòng)目標(biāo)的數(shù)據(jù)結(jié)構(gòu);p=p->next;while ( 當(dāng)前禎的數(shù)據(jù)接收完全 )if ( d<) MBI0=q.x;MBI1=q.y;WZIWZI0=q.x;WZIWZI0=q.y;WZI0=WZI0+2;q.mark=y;else if(MBI1>ymax) 離開觀測(cè)窗口方向是進(jìn)入 count+;將WZI中的記錄轉(zhuǎn)存到CC數(shù)組中;cursorc+;清除WZI和MBI中的數(shù)據(jù);KWZ0+; 標(biāo)記空閑數(shù)組元素個(gè)數(shù)KWZ

10、KWZ0=I;if(MBI1<ymin) 離開觀測(cè)窗口方向是出去 清除WZI和MBI;KWZ0+;KWZKWZ0=I;目標(biāo)鏈中的所有目標(biāo)處理結(jié)束且目標(biāo)鏈不空則: 判斷當(dāng)前禎中各運(yùn)動(dòng)目標(biāo)的標(biāo)記;p=head; 重新指向一禎的開頭while ( p!=null) if(p.mark=n)if(p.y<ymin|p.y>ymax) 將該新目標(biāo)加入到目標(biāo)鏈中;p.mark=y;else 出錯(cuò)處理,修正;出現(xiàn)既非新目標(biāo)又非被跟蹤目標(biāo)p=p->next;if (MB00=0) 說(shuō)明還未有被跟蹤目標(biāo),目標(biāo)鏈為空 依次讀取當(dāng)前禎的數(shù)據(jù);p=head;while (當(dāng)前禎數(shù)據(jù)未完) if

11、 ( p.mark=n&&(p.y < ymin | p.y > ymax) 在新目標(biāo)區(qū)域 MBcursorm0=p.x;MBcursorm1=p.y; 修改最新質(zhì)心位置MB00+;WZcursormWZcursorm0=p.x;WZcursormWZcursorm0=p.y; WZcursorm0=WZcursorm0+2;p.mark=y;cursorm+;p=p->next; 接收下一禎運(yùn)動(dòng)目標(biāo)的數(shù)據(jù)結(jié)構(gòu); 對(duì)應(yīng)while循環(huán)5 算法優(yōu)化:其中,ymin和ymax的取值要得當(dāng),否則會(huì)出現(xiàn)差錯(cuò),這需要反復(fù)測(cè)試得到合適的值。另外對(duì)圖象的噪聲影響和跟蹤過(guò)程中出

12、現(xiàn)的不期望的結(jié)果如果進(jìn)行修正,則結(jié)果可能會(huì)更精確。6 各個(gè)函數(shù)功能及其輸入輸出所有函數(shù)在程序track.c中存放。(1)void Init() 初始化函數(shù),將程序中全局變量數(shù)組WZ和MB初始化,kwhead是指向空閑數(shù)組位置的指針,初始化為NULL,cursorm的值表示數(shù)組WZ和MB的最大下標(biāo)+1;其中MB00存放正在被跟蹤目標(biāo)個(gè)數(shù),WZI0存放第I個(gè)被跟蹤目標(biāo)的下一個(gè)軌跡質(zhì)心存放位置(在數(shù)組WZ中),countin,countout分別記錄進(jìn)入和出去的人數(shù);(2)void Addkw(int xh):功能:將釋放的數(shù)組元素下標(biāo)加入一個(gè)鏈表中,便于以后分配。輸入:剛釋放的數(shù)組元素的下標(biāo)xh;

13、輸出:無(wú)輸出,下次分配時(shí),利用指針頭kwhead依次分配數(shù)組空間。(3)int Delkw():功能:有新的目標(biāo)出現(xiàn)在運(yùn)動(dòng)區(qū)域,找到合適的數(shù)組下標(biāo),將此數(shù)組空間分配給該目標(biāo)。輸入:無(wú)輸入,直接調(diào)用該函數(shù),從kwhead所指的鏈表中(為空閑數(shù)組下標(biāo))依次分配空間。輸出:輸出要分配的數(shù)組下標(biāo)。(5) int Getxymax(int WZtempNmax):功能:從數(shù)組Wztemp所記錄的運(yùn)動(dòng)軌跡中找到最大的橫坐標(biāo)或縱坐標(biāo)。輸入:輸入該運(yùn)動(dòng)目標(biāo)的所有運(yùn)動(dòng)軌跡記錄Wztemp.輸出:輸出找到的最大的橫坐標(biāo)或縱坐標(biāo)(如果定義Coordinate則找最大的橫坐標(biāo),此時(shí)運(yùn)動(dòng)目標(biāo)在橫軸上運(yùn)動(dòng)幅度較大而縱軸上幾乎不變)(6) int Getxymin(int WZtempNmax):功能:從數(shù)組Wztemp所記錄的運(yùn)動(dòng)軌跡中找到最小的橫坐標(biāo)或縱坐標(biāo)。輸入:輸入該運(yùn)動(dòng)目標(biāo)的所有運(yùn)動(dòng)軌跡記錄Wztemp;輸出:輸出找到的最小的橫坐標(biāo)或縱坐標(biāo)。(7) void HandledataY():如果沒(méi)有定義Coordinate(表示目標(biāo)運(yùn)動(dòng)方向是順著或逆著縱坐標(biāo))則運(yùn)行該程序。功能:處理得到的運(yùn)動(dòng)質(zhì)心,將各質(zhì)心位置一一對(duì)應(yīng),找到各個(gè)運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)軌跡,并記數(shù)。輸入:無(wú)輸入,數(shù)據(jù)的得到靠指針的傳遞,Crhead是每一幀目標(biāo)質(zhì)心位置的頭指針,靠指針的移動(dòng)來(lái)讀取數(shù)據(jù)。輸出:無(wú)輸

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論