本發(fā)明屬于計算機視覺目標跟蹤領域,特別涉及用于抖動視頻中的目標跟蹤的方法。
背景技術:
隨著科技的發(fā)展,無人機航拍越來越熱門,而無人機航拍得到的視頻很難避免的會產(chǎn)生各種由于無人機的平移、晃動等導致拍攝的視頻具有嚴重的抖動情況。這些抖動現(xiàn)象會嚴重干擾對運動物體目標跟蹤的結果。而目前很多跟蹤算法,比如KCF(Kernelized Correlation Filters,核相關濾波)跟蹤算法等,在嚴重抖動的視頻中均會出現(xiàn)跟蹤失敗的情況。原因是這些跟蹤算法的跟蹤原理是默認相鄰幀目標物體運動位移小,因此只在當前幀中檢測與上一幀物體位置相同的區(qū)域(由于認為目標物體運動位移小,因此相鄰幀目標物體位置差別不大)。而在抖動比較嚴重的視頻中,當前幀目標物體的位置很可能與上一幀該物體位置位移差很大,因此會導致這些跟蹤算法無法正確跟蹤運動目標。
技術實現(xiàn)要素:
為克服現(xiàn)有技術的不足,針對現(xiàn)有跟蹤算法在抖動視頻中跟蹤失敗的情況,本發(fā)明旨在提出一種用于抖動視頻下目標跟蹤的改進算法。本發(fā)明采用的技術方案是,抖動視頻中目標跟蹤的方法,步驟如下:利用局部區(qū)域塊搜索匹配算法,計算出目標物體在當前幀與上一幀的位置坐標偏差,然后將該偏差補償至跟蹤算法的檢測區(qū)域,使得跟蹤算法可以正確跟蹤當前目標。
具體步驟進一步細化為:
(1)對于視頻第一幀,由用戶選擇出需要跟蹤的目標物體,得到目標物體的坐標范圍(x0,y0,w,h),該坐標分別表示目標物體所在的外接矩形的左上角橫坐標x0與縱坐標y0,外接矩形沿著x軸方向的寬度w與沿著y軸方向的高度h;
(2)對于視頻第二幀,首先進行塊搜索匹配,如果目標物體比較小的話,在第一幀中選定目標物體區(qū)域作為匹配塊Blocki,其中下標i表示幀序號,第一幀i=0,第二幀i=2,以此類推,如果目標物體比較大的話,則選擇目標物體的一部分區(qū)域作為匹配塊Blocki;設匹配塊的長寬為M和N,由于視頻幀序列之間存在相對運動,導致隨后一系列視頻中的塊Blocki+1與前一幀的塊Blocki的位置發(fā)生偏移,假設x,y方向上最大偏移量分別為dx與dy,則在視頻當前幀中圍繞Blocki選定一個(M+2dx)*(N+2dy)搜索區(qū)域,根據(jù)最小絕對誤差準則,公式如下:
其中,MAD即為Minimum Absolute Difference,最小絕對誤差,fk(s,t)和fk-1(s+i,t+j)分別表示當前幀和參考幀的灰度值,匹配塊大小為M×N,s,t分別表示匹配塊內(nèi)的x和y方向坐標,i,j分別表示當前幀可能的匹配塊與參考幀匹配塊在x,y方向坐標差值。利用該準則在搜索區(qū)域中進行最小匹配搜索,得到最佳匹配塊Block,然后計算Block與Blocki的坐標差(offsetX,offsetY),得到偏差之后,跟蹤算法在上一幀的檢測區(qū)域加上該偏差得到新的檢測區(qū)域,即將原來的檢測區(qū)域在x方向和y方向分別平移offsetX和offsetY距離得到新的檢測區(qū)域,然后跟蹤算法在此區(qū)域上做計算得到精確的目標位置,接下來將該位置更新為用于下一幀塊搜索匹配的Blocki+1;
(3)在接下的每一幀中,重復第二步的,即每次計算當前幀與上一幀的偏差,然后將該偏差補償至跟蹤算法上一幀的檢測區(qū)域得到當前幀的檢測區(qū)域,接著跟蹤算法在此區(qū)域上做計算得到精確的目標位置,同時更新塊Blocki+1,至此實現(xiàn)抖動視頻中目標跟蹤的功能。
本發(fā)明的特點及有益效果是:
本發(fā)明利用局部區(qū)域塊搜索匹配算法,精確的求出跟蹤目標區(qū)域抖動的分量,然后將該分量補償至目標跟蹤算法的檢測區(qū)域,使得目標跟蹤算法可以準確地跟蹤目標。該算法對于大抖動視頻中跟蹤小目標的效果更顯著。
附圖說明:
圖1:抖動視頻中目標跟蹤框架圖;
圖2:塊搜索匹配算法圖。
具體實施方式
本發(fā)明針對現(xiàn)有跟蹤算法在抖動視頻中跟蹤失敗的情況,提出一種用于抖動視頻下目標跟蹤的改進算法。本發(fā)明采用的技術方案是:利用局部區(qū)域塊搜索匹配算法,計算出目標物體在當前幀與上一幀的位置坐標偏差,然后將該偏差補償至跟蹤算法的檢測區(qū)域,使得跟蹤算法可以正確跟蹤當前目標。
本發(fā)明算法整體框架如圖1所示,主要步驟如下:
(1)對于視頻第一幀,由用戶選擇出需要跟蹤的目標物體,得到目標物體的坐標范圍(x0,y0,w,h),該坐標分別表示目標物體所在的外接矩形的左上角橫坐標x0與縱坐標y0,外接矩形沿著x軸方向的寬度w與沿著y軸方向的高度h。
(2)對于視頻第二幀,首先進行塊搜索匹配。如果目標物體比較小的話,在第一幀中選定目標物體區(qū)域作為匹配塊Blocki(其中i表示幀序號,第一幀i=0,第二幀i=2,以此類推),如果目標物體比較大的話,則可以選擇目標物體的一部分區(qū)域作為匹配塊Blocki(可以加快匹配速度)。設匹配塊的長寬為M和N。由于視頻幀序列之間存在相對運動,導致隨后一系列視頻中的塊Blocki+1與前一幀的塊Blocki的位置發(fā)生偏移,假設x,y方向上最大偏移量分別為dx與dy。則在視頻當前幀中圍繞Blocki選定一個(M+2dx)*(N+2dy)搜索區(qū)域,根據(jù)最小總絕對誤差準則,公式如下:
其中,MAD即為Minimum Absolute Difference,最小絕對誤差,fk(s,t)和fk-1(s+i,t+j)分別表示當前幀和參考幀的灰度值,匹配塊大小為M×N,s,t分別表示匹配塊內(nèi)的x和y方向坐標,i,j分別表示當前幀可能的匹配塊與參考幀匹配塊在x,y方向坐標差值。利用該準則在搜索區(qū)域中進行最小匹配搜索,得到最佳匹配塊Block,然后計算Block與Blocki的坐標差(offsetX,offsetY)。塊搜索匹配算法如圖2。得到偏差之后,跟蹤算法在上一幀的檢測區(qū)域加上該偏差得到新的檢測區(qū)域(即將原來的檢測區(qū)域在x方向和y方向分別平移offsetX和offsetY距離得到新的檢測區(qū)域),然后跟蹤算法在此區(qū)域上做計算得到精確的目標位置。接下來將該位置更新為用于下一幀塊搜索匹配的Blocki+1。
(3)在接下的每一幀中,重復第二步的,即每次計算當前幀與上一幀的偏差,然后將該偏差補償至跟蹤算法上一幀的檢測區(qū)域得到當前幀的檢測區(qū)域,接著跟蹤算法在此區(qū)域上做計算得到精確的目標位置。同時更新塊Blocki+1。
至此便實現(xiàn)抖動視頻中目標跟蹤的功能。
本發(fā)明提出抖動視頻中目標跟蹤的方法,下面結合具體實施方式對本發(fā)明作進一步的詳細說明。
測試環(huán)境:Windows7 64位Microsoft Visual Studio 2015
首先從github上下載KCF跟蹤算法源代碼(KCF源代碼地址:https://github.com/joaofaro/KCFcpp),此算法在抖動視頻中跟蹤效果很差,經(jīng)常會跟蹤失敗。在此程序上加入塊搜索算法的函數(shù)代碼,該函數(shù)輸入?yún)?shù)為Mat類型的前一幀的匹配塊Block和當前幀的塊搜索區(qū)域,輸出參數(shù)為x方向的偏移值offsetX和y方向的偏移值offsetY。然后在main.cpp文件中定位至update函數(shù),原本該函數(shù)只有一個輸入?yún)?shù),即當前幀Mat類型數(shù)據(jù)。現(xiàn)在將update函數(shù)增加2個類型為整型的輸入?yún)?shù),分別為之前求得的x方向偏移值offsetX和y方向偏移值offsetY。接下來定位至update函數(shù)內(nèi)部,在其函數(shù)內(nèi)部將檢測區(qū)域_roi的x與y分別加上偏移值offsetX和offsetY。跟蹤算法的代碼其他部分均不變。跟蹤算法計算出精確的目標位置之后,將該位置更新為新的匹配塊位置,用于下一幀的塊搜索匹配。至此代碼部分修改完畢。
接下來采集了幾段無人機拍攝的視頻,其視頻抖動情況比較嚴重。經(jīng)測試,修改后的跟蹤算法在抖動嚴重的視頻中跟蹤效果均表現(xiàn)很好。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明請求保護范圍內(nèi)。