熊昊,段錦,陳小遠,代玉強,于津強
(長春理工大學電子信息工程學院,長春 130000)
目標跟蹤一直是圖像處理和機器視覺中的熱點和難點之一,在交通監控、公共安全、國防軍事等領域中有著廣泛的應用。隨著計算機技術的發展,目標跟蹤不僅僅滿足于簡單的跟蹤,還希望在復雜環境中目標發生旋轉、縮放和遮擋等情況時依舊能在視頻流中獲取目標質心的位置、尺度信息和運動軌跡。MeanShift算法,又稱均值漂移算法,是由Fukunaga提出的一種無參密度梯度上升算法,通過迭代運算尋找概率密度函數的極值點[1]。Comaniciu提出以色彩直方圖為模型,用巴氏系數來度量概率密度的相似性,通過Mean?Shift迭代計算極值點即目標位置[2]。CamShift(Continu?ously Adaptive MeanShift)方法[3]是 Bradski將 MeanShift算法擴展到連續圖像序列,能自動調整窗口尺寸,并將上一幀的結果作為下一幀的目標模板進行迭代。Cam?Shift算法對目標發生旋轉和尺度變換有較好的適應性,但其只利用了目標的顏色信息進行建模,在遭遇相近顏色干擾時容易跟蹤失效[3]。文獻[4]結合顏色和邊緣特征構建模型,文獻[5]在MeanShift算法框架中加入SIFT特征實現目標多自由度,但計算量較大。
針對CamShift跟蹤算法中跟蹤窗口漂移和發散問題,本文結合SURF特征改進了CamShift算法。首先,利用CamShift算法對目標初定位獲得候選區域,然后在候選區域內提取SURF特征點,并與目標模板進行匹配后,利用SURF特征信息調整跟蹤窗口準確定位目標。利用SURF特征尺度信息的變化約束跟蹤窗口,改善了大面積背景色干擾下跟蹤窗口易發散的問題;利用SURF特征點數量、尺度和方向信息的變化選擇相應的模板更新策略,使模板能更好地反映目標的特征,從而在下一幀中更準確地跟蹤目標。
CamShift算法利用目標顏色特征進行跟蹤,預處理階段將圖像由RGB顏色空間轉換到HSV顏色空間,統計H分量經過加權后的色度直方圖表示目標,再經過反向投影生成目標的概率密度分布圖,最后進行迭代從而獲取目標位置。
目標中心位置由下式迭代收斂得到:

其中:g(x)=-k'(x),k(x)為所選取的核函數;?為核函數帶寬;xi為以y0為中心的候選區域內nh個像素的坐標;wi為權重,且有:

SURF(Speeded Up Robust Features)是 SIFT 算法的改進,同樣是一種尺度不變和旋轉不變的特征描述子[8],對圖像旋轉、縮放、仿射變換具有一定的不變性,且計算速度比SIFT更快。
在圖像點處尺度為σ的Hessian矩陣為:分別是高斯二階微分和圖像的二維卷積。

為了提高高斯卷積的計算速度,SURF算子使用方框濾波器作為二階高斯濾波器的近似替代,并使用積分圖像[8]對圖像卷積進行加速。每個像素點與其三維空間里的26個鄰點相比較,獲得極值點,同時,剔除小于閾值的極值點。

圖1 極值點的檢測
首先要確定特征點的主方向。以特征點為圓心,6σ(σ為特征點的尺度)為半徑的圓形區域中分別計算特征點在x和y方向的Harr小波響應,并進行高斯加權,越臨近特征點的響應貢獻越大;然后統計60°扇形區域內x和y方向上的Harr小波響應,相加形成一個局部方向向量,遍歷整個圓形區域,將統計值最大的那個扇形區域的向量方向作為該特征點主方向。
然后生成SURF特征描述子。沿著特征點的主方向,以特征點為中心,邊長為20的正方形區域構造長為20的正方形領域,將該窗口鄰域分為4×4的子區域,對于每個區域計算5×5個采樣點的水平方向和垂直方向的Harr小波響應,分別記做dx和dy,并用高斯窗口函數對響應值賦予權重系數,得到矢量最后對向量進行歸一化處理,得到特征描述符。

圖2 描述子的生成
SURF特征的尺度變化與目標尺度變化成正比,主方向信息變化與目標的方向變化一致[6-7]。設Spre和Scur為上一幀物體尺度和當前幀物體尺度,σp和σc分別為上一幀和當前幀匹配上的兩個特征點所在的尺度。結合n對匹配上的特征點,則得到目標尺度:

同理,目標方向變化:

