熊昊,段錦,陳小遠(yuǎn),代玉強(qiáng),于津強(qiáng)
(長(zhǎng)春理工大學(xué)電子信息工程學(xué)院,長(zhǎng)春 130000)
目標(biāo)跟蹤一直是圖像處理和機(jī)器視覺(jué)中的熱點(diǎn)和難點(diǎn)之一,在交通監(jiān)控、公共安全、國(guó)防軍事等領(lǐng)域中有著廣泛的應(yīng)用。隨著計(jì)算機(jī)技術(shù)的發(fā)展,目標(biāo)跟蹤不僅僅滿足于簡(jiǎn)單的跟蹤,還希望在復(fù)雜環(huán)境中目標(biāo)發(fā)生旋轉(zhuǎn)、縮放和遮擋等情況時(shí)依舊能在視頻流中獲取目標(biāo)質(zhì)心的位置、尺度信息和運(yùn)動(dòng)軌跡。MeanShift算法,又稱均值漂移算法,是由Fukunaga提出的一種無(wú)參密度梯度上升算法,通過(guò)迭代運(yùn)算尋找概率密度函數(shù)的極值點(diǎn)[1]。Comaniciu提出以色彩直方圖為模型,用巴氏系數(shù)來(lái)度量概率密度的相似性,通過(guò)Mean?Shift迭代計(jì)算極值點(diǎn)即目標(biāo)位置[2]。CamShift(Continu?ously Adaptive MeanShift)方法[3]是 Bradski將 MeanShift算法擴(kuò)展到連續(xù)圖像序列,能自動(dòng)調(diào)整窗口尺寸,并將上一幀的結(jié)果作為下一幀的目標(biāo)模板進(jìn)行迭代。Cam?Shift算法對(duì)目標(biāo)發(fā)生旋轉(zhuǎn)和尺度變換有較好的適應(yīng)性,但其只利用了目標(biāo)的顏色信息進(jìn)行建模,在遭遇相近顏色干擾時(shí)容易跟蹤失效[3]。文獻(xiàn)[4]結(jié)合顏色和邊緣特征構(gòu)建模型,文獻(xiàn)[5]在MeanShift算法框架中加入SIFT特征實(shí)現(xiàn)目標(biāo)多自由度,但計(jì)算量較大。
針對(duì)CamShift跟蹤算法中跟蹤窗口漂移和發(fā)散問(wèn)題,本文結(jié)合SURF特征改進(jìn)了CamShift算法。首先,利用CamShift算法對(duì)目標(biāo)初定位獲得候選區(qū)域,然后在候選區(qū)域內(nèi)提取SURF特征點(diǎn),并與目標(biāo)模板進(jìn)行匹配后,利用SURF特征信息調(diào)整跟蹤窗口準(zhǔn)確定位目標(biāo)。利用SURF特征尺度信息的變化約束跟蹤窗口,改善了大面積背景色干擾下跟蹤窗口易發(fā)散的問(wèn)題;利用SURF特征點(diǎn)數(shù)量、尺度和方向信息的變化選擇相應(yīng)的模板更新策略,使模板能更好地反映目標(biāo)的特征,從而在下一幀中更準(zhǔn)確地跟蹤目標(biāo)。
CamShift算法利用目標(biāo)顏色特征進(jìn)行跟蹤,預(yù)處理階段將圖像由RGB顏色空間轉(zhuǎn)換到HSV顏色空間,統(tǒng)計(jì)H分量經(jīng)過(guò)加權(quán)后的色度直方圖表示目標(biāo),再經(jīng)過(guò)反向投影生成目標(biāo)的概率密度分布圖,最后進(jìn)行迭代從而獲取目標(biāo)位置。
目標(biāo)中心位置由下式迭代收斂得到:
其中:g(x)=-k'(x),k(x)為所選取的核函數(shù);?為核函數(shù)帶寬;xi為以y0為中心的候選區(qū)域內(nèi)nh個(gè)像素的坐標(biāo);wi為權(quán)重,且有:
SURF(Speeded Up Robust Features)是 SIFT 算法的改進(jìn),同樣是一種尺度不變和旋轉(zhuǎn)不變的特征描述子[8],對(duì)圖像旋轉(zhuǎn)、縮放、仿射變換具有一定的不變性,且計(jì)算速度比SIFT更快。
在圖像點(diǎn)處尺度為σ的Hessian矩陣為:分別是高斯二階微分和圖像的二維卷積。
為了提高高斯卷積的計(jì)算速度,SURF算子使用方框?yàn)V波器作為二階高斯濾波器的近似替代,并使用積分圖像[8]對(duì)圖像卷積進(jìn)行加速。每個(gè)像素點(diǎn)與其三維空間里的26個(gè)鄰點(diǎn)相比較,獲得極值點(diǎn),同時(shí),剔除小于閾值的極值點(diǎn)。
圖1 極值點(diǎn)的檢測(cè)
首先要確定特征點(diǎn)的主方向。以特征點(diǎn)為圓心,6σ(σ為特征點(diǎn)的尺度)為半徑的圓形區(qū)域中分別計(jì)算特征點(diǎn)在x和y方向的Harr小波響應(yīng),并進(jìn)行高斯加權(quán),越臨近特征點(diǎn)的響應(yīng)貢獻(xiàn)越大;然后統(tǒng)計(jì)60°扇形區(qū)域內(nèi)x和y方向上的Harr小波響應(yīng),相加形成一個(gè)局部方向向量,遍歷整個(gè)圓形區(qū)域,將統(tǒng)計(jì)值最大的那個(gè)扇形區(qū)域的向量方向作為該特征點(diǎn)主方向。
然后生成SURF特征描述子。沿著特征點(diǎn)的主方向,以特征點(diǎn)為中心,邊長(zhǎng)為20的正方形區(qū)域構(gòu)造長(zhǎng)為20的正方形領(lǐng)域,將該窗口鄰域分為4×4的子區(qū)域,對(duì)于每個(gè)區(qū)域計(jì)算5×5個(gè)采樣點(diǎn)的水平方向和垂直方向的Harr小波響應(yīng),分別記做dx和dy,并用高斯窗口函數(shù)對(duì)響應(yīng)值賦予權(quán)重系數(shù),得到矢量最后對(duì)向量進(jìn)行歸一化處理,得到特征描述符。
圖2 描述子的生成
SURF特征的尺度變化與目標(biāo)尺度變化成正比,主方向信息變化與目標(biāo)的方向變化一致[6-7]。設(shè)Spre和Scur為上一幀物體尺度和當(dāng)前幀物體尺度,σp和σc分別為上一幀和當(dāng)前幀匹配上的兩個(gè)特征點(diǎn)所在的尺度。結(jié)合n對(duì)匹配上的特征點(diǎn),則得到目標(biāo)尺度:
同理,目標(biāo)方向變化:
其中Ocur和Opre為當(dāng)前幀和上一幀目標(biāo)的方向,RCi和RCi
為當(dāng)前幀和上一幀中所匹配特征點(diǎn)的主方向,n為匹配后的特征點(diǎn)對(duì)數(shù)。
結(jié)合目標(biāo)在的運(yùn)動(dòng)信息和SUFT特征點(diǎn)的方向信息和尺度信息,預(yù)估目標(biāo)在當(dāng)前幀的位置,并在原有的搜索框尺度上擴(kuò)大一定的范圍(本文設(shè)為50%)內(nèi)提取SURF特征點(diǎn),并與前一幀目標(biāo)區(qū)域SURF特征點(diǎn)進(jìn)行匹配。結(jié)合匹配前后SURF特征點(diǎn)的方向信息和尺度信息得到新的搜索窗的位置和尺度。
CamShift算法使用目標(biāo)的顏色直方圖對(duì)目標(biāo)建模,在目標(biāo)發(fā)生旋轉(zhuǎn)、部分遮擋時(shí)仍能取得一定的跟蹤效果,但其本身并不能判斷目標(biāo)的狀態(tài)與大小,因此在復(fù)雜背景中其模板更新不能取得較好的跟蹤效果。
在本文的3.1中已經(jīng)介紹SUFR特征點(diǎn)的方向信息及尺度信息對(duì)目標(biāo)的運(yùn)動(dòng)狀態(tài)的反映,再結(jié)合SURF特征點(diǎn)匹配對(duì)的數(shù)量變化,可以在一定程度上對(duì)目標(biāo)的旋轉(zhuǎn)、縮放以及遮擋信息做出判斷,并根據(jù)不同的狀態(tài)選擇相應(yīng)的模板更新策略。具體方法為:
(1)在特征點(diǎn)匹配對(duì)數(shù)目基本保持不變(增減10%以內(nèi))的情況下,根據(jù)SURF特征的方向信息和尺度信息變換即可判斷目標(biāo)的狀態(tài),利用CamShift搜索窗的輸出對(duì)模板進(jìn)行更新。
(2)在特征點(diǎn)匹配對(duì)數(shù)目發(fā)生一定變化(增減10%~25%)的情況下,若SURF特征的方向信息和尺度信息變化較小,則判定發(fā)生了遮擋,不對(duì)模板做更新;若SURF特征的方向信息和尺度信息變化較大,則認(rèn)為是目標(biāo)自身變化,利用利用CamShift搜索窗的輸出對(duì)模板進(jìn)行更新。
(3)在特征點(diǎn)匹配對(duì)數(shù)目變化較大(增減25%以上)的情況下,則認(rèn)為目標(biāo)發(fā)生了遮擋,通過(guò)匹配前后兩幀特征點(diǎn)二者之間的映射關(guān)系,利用SURF特征的位置信息、方向信息和尺度信息推導(dǎo)定位目標(biāo),不對(duì)目標(biāo)模板進(jìn)行更新。
前文獲得的尺度、方向變化參數(shù),一方面可以跟蹤目標(biāo)的縮放、旋轉(zhuǎn)運(yùn)動(dòng),另一方可以調(diào)整CamShift算法中核函數(shù)的帶寬和方向。同時(shí),結(jié)合之前獲得的質(zhì)心運(yùn)動(dòng)軌跡對(duì)目標(biāo)的初步估計(jì),為SURF特征檢測(cè)提供方位和區(qū)域,避免對(duì)大范圍圖像檢測(cè)浪費(fèi)時(shí)間,也減少了誤匹配。具體步驟如下:
(1)CamShift算法本身并不能檢測(cè)運(yùn)動(dòng)目標(biāo),所以在第一幀的時(shí)候需要以矩形框手動(dòng)標(biāo)記所需跟蹤的目標(biāo),并以此初始化目標(biāo)尺度S和目標(biāo)方向O;
(2)利用上一幀獲得目標(biāo)及其尺度Spre和方向Opre構(gòu)建核函數(shù),則目標(biāo)的概率密度分布計(jì)算式可以改寫為:
利用CamShift算法進(jìn)行迭代,初定位目標(biāo)。
(3)根據(jù)CamShift的跟蹤結(jié)果和Spre,Opre值得到SURF特征的檢測(cè)區(qū)域,將檢測(cè)區(qū)域的SURF特征點(diǎn)與模板中的SURF特征點(diǎn)進(jìn)行匹配,獲得目標(biāo)實(shí)際位置。
(4)計(jì)算新的尺度Scur和方向Ocur,根據(jù)SURF特征變化選擇相應(yīng)的目標(biāo)模板更新策略,進(jìn)行下一幀的跟蹤計(jì)算。
為了驗(yàn)證本文算法,利用多組圖片序列對(duì)其進(jìn)行大量測(cè)試,測(cè)試環(huán)境為VS2010和OpenCV 2.4.3。圖3圖4分別為利用CamShift以及本文算法對(duì)行人序列的跟蹤結(jié)果,CamShift算法在目標(biāo)產(chǎn)生部分遮擋時(shí)仍能較好地跟蹤目標(biāo),但其只能根據(jù)顏色特征讓搜索窗縮小以適應(yīng)目標(biāo),無(wú)法判斷發(fā)生了遮擋,其尺度與目標(biāo)真實(shí)大小有所差距;而本文算法不但能較好地跟蹤目標(biāo)位置,且較CamShift算法能更好的描述目標(biāo)的尺度信息。如圖5所示,在大約30幀的時(shí)候由于亭子和汽車的遮擋,CamShift算法的跟蹤窗雖然仍能正確跟蹤,但只能跟蹤行人的上半身,跟蹤窗口質(zhì)心向上漂移且尺度逐步縮小,明顯與真人不符合;而本文趕緊算法因?yàn)榧尤隨URF特征對(duì)目標(biāo)進(jìn)行跟蹤,在行人遭到遮擋時(shí)仍能根據(jù)SURF提供的信息調(diào)整跟蹤窗口的尺度,使跟蹤結(jié)果更加接近真實(shí)目標(biāo)。
圖3 CamShift算法
圖4 本文改進(jìn)算法
圖5 CamShift算法與本文改進(jìn)算法跟蹤效果與實(shí)際尺度的比例
實(shí)驗(yàn)結(jié)果表明,本文所提跟蹤算法在目標(biāo)的尺度發(fā)生變化及旋轉(zhuǎn)、遮擋場(chǎng)景中能準(zhǔn)確的跟蹤目標(biāo),具有較強(qiáng)的魯棒性。算法的不足之處是對(duì)于目標(biāo)較小或者表面紋理較少的情況下可能提取和匹配SURF特征點(diǎn)較少,發(fā)生變化時(shí)對(duì)跟蹤的影響較大。進(jìn)一步的工作將尋找更穩(wěn)定的SURF特征提取和匹配方法,并嘗試結(jié)合粒子濾波方法,完成魯棒性更強(qiáng)、實(shí)用性更廣的跟蹤算法。