李興陽,趙天亮,李雅欣,桑飛飛,王晨宇,肖春寶
(河南科技大學 信息工程學院,河南 洛陽 471023)
計算機視覺技術在當前的科技領域中擁有著廣泛的應用,其中目標跟蹤技術是研究的重點之一。由于目標跟蹤技術具有廣泛的應用前景,在過去的幾十年里,已經涌現出了許多優秀的目標跟蹤算法,其中基于核相關濾波(KCF)的算法成為研究熱點之一。KCF算法通過對模板和響應圖像之間的相關運算來進行目標跟蹤,具有實時性和高準確性的優點,已經成為目標跟蹤領域的主流算法之一。
然而,在實際應用中,由于種種原因,如目標快速運動、光照變化、目標遮擋等,傳統的KCF算法可能會出現跟蹤失敗或跟蹤誤差大等情況,這給目標跟蹤技術的應用帶來了困難。針對以上問題,本文在KCF算法的基礎上,提出了一種針對目標被遮擋后導致目標丟失的解決方法,通過該幀的響應峰值判斷目標是否異常,若目標連續異常數達到閾值則判定目標丟失,此時通過使用運動估計和模板匹配算法來重定位目標,重定位成功后則繼續采用KCF算法進行跟蹤。
KCF算法是一種經典的目標跟蹤算法,采用離散傅里葉變換(DFT)和相關濾波的思想,通過計算目標和背景的相似度,實現目標的定位和跟蹤。KCF算法首先通過使用高斯核函數將目標的特征表示為一個高維向量,然后通過計算訓練樣本和測試樣本的核相關矩陣,得到訓練樣本的響應圖。使用循環移位技術將測試樣本響應圖的峰值與目標位置對齊,即可得到目標的位置信息。最后,利用在線學習方法不斷更新目標的特征向量,實現目標的連續跟蹤。KCF算法具有計算速度快、實時性強和魯棒性好等優點,在目標跟蹤領域得到了廣泛應用。由于該算法依賴于局部相似度和單目標模型,在復雜場景下仍然存在著一定的局限性,需要進行進一步改進。
當目標丟失后,傳統KCF算法將繼續使用上一幀的跟蹤結果來預測下一幀中的目標位置,從而導致跟蹤框位置發生漂移。由于KCF算法總是將待檢測樣本中響應值最大的位置作為目標,無論目標是否在采樣窗口內,在待檢測的樣本中總有響應值最大的位置,此位置可能并非目標的真實位置。
采用文獻[1]的思想,并加以改進,可以根據響應峰值的大小來判斷目標是否丟失或將要丟失。令Pt表示當前幀的響應峰值,集合{Vi|i=1,2,…,n}表示從開始到當前幀為止所有響應峰值正常的幀的響應峰值的大小。
(1)
其中:v表示正常幀的響應峰值的平均值;σ表示標準差。
如果當前幀的響應峰值距離均值v超過了λσ(λ為異常檢測因子)則判定當前幀中的目標跟蹤異常。當待測樣本中響應峰值出現異常,這并不能代表目標已經失去跟蹤,可能只是目標部分被遮擋所導致,當目標再次出現時,仍然能夠繼續定位,所以此時繼續采用KCF算法進行跟蹤。當連續T(本文取值25)幀出現響應峰值異常時,說明此時目標已經跟蹤失敗,判定目標丟失,需要重新對目標進行定位。
當目標發生遮擋時,主要是因為目標發生橫向移動所導致,縱向移動主要影響目標的尺度變化,故此時可以忽略目標的尺度變化[2]。當檢測到峰值異常時,記錄最近一次正常幀的目標模板,當超過幀峰值仍未恢復正常,則應該停止對目標模板的更新,同時將目標模板恢復至最近一次正常幀的目標模板,減少異常幀對目標模板的影響,同時開始重定位目標位置。
2.2.1 線性預測目標位置
當目標丟失后,由于攝像機的運動和目標的運動同時發生,目標的位置很難預測,也并沒有很好的運動模型適合預測。由于目標的運動趨勢在最近幾幀中并不會有較大改變,再加上系統對實時性的要求,故采用線性預測[3]的方法來估計目標的新位置。
設在第t幀中目標響應峰值開始異常,目標框的中心位置(xt,yt),則在連續T幀后,即t+T幀開始對目標位置進行重定位。集合L={(xi,yi)|i=1,2,…,n}表示t幀前n幀中目標框的中心位置,則有:
(2)
然后,對預測位置進行模板匹配,根據響應峰值判斷是否預測成功,如果預測成功則繼續進行KCF算法,反之開始進行模板匹配算法,再次進行重定位。
2.2.2 模板匹配算法
采用歸一化相關系數匹配算法,在響應峰值正常的圖像中根據目標的位置,將目標截取出來并保存,作為模板匹配的模板圖像使用。當目標丟失后再次出現時,通過歸一化相關系數匹配算法,能夠很容易在一幀中將目標定位出來。
(3)
其中,⊙表示兩個矩陣進行點乘;T表示模板圖像;I表示待匹配圖像;T′,I′表示去均值后的矩陣;x,y代表當前搜索框在I矩陣中左上角元素的坐標;x′,y′ 代表T和搜索框框出來的I的矩陣的元素坐標。
計算出的相關系數被限制在了[-1, 1] 之間,1表示完全相同,-1表示兩幅圖像的亮度正好相反,0 表示兩幅圖像之間沒有線性關系。通過尋找輸出矩陣的最大值,得到一個像素點,以該像素點為矩形區域的左上角,繪制與模板圖像同尺寸的矩形框,此矩形框就是通過模板匹配算法定位到的目標可能存在的位置。然后通過KCF算法對其進行判定,若得到的響應峰值不再異常,則判定目標重定位成功,反之失敗。
首先,讀入視頻序列并選擇跟蹤目標,然后采用KCF算法進行跟蹤,判定目標跟蹤是否異常,當連續異常幀數大于幀時判定目標丟失,跟蹤失敗,此時開始目標重定位算法,優先通過模板匹配算法對目標可能出現的位置進行預測,然后根據響應峰值判斷目標是否重定位成功,若成功則進入下一幀,若失敗則通過線性預測,進行目標定位,再次通過目標框的響應峰值判斷目標是否重定位成功,若失敗則使用正常幀去檢測下一幀中的目標。
圖1 算法流程圖
為了驗證算法的跟蹤性能,采用距離精度(DP),即中心位置誤差低于某一閾值(本文取30)的幀數占視頻總幀數的百分比。(xa,ya)表示預測目標中心位置,(xb,yb)表示真實的目標中心位置。
(4)
符合條件的幀數:中心位置誤差<閾值
精度 = 符合條件的幀數/總幀數
由表1中的數據可知,本文算法在目標發生遮擋時跟蹤效果比較好,KCF算法數據DP精度較小是因為算法在目標被遮擋時,沒有進行有效的判定,導致后續目標一直處于丟失狀態。本文通過線性預測和模板匹配兩種算法對丟失目標進行重定位,能夠有效提高KCF算法對丟失目標的再次跟蹤的能力。
表1 DP精度對比
表2 運行速度對比
KCF算法的平均速度約為62幀/s,本文算法平均速度約為48幀/s,相比之下,本文算法在速度上有所下降,這是因為在判定目標響應峰值是否異常、目標的線性預測以及目標的模板匹配時耗費了一些時間,不過考慮到對目標跟蹤準確度的提升,還是在可接受范圍的。
圖2 展示了KCF算法和改進算法對Pktest01序列數據的跟蹤效果對比。傳統KCF算法在目標被遮擋后再次回到視野之內時,KCF算法并不能夠識別并跟蹤目標,相比之下本文通過引入線性預測和模板匹配算法,增強了原算法對目標丟失后的處理能力。
圖2 Pktest01數據跟蹤效果對比
本文提出了一種改進的基于核相關濾波(KCF)的目標跟蹤算法,通過引入線性預測和模板匹配技術對于丟失目標進行重新定位。實驗結果表明,本文所提出的改進算法在跟蹤準確性和魯棒性方面都有顯著提高,但由于融入了重定位算法,導致算法在追蹤速度方面有所下降。下一步的研究方向主要是,在不影響跟蹤效果的同時,提高算法的運行速度。