蔡亞南 李東興 吳秀東 宋汝君 王 迎
(山東理工大學機械學院 山東 淄博 255000)
隨著時代的發展,機器視覺已成為人類感知世界和獲得重要信息的主要途徑。其中,計算機視覺的重要研究方向是視頻目標跟蹤,其應用前景越來越廣泛,主要應用在機器人視覺方面、醫療診斷方面和軍事領域等[1-2]。通過對視頻進行圖像處理得到目標的圖像序列,然后分析、理解和處理圖像序列,最終實現對運動目標的檢測和跟蹤[3]。在目標追蹤過程中,光流法最為常見,但其不僅計算量大,而且適用于短時間目標跟蹤而非適用于長時間的目標檢測、識別和跟蹤。
目標跟蹤問題可以分為兩類:一是遞歸方式,二是基于檢測的方式。Meanshift算法具有快速模型匹配、無需參數、計算量小和可與其他算法結合的特點。但當目標尺寸變化較大時,Meanshift算法由于核函數的固定不變性,不具有自適應性,需要手動初始化等缺點,不能準確尺度定位、在線更新,不可實現長時間的有效跟蹤,最終導致目標跟蹤失敗。所以要越來越多地關注在線更新的目標跟蹤方法[4]。TLD算法是一種可以實現長時間對目標跟蹤的功能,主要從追蹤、檢測和學習三個方面著手實現跟蹤,具有魯棒性高、學習恢復能力強的特點。但當出現相似目標物,或者目標物被遮擋和旋轉時TLD算法跟蹤精確度低、效果差[5-6]。
本文提出了一種結合Camshift和Kalman濾波的TLD目標跟蹤算法,可實現對目標的長期有效跟蹤和對目標窗口大小的自動化控制。Camshift算法是基于Meanshift算法形成的可連續自適應的一種算法,將Camshift結合Kalman濾波既可實現對目標位置的快速查找又可實現對窗口大小的控制功能。Camshift結合Kalman濾波后再改進TLD跟蹤算法,可實現對目標的運動方向、速度大小建模。將TLD跟蹤方法的原始輸出數據與改進算法的預測結果相結合,然后對此時的狀態輸出結果進行修正,最后對輸出結果加權處理,確定目標的最終準確位置。若出現目標物被遮擋狀況,交由TLD學習器處理,若發生嚴重遮擋狀況,則由改進的算法來預測目標的運動軌跡。本文算法既具有TLD算法原有的長期有效跟蹤特點和自動調整識別窗大小的功能,又提高了對目標實時跟蹤的準確性,同時對短時遮擋具有預測功能。
TLD算法由追蹤器、檢測器和機器學習三部分組成,框架結構如圖1所示。

圖1 TLD算法的框架結構
在TLD算法初始化的過程中,首先將視頻幀送入到機器學習模塊,此時的學習模塊會產生正負樣本,用來初始化追蹤模塊和檢測模塊。在此之后的圖像序列中,對數據的處理過程需追蹤模塊和檢測模塊并行進行。將輸出的融合結果作為當前幀,此時融合的數據被送入在線學習模塊,學習模塊會對跟蹤模塊和檢測模塊起到反作用。該過程可實現對跟蹤模塊和檢測模塊的數據更新,進而驗證所得數據的準確性,跟蹤目標更加準確[7-8]。這三個部分相互作用,并將所得到的數據整合,最終確定下一幀的跟蹤目標。
TLD算法的跟蹤模塊是基于LK光流跟蹤法形成的中值流跟蹤法,利用前向、后向跟蹤算法,進一步估算前向軌跡和后向軌跡的誤差值,即可實現對像素點的跟蹤,預估目標在當前幀的位置[9-10]。
計算過程如下:
S=(Iτ,Iτ+1,…,Iτ+k)
(1)
(2)
(3)
(4)
(5)

該模塊首先用尺寸不同的掃描窗全局掃描視頻流的圖像幀,經樣本采集,將其輸入級聯分類器進行篩選,再對每一個矩形框進行判定,最終確認是否出現跟蹤目標。級聯分類器的結構組成如圖2所示。

