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