邱曉歡 鄭尚坡 劉俊峰 徐詩康 廖丁丁



關鍵詞:目標跟蹤;Camshift 算法;Kalman 濾波;目標遮擋;狀態向量;嵌入式系統
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1006-8228(2023)11-41-06
0 引言
目標跟蹤技術作為機器視覺領域重要的研究課題及熱點,在智能視頻監控、自動駕駛、軍事國防、智能交通系統和無人機等領域得到了廣泛應用。
目標跟蹤算法根據不同的方法和策略可以分為基于輪廓、特征、區域和模型的四類方法。基于輪廓的跟蹤算法[1]以目標的邊緣輪廓作為跟蹤模板,具有較好的實時性能,然而在跟蹤目標被遮擋時,該算法會面臨跟蹤丟失的挑戰;基于模型的跟蹤算法[2]通過構建目標的二維或三維模型進行跟蹤,具有較高的魯棒性,但由于模型的構建需要耗費時間,實時性表現較差;基于區域的跟蹤算法[3]利用圖像的全局描述信息進行跟蹤,適用于沒有尺度變化或遮擋的情況,但在背景干擾或目標遮擋的情況下,該算法定位目標位置困難,魯棒性較差。
基于特征的跟蹤算法[4]是通過提取目標某些不變的特征(如顏色、SIFT、Harris Corners 等)來實現跟蹤,主要代表算法有SIFT[5]、SURF[6]、Meanshift、Camshift[8]等。其中Meanshift 算法是基于顏色概率分布圖作為特征,通過反復迭代尋優找到概率分布的極值來定位目標,具有計算量小、實時性較強等優點,但該算法在目標形變情況下較難跟蹤目標。Camshift 算法則是對Meanshift 的改進,該算法能根據跟蹤目標的形狀大小自動調整搜索跟蹤框的大小有效解決目標形狀變化和旋轉的問題[9]。文獻[10]通過Camshift 算法對運動目標進行跟蹤,該算法能夠解決目標旋轉和形變問題,但當目標受到遮擋或背景干擾情況下無法有效跟蹤目標。文獻[11]通過改進Camshift 算法,引入H,S,V 分量組成三維直方圖作為模板進行跟蹤,提高了跟蹤準確度和魯棒性,但是該方法只考慮了顏色直方圖信息,未考慮目標的運動和空間分布特征,較難處理遮擋問題。文獻[12-13]通過在Camshift 算法基礎上引入Kalman 濾波器,成功解決了遮擋問題,但他們所用到的Kalman 濾波器狀態變量均為四維,未考慮目標大小信息,并且其輸出的跟蹤框無法適應目標大小變化,跟蹤準確度和魯棒性都有待提高。
本研究針對前述文獻的不足之處,提出了一種基于改進Kalman 濾波與Camshift 結合的目標跟蹤算法,通過改進Kalman 濾波器算法方程,將原有的4 維度的狀態變量擴展為8 維,綜合考慮了目標的位置、大小以及它們對應的速度信息;同時,通過引入Bhattacharyya距離[14]和遮檔率α 來判斷目標是否受到遮擋,當運動目標受到遮擋時,將Kalman 輸出的預測值作為觀測值進行更新,以更新輸出的最優狀態估計值代替Camshift 輸出值作為跟蹤框實現對受遮擋目標的有效跟蹤。此外,為實現系統的小型化,使其能夠適用于資源受限的情況,本研究在樹莓派4B 平臺打造了基于改進Kalman 濾波與Camshift 相結合的目標跟蹤系統,在保證實時性的同時,具有高準確度和魯棒性。
1 基于改進Kalman 濾波與Camshift 相結合的目標跟蹤算法
1.2 改進Kalman 濾波與Camshift 結合的跟蹤算法
Camshift 算法該算法是基于顏色概率分布圖進行跟蹤的,具有計算量小、實時性高等優點,但存在遮擋情況下無法有效跟蹤目標的問題,跟蹤準確率較低,該算法流程如圖1 所示。
Kalman 濾波包括兩個部分:預測和校正。預測過程用來預測系統當前的狀態變量和誤差協方差值;校正過程負責卡爾曼濾波增益、狀態值和誤差協方差的更新[15]。Kalman 濾波器的主要作用是對當前時刻的觀測變量和前一時刻的狀態預測值來去更新對狀態變量的估計,求出當前時刻的最優狀態估計變量并對其進行輸出[16],Kalman 濾波器算法流程如圖2 所示。
本研究提出一種基于改進Kalman 濾波與Camshift相結合的目標跟蹤方法,能夠有效解決跟Camshift跟蹤過程中產生的遮擋干擾問題,實現對物體的持續跟蹤。
基于Kalman濾波的Camshift改進算法有以下步驟。
⑴ 通過樹莓派讀取視頻序列,通過鼠標選取第一幀目標的跟蹤區域并以該區域的中心位置和大小初始化搜索窗口。
⑵ 初始化Kalman 濾波器,并以初始搜索窗口的大小和中心位置初始化狀態變量X?0。
⑶ 將圖像從RGB 顏色空間轉換為HSV 空間,并計算搜索窗口內H 通道的顏色直方圖,并對其進行反向投影得到顏色概率分布圖[17]。
⑷ 利用MeanShift 跟蹤算法求出最優候選區域,并計算出搜索窗口的質心位置和窗口大小。
⑸ 根據窗口的像素值來綜合調整窗口大小,并將搜索窗口的中心位置移動到質心處,如果移動距離大于閾值,則跳轉到第⑷步繼續往下執行;如果搜索窗口中心移動到質心的距離小于設定的閾值,則滿足收斂條件,繼續向下執行。
⑹ 采用巴氏距離d (y)和遮擋率α來判斷目標是否受到遮擋,d (y)、α 的計算公式分別如式⑴和式⑵所示,當d (y)大于0.65或α 小于0.3時,則判斷為目標受到遮擋;反之,則未受到遮擋。
其中,d (y)可以用來比較兩個顏色直方圖的相似度,它的取值范圍在[0,1]之間,值越小表示兩個直方圖越相似;式⑾中Current_area 為當前Camshift 算法輸出的搜索窗口大小,Origin_area為初始搜索窗口的大小。
⑺ 如果目標未受到遮擋,以Camshift 算法輸出的最優搜索窗口中心位置和大小作為跟蹤框標注出目標在視頻當中的位置,并以該值作為觀測變量Zk,用Zk 來更新Kalman 濾波器,得到k 時刻的目標質心位置和大小的最優狀態估計值X?k,并以該值初始化下一幀搜索窗口的大小和中心位置。
⑼ 最后判斷視頻序列是否結束,若未結束則繼續執行下一幀的目標跟蹤。
2 實驗測試及分析
為了驗證所提算法的有效性,本研究通過在Raspbian 操作系統上使用Python 語言結合OpenCV 庫來編寫程序,分別實現基于Camshift 的目標跟蹤算法與基于Camshift 與Kalman 結合的改進目標跟蹤算法,對目標進行跟蹤,并設置多次實驗對兩種算法進行性能對比和分析。
2.1 實驗運行環境
目標跟蹤系統硬件環境主要由樹莓派4B 主板構成,本研究通過Win32 Disk Imager 工具將鏡像文件寫入SD 卡中,配置樹莓派連接手機熱點,并使計算機通過MobaXterm_Personal 軟件遠程連接樹莓派,然后在樹莓派系統中搭建Python 3.7.2 環境,安裝pip 指令庫,使用pip 指令安裝Numpy(1.21.5),OpenCV(4.5.5)等必要庫,完成在樹莓派上軟件環境的配置。
2.2 評估指標
本研究采用BH 距離和有效幀率r 用來衡量目標跟蹤算法的準確性與魯棒性,有效幀率計算式為:
r = valid_frame/all_frame ⑶
其中,valid_frame 為檢測到的有效幀數,all_frame 為視頻序列的總幀數。
2.3 測試結果
為了驗證所提改進算法的有效性,本研究通過樹莓派讀取測試視頻序列進行跟蹤實驗,分別將改進Kalman 濾波算法與Camshfit 算法跟蹤效果進行比較,跟蹤效果如圖3 和圖4 所示。
由圖3 可知,視頻序列當中存在一個遮擋物,當目標未經過遮擋物時,Camshift 算法能夠有效跟蹤目標,當目標在第98 幀被部分遮擋時,Camshift 通過縮小輸出的搜索窗口大小能夠對目標進行跟蹤,但在第133 幀,目標被完全遮擋,顏色信息完全丟失,導致Camshift 算法輸出的搜索窗口無法與物體匹配上,跟蹤失敗。由圖4 可知,改進的Kalman 濾波算法輸出的跟蹤框能夠自適應匹配Camshift 算法輸出的搜索窗口大小,當目標在第133 幀受到遮擋時,通過自適應改變a 和h 參數進行預測和更新來擴大輸出的跟蹤框大小,并標注出遮擋目標在視頻當中的位置,從而實現對其持續有效的跟蹤。
本研究分別對基于傳統的Camshift 跟蹤算法和改進的Camshift 與Kalman 濾波跟蹤算法相結合在樹莓派上進行100 次實驗,分別得到了這兩種算法的平均有效幀率和BH 距離,并進行性能對比分析,實驗結果見表1 和圖5。
根據表1 的結果顯示,本文所提改進算法有效幀率高達85.4%,顯著高于傳統Camshift 算法42.6%,平均BH 距離為0.78,相較于傳統Camshift 算法降低了0.27,具有較高的精度和魯棒性。從圖10 可以看出,傳統Camshift 算法在遇到遮擋物后BH 距離基本在0.9左右,表明搜索窗口與跟蹤目標的匹配度很低,然而,改進算法在遇到遮擋物后,BH 距離會有所提升,但是當目標越過遮擋物之后,BH 距離會快速下降至0.45左右,更證明了改進算法能夠有效跟蹤被遮擋后的目標,相較于原算法具有更好的跟蹤性能。
3 結論
本研究在樹莓派4B 上設計了一種嵌入式目標跟蹤系統,該系統采用了一種改進Kalman濾波與Camshift算法相結合的策略極大改進了原始Camshfit 算法在目標跟蹤上的缺陷,并解決了傳統Kalman 濾波器未考慮目標大小信息無法輸出跟蹤框的問題。實驗結果表明,所提改進算法能夠在遮擋干擾下穩定地跟蹤目標,在存在遮擋干擾的情況下具有較高的魯棒性和準確度。此外,該系統在嵌入式平臺上實現,適用于資源受限的環境,具備較大的應用潛力和實際價值。