圖2 檢測器結構示意圖
P-N學習的過程是TLD算法的核心所在,包括P約束和N約束兩個部分,P約束通過對目標移動的軌跡進行研究,來實現對正樣本的添加[11]。若分類器檢測出很多個目標時N約束可標記遠離目標邊界框樣本為負樣本。
Camshift算法包括反向投影圖像的計算,對反向投影圖像進行Meanshift計算和不斷搜索三個過程。
由RGB轉換到HSV顏色空間時,圖像的直方圖為:
(6)
對直方圖歸一化處理:
(7)
式中:n為像素個數;m為色度級別;xi為像素點位置;c(xi)為第i個像素位置的目標索引;δ為單位脈沖函數。
1) Kalman濾波分為預測和修正兩個階段,其中預測階段包括兩部分:狀態預測和誤差協方差預測[12-13]。對Kalman濾波算法建模如下:
信號模型:Xk=AkXk-1+BkWk
(8)
觀測模型:Zk=HkXk+BkVk
(9)
式中:Ak、Bk、Hk分別是狀態轉移矩陣、輸入矩陣和觀測矩陣;Wk、Vk分別為動態噪聲和觀測噪聲;Wk與Vk是互不相關的白噪聲序列;Xk-1為狀態向量,其中核心部分是Zk,決定Kalman濾波預測的準確性。
2) Camshift結合Kalman濾波的算法由當前幀目標位置預測、匹配目標和更新Kalman濾波狀態三部分組成。
(1) Kalman濾波通過判定圖像目標的歷史信息來確定當前幀圖像目標的正確位置。
(2) Kalman濾波預測值的鄰域范圍內,依據由Camshift算法得出的顏色概率分布圖來控制目標窗口,變換窗口的大小和進一步搜索與目標模板最相似的目標。
(3) 將完成匹配的目標位置作為Kalman濾波的觀測值,然后更新Kalman濾波的狀態。
殘差法可以用來判斷目標物被嚴重遮擋與否。即觀測值與預測值之間的差值。
(10)
式中:x(k)、y(k)代表目標位置的觀測值,x′(k)、y′(k)代表目標位置的預測值。該過程可以通過比較r(k)與閾值的大小,判斷是否出現嚴重遮擋現象。
Camshift與Kalman濾波相結合的算法具體實現流程如圖3所示。

圖3 Camshift與Kalman濾波相結合的算法流程圖
該過程經過初始化搜索窗,由Camshift算法實現跟蹤、窗口大小控制,Kalman濾波器進行初步建模,并不對跟蹤干擾。通過Camshift算法計算的目標區域大小和目標區域內像素個數判定是否有大面積顏色相似背景干擾和遮擋,若出現顏色相似遮擋,需加入Kalman預測信息。
本文提出了Camshift結合Kalman濾波的TLD目標跟蹤算法,實現對目標的長期有效跟蹤和目標窗口大小的自動化控制功能,同時提高TLD跟蹤算法在目標遮擋下的跟蹤能力。其算法框圖如圖4所示。

圖4 結合Camshift和Kalman濾波的TLD目標跟蹤算法
輸入視頻幀,首先初始化Kalman濾波器,由Camshift與Kalman濾波相結合的算法跟蹤目標,預測運動目標的下一時刻的狀態。同時,由TLD算法得到目標下一時刻的狀態,確定其跟蹤區域。此時,如果TLD跟蹤效果較好,即可將TLD跟蹤的結果輸出,作為觀測值去更新改進的卡爾曼濾波。如果TLD由于遮擋或者相似背景導致跟蹤失敗時,由卡爾曼濾波預測目標的位置和狀態,即可將此時的預測值作為觀測值更新改進的卡爾曼濾波。該方法具有抗遮擋和相似背景干擾的能力。
為了驗證本文算法跟蹤的準確性,本文選擇了Moto、Pedestrian和David三組具有遮擋、明暗變化的視頻進行實驗,并且將本文算法與原TLD、CT、CNT三種算法進行效果比對,根據跟蹤成功率和跟蹤性能進行評價:
(11)
式中:TB、TG分別是跟蹤的邊界框和跟蹤框,當Csr>0.5時認為跟蹤是有效的。根據目標中心的定位誤差δdist=|Ctrack(x,y)-Cture(x,y)|來評價跟蹤性能,Ctrack和Cture分別是跟蹤框的中心點坐標和目標框的中心點坐標,CT和CNT分別為圖像重建算法和決策樹算法。
本文選取了以上三組視頻幀,對不同算法在不同視頻中的跟蹤成功率進行比較。從表1中可以看出,不管是具有遮擋還是明暗變化的視頻,本文改進的TLD算法跟蹤正確率是較高的。