其中Ocur和Opre為當前幀和上一幀目標的方向,RCi和RCi
為當前幀和上一幀中所匹配特征點的主方向,n為匹配后的特征點對數。
結合目標在的運動信息和SUFT特征點的方向信息和尺度信息,預估目標在當前幀的位置,并在原有的搜索框尺度上擴大一定的范圍(本文設為50%)內提取SURF特征點,并與前一幀目標區域SURF特征點進行匹配。結合匹配前后SURF特征點的方向信息和尺度信息得到新的搜索窗的位置和尺度。
CamShift算法使用目標的顏色直方圖對目標建模,在目標發生旋轉、部分遮擋時仍能取得一定的跟蹤效果,但其本身并不能判斷目標的狀態與大小,因此在復雜背景中其模板更新不能取得較好的跟蹤效果。
在本文的3.1中已經介紹SUFR特征點的方向信息及尺度信息對目標的運動狀態的反映,再結合SURF特征點匹配對的數量變化,可以在一定程度上對目標的旋轉、縮放以及遮擋信息做出判斷,并根據不同的狀態選擇相應的模板更新策略。具體方法為:
(1)在特征點匹配對數目基本保持不變(增減10%以內)的情況下,根據SURF特征的方向信息和尺度信息變換即可判斷目標的狀態,利用CamShift搜索窗的輸出對模板進行更新。
(2)在特征點匹配對數目發生一定變化(增減10%~25%)的情況下,若SURF特征的方向信息和尺度信息變化較小,則判定發生了遮擋,不對模板做更新;若SURF特征的方向信息和尺度信息變化較大,則認為是目標自身變化,利用利用CamShift搜索窗的輸出對模板進行更新。
(3)在特征點匹配對數目變化較大(增減25%以上)的情況下,則認為目標發生了遮擋,通過匹配前后兩幀特征點二者之間的映射關系,利用SURF特征的位置信息、方向信息和尺度信息推導定位目標,不對目標模板進行更新。
前文獲得的尺度、方向變化參數,一方面可以跟蹤目標的縮放、旋轉運動,另一方可以調整CamShift算法中核函數的帶寬和方向。同時,結合之前獲得的質心運動軌跡對目標的初步估計,為SURF特征檢測提供方位和區域,避免對大范圍圖像檢測浪費時間,也減少了誤匹配。具體步驟如下:
(1)CamShift算法本身并不能檢測運動目標,所以在第一幀的時候需要以矩形框手動標記所需跟蹤的目標,并以此初始化目標尺度S和目標方向O;
(2)利用上一幀獲得目標及其尺度Spre和方向Opre構建核函數,則目標的概率密度分布計算式可以改寫為:

利用CamShift算法進行迭代,初定位目標。
(3)根據CamShift的跟蹤結果和Spre,Opre值得到SURF特征的檢測區域,將檢測區域的SURF特征點與模板中的SURF特征點進行匹配,獲得目標實際位置。
(4)計算新的尺度Scur和方向Ocur,根據SURF特征變化選擇相應的目標模板更新策略,進行下一幀的跟蹤計算。
為了驗證本文算法,利用多組圖片序列對其進行大量測試,測試環境為VS2010和OpenCV 2.4.3。圖3圖4分別為利用CamShift以及本文算法對行人序列的跟蹤結果,CamShift算法在目標產生部分遮擋時仍能較好地跟蹤目標,但其只能根據顏色特征讓搜索窗縮小以適應目標,無法判斷發生了遮擋,其尺度與目標真實大小有所差距;而本文算法不但能較好地跟蹤目標位置,且較CamShift算法能更好的描述目標的尺度信息。如圖5所示,在大約30幀的時候由于亭子和汽車的遮擋,CamShift算法的跟蹤窗雖然仍能正確跟蹤,但只能跟蹤行人的上半身,跟蹤窗口質心向上漂移且尺度逐步縮小,明顯與真人不符合;而本文趕緊算法因為加入SURF特征對目標進行跟蹤,在行人遭到遮擋時仍能根據SURF提供的信息調整跟蹤窗口的尺度,使跟蹤結果更加接近真實目標。

圖3 CamShift算法

圖4 本文改進算法

圖5 CamShift算法與本文改進算法跟蹤效果與實際尺度的比例
實驗結果表明,本文所提跟蹤算法在目標的尺度發生變化及旋轉、遮擋場景中能準確的跟蹤目標,具有較強的魯棒性。算法的不足之處是對于目標較小或者表面紋理較少的情況下可能提取和匹配SURF特征點較少,發生變化時對跟蹤的影響較大。進一步的工作將尋找更穩定的SURF特征提取和匹配方法,并嘗試結合粒子濾波方法,完成魯棒性更強、實用性更廣的跟蹤算法。