胡春海,查琳琳,陳 華
(燕山大學 河北省測試計量技術及儀器重點實驗室,河北 秦皇島 066004)
對運動目標的跟蹤是視頻監(jiān)控中重要的環(huán)節(jié),即在各種情境下對每一幀中運動目標進行快速精準的定位,也是機器視覺方向最活躍的研究領域之一。近年來,目標跟蹤技術已廣泛應用于智能監(jiān)控、高級人機交互等領域中,具有很高的商業(yè)價值。文獻[1]對多種目標跟蹤算法進行了對比,在諸多跟蹤算法中TLD算法脫穎而出,在照明變化、遮擋等諸多復雜因素影響下,其平均水平被指定為“優(yōu)秀”,在2016年VOT競賽中,該算法也取得了相當卓著的研究成果[2]。因此,如何能使優(yōu)秀的跟蹤算法具有更優(yōu)良的應對能力在當下的研究中仍然具有很重要的意義。
跟蹤-學習-檢測算法(Tracking-Learning-Detecting,TLD)廣泛應用于視頻監(jiān)控的檢測和跟蹤系統(tǒng)中。在相機抖動、目標被遮擋以及視頻序列較長等因素存在時,由于將檢測器和跟蹤器有機結合,使TLD算法的性能較為突出[3-5]。文獻[6]提出一種基于關鍵特征點檢測的改進TLD算法并且引入了在線位置預測機制,提高了跟蹤算法的精度;文獻[7]中提出Brisk特征點和均勻分布點集代替TLD中均勻分布跟蹤點,可以在一定程度上減少跟蹤點的數(shù)量,保證跟蹤的準確性。2011年Rublee等[8]提出了ORB算法(Oriented FAST and Rotated BRIEF,ORB),改善特征點對噪聲的敏感程度。在此基礎上,文獻[9]將ORB特征點應用于檢測動態(tài)場景下的運動目標,該方法不但提高了檢測精度,而且保證了跟蹤的實時性,目前用ORB算法對目標進行跟蹤的方法較少,較為新穎的論文參考文獻[10-11]。
基于ORB算法的優(yōu)良性能,并且為了增加算法的實際應用,本文對原始TLD目標跟蹤進行兩點改進:首先,在搭建圖像金字塔光流法跟蹤模型基礎[12]上,利用ORB算法對原算法進行優(yōu)化,將檢測出的目標關鍵離散特征點代替原始算法網格中待跟蹤目標規(guī)則特征點,以減少匹配特征點的數(shù)量;其次,利用Kalman濾波器對丟失或被遮擋的目標位置預測,進而對預測結果進行跟蹤,縮小TLD算法的檢測區(qū)域。
TLD算法[3,13]是Kalal Z在2011年提出的一種魯棒性較強的單一目標跟蹤算法。
該算法先將視頻輸入到并行工作的跟蹤和檢測模塊中,實現(xiàn)對目標的跟蹤與檢測;其次,學習模塊根據(jù)跟蹤模塊的結果對檢測模塊的樣本進行評估,并根據(jù)評估結果生成訓練樣本對檢測模塊的目標模型和跟蹤模塊的“關鍵特征點”進行更新,并及時反饋給并行檢測模塊和跟蹤模塊;最后通過綜合模塊的信息整合,得到目標實時狀態(tài),以實現(xiàn)持續(xù)跟蹤,算法流程如圖1所示。
圖1 TLD算法流程圖
Fig.1 TLD algorithm flow chart
TLD是面向任意運動目標開發(fā)的一個長期跟蹤系統(tǒng),且在實際跟蹤中有著較好的魯棒性。但由于TLD目標跟蹤算法存在對光線變化敏感導致目標漂移、目標旋轉致使跟蹤失敗以及實時性較差等問題。因此在本節(jié)中提出了一種改進TLD目標跟蹤的算法。
在TLD算法中,檢測模塊采用多尺度滑動窗口的方法在原始圖像中逐行掃描檢測目標存在與否,對于QVGA圖像來說,一幅圖片的掃描窗口數(shù)可以達到5萬之多。因此,本文在預處理時,用直方圖均衡對圖像目標進行增強,與背景形成較大反差;對于背景中有噪聲的圖像,用中值濾波對噪聲進行抑制;在保證圖像中的目標區(qū)域能識別的情況下,降低圖像分辨率[14]。由于每個跟蹤窗口中像素量一定,掃描樣本的數(shù)量可以大大減少。預處理結果對比圖如圖2所示。
TLD算法跟蹤模塊中采用L-K光流法(Lucas-Kanade,L-K)。由于光流約束方程不能確定唯一光流,對于跟蹤亮度變化大或運動較快的目標會產生跟蹤窗口漂移的現(xiàn)象,因此需引入其它約束條件,本文思路是將圖像金字塔分層與L-K光流法相結合,其原理如圖3所示。
圖2 預處理結果與原圖像
Fig.2 Preprocessing results and original images
圖3 金字塔光流法原理
Fig.3 Schematic diagram of pyramid optical flow method
首先,建立一個圖像高斯金字塔,要求是分辨率從上到下逐層減少;通過最小化每個點鄰域范圍內匹配誤差和的方法來得到圖像中每個點的光流,如式(1)所示:
ε(d)=ε(dx,dy)=
(1)
其中,選取圖像I上任意點u=[ux,uy]T,x和y表示該點的兩個像素坐標,目標圖像在下一幀圖像J中的位置v=u+d=[ux+dx,uy+dy]T,矢量d=[dx,dy]T是x處的圖像速度,wx和wy為兩個整數(shù)。
本文中上下層間圖像為1/2關系,共分解4層,第0層為原始圖像。通過計算上層光流,并對上層光流點進行映射,直到映射到底層的方法,可得該點灰度值:
I(x0,y0)?J(x0+dx,y0+dy),
(2)
由此可得,向量d是圖像在點(x0,y0)處的位移,也就是像素點(x0,y0)的光流。
金字塔光流法相比于原始光流法的突出特點是,每層光流位移保持很小,將小位移光流向下層映射,直至底層,該方法可以對單層小位移光流進行累積,以便跟蹤較大幅度運動。
ORB特征點檢測算法是在著名的FAST特征檢測和BRIEF特征描述子的基礎上提出來的,F(xiàn)AST特征點檢測算法如圖4所示。ORB特征檢測具有尺度和旋轉不變性,對于噪聲及其透視變換也具有不變性。ORB特征檢測主要包含方向FAST特征點檢測和BRIEF特征描述兩個部分。
圖4 FAST特征點檢測原理
Fig.4 Detection principle of FAST feature points
ORB特征點檢測及生成描述子的具體步驟如下:
1) 對提取的FAST角點進行高斯金字塔分層:每層金字塔都會產生若干相關聯(lián)角點,金字塔共n層,每層搭建一幅圖,第s層的規(guī)模為scales=Fators,F(xiàn)ator初始規(guī)模默認為1.2,將原始圖像放在金字塔的底層,則第s層圖像大小為
(3)
2) oFast算法計算每個特征點的主方向:圖像中某相鄰特征點的鄰域(p+q)階距定義為
(4)
其質心位置為
(5)
以選定的特征點為中心,向量的角度(即該特征點的方向)為
(6)
3) 生成BRIEF描述子:將角點附近鄰域內部分像素灰度的差通過二進制數(shù)字串來描述。定義S×S大小的圖像鄰域P的測試準則τ為
(7)
式中,p(x)是圖像鄰域P在x=(u,v)T處的灰度值。通過對n個(x,y)點進行灰度比較,生成非1即0的二進制數(shù)字串,即
(8)
4) rBrief算法解決旋轉不變性:通過灰度差值生成的簡單描述子,其本身不具備旋轉不變性,可以選擇依據(jù)角點灰度與質心間建立的向量,給描述子增加具有旋轉不變性的方向信息,確定一個2×n的矩陣:
(9)
用(xi,yi)表示任意測試點,通過結合θ(特征點方向)和S0(該特征點的旋轉矩陣)對矩陣S加以修正,可以構造出矩陣S的校正版本Sθ=RθS。
可以得到Steered BRIEF描述子:
gn(p,θ)=fn(p)|(xi,yi)∈Sθ。
(10)
5) 為了減少方差的虧損,引入貪婪算法對所有具有高方差又具有非相關性的點進行篩選。
本算法在特征點檢測及跟蹤部分的改進如下:將TLD目標跟蹤窗口內規(guī)則特征點Grid清空,采用ORB算法提取該區(qū)域內離散特征點,對特征點按相似性聚類后跟蹤,可以大大減少掃描窗口的工作量;接下來各幀中,如果局部跟蹤器未超出目標圈定的跟蹤框,則應用金字塔光流法對當前幀從目標位置進行跟蹤,若局部跟蹤超出選定跟蹤目標框的范圍,則利用ORB特征點匹配算法,與上一幀中相應特征點進行匹配,直接定位當前幀中目標尺寸和位置,防止誤差累計,以做備用方案,改進后掃描窗口與原算法掃描窗口對比圖如圖5所示。
圖5 改進后掃描窗口對比圖
Fig.5 Comparison of improved scan window
Kalman濾波器[15]是從已知信息開始,獲取新的信息,然后根據(jù)對已知信息和新信息的確定程度,用新舊信息帶權重的結合對已知信息進行更新[15]。
在TLD算法的檢測器結構中,輸入級聯(lián)分類器的樣本是由掃描框對每一幀圖片進行全局掃描產生的,則說明TLD算法并沒有確定目標窗口的位置范圍,通過Kalman預測器的選用,可以將目標框的范圍縮小到TLD的目標待檢測區(qū)域,解決目標丟失后跟蹤失敗的問題。
整體算法流程如圖6所示,其中圖6(a)為本文整體運算流程,圖6(b)為改進TLD算法程序,即圖6(a)中子模塊部分。
主程序中,通過對輸入視頻中隨機目標的選擇,對圖像序列進行初步處理,結合Kalman預測器對目標大致位置的預測,進入TLD算法的主模塊,對目標進行檢測和跟蹤,并且不斷更新模型,若圖像序列不是最后一幀,則重復步驟,并輸出位置。
對于子程序模塊中,跟蹤器讀取Bounding Box的圖像參數(shù)后,對ROI區(qū)域進行圖像增強,圖像去噪,降低分辨率等預處理,并重新構建跟蹤框內特征點檢測機制,結合ORB特征點檢測算法,經過聚類后對其進行訓練和跟蹤,對于不能準確找到目標的圖像,采用ORB算法直接進行匹配。
圖6 算法整體流程圖
Fig.6 Overall flowchart algorithm
為了驗證算法的有效性,將改進后的TLD算法(以下簡稱TLD+)與原始TLD算法以及TLD結合Kalman預測算法(下簡稱TLD+K)進行比較,采用六組視頻進行測試,包括公開的David、David3、Deer、Shaking以及筆者采集的視頻car、feet,這些視頻主要挑戰(zhàn)包括:光照變化,目標運動速度快以及目標消失重現(xiàn)、目標遮擋等情況。實驗環(huán)境的構建是在Windows 7操作系統(tǒng)下,由Visual Studio 2015 Community集成環(huán)境和Intel公司開發(fā)的計算機視覺庫OpenCV 3.4構成。本文的PC機配置為Intel Core i7-3632QM 3GHz CPU,4GB內存。
在“David”序列(共770幀,目標存在770幀,分辨率為320×240)中,實驗結果如圖7所示,視頻中目標從光線較暗處走至光線較強處(a)~(c),其中有身體旋轉(d)和面部遮擋(f)情況。實驗結果表明,本文算法都可正確跟蹤光線發(fā)生大變化的選定的目標區(qū)域。
圖7 David序列測試結果
Fig.7 David Sequence test results
在“David 3”序列(共252幀,目標存在250幀,分辨率為640×480)中,實驗結果如圖8所示,視頻中目標先后經過四次粗細不同的遮擋物,當目標進入汽車區(qū)域(b),進入復雜背景區(qū)域時,容易造成前景背景目標混淆,當目標進入大樹區(qū)域時,本身目標丟失,但是通過Kalman預測出目標區(qū)域(d),且當目標轉身后,跟蹤還是能正常進行。實驗結果表明,本算法可以正常跟蹤被短暫遮擋的運動目標。
在“Deer”序列(共71幀,目標存在71幀,分辨率為200×150)中,實驗結果如圖9所示,視頻中目標背景中干擾項較多,且目標運動劇烈,速度較快,在第7~9幀中,目標進行一個急速的軌跡變化,在26~28幀中,目標被遮擋物遮擋且急速運動,雖然檢測的特征點發(fā)生部分漂移,但是跟蹤框仍能正確的預測跟蹤軌跡,且在遮擋物消失的時候可以正確跟蹤目標。
在“Shaking”序列(共365幀,目標存在365幀,分辨率為624×352)中,實驗結果如圖10所示,視頻中整體光照較為昏暗,目標從遮擋走到前方,過程中有劇烈抖動情況,并且經過一次強光突然照射,在第162幀附近,特征點未進行檢測,但是預測器的定位窗口仍然鎖定目標,并且在后續(xù)幀中仍可繼續(xù)跟蹤。
圖8 David3序列測試結果
Fig.8 David3 Sequence test results
圖9 Deer序列測試結果
Fig.9 Deer Sequence test results
“car”序列(共305幀,分辨率為640×360)中,視頻選取自網絡中交通路口車輛行駛的情況,場景特點包括:目標選定小,運動速度較快,來往車輛行人較多,實驗結果如圖11所示。根據(jù)實驗表明,本方法對目標運動環(huán)境復雜且多重遮擋的情況依舊能正確跟蹤,尤其是針對交通系統(tǒng)監(jiān)控中,本算法仍能保持較好的實時性。
圖10 Shaking序列測試結果
Fig.10 Shaking Sequence test result
圖11 Car序列測試結果
Fig.11 Car Sequence test result
“feet”序列(共101幀,分辨率為1920×1080)中,該跟蹤是筆者用手機記錄下來的視頻,分辨率要大于一般測試視頻,特點是視頻中存在相似物體,且有光線的變化,實驗結果如圖12所示,第21幀中左腳搭上右腳,檢測到的目標存在于跟蹤框的右端,第60幀中右腳搭上左腳,當兩腳分開的時候,跟蹤框還是能正確跟蹤選取的目標,由此可見,對于光線較暗情況下的相似目標,本文算法依舊能正確跟蹤。
圖12 Feet序列測試結果
Fig.12 Feet Sequence test results
引入算法準確率和運行速度作為評價指標對算法進行對比分析。實驗數(shù)據(jù)如表1和表2所示。表1給出各個算法對不同視頻的處理,能夠正確跟蹤目標的幀數(shù),結果顯示改進的TLD算法與原始TLD以及TLD+K算法相比,正確跟蹤的幀數(shù)各有高低。
首先對表格中查全率和速度增長率進行介紹,表1中各視頻實驗結果查全率rR定義為
(13)
其中,numTP表示正確處理幀數(shù),numCP為視頻序列總幀數(shù)。
表2中各視頻跟蹤速度增長率gR定義為
(14)
其中,vE表示改進后TLD+算法處理速度,vS表示相應對照算法處理速度。
表1 視頻序列跟蹤精度實驗結果Tab.1 The experiment results of Video sequence tracking accuracy
表2 視頻序列跟蹤速度實驗結果Tab.2 The experiment results of Video sequence tracking speed
對于算法精度來說,由表1可直觀地看出:對于原始TLD算法,在6個視頻序列中,平均正確處理幀數(shù)為263幀,查全率為83.71%,其中在Deer序列中由于遮擋以及背景雜波較多,導致目標窗口漂移,檢測到的幀數(shù)較低,在Shaking序列中,由于背景較暗,且出現(xiàn)光線強烈變化的情況,使得跟蹤窗口多次無法檢測到目標;對于TLD+K的算法來說,在預測目標位置的情況下,檢測幀數(shù)較原始算法有明顯提升,平均檢測幀數(shù)可以達到288.17幀,較TLD算法提升了9.6%;而在TLD+算法中,由于檢測模塊是通過關鍵特征點檢測,對于背景顏色和紋理較為接近的視頻,測試結果不是很理想,但是也趨于平均水平,通過引進預測器,對模糊以及遮擋的目標有了較大的改進,平均正確處理幀數(shù)達到了290.33幀,相較于原始TLD算法提高了10.39個百分點。
對于速度的分析,需要對6個樣本視頻的平均幀率作為參考基礎,由表1可直觀地看出:原始TLD算法采用逐行掃描方式,對比直接定位的方法來說,速度相對較慢,平均處理速度大約為8.85幀/s,而Kalman預測的引入,可使算法在速度上有一定提高,平均速度可以達到10.94幀/s,較原始算法提高了23.61%,但兩種算法對分辨率較高的視頻處理速度還是較慢;而改進算法TLD+,對視頻先進行預處理,降低了高分辨率視頻的分辨率,使光流算法運行的區(qū)域范圍減少,在特征點檢測機制中加入了速度較快的ORB特征點檢測,再次提高了算法的處理速度,可以達到平均幀率為13.86幀/s,較原始算法提高了56.61%,較TLD+K算法提高了26.69%。
從表格中可以更直觀地比較出本文改進算法相比前兩種算法的優(yōu)勢,雖然在精度上只有小幅改善,但在檢測和跟蹤速率上有著大幅提高。
視頻跟蹤已經成為機器視覺中較為重要的一個部分,各種跟蹤場景的復雜程度也越來越考驗算法本身的適應能力。本文提出一種ORB算法改進的TLD目標跟蹤算法,該方法在TLD算法基礎上,通過ORB算法重建檢測和跟蹤機制,采用金字塔分層的方式對特征點進行跟蹤,最后引入Kalman濾波器,對丟失或者被遮擋目標幀間位置進行預測。實驗結果表明,所提方法可通過關鍵特征點對目標進行跟蹤,在一定程度上減少了特征點的數(shù)量,能有效地應對光線環(huán)境較差、運動目標被遮擋等復雜情況,其跟蹤結果較為準確且在跟蹤速度方面得到了較大的提升,在保證跟蹤精度的情況下,使實時性達到原來的1.5倍。但目標在前景背景顏色區(qū)分較差的序列中還存在一定問題,這也是下一步研究重點。