




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、視頻中對多目標運動物體跟蹤的算法解析1 算法目的:運動目標跟蹤算法的目的就是對視頻中的圖象序列進行分析,計算出目標在每幀圖象上的位置。這里要根據區(qū)域分割過程給出的目標質心位置,計算出目標位移,并且根據質心位置的變化判斷出目標的運動方向,以及運動目標是否在觀察窗口,實現對客流量的統計。因為該跟蹤是對多目標的追蹤,需要找出運動目標在相鄰幀上的對應區(qū)域。系統具有固有噪聲,目標周圍背景的干擾可能會產生誤差,但這些噪聲在前面的過程已經去除,如有必要可做適當調整修正。2 算法難點:(1)因為要跟蹤的是多目標,需要找到相鄰幀之間對應的運動目標區(qū)域不致跟蹤混亂。(2)如何判斷運動目標區(qū)域是否是新的目標進入觀測
2、窗口(3)運動目標是否離開了觀測窗口以及離開的方向;即計數器何時加1、是否加1(4)對跟蹤過程中出現的一些偏差和問題,要進行必要的修正3 算法描述:(1)跟蹤首先要判斷的是:幀與幀之間如何將運動目標對應起來。追蹤過程中的追蹤特征是物體的質心(由運動區(qū)域分割過程中給出),這里判斷對應目標可以:a.只利用質心間的最短距離做為特征; b.利用加權系數將最短距離,運動目標區(qū)域的長度,寬度以及長寬比和面積等綜合起來作為特征。(2)根據判斷特征設置目標鏈,記錄每個被跟蹤目標的最新質心位置,為下步判斷提供條件。另外將每個目標的質心位置存儲起來,可以隨時掌握目標的運動情況,為以后要輸出目標的運動曲線做基礎。(
3、3)每進入觀察窗口一個新的運動目標,就將它的最新質心位置加入該目標鏈。如何判斷該運動目標是新的:設置門限值ymin,ymax(當ymin<y<ymax視為在觀測窗口,當y>ymax或y<ymin可認為是新目標區(qū)域),當有目標的質心位置 目標.y<ymin或目標.y>ymax并且它的標志位為未被跟蹤,則肯定是新目標(在新目標區(qū)域出現的目標有可能是要離開觀測窗口的目標,不過它們的標志位肯定為被跟蹤)。這樣判斷出來的新目標方向是有出、入之分的。(4)與目標鏈(MBhl)相對應的還有位置數組(WZmn),用來存放目標鏈中相應目標的質心位置。最初進行處理時,目標鏈是空
4、的,在當前幀中若有新目標,則將其橫、縱坐標加入到目標鏈中,并存儲在對應的位置數組中,置標記為被跟蹤。(5)處理新的當前幀時,首先將目標鏈MB中每個元素(代表前一幀中所有運動目標)依次與當前幀中記錄的每個運動目標進行距離計算,求出其中最小距離d(假設是MBi與當前幀中運動目標t的質心距離)則判斷d與門限值的大小,若d<,則說明運動目標t就是前一禎MBi對應的運動目標區(qū)域,則將t的質心位置更新代替MBi中的橫縱坐標(MBi中記錄目標i的最新質心位置),并將其質心位置加入到WZi中去,記錄該目標運動質心的記錄,將該運動目標標記為被跟蹤;如d>則說明該最小值不足以證明它們是對應目標,可能M
5、Bi代表的目標已經不在跟蹤窗口,則做如下處理:檢查對應MBi代表的目標質心位置的最新記錄,如果MBi1(縱坐標)>ymax,可認為目標離開觀測窗口,并且方向是進入,則計數器加1;如果MBi1< ymin,目標離開觀測窗口,但方向是出去,計數器不動作。(6)設置數組CCmn,存儲離開觀測窗口并且方向是進入的運動目標質心位置記錄,象(5)中的MBi若是進入就將對應位置記錄WZi存放在數組CC中,同時清除MBi中的特征值和WZi中的質心記錄。這里可以另外設置一個空閑位置數組KWZi,記錄被清空的WZ中的位置,每次有新目標到來,須分配數組空間就先檢查是否有被清空的記錄。(7)直至目標鏈中的
6、目標檢查完畢,則查看當前禎中的各運動目標,如有未被標記的,且在新目標區(qū)域中則將其加入到目標鏈中,標記設為已被跟蹤。(8)接收新的當前禎,繼續(xù)如此處理。處理過程中可能出現的幾個問題為:(1) 如果當前禎中一個運動目標t已經被標記,但是當處理到目標鏈中下一個目標是最小距離的仍是t,說明目標鏈中有兩個目標都與t的距離最小,這樣就需要調整。(2) 如果門限值設置不當,則可能產生誤判。(3) 如果目標鏈中所有目標檢查完畢,但是在當前禎中有未被標記并且不在新目標區(qū)域,即不是新目標,又不是被跟蹤目標的相應目標,則有差錯出現,可能是噪聲。(4) 是否將離開觀測窗口并且運動方向是出去的目標質心位置存儲在數組CC
7、中。4算法實現數據結構:a. 設置數組WZmn用來存放跟蹤過程中被跟跟蹤目標的各時刻質心位置,WZi0存放下次填寫質心記錄的位置,從WZ01開始記錄橫坐標。b. 設置數組MBM2存放目標鏈,記錄被跟蹤目標的最新質心位置,MB00存放被跟蹤目標的個數,MB01閑置。c. 設置數組CChl存放離開觀察窗口已跟蹤完畢的各目標的質心位置,供若質心位置曲線,提高精度用。d. 設置KWZm記錄清空的WZ數組序號;KWZ0表示清空的WZ數組元素的個數,若再次分配數組空間給新目標時,先檢查KWZ數組中KWZ0是否為0,若為0,則分配新數組空間,否則重新利用被清空的數組位置e. 設置門限值,ymax,ymin.
8、f.接收到的運動目標為一個struct初始化:For (I=0;I<m;I+) WZI0=1; MBI0=-1; 置初值;MBI1=-1;for(I=0;I<n;I+)CCI0=-1; 初始化數組CC,初始化數組KWZ;KWZ0=0; 初始化時沒有清空的數組MB00=0;記錄目標鏈中目標的數目Cursorm=1; 記錄目標鏈中最末位置Cursorc=0; 記錄數組CC中最末位置Count=0; 計數器While ( 有下一禎數據傳送 ) for( I=1;I<cursorm;I+) 依次對目標鏈各目標進行處理 x=MBI0;y=MBI1;p=head; p指向一禎數據的頭do
9、 接收當前禎的數據;d=sqrt(pow(x-p.x,2)+pow(y-p.y,2);if(d<dmin) dmin=d ; q=p; 繼續(xù)接收當前禎的下個運動目標的數據結構;p=p->next;while ( 當前禎的數據接收完全 )if ( d<) MBI0=q.x;MBI1=q.y;WZIWZI0=q.x;WZIWZI0=q.y;WZI0=WZI0+2;q.mark=y;else if(MBI1>ymax) 離開觀測窗口方向是進入 count+;將WZI中的記錄轉存到CC數組中;cursorc+;清除WZI和MBI中的數據;KWZ0+; 標記空閑數組元素個數KWZ
10、KWZ0=I;if(MBI1<ymin) 離開觀測窗口方向是出去 清除WZI和MBI;KWZ0+;KWZKWZ0=I;目標鏈中的所有目標處理結束且目標鏈不空則: 判斷當前禎中各運動目標的標記;p=head; 重新指向一禎的開頭while ( p!=null) if(p.mark=n)if(p.y<ymin|p.y>ymax) 將該新目標加入到目標鏈中;p.mark=y;else 出錯處理,修正;出現既非新目標又非被跟蹤目標p=p->next;if (MB00=0) 說明還未有被跟蹤目標,目標鏈為空 依次讀取當前禎的數據;p=head;while (當前禎數據未完) if
11、 ( p.mark=n&&(p.y < ymin | p.y > ymax) 在新目標區(qū)域 MBcursorm0=p.x;MBcursorm1=p.y; 修改最新質心位置MB00+;WZcursormWZcursorm0=p.x;WZcursormWZcursorm0=p.y; WZcursorm0=WZcursorm0+2;p.mark=y;cursorm+;p=p->next; 接收下一禎運動目標的數據結構; 對應while循環(huán)5 算法優(yōu)化:其中,ymin和ymax的取值要得當,否則會出現差錯,這需要反復測試得到合適的值。另外對圖象的噪聲影響和跟蹤過程中出
12、現的不期望的結果如果進行修正,則結果可能會更精確。6 各個函數功能及其輸入輸出所有函數在程序track.c中存放。(1)void Init() 初始化函數,將程序中全局變量數組WZ和MB初始化,kwhead是指向空閑數組位置的指針,初始化為NULL,cursorm的值表示數組WZ和MB的最大下標+1;其中MB00存放正在被跟蹤目標個數,WZI0存放第I個被跟蹤目標的下一個軌跡質心存放位置(在數組WZ中),countin,countout分別記錄進入和出去的人數;(2)void Addkw(int xh):功能:將釋放的數組元素下標加入一個鏈表中,便于以后分配。輸入:剛釋放的數組元素的下標xh;
13、輸出:無輸出,下次分配時,利用指針頭kwhead依次分配數組空間。(3)int Delkw():功能:有新的目標出現在運動區(qū)域,找到合適的數組下標,將此數組空間分配給該目標。輸入:無輸入,直接調用該函數,從kwhead所指的鏈表中(為空閑數組下標)依次分配空間。輸出:輸出要分配的數組下標。(5) int Getxymax(int WZtempNmax):功能:從數組Wztemp所記錄的運動軌跡中找到最大的橫坐標或縱坐標。輸入:輸入該運動目標的所有運動軌跡記錄Wztemp.輸出:輸出找到的最大的橫坐標或縱坐標(如果定義Coordinate則找最大的橫坐標,此時運動目標在橫軸上運動幅度較大而縱軸上幾乎不變)(6) int Getxymin(int WZtempNmax):功能:從數組Wztemp所記錄的運動軌跡中找到最小的橫坐標或縱坐標。輸入:輸入該運動目標的所有運動軌跡記錄Wztemp;輸出:輸出找到的最小的橫坐標或縱坐標。(7) void HandledataY():如果沒有定義Coordinate(表示目標運動方向是順著或逆著縱坐標)則運行該程序。功能:處理得到的運動質心,將各質心位置一一對應,找到各個運動目標的運動軌跡,并記數。輸入:無輸入,數據的得到靠指針的傳遞,Crhead是每一幀目標質心位置的頭指針,靠指針的移動來讀取數據。輸出:無輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司晨會活動策劃方案
- 公司日常團建活動方案
- 公司秋游團建活動方案
- 公司日行萬步策劃方案
- 公司節(jié)日策劃活動方案
- 2025年休閑體育管理師考試試卷及答案
- 2025年現代物流管理課程試題及答案
- 2025年手語翻譯人才能力考試試卷及答案
- 2025年技術經濟與管理專業(yè)綜合考試試題及答案
- 幼兒園裝修合同
- 肥料代理合作協議書
- Unit2HealthylifestyleProjectDoahealthsurvey教學設計高中英語人教版選擇性
- 經尿道前列腺電切術后膀胱沖洗的護理-課件
- 2024年中考地理模擬試題(共6套有答案)
- 江蘇省蘇州市2024-2025學年高一歷史下學期期末考試試題含解析
- 安徽省馬鞍山市2024-2025學年高一生物下學期期末考試試題
- 蔬菜農藥殘留檢測合同
- 勞務施工合同協議書范本(2024版)
- 化學-貴州省畢節(jié)市2024年畢節(jié)市高二年級下學期7月期末聯考試題和答案
- 2024年首屆全國“紅旗杯”班組長大賽考試題庫800題(含答案)
- 四川省宜賓市2022-2023學年五年級下學期數學期末試卷(含答案)
評論
0/150
提交評論