陳戈珩, 楊 林
(長春工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院, 吉林 長春 130012)
?
基于Camshift/Kalman運動目標(biāo)跟蹤算法
陳戈珩, 楊 林
(長春工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院, 吉林 長春 130012)
將Kalman濾波與Camshift跟蹤算法相結(jié)合,解決了運動目標(biāo)被長時間遮擋以及相似顏色特征大面積干擾背景下目標(biāo)丟失或跟蹤精度下降問題。
Kalman濾波; Camshift; 跟蹤算法
運動目標(biāo)跟蹤,即在視頻序列的每一幀圖像中找出鎖定運動目標(biāo)的位置,來完成對目標(biāo)的跟蹤。它不僅提供了很多可靠的數(shù)據(jù)信息,比如運動軌跡、運動參數(shù)和精確坐標(biāo)等,也對鎖定目標(biāo)的動作分析及環(huán)境分析給出了準(zhǔn)確的數(shù)據(jù)基礎(chǔ),甚至在精確檢測及識別鎖定目標(biāo)方面給出了極大的支持。因而,運動目標(biāo)跟蹤是一個至關(guān)重要的橋梁,銜接運動目標(biāo)檢測及目標(biāo)行為分析與理解,在計算機視覺、模式識別范疇中,長期以來是熱門研究課題。
探究運動目標(biāo)跟蹤這類課題大致兩個方向[1-2]:一類是依賴于經(jīng)驗,選中一段視頻序列,檢測并鎖定運動目標(biāo),識別并檢驗鎖定運動目標(biāo)是否是想要跟蹤的目標(biāo),如果正確就跟蹤,否則重新檢測并鎖定;另一類與之相反,依賴于先驗知識,通過對運動目標(biāo)建模,在選中的視頻序列中找到與模型相符的運動目標(biāo)。
基于Kalman濾波的運動目標(biāo)跟蹤算法與Camshift運動目標(biāo)跟蹤算法有所不同,前者是一種全自動跟蹤算法,后者是一種半自動跟蹤算法。前一種算法通過預(yù)測視頻序列中運動物體的質(zhì)心坐標(biāo)來鎖定運動目標(biāo)。為了實現(xiàn)該算法,開始要先檢測視頻序列中鎖定的運動目標(biāo),目前主要是探究單個鎖定的運動目標(biāo)跟蹤問題,因此無需辨識鎖定的運動目標(biāo),從而可以直接從結(jié)果中獲取質(zhì)心坐標(biāo),通過Kalman濾波器對下一幀圖像推測運動目標(biāo)的質(zhì)心坐標(biāo)。后一種算法實現(xiàn)該算法時,起初要人為的確定鎖定運動目標(biāo)的起始坐標(biāo),獲取鎖定運動目標(biāo)的顏色直方圖以便跟蹤運動目標(biāo)。
1.1 Kalman濾波跟蹤算法
Kalman濾波方法是在20世紀(jì)60年代初由一位美國學(xué)者提出的一種最優(yōu)遞推濾波方法[3]。此方法是依據(jù)當(dāng)前時刻的獲取值與前一刻的預(yù)測值,通過兩個方程(狀態(tài)方程、測量方程)持續(xù)迭代變換估測與修正兩個步驟,以便減小某些因素(系統(tǒng)噪聲、觀測噪聲等)引起的誤差,從而得到想要的狀態(tài)參數(shù)。
取一段視頻序列,從這段視頻序列中通過利用Kalman濾波運動目標(biāo)跟蹤算法驗證其跟蹤的效果[4],由于運動目標(biāo)的質(zhì)心坐標(biāo)不容易精確地得到,在鎖定運動目標(biāo)質(zhì)心坐標(biāo)進行檢測時,只能依據(jù)作類似比較的方法,通過檢測結(jié)果的二值圖像中拿到的質(zhì)心坐標(biāo)位置近似作為利用此跟蹤算法得到的質(zhì)心坐標(biāo)。除此之外,利用一些運動目標(biāo)檢測方法也可以比較容易的拿到一段視頻序列中其中一幀圖像的質(zhì)心坐標(biāo),可以以此作為觀察數(shù)據(jù),建立相應(yīng)的模型,最后根據(jù)Kalman遞推算法將接下來一幀圖像中的質(zhì)心坐標(biāo)位置估測出來[5]。
1.2 Camshift跟蹤算法
Camshift跟蹤算法與基于Kalman濾波的運動目標(biāo)跟蹤算法有著不同,此算法是利用顏色直方圖特征鎖定運動目標(biāo)的方式來跟蹤運動目標(biāo)。因此,它與Kalman濾波跟蹤算法不同,依靠人為的方式追蹤[6]運動目標(biāo),不需要對運動目標(biāo)檢測,是一種半自動跟蹤算法。
此算法為了獲得運動目標(biāo)的顏色直方圖,必須先在首幀圖像中將搜索窗的大小和坐標(biāo)初始化,并且要將跟蹤的運動目標(biāo)全部覆蓋;在接下來的每幀圖像中,為了獲得對應(yīng)的顏色概率分布圖,要對依據(jù)搜索窗所處位置確定的計算區(qū)域進行反向投影,需將提取的運動目標(biāo)顏色直方圖作為查找表。并依據(jù)此圖計算搜索窗的質(zhì)心坐標(biāo),將此坐標(biāo)看做搜索窗的中心坐標(biāo),再次設(shè)定搜索范圍。重復(fù)多次,計算鄰近兩次獲得的搜索窗質(zhì)心坐標(biāo)之間的誤差,即搜索窗口的質(zhì)心收斂在一個預(yù)期的范圍內(nèi),如果迭代次數(shù)[7]達到規(guī)定的值也結(jié)束計算。依據(jù)這樣的迭代方法,通過當(dāng)前一幀的結(jié)果設(shè)定下一幀圖像中搜索窗的坐標(biāo)和大小,以此類推可以實現(xiàn)持續(xù)跟蹤運動目標(biāo)。
1.3 Camshift和Kalman濾波相結(jié)合的跟蹤算法
通過Camshift跟蹤算法可知,此跟蹤算法的跟蹤效果由跟蹤運動目標(biāo)周圍背景的顏色特征差別大小決定的,差別越大,效果越好,此時能夠?qū)⑦\動目標(biāo)和背景區(qū)分開來,以便更好地對運動目標(biāo)進行跟蹤。如果在跟蹤的運動目標(biāo)附近出現(xiàn)與之類似顏色特征的復(fù)雜背景,也就是所謂的干擾物,那么此算法在鎖定運動目標(biāo)獲取其位置坐標(biāo)時就無法精確。為了避免運動目標(biāo)周圍存在干擾物對其跟蹤結(jié)果造成的影響,從而能夠更好地跟蹤運動目標(biāo),于是利用將Camshift與Kalman濾波相結(jié)合的跟蹤算法。利用Kalman濾波跟蹤算法要得到當(dāng)前幀圖像中運動目標(biāo)的質(zhì)心坐標(biāo)位置,需要通過前一幀圖像中運動目標(biāo)的質(zhì)心坐標(biāo)進行估測,以便建立鄰近兩幀圖像中運動目標(biāo)質(zhì)心坐標(biāo)的一種聯(lián)系,然后根據(jù)Camshift跟蹤算法的相關(guān)知識,將其運用此算法獲取的質(zhì)心坐標(biāo)和估測值進行對比,依據(jù)這樣的對比結(jié)果判斷并得到當(dāng)前運動目標(biāo)的質(zhì)心坐標(biāo)以及下一幀圖像中搜索窗的坐標(biāo)和大小。
將i看作視頻序列中的幀序,那么將兩種運動目標(biāo)跟蹤算法相結(jié)合的算法主要步驟如下:
1)在初始幀圖像中設(shè)置的搜索窗的坐標(biāo)和大小須滿足的條件是要能夠全部覆蓋所要跟蹤的運動目標(biāo),得到運動目標(biāo)的顏色直方圖,搜索窗作為計算范圍,以此能夠獲取其顏色概率分布圖,從中得到其運動目標(biāo)的質(zhì)心坐標(biāo),并用(xi,yi)表示,此時i=1。
4)把Kalman濾波算法對質(zhì)心坐標(biāo)的估計值與Camshift跟蹤算法得到的質(zhì)心坐標(biāo)進行對比,若符合以下條件:
(1)
式中:T----設(shè)定的閾值。
(2)
從而,設(shè)置當(dāng)前幀圖像中運動目標(biāo)的范圍及中心位置坐標(biāo),并通過初始化搜索窗的范圍對下一位置進行設(shè)定。
相反,若不符合式(2),那么當(dāng)前幀運動目標(biāo)的質(zhì)心位置就由Camshift跟蹤算法得到的質(zhì)心位置來設(shè)定。即:
(3)
從而決定下一幀圖像中搜索窗的范圍,是由Camshift跟蹤算法來設(shè)定。
5)i=i+1,跳轉(zhuǎn)到2),依次執(zhí)行2),3),4),5)。重復(fù)此過程,跟蹤結(jié)束后,對運動目標(biāo)的持續(xù)跟蹤便能完成。
為了驗證將兩種算法進行結(jié)合的改進跟蹤算法在跟蹤運動目標(biāo)時的效果是否達到預(yù)期,于是將改進跟蹤算法運用于mother-daughter視頻序列中的人手跟蹤,把此次實驗結(jié)果拿來與利用Camshift跟蹤算法的結(jié)果做對比。實驗中,改進跟蹤算法中的參數(shù)T設(shè)為4,在搜索跟蹤過程中,鄰近的兩次得到的搜索窗的質(zhì)心坐標(biāo)相差小于4個像素或迭代次數(shù)不小于15次,以此作為此算法的質(zhì)心收斂條件。其跟蹤實驗結(jié)果對比如圖1所示。
圖1 跟蹤實驗結(jié)果對比圖
圖1中矩形框是對運動目標(biāo)跟蹤結(jié)果的標(biāo)記,而十字是對運動目標(biāo)質(zhì)心坐標(biāo)的標(biāo)記。
從圖1中還能夠看出,圖(b)、(c)和(d)的矩形框慢慢變大,這是由于人臉跟人手存在著類似的顏色特征,使得在跟蹤人手的過程中,受到了人臉的干擾,利用Camshift跟蹤算法跟蹤人手時,就會將人臉也放入了搜索窗內(nèi),即人臉也被認(rèn)為是跟蹤的運動目標(biāo),因此矩形框慢慢變大。搜索窗變大之后,對人手的跟蹤定位會出現(xiàn)偏差,即運動目標(biāo)的質(zhì)心坐標(biāo)發(fā)生變化,由圖(d)可以看出,這不是所要的跟蹤結(jié)果。
反之,采用改進跟蹤算法,由圖中可以看出,能夠一直非常不錯地跟蹤人手的坐標(biāo)位置,通過圖(d)與(g)的跟蹤結(jié)果對比很明顯。利用Camshift跟蹤算法定位運動目標(biāo)的質(zhì)心坐標(biāo)時,往往會由于運動目標(biāo)所在范圍出現(xiàn)類似顏色特征干擾物(如人手旁邊的人臉)導(dǎo)致真正的質(zhì)心坐標(biāo)出現(xiàn)偏離(見圖(d)),而采用相結(jié)合的改進跟蹤方法就能很好地對運動目標(biāo)進行跟蹤(見圖(g))。
除此之外,能夠清晰地看到圖(b)與(d),(c)與(f)幾乎無變化,原因是利用相結(jié)合的改進跟蹤算法在跟蹤第68和69幀圖像時,Camshift跟蹤算法獲得的運動目標(biāo)質(zhì)心坐標(biāo)與Kalman濾波跟蹤算法的估測值,兩者相差沒有超過閾值T,因此在這種情況下,將Camshift跟蹤算法得到的結(jié)果作為真實的跟蹤結(jié)果。
根據(jù)以上的實驗結(jié)果及理論分析能夠知道,將兩者相結(jié)合的運動目標(biāo)跟蹤算法在對運動目標(biāo)質(zhì)心位置估計的部分,因為Kalman濾波算法的融入,使得相鄰兩幀圖像中運動目標(biāo)的質(zhì)心位置之間有了一定的聯(lián)系。此時,在待跟蹤的運動目標(biāo)周圍存在大面積的具有相似顏色特征的干擾物時,只采用Camshift跟蹤算法不能精確地跟蹤運動目標(biāo),這時,加入Kalman濾波跟蹤算法就可以修正跟蹤結(jié)果,從而精確地跟蹤運動目標(biāo)的坐標(biāo)。除此之外,Kalman濾波跟蹤算法不僅使得在待跟蹤運動目標(biāo)周圍存在大面積干擾物影響跟蹤結(jié)果這種情況得以解決,而且在僅使用Kalman濾波跟蹤算法時,目標(biāo)瞬間丟失、交錯及重疊等問題[8]也因此得到較好解決。
基于Kalman濾波的運動目標(biāo)跟蹤算法和Camshift跟蹤算法,這是兩種基本的運動目標(biāo)跟蹤算法,文中分別闡述了其基本原理及兩種算法的優(yōu)缺點。其中Kalman濾波跟蹤算法是通過估測運動目標(biāo)的質(zhì)心坐標(biāo)來對運動目標(biāo)進行跟蹤,以此在跟蹤目標(biāo)的過程中,通過估測當(dāng)前幀圖形中運動目標(biāo)質(zhì)心坐標(biāo)來估測下一幀圖像中運動目標(biāo)的坐標(biāo)。而Camshift跟蹤算法是根據(jù)運動目標(biāo)的顏色直方圖作為跟蹤特征對運動目標(biāo)進行跟蹤,所以在跟蹤初始時,一般要人為的指定運動目標(biāo)的初始位置和大小,這樣做的目的就是為了方便提取運動目標(biāo)的顏色直方圖。在分析兩種基本跟蹤算法在跟蹤運動目標(biāo)過程中存在的問題,給出了將兩者相結(jié)合的改進的跟蹤算法,通過實驗證明了改進的跟蹤算法能夠使大面積顏色干擾問題得到解決。
[1] 侯志強,韓崇昭.視覺跟蹤技術(shù)綜述[J].自動化學(xué)報,2006,32(4):603-617.
[2] 張娟,毛曉波,陳鐵軍.運動目標(biāo)跟蹤算法研究綜述[J].計算機應(yīng)用研究,2009,26(12):4407-4410.
[3] Kalman R E. A new approach to linear filtering and prediction problems[J]. Transactions of the ASME-Journal of Basic Engineering,1960,82(Series D):35-45.
[4] 萬琴,王耀南.基于卡爾曼濾波器的運動目標(biāo)檢測與跟蹤[J].湖南大學(xué)學(xué)報:自然科學(xué)版,2007,34(3):36-40.
[5] 劉躍鋒,宋永霞,李松濤.一種基于直方圖對二值圖像進行處理的方法[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2010,31(5):554-558.
[6] Dellaert F, Thorpe C. Robust car tracking using Kalman filtering and Bayesian templates[C]//In Proceedings of SPIE Conference on Intelligent Transportation Systems Pittsburgh Pa,1997,3207:72-83.
[7] 朱博,王宏志.基于多小波變換的圖像去噪改進算法[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2009,30(1):37-42.
[8] 孫凱,劉世榮.多目標(biāo)跟蹤的改進Camshift/Kalman濾波組合算法[J].信息與控制,2009,38(1):9-14.
A moving target tracking algorithm based on Camshift/Kalman filtering
CHEN Geheng, YANG Lin
(School of Computer Science and Engineering, Changchun University of Technology, Changchun 130012, China)
Combining Kalman filter with Camshift tracking algorithm, we solve the problems such as moving target lost or degraded tracking precision when the target is occluded for a rather long time or large area of similar color feature background appears.
Kalman filter; Camshift; tracking algorithm.
2016-12-15
國家科技支撐計劃基金資助項目(2007BAQ00097)
陳戈珩(1961-),女,漢族,吉林長春人,長春工業(yè)大學(xué)教授,主要從事數(shù)字信號處理及應(yīng)用方向研究,E-mail:chengeheng@ccut.edu.cn.
10.15923/j.cnki.cn22-1382/t.2017.3.08
TP 391
A
1674-1374(2017)03-0256-04