摘 要:針對(duì)Mean Shift算法在目標(biāo)跟蹤過(guò)程中因核窗寬不變導(dǎo)致目標(biāo)尺度變化時(shí)定位不精確的問(wèn)題,提出了融入邊緣檢測(cè)的方法計(jì)算目標(biāo)大小,從而實(shí)現(xiàn)自適應(yīng)調(diào)整核窗寬的改進(jìn)算法。當(dāng)目標(biāo)丟失和發(fā)生遮擋時(shí),結(jié)合Kalman濾波器對(duì)下一幀中目標(biāo)位置進(jìn)行預(yù)測(cè),提出改進(jìn)的跟蹤算法,有效提高了跟蹤的準(zhǔn)確性和魯棒性。
關(guān)鍵詞: 目標(biāo)跟蹤; Mean Shift算法; Canny邊緣檢測(cè); Kalman濾波
Mean Shift算法是一種典型的無(wú)參估計(jì)目標(biāo)跟蹤算法,適合非線性運(yùn)動(dòng)目標(biāo)跟蹤,具有快速高效的特點(diǎn)[1],廣泛應(yīng)用于運(yùn)動(dòng)目標(biāo)跟蹤[2]。Mean Shift最先由FUKUNAGA和HOSTELER提出,之后COMANICIU D將其應(yīng)用在計(jì)算機(jī)視覺(jué)領(lǐng)域[3]。該算法對(duì)目標(biāo)變形、旋轉(zhuǎn)、邊緣遮擋等不敏感,魯棒性較強(qiáng)[4]。Mean Shift算法整個(gè)跟蹤過(guò)程中核窗寬始終不變,且無(wú)運(yùn)動(dòng)預(yù)測(cè)模塊,易造成定位不準(zhǔn)、目標(biāo)丟失等問(wèn)題[5]。本文提出融入邊緣檢測(cè)的方法對(duì)傳統(tǒng)Mean Shift算法進(jìn)行改進(jìn),并融合Kalman濾波器對(duì)目標(biāo)狀態(tài)進(jìn)行預(yù)測(cè),提高了跟蹤的準(zhǔn)確性和魯棒性。
1 自適應(yīng)核窗帶寬的Mean Shift算法
自適應(yīng)核帶寬窗口的調(diào)整主要是滿足目標(biāo)大小變化,而不考慮目標(biāo)圖像的紋理特征,當(dāng)前視頻幀跟蹤結(jié)束后,在確定Mean Shift跟蹤窗口大小時(shí),采用背景相似度算法在當(dāng)前目標(biāo)位置周?chē)崛∧繕?biāo)最優(yōu)特征后進(jìn)行邊緣檢測(cè)(Canny算子)確定跟蹤窗口寬度,根據(jù)檢測(cè)到的目標(biāo)邊緣計(jì)算目標(biāo)形心。
2 改進(jìn)的目標(biāo)跟蹤算法
Kalman濾波器能對(duì)運(yùn)動(dòng)目標(biāo)位置和速度進(jìn)行準(zhǔn)確預(yù)測(cè)[6],因此本文采用基于顏色直方圖的Mean Shift算法,同時(shí)綜合考慮目標(biāo)運(yùn)動(dòng)方向和速度信息。把Kalman濾波器預(yù)測(cè)的下一幀中目標(biāo)的位置作為迭代初始位,利用Kalman濾波器根據(jù)以往的目標(biāo)位置信息預(yù)測(cè)目標(biāo)在本幀圖像中可能的位置,Mean Shift算法就可以在這個(gè)位置的鄰域內(nèi)找到目標(biāo)的真實(shí)位置。
從上面實(shí)驗(yàn)可得:傳統(tǒng)算法在第158幀跟蹤窗口發(fā)生偏移,到第187幀時(shí)跟蹤窗口被完全偏移到近似物體上,目標(biāo)丟失。本文算法跟蹤窗口隨目標(biāo)尺度的減小而縮小,取得了很好的效果。
場(chǎng)景2: 目標(biāo)遮擋且運(yùn)動(dòng)方向改變,兩種算法跟蹤結(jié)果如圖3、圖4所示。
從上面實(shí)驗(yàn)可得:傳統(tǒng)算法從第462至第515幀,目標(biāo)發(fā)生遮擋,改變運(yùn)動(dòng)方向,造成跟蹤失敗。改進(jìn)算法在第462幀實(shí)現(xiàn)目標(biāo)連貫跟蹤,具有較好的實(shí)時(shí)性和魯棒性。
場(chǎng)景3:光線較弱,特征不明顯的小目標(biāo)仍能實(shí)現(xiàn)對(duì)行人的跟蹤,但是在該行人打開(kāi)車(chē)門(mén)時(shí),由于環(huán)境和車(chē)的顏色的干擾, 跟蹤窗口稍微發(fā)生了偏移, 實(shí)驗(yàn)效果如圖5所示。
其中,場(chǎng)景2目標(biāo)跟蹤過(guò)程中傳統(tǒng)算法和改進(jìn)算法的迭代次數(shù)曲線圖如圖6所示,本文算法有效減少了跟蹤過(guò)程中的Mean Shift迭代次數(shù)。
n:統(tǒng)計(jì)跟蹤過(guò)程中丟失幀數(shù)目,n=0;
N:判斷目標(biāo)是否丟失;
θ:衡量相似性函數(shù)值[0,1]。
(1)自動(dòng)初始化,讀取視頻幀進(jìn)行Canny邊緣檢測(cè),計(jì)算出目標(biāo)幾何中心。
(2)用目標(biāo)形心作為迭代起始點(diǎn)進(jìn)行迭代跟蹤。
(3)計(jì)算相似性函數(shù)值d(y)。
若d(y)<θ,目標(biāo)與候選模型匹配, 跟蹤有效,更新坐標(biāo)及目標(biāo)模型且n=0,繼續(xù)下一次迭代;若d(y)>θ,目標(biāo)跟蹤框偏移目標(biāo)較大,目標(biāo)丟失,對(duì)丟失幀計(jì)數(shù)變量n進(jìn)行累加計(jì)數(shù),轉(zhuǎn)到步驟(4)。
(4)記當(dāng)前幀為k,使用Kalman濾波對(duì)k+1幀目標(biāo)位置進(jìn)行預(yù)測(cè)輸出跟蹤點(diǎn)位置。計(jì)算k+1幀在此點(diǎn)的特征分布并與保留的目標(biāo)特征分布進(jìn)行迭代匹配。
(5)Kalman預(yù)測(cè)跟蹤的位置一直不能與原目標(biāo)特征分布匹配,所統(tǒng)計(jì)的丟失幀數(shù)目n超過(guò)設(shè)定值N時(shí)判斷目標(biāo)丟失,之后重新定位目標(biāo)。轉(zhuǎn)到步驟(1),對(duì)目標(biāo)進(jìn)行定位,重新初始化跟蹤。
改進(jìn)算法流程圖如圖7 所示。
從實(shí)驗(yàn)結(jié)果可知,本文的改進(jìn)算法在目標(biāo)進(jìn)行快速運(yùn)動(dòng)、微弱光照下特征不明顯時(shí)以及背景中發(fā)生短時(shí)間的遮擋時(shí),都能準(zhǔn)確地跟蹤到目標(biāo),并且能夠滿足實(shí)時(shí)性和可靠性的要求。
參考文獻(xiàn)
[1] FUKANAGA K, HOSTETLER L D. The estimation of the gradient of a density function,with applications in pattern recognition[J].IEEE Transactions on Information Theory,1975,21(1):32-40.
[2] Yang Ge,Liu Hong. Survey of visual tracking algorithms[J]. Transactions on Intelligent Systems,2010,5(2):95-105.
[3] COMANICIU D, RAMESH V, MEER P. Kernel-based object tracking[J]. IEEE Transactions on Pattern Analysis Machine Intelligence,2003,25(5):564-575.
[4] 許煥明, 高向東. 行人輪廓檢測(cè)算法研究[J]. 微型機(jī)與應(yīng)用,2012,31(22):38-41,43.
[5] 孫建偉,薛秀萍,劉曉東,等.基于OpenCV的視頻序列目標(biāo)檢測(cè)與跟蹤技術(shù)研究[J].電子技術(shù),2013,42(6):19-23.
[6] KHAN Z H, GU I Y H, WANG T, BACKHOUSE A. Joint anisotropic Mean Shift and consensus point feature correspondences for object tracking in video[C]. Proceedings IEEE International Conference Multi-media and Expo,2009:1270-1273.