陳戈珩, 楊 林
(長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長(zhǎng)春 130012)
?
基于Camshift/Kalman運(yùn)動(dòng)目標(biāo)跟蹤算法
陳戈珩, 楊 林
(長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長(zhǎng)春 130012)
將Kalman濾波與Camshift跟蹤算法相結(jié)合,解決了運(yùn)動(dòng)目標(biāo)被長(zhǎng)時(shí)間遮擋以及相似顏色特征大面積干擾背景下目標(biāo)丟失或跟蹤精度下降問題。
Kalman濾波; Camshift; 跟蹤算法
運(yùn)動(dòng)目標(biāo)跟蹤,即在視頻序列的每一幀圖像中找出鎖定運(yùn)動(dòng)目標(biāo)的位置,來完成對(duì)目標(biāo)的跟蹤。它不僅提供了很多可靠的數(shù)據(jù)信息,比如運(yùn)動(dòng)軌跡、運(yùn)動(dòng)參數(shù)和精確坐標(biāo)等,也對(duì)鎖定目標(biāo)的動(dòng)作分析及環(huán)境分析給出了準(zhǔn)確的數(shù)據(jù)基礎(chǔ),甚至在精確檢測(cè)及識(shí)別鎖定目標(biāo)方面給出了極大的支持。因而,運(yùn)動(dòng)目標(biāo)跟蹤是一個(gè)至關(guān)重要的橋梁,銜接運(yùn)動(dòng)目標(biāo)檢測(cè)及目標(biāo)行為分析與理解,在計(jì)算機(jī)視覺、模式識(shí)別范疇中,長(zhǎng)期以來是熱門研究課題。
探究運(yùn)動(dòng)目標(biāo)跟蹤這類課題大致兩個(gè)方向[1-2]:一類是依賴于經(jīng)驗(yàn),選中一段視頻序列,檢測(cè)并鎖定運(yùn)動(dòng)目標(biāo),識(shí)別并檢驗(yàn)鎖定運(yùn)動(dòng)目標(biāo)是否是想要跟蹤的目標(biāo),如果正確就跟蹤,否則重新檢測(cè)并鎖定;另一類與之相反,依賴于先驗(yàn)知識(shí),通過對(duì)運(yùn)動(dòng)目標(biāo)建模,在選中的視頻序列中找到與模型相符的運(yùn)動(dòng)目標(biāo)。
基于Kalman濾波的運(yùn)動(dòng)目標(biāo)跟蹤算法與Camshift運(yùn)動(dòng)目標(biāo)跟蹤算法有所不同,前者是一種全自動(dòng)跟蹤算法,后者是一種半自動(dòng)跟蹤算法。前一種算法通過預(yù)測(cè)視頻序列中運(yùn)動(dòng)物體的質(zhì)心坐標(biāo)來鎖定運(yùn)動(dòng)目標(biāo)。為了實(shí)現(xiàn)該算法,開始要先檢測(cè)視頻序列中鎖定的運(yùn)動(dòng)目標(biāo),目前主要是探究單個(gè)鎖定的運(yùn)動(dòng)目標(biāo)跟蹤問題,因此無(wú)需辨識(shí)鎖定的運(yùn)動(dòng)目標(biāo),從而可以直接從結(jié)果中獲取質(zhì)心坐標(biāo),通過Kalman濾波器對(duì)下一幀圖像推測(cè)運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)。后一種算法實(shí)現(xiàn)該算法時(shí),起初要人為的確定鎖定運(yùn)動(dòng)目標(biāo)的起始坐標(biāo),獲取鎖定運(yùn)動(dòng)目標(biāo)的顏色直方圖以便跟蹤運(yùn)動(dòng)目標(biāo)。
1.1 Kalman濾波跟蹤算法
Kalman濾波方法是在20世紀(jì)60年代初由一位美國(guó)學(xué)者提出的一種最優(yōu)遞推濾波方法[3]。此方法是依據(jù)當(dāng)前時(shí)刻的獲取值與前一刻的預(yù)測(cè)值,通過兩個(gè)方程(狀態(tài)方程、測(cè)量方程)持續(xù)迭代變換估測(cè)與修正兩個(gè)步驟,以便減小某些因素(系統(tǒng)噪聲、觀測(cè)噪聲等)引起的誤差,從而得到想要的狀態(tài)參數(shù)。
取一段視頻序列,從這段視頻序列中通過利用Kalman濾波運(yùn)動(dòng)目標(biāo)跟蹤算法驗(yàn)證其跟蹤的效果[4],由于運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)不容易精確地得到,在鎖定運(yùn)動(dòng)目標(biāo)質(zhì)心坐標(biāo)進(jìn)行檢測(cè)時(shí),只能依據(jù)作類似比較的方法,通過檢測(cè)結(jié)果的二值圖像中拿到的質(zhì)心坐標(biāo)位置近似作為利用此跟蹤算法得到的質(zhì)心坐標(biāo)。除此之外,利用一些運(yùn)動(dòng)目標(biāo)檢測(cè)方法也可以比較容易的拿到一段視頻序列中其中一幀圖像的質(zhì)心坐標(biāo),可以以此作為觀察數(shù)據(jù),建立相應(yīng)的模型,最后根據(jù)Kalman遞推算法將接下來一幀圖像中的質(zhì)心坐標(biāo)位置估測(cè)出來[5]。
1.2 Camshift跟蹤算法
Camshift跟蹤算法與基于Kalman濾波的運(yùn)動(dòng)目標(biāo)跟蹤算法有著不同,此算法是利用顏色直方圖特征鎖定運(yùn)動(dòng)目標(biāo)的方式來跟蹤運(yùn)動(dòng)目標(biāo)。因此,它與Kalman濾波跟蹤算法不同,依靠人為的方式追蹤[6]運(yùn)動(dòng)目標(biāo),不需要對(duì)運(yùn)動(dòng)目標(biāo)檢測(cè),是一種半自動(dòng)跟蹤算法。
此算法為了獲得運(yùn)動(dòng)目標(biāo)的顏色直方圖,必須先在首幀圖像中將搜索窗的大小和坐標(biāo)初始化,并且要將跟蹤的運(yùn)動(dòng)目標(biāo)全部覆蓋;在接下來的每幀圖像中,為了獲得對(duì)應(yīng)的顏色概率分布圖,要對(duì)依據(jù)搜索窗所處位置確定的計(jì)算區(qū)域進(jìn)行反向投影,需將提取的運(yùn)動(dòng)目標(biāo)顏色直方圖作為查找表。并依據(jù)此圖計(jì)算搜索窗的質(zhì)心坐標(biāo),將此坐標(biāo)看做搜索窗的中心坐標(biāo),再次設(shè)定搜索范圍。重復(fù)多次,計(jì)算鄰近兩次獲得的搜索窗質(zhì)心坐標(biāo)之間的誤差,即搜索窗口的質(zhì)心收斂在一個(gè)預(yù)期的范圍內(nèi),如果迭代次數(shù)[7]達(dá)到規(guī)定的值也結(jié)束計(jì)算。依據(jù)這樣的迭代方法,通過當(dāng)前一幀的結(jié)果設(shè)定下一幀圖像中搜索窗的坐標(biāo)和大小,以此類推可以實(shí)現(xiàn)持續(xù)跟蹤運(yùn)動(dòng)目標(biāo)。
1.3 Camshift和Kalman濾波相結(jié)合的跟蹤算法
通過Camshift跟蹤算法可知,此跟蹤算法的跟蹤效果由跟蹤運(yùn)動(dòng)目標(biāo)周圍背景的顏色特征差別大小決定的,差別越大,效果越好,此時(shí)能夠?qū)⑦\(yùn)動(dòng)目標(biāo)和背景區(qū)分開來,以便更好地對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤。如果在跟蹤的運(yùn)動(dòng)目標(biāo)附近出現(xiàn)與之類似顏色特征的復(fù)雜背景,也就是所謂的干擾物,那么此算法在鎖定運(yùn)動(dòng)目標(biāo)獲取其位置坐標(biāo)時(shí)就無(wú)法精確。為了避免運(yùn)動(dòng)目標(biāo)周圍存在干擾物對(duì)其跟蹤結(jié)果造成的影響,從而能夠更好地跟蹤運(yùn)動(dòng)目標(biāo),于是利用將Camshift與Kalman濾波相結(jié)合的跟蹤算法。利用Kalman濾波跟蹤算法要得到當(dāng)前幀圖像中運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)位置,需要通過前一幀圖像中運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)進(jìn)行估測(cè),以便建立鄰近兩幀圖像中運(yùn)動(dòng)目標(biāo)質(zhì)心坐標(biāo)的一種聯(lián)系,然后根據(jù)Camshift跟蹤算法的相關(guān)知識(shí),將其運(yùn)用此算法獲取的質(zhì)心坐標(biāo)和估測(cè)值進(jìn)行對(duì)比,依據(jù)這樣的對(duì)比結(jié)果判斷并得到當(dāng)前運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)以及下一幀圖像中搜索窗的坐標(biāo)和大小。
將i看作視頻序列中的幀序,那么將兩種運(yùn)動(dòng)目標(biāo)跟蹤算法相結(jié)合的算法主要步驟如下:
1)在初始幀圖像中設(shè)置的搜索窗的坐標(biāo)和大小須滿足的條件是要能夠全部覆蓋所要跟蹤的運(yùn)動(dòng)目標(biāo),得到運(yùn)動(dòng)目標(biāo)的顏色直方圖,搜索窗作為計(jì)算范圍,以此能夠獲取其顏色概率分布圖,從中得到其運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo),并用(xi,yi)表示,此時(shí)i=1。
4)把Kalman濾波算法對(duì)質(zhì)心坐標(biāo)的估計(jì)值與Camshift跟蹤算法得到的質(zhì)心坐標(biāo)進(jìn)行對(duì)比,若符合以下條件:
(1)
式中:T----設(shè)定的閾值。
(2)
從而,設(shè)置當(dāng)前幀圖像中運(yùn)動(dòng)目標(biāo)的范圍及中心位置坐標(biāo),并通過初始化搜索窗的范圍對(duì)下一位置進(jìn)行設(shè)定。
相反,若不符合式(2),那么當(dāng)前幀運(yùn)動(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é)束后,對(duì)運(yùn)動(dòng)目標(biāo)的持續(xù)跟蹤便能完成。
為了驗(yàn)證將兩種算法進(jìn)行結(jié)合的改進(jìn)跟蹤算法在跟蹤運(yùn)動(dòng)目標(biāo)時(shí)的效果是否達(dá)到預(yù)期,于是將改進(jìn)跟蹤算法運(yùn)用于mother-daughter視頻序列中的人手跟蹤,把此次實(shí)驗(yàn)結(jié)果拿來與利用Camshift跟蹤算法的結(jié)果做對(duì)比。實(shí)驗(yàn)中,改進(jìn)跟蹤算法中的參數(shù)T設(shè)為4,在搜索跟蹤過程中,鄰近的兩次得到的搜索窗的質(zhì)心坐標(biāo)相差小于4個(gè)像素或迭代次數(shù)不小于15次,以此作為此算法的質(zhì)心收斂條件。其跟蹤實(shí)驗(yàn)結(jié)果對(duì)比如圖1所示。
圖1 跟蹤實(shí)驗(yàn)結(jié)果對(duì)比圖
圖1中矩形框是對(duì)運(yùn)動(dòng)目標(biāo)跟蹤結(jié)果的標(biāo)記,而十字是對(duì)運(yùn)動(dòng)目標(biāo)質(zhì)心坐標(biāo)的標(biāo)記。
從圖1中還能夠看出,圖(b)、(c)和(d)的矩形框慢慢變大,這是由于人臉跟人手存在著類似的顏色特征,使得在跟蹤人手的過程中,受到了人臉的干擾,利用Camshift跟蹤算法跟蹤人手時(shí),就會(huì)將人臉也放入了搜索窗內(nèi),即人臉也被認(rèn)為是跟蹤的運(yùn)動(dòng)目標(biāo),因此矩形框慢慢變大。搜索窗變大之后,對(duì)人手的跟蹤定位會(huì)出現(xiàn)偏差,即運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)發(fā)生變化,由圖(d)可以看出,這不是所要的跟蹤結(jié)果。
反之,采用改進(jìn)跟蹤算法,由圖中可以看出,能夠一直非常不錯(cuò)地跟蹤人手的坐標(biāo)位置,通過圖(d)與(g)的跟蹤結(jié)果對(duì)比很明顯。利用Camshift跟蹤算法定位運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)時(shí),往往會(huì)由于運(yùn)動(dòng)目標(biāo)所在范圍出現(xiàn)類似顏色特征干擾物(如人手旁邊的人臉)導(dǎo)致真正的質(zhì)心坐標(biāo)出現(xiàn)偏離(見圖(d)),而采用相結(jié)合的改進(jìn)跟蹤方法就能很好地對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤(見圖(g))。
除此之外,能夠清晰地看到圖(b)與(d),(c)與(f)幾乎無(wú)變化,原因是利用相結(jié)合的改進(jìn)跟蹤算法在跟蹤第68和69幀圖像時(shí),Camshift跟蹤算法獲得的運(yùn)動(dòng)目標(biāo)質(zhì)心坐標(biāo)與Kalman濾波跟蹤算法的估測(cè)值,兩者相差沒有超過閾值T,因此在這種情況下,將Camshift跟蹤算法得到的結(jié)果作為真實(shí)的跟蹤結(jié)果。
根據(jù)以上的實(shí)驗(yàn)結(jié)果及理論分析能夠知道,將兩者相結(jié)合的運(yùn)動(dòng)目標(biāo)跟蹤算法在對(duì)運(yùn)動(dòng)目標(biāo)質(zhì)心位置估計(jì)的部分,因?yàn)镵alman濾波算法的融入,使得相鄰兩幀圖像中運(yùn)動(dòng)目標(biāo)的質(zhì)心位置之間有了一定的聯(lián)系。此時(shí),在待跟蹤的運(yùn)動(dòng)目標(biāo)周圍存在大面積的具有相似顏色特征的干擾物時(shí),只采用Camshift跟蹤算法不能精確地跟蹤運(yùn)動(dòng)目標(biāo),這時(shí),加入Kalman濾波跟蹤算法就可以修正跟蹤結(jié)果,從而精確地跟蹤運(yùn)動(dòng)目標(biāo)的坐標(biāo)。除此之外,Kalman濾波跟蹤算法不僅使得在待跟蹤運(yùn)動(dòng)目標(biāo)周圍存在大面積干擾物影響跟蹤結(jié)果這種情況得以解決,而且在僅使用Kalman濾波跟蹤算法時(shí),目標(biāo)瞬間丟失、交錯(cuò)及重疊等問題[8]也因此得到較好解決。
基于Kalman濾波的運(yùn)動(dòng)目標(biāo)跟蹤算法和Camshift跟蹤算法,這是兩種基本的運(yùn)動(dòng)目標(biāo)跟蹤算法,文中分別闡述了其基本原理及兩種算法的優(yōu)缺點(diǎn)。其中Kalman濾波跟蹤算法是通過估測(cè)運(yùn)動(dòng)目標(biāo)的質(zhì)心坐標(biāo)來對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,以此在跟蹤目標(biāo)的過程中,通過估測(cè)當(dāng)前幀圖形中運(yùn)動(dòng)目標(biāo)質(zhì)心坐標(biāo)來估測(cè)下一幀圖像中運(yùn)動(dòng)目標(biāo)的坐標(biāo)。而Camshift跟蹤算法是根據(jù)運(yùn)動(dòng)目標(biāo)的顏色直方圖作為跟蹤特征對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,所以在跟蹤初始時(shí),一般要人為的指定運(yùn)動(dòng)目標(biāo)的初始位置和大小,這樣做的目的就是為了方便提取運(yùn)動(dòng)目標(biāo)的顏色直方圖。在分析兩種基本跟蹤算法在跟蹤運(yùn)動(dòng)目標(biāo)過程中存在的問題,給出了將兩者相結(jié)合的改進(jìn)的跟蹤算法,通過實(shí)驗(yàn)證明了改進(jìn)的跟蹤算法能夠使大面積顏色干擾問題得到解決。
[1] 侯志強(qiáng),韓崇昭.視覺跟蹤技術(shù)綜述[J].自動(dòng)化學(xué)報(bào),2006,32(4):603-617.
[2] 張娟,毛曉波,陳鐵軍.運(yùn)動(dòng)目標(biāo)跟蹤算法研究綜述[J].計(jì)算機(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] 萬(wàn)琴,王耀南.基于卡爾曼濾波器的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤[J].湖南大學(xué)學(xué)報(bào):自然科學(xué)版,2007,34(3):36-40.
[5] 劉躍鋒,宋永霞,李松濤.一種基于直方圖對(duì)二值圖像進(jìn)行處理的方法[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(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ìn)算法[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2009,30(1):37-42.
[8] 孫凱,劉世榮.多目標(biāo)跟蹤的改進(jìn)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
國(guó)家科技支撐計(jì)劃基金資助項(xiàng)目(2007BAQ00097)
陳戈珩(1961-),女,漢族,吉林長(zhǎng)春人,長(zhǎng)春工業(yè)大學(xué)教授,主要從事數(shù)字信號(hào)處理及應(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