(玉溪師范學(xué)院 信息技術(shù)工程學(xué)院,云南 玉溪 653100)
目前,多目標(biāo)跟蹤是智能視頻監(jiān)控領(lǐng)域一個極具挑戰(zhàn)的研究課題,很多跟蹤算法被廣泛的應(yīng)用,如卡爾曼濾波算法[1,4],Camshift[2,4],粒子濾波器[1,3]等.這些算法在特定的簡單場景下都能夠取得很好的跟蹤效果,但是,粒子濾波器會由于粒子退化現(xiàn)象導(dǎo)致后驗概率的估計錯誤;卡爾曼濾波算法有很高的計算復(fù)雜性,不適合對運動目標(biāo)進行實時的跟蹤;Camshift算法通常應(yīng)用在單目標(biāo)跟蹤中,在多目標(biāo)跟蹤中,魯棒性很差.由此可見,在復(fù)雜多目標(biāo)場景下,這些算法都不能取得理想、有效的跟蹤效果,針對具體的跟蹤環(huán)境,這些算法都有待改進.文獻[5]中的方法能夠?qū)蝹€運動目標(biāo)進行魯棒跟蹤,在多目標(biāo)存在的復(fù)雜場景下,該法行不通.文獻[6]中的算法,在復(fù)雜場景下能夠取得很好的跟蹤效果,但是該法對跟蹤場景中的靜態(tài)目標(biāo)和重新進入場景的目標(biāo)會跟蹤失敗.文獻[7]中的算法,可以很好的跟蹤到場景中的靜態(tài)目標(biāo)和重新進入場景的目標(biāo),但是在復(fù)雜場景下,其不能取得滿意的效果.為了進一步改善多目標(biāo)跟蹤效果,本文提出了一種改進的基于Camshift與目標(biāo)軌跡跟蹤相結(jié)合的多目標(biāo)跟蹤方法.
基于圖像序列的多目標(biāo)跟蹤,就是通過對視頻圖像序列進行分析,從圖像中檢測出運動目標(biāo),然后對感興趣的目標(biāo),比如車、人等,在后續(xù)的幀圖像中進行跟蹤,直至其消失在視頻場景中.在實際應(yīng)用中,視頻場景中的運動目標(biāo)的運動狀態(tài)多種多樣,例如,對于進入場景后停止運動的目標(biāo),要求保持其跟蹤焦點,以實現(xiàn)對其進行持續(xù)的跟蹤;對于場景中從靜止?fàn)顟B(tài)改變?yōu)檫\動狀態(tài)的目標(biāo),要求識別出該目標(biāo)并繼續(xù)進行跟蹤;對于已經(jīng)退出視頻場景,但稍后又重新進入場景的目標(biāo),要求能夠在其重新進入場景中時,對其進行準(zhǔn)確的識別,將該目標(biāo)與之前其自身的運動參數(shù)及狀態(tài)對應(yīng)起來,并在后續(xù)的視頻圖像中對其進行持續(xù)的跟蹤.同時,在視頻場景中存在多個目標(biāo)的時候,對這些多個目標(biāo)進行有效的跟蹤也是一個亟待解決的挑戰(zhàn)性問題.為了滿足這些實際應(yīng)用中的跟蹤要求,單純的依靠目前某一種跟蹤算法是行不通的.只有針對這些具體的跟蹤要求,從當(dāng)前的主流跟蹤算法中選擇合理的跟蹤算法,并將其結(jié)合,互補利弊,才能真正有效的解決這些跟蹤難題,達到跟蹤目的.
運動目標(biāo)軌跡跟蹤算法在多目標(biāo)存在的復(fù)雜場景下能夠取得令人滿意的跟蹤效果,實時性好,但該算法不能對靜止目標(biāo)、再進入場景和退出場景目標(biāo)進行持續(xù)有效的跟蹤.Camshift在單目標(biāo)或者目標(biāo)很少等簡單場景中,能夠得到準(zhǔn)確、魯棒的跟蹤效果,但在多目標(biāo)復(fù)雜場景下,其跟蹤效果不理想.本文將二者結(jié)合,正好可以很好地發(fā)揮各自的優(yōu)勢,從而實現(xiàn)多目標(biāo)復(fù)雜場景中,對運動目標(biāo)進行持續(xù)、有效的跟蹤.
運動目標(biāo)軌跡跟蹤算法的基本原理是將運動目標(biāo)從背景中檢測并分離出來之后,與已有的軌跡進行匹配和關(guān)聯(lián),從而實現(xiàn)對目標(biāo)的跟蹤[6].對于單目標(biāo)場景,如果這一目標(biāo)不是新出現(xiàn)的目標(biāo),那么把該目標(biāo)直接賦予已有軌跡就可以了.但是,多目標(biāo)場景下,需要通過距離矩陣和關(guān)聯(lián)矩陣來建立前景目標(biāo)和運動軌跡之間的對應(yīng)關(guān)系來對目標(biāo)進行持續(xù)的跟蹤.運動目標(biāo)軌跡跟蹤算法的基本原理和具體步驟如下:
M(k)={M1(k),M2(k),…,Mn(k)}
(1)
T(k)={T1(k),T2(k),…,Tn(k)}
(2)
(3)
(4)
在上述4個影響因素中,前3個指標(biāo)均為數(shù)值指標(biāo),很容易量化。而對于第4個因素,可以通過查詢生產(chǎn)設(shè)備的訂貨紀(jì)錄結(jié)合工作人員的經(jīng)驗,將這一指標(biāo)轉(zhuǎn)化為0~1的數(shù)值指標(biāo),即極易容易采購則賦值為1,否則為0。
(5)
①一個運動軌跡和多個前景目標(biāo)相關(guān)聯(lián)(此行有多個非0元素);
②一個前景目標(biāo)和多條運動軌跡相關(guān)聯(lián)(此列有多個非0元素);
③一條運動軌跡和一個運動目標(biāo)相關(guān)聯(lián)(矩陣元素中為2).
在運動目標(biāo)軌跡和Camshift相結(jié)合的多目標(biāo)跟蹤機制中,運動軌跡跟蹤法主要對場景中處于運動狀態(tài)的目標(biāo)進行跟蹤,而對于在場景中處于靜止?fàn)顟B(tài)的目標(biāo)或者運動到視頻場景之外的目標(biāo),以及已經(jīng)失去跟蹤焦點的再進入場景目標(biāo),基于運動軌跡跟蹤的算法會丟失掉該目標(biāo)的跟蹤焦點,此時則基于Camshift及丟失焦點前的跟蹤信息進行分析和處理,在限定范圍內(nèi)搜索到目標(biāo),并對該目標(biāo)進行繼續(xù)跟蹤.如果Camshift在限定范圍內(nèi)仍無法獲取到目標(biāo),那么視為已經(jīng)運動到場景之外的運動目標(biāo).此外,當(dāng)場景中處于靜止?fàn)顟B(tài)并基于Camshift進行跟蹤的目標(biāo)的焦點發(fā)生明顯的變化的時候,算法將停止Camshift,取回目標(biāo)編號,并重新對該目標(biāo)進行基于運動軌跡跟蹤的方法對其進行跟蹤并記錄其運動軌跡.
為了分析的方便,我們定義運動目標(biāo)的存儲結(jié)構(gòu)為Area{rect,object,trace,old},其中,Areai(k)代表第k幀中的第i個目標(biāo)的出現(xiàn)區(qū)域,rect代表運動目標(biāo)的矩形框,object代表運動目標(biāo)的編號,trace表示運動目標(biāo)的軌跡,old代表衰老計數(shù)值.則運動軌跡和Camshift相結(jié)合的融合跟蹤算法的具體步驟闡述如下:
②對于檢測出的所有運動目標(biāo),將其運動區(qū)域和前一幀中所記錄的運動軌跡進行匹配,匹配成功的標(biāo)上正確的目標(biāo)編號,并根據(jù)此目標(biāo)在當(dāng)前幀的質(zhì)心位置,更新對應(yīng)此目標(biāo)編號的運動軌跡,同時存儲好新進入場景的運動目標(biāo)和退出場景中的目標(biāo).
③對于新加入場景中的目標(biāo),將其目標(biāo)區(qū)域和基于Camshift跟蹤的各個目標(biāo)區(qū)域進行比較和匹配,判斷其是否為重新進入場景中的原有目標(biāo),如果是則中止Camshift跟蹤,并用取回的該原有目標(biāo)的編號為其編上號,并更新此目標(biāo)的原有結(jié)構(gòu)記錄,并轉(zhuǎn)到步驟5,否則繼續(xù)步驟4.
④為新進入場景中的目標(biāo)建立新的運動目標(biāo)記錄,并按式6將其對應(yīng)的運動區(qū)域參數(shù)添加到運動目標(biāo)結(jié)構(gòu)記錄中.
(6)
其中,n代表當(dāng)前幀中的運動目標(biāo)的總個數(shù).如果還有目標(biāo)尚未被處理,則轉(zhuǎn)步驟3進行繼續(xù)處理.如果目標(biāo)已經(jīng)全部處理完畢,則繼續(xù)步驟5.
⑤對于上一幀中仍未匹配的運動目標(biāo),為了避免個別運動目標(biāo)的暫時消失,對該目標(biāo)采取暫留措施,將該區(qū)域添加到運動目標(biāo)區(qū)域列表中,并將其的衰老計數(shù)值A(chǔ)reai(n)→old增1,若該值未超過預(yù)先設(shè)立衰老閾值則視為在當(dāng)前場景中暫時失去跟蹤焦點的運動目標(biāo),并轉(zhuǎn)下一步驟.如果Areai(n)→old已經(jīng)超出了衰老上限,那么認為該目標(biāo)已經(jīng)徹底離開場景,清除該目標(biāo)記錄.
⑥對于在當(dāng)前場景中暫時失去跟蹤焦點的運動目標(biāo),將其運動區(qū)域參數(shù)傳遞給Camshift,計算該運動目標(biāo)的顏色概率分布,獲取其目標(biāo)特征模板,并在附近區(qū)域進行匹配搜索,若搜索到匹配目標(biāo),則認為該目標(biāo)在當(dāng)前幀中處于靜止?fàn)顟B(tài),此時,將其運動區(qū)域模板信息傳遞給Camshift并進行存儲,在后續(xù)幀中用Camshift對其進行鎖定跟蹤,直到其重新開始運動.如果未搜索到匹配目標(biāo),那么認為該目標(biāo)已經(jīng)離開視頻場景,將其運動參數(shù)暫時存儲起來,以防其在之后的幀中重新進入場景.
⑦若還有上一幀中未匹配運動目標(biāo)未被處理,則轉(zhuǎn)到步驟5.
⑧對所有運動目標(biāo)的運動軌跡進行更新.
在VC++和OpenCV編程環(huán)境下,對本文中的改進算法進行了驗證,實驗視頻為戶外拍攝,在視頻場景中,場景復(fù)雜,存在多目標(biāo),視頻的分辨率為320×480.實驗結(jié)果顯示在整個視頻跟蹤階段,場景中的多個目標(biāo)(包括場景中的運動目標(biāo)、靜止目標(biāo)、再運動目標(biāo)、再進入場景目標(biāo)、離開場景目標(biāo)等)都得到了魯棒和準(zhǔn)確的跟蹤,取得了比較滿意的跟蹤效果.
表1 多目標(biāo)跟蹤過程中的運動軌跡跟蹤數(shù)據(jù) 表2 距離矩陣和關(guān)聯(lián)矩陣數(shù)據(jù)
圖1顯示了利用Camshift進行跟蹤的跟蹤效果圖,我們不難發(fā)現(xiàn),不僅存在許多不準(zhǔn)確的跟蹤結(jié)果,同時,該算法只能對單目標(biāo)進行跟蹤.
圖1 Camshift跟蹤算法的跟蹤效果 圖2 運動目標(biāo)軌跡跟蹤算法的跟蹤效果[6]
圖2顯示了應(yīng)用運動軌跡跟蹤方法的跟蹤效果.我們發(fā)現(xiàn),在場景中,靜止的運動目標(biāo)會跟蹤丟失.同時,對重新進入場景中的目標(biāo),該方法會將其定義成新的目標(biāo)進行跟蹤,這是不合理的.
圖3顯示了本文中基于運動軌跡和Camshift相結(jié)合的融合跟蹤算法的跟蹤效果.可以看出,相對于Camshift算法,在多目標(biāo)場景下,該法取得了更加滿意的跟蹤效果.
由以上實驗結(jié)果可以看出,本文中的改進算法取得了比文獻[6]更準(zhǔn)確、更理想的跟蹤效果,不但實現(xiàn)了Camshift對多目標(biāo)的準(zhǔn)確跟蹤,而且能夠有效的對場景中的靜止目標(biāo)、再進入目標(biāo)、再運動目標(biāo)和退出場景目標(biāo)等進行有效的跟蹤,滿足了實際應(yīng)用中的跟蹤要求.
圖3 Camshift和運動目標(biāo)軌跡相結(jié)合的跟蹤算法的跟蹤效果[6]
[1]Ristic B,Arulampalam S,and Gordon N.Beyond the Kalman Filter:Particle Filters for Tracking Applications[M].Boston,London:Artech House,2004.
[2]張宏志,張金換,岳卉,黃世霖.基于CamShift的目標(biāo)跟蹤算法[J].計算機工程與設(shè)計,2006,27(11):108-110.
[3]Nummiaro Katja,Koller-meier Esther,Van Gool Luc.Object Tracking with an Adaptive Color-Based Particle Filter[C].Proceedings of the 24th DAGM Symposium on Pattern Recognition.London,UK Springer-Verlag,2003,:591-599.
[4]孫凱,劉士榮;.多目標(biāo)跟蹤的改進Camshift/卡爾曼濾波組合算法[J].信息與控制,2009,38(1):11-16.
[5]YUE Ying-ying,GAO Yun,ZHANG Xue-jie.An Improved Camshift Algorithm Based on Dynamic Background[R].1st International Conference on Information Science and Engineering,2009.
[6]黃綠娥,李平康,杜秀霞.室內(nèi)人體運動目標(biāo)的自動跟蹤方法[J].計算機工程,2009,35(9):201-204.
[7]蘇興俊,陳景波,胥法偉.交通圖像序列中的多目標(biāo)跟蹤[J].常熟理工學(xué)院學(xué)報,2009,23(4):82-86.