表1 不同算法的成功率比較 %
另外,根據中心位置的定位誤差定性地評定不同算法的跟蹤性能。圖5分別表示了不同跟蹤算法在三組視頻幀中的中心位置誤差曲線,由圖可知本文算法在目標遮擋方面處理的較好,對原TLD算法易發生漂移現象[14]有很好的抑制作用。

(a) (b) c)圖5 不同跟蹤算法在各個視頻幀中的中心位置誤差曲線
為了驗證本文算法的實時性和快速性,本文將本文算法和原TLD跟蹤算法進入分類器的樣本數量進行了比較,如圖6所示。

圖6 輸入的樣本數量比較圖
通過圖6對比可以看出,改進的TLD算法需要插入檢測模塊的樣本數量明顯下降,從而加快了樣本的分類速度,提高了運算速度。表2給出了本文算法與原TLD算法的平均幀率,其中本文算法優于原TLD跟蹤算法,該速率能夠保證視頻的流暢性和實際場合跟蹤的實時快速性。

表2 兩種算法在測試過程中的平均幀率幀·s-1
圖7是本文跟蹤算法應用在David視頻幀中,截取的一些視頻幀。可以看出,該算法在明暗變化、目標尺度方向改變和目標改變外觀時都能很好的跟蹤。

(a) (b) (c)

(d) (e) (f)圖7 本文算法在David視頻中的跟蹤
當目標被遮擋時,為體現本文算法的長時、準確跟蹤性能,現將本文算法與原TLD算法的跟蹤進行比較,如圖8所示。可以看出,當被跟蹤目標發生遮擋后(幀255為第一次遮擋、幀623為第二次遮擋),兩種跟蹤算法都具有對遮擋的預測功能。但原TLD算法的跟蹤窗出錯,導致跟蹤失敗,而本文算法可以長時間實時準確跟蹤目標,且跟蹤成功。

圖8 目標遮擋時兩種跟蹤算法的準確性比較
針對跟蹤過程中目標受干擾、漂移現象和計算量大導致跟蹤失敗的問題,本文采用改進的TLD算法與Kalman濾波相結合的方法實現對目標的長時跟蹤和對目標跟蹤窗口大小的控制。本文用Camshift跟蹤器替代原始的光流法跟蹤器,一定程度上提升了運算速度,抑制了漂移現象。當目標被遮擋時用Camshift優化過的TLD學習器處理,當目標物發生嚴重遮擋時則用改進的Kalman濾波算法預測目標的運動軌跡。首先判斷是否有大面積顏色、相似背景干擾和遮擋以及顏色相似運動物。若沒有,則用Camshift算法不加入Kalman預測信息;若有,則加入Kalman預測信息。一方面調整窗口位置和大小并設定窗口的最大長度,通過判定搜索窗口的長和寬是否大于設定值,來調整搜索窗口的長和寬大小;另一方面,通過判斷是否出現遮擋或嚴重遮擋,進一步修正Kalman濾波的預測值,更新Kalman濾波,實現目標跟蹤。通過幾組不同的視頻實驗,實驗結果顯示:本文的算法不但提高了運算速度,還在一定程度上改進了目標發生嚴重遮擋時容易丟失的問題。對于明暗變換,目標形變也能夠實現跟蹤。但當目標被完全遮擋、遮擋時間過長和發生巨大形變的時候會出現跟蹤失敗的問題,還有待改進。