范長軍,文凌艷,毛泉涌,祝中科
(中國電子科技集團公司第五十二研究所,杭州 310012)
隨著無人機技術(shù)的發(fā)展和廣泛應用,通過無人機航拍視頻進行運動目標檢測與跟蹤,已成為計算機視覺、圖像處理以及模式識別領(lǐng)域備受關(guān)注的研究熱點[1].無人機場景下運動目標檢測與其他普通視頻檢測任務一樣面臨著遮擋、陰影、易受環(huán)境干擾等難題,但是又具有獨有的特點,面臨著特殊的挑戰(zhàn).比如,無人機所載重量有限,需要在受限的計算資源條件下,實現(xiàn)近乎實時的檢測效果.此外,在無人機視頻監(jiān)控場景中,不僅待檢測目標是運動的,攝像機也是運動的,容易造成前景與背景的混淆.并且,由于攝像機的運動、天氣的變化等因素,光照條件極易發(fā)生改變(甚至突變),這進一步增加了目標檢測的難度.
在無人機視頻監(jiān)控場景中,當前用于動態(tài)背景的運動目標檢測方法主要有兩類,分別為背景運動補償和光流法[2].
背景運動補償?shù)哪康氖菍z像機運動導致的背景運動去除.利用相鄰幀圖像中背景對應的特征點匹配來估計背景運動模型的參數(shù)[3],并根據(jù)計算得到的全局運動參數(shù)計算出當前幀中每個像素的移動速度,預測該像素在下一幀圖像中的位置,將目標的檢測轉(zhuǎn)化到靜止背景條件下.文獻[4-7]通過建模從前一幀到當前幀的背景模型,來適應由相機運動造成的背景動態(tài)變化,分別取得了不錯的效果,但是它們都沒有考慮所需的計算資源,很難在無人機平臺上達到實時的效果.在此基礎(chǔ)上,文獻[8,9]提出了改進的方法,減少了檢測時間,但仍無法滿足移動計算平臺的實時性要求.文獻[10]進一步通過利用單高斯模型對圖像塊進行背景建模的方法來降低時間開銷,有效地提高了運動目標檢測的效率,但是對光照變化較為敏感,當光照條件發(fā)生變化時,檢測效果大打折扣.
光流法通過估計并分割光流場,實現(xiàn)運動目標檢測.文獻[11,12]通過稠密光流場的方法來檢測運動相機所拍視頻中的運動目標,但由于需要計算的光流場的像素點太多,性能受到很大影響.文獻[13]采用了一種結(jié)合運動邊界和稀疏光流的運動目標檢測方法,達到了實時的效果,但是沒有充分考慮相機運動的情況.
針對以上問題,在文獻[10]改進的單高斯模型的基礎(chǔ)上,本文提出了一種結(jié)合單高斯與光流法的無人機視頻運動目標檢測方法.該方法首先通過改進的單高斯模型來進行背景建模,獲得前景圖像,然后將此前景圖像作為掩模,提取稀疏特征點,并進行光流檢測;最后對檢測跟蹤到的特征點進行層次聚類,并將運動目標框出.
改進的單高斯模型能有效應對運動相機場景下背景模型被前景像素干擾的問題,并具有實時的建模效率,但經(jīng)過實驗發(fā)現(xiàn),該方法對光照變化比較敏感.相對地,光流法對光照變化有一定的魯棒性,但由于機載相機是運動的,僅使用光流軌跡聚類進行目標檢測時,會出現(xiàn)大量背景像素被誤檢為前景目標的情況,并且航拍視頻往往對比度不高,檢測到的特征點在前景目標上分布較少.本文考慮將改進的單高斯模型與光流法相結(jié)合,使其在一定程度上實現(xiàn)優(yōu)勢互補.
總體的流程框架如圖1所示.針對每一幀視頻圖像,首先通過空間高斯濾波器和均值濾波器進行預處理;隨后,將圖像劃分為若干塊,對每塊圖像通過改進的單高斯模型來進行背景建模,以降低計算開銷;接著,將計算得到的前景圖像作為掩模,執(zhí)行稀疏特征點的提取與光流檢測;最后,對檢測跟蹤到的特征點進行層次聚類,勾畫出運動目標的外邊框.
圖1 總體流程框架
單高斯(Single Gaussion Model,SGM)背景模型基于一個基本假設,在一段時間內(nèi),圖像序列中的背景像素值應服從高斯概率分布.為了判斷t時刻對應圖像中某個點是否為前景點,需要基于前t-1幀圖像計算高斯背景模型的各個參數(shù),包括均值和方差.靜止相機的目標檢測往往具有固定的學習率,也即將一個像素的第一個觀測值作為無窮更新模型的均值,這對于需要運動補償?shù)倪\動相機而言是不合理的.為此,引入生命值l來逐幀更新SGM參數(shù),以應對隨著時間的推移背景像素產(chǎn)生的變化.
為了減少計算負載以達到實時效果,將每幀圖像劃分為了若干N×N大小的塊,以塊為單位進行SGM背景建模.定義第i塊圖像在t時刻的像素集合為Sit,則其包含像素的數(shù)目為將其中第j個像素在t時刻的強度表示為Itj,此塊對應的均值表示為μti,方差為σti,生命值為lti,則對應SGM的參數(shù)更新公式如下:
采用上述單高斯模型對背景建模容易造成背景模型被前景像素污染的問題,當有大物體緩緩略過視場時,現(xiàn)象較為明顯.由式(1)~(5)可知,背景建模從l=1時開始,在初始階段,學習率較大,如第二幀的學習率為0.5,隨后每一幀的學習率逐漸下降,初始階段學習率的快速變化加劇了上述污染問題的嚴重性.為此,采用了兩個單高斯模型來建模每幀圖像,一個是當前背景模型(Current SGM,簡稱CSGM),一個是備選背景模型(Optional SGM,簡稱OSGM),然后按照參數(shù)更新的頻率確定每幀圖像真實的當前背景模型.
將一幀圖像第i塊在t時刻的CSGM和OSGM模型的參數(shù),包括均值、方差和生命值,分別表示為對應的觀測均值表示為Uit,則如果滿足式(6),則更新CSGM的各項參數(shù),如果滿足式(7),則更新OSGM的各項參數(shù),并且當滿足式(8),即OSGM的更新頻率大于CSGM的更新頻率時,則將OSGM模型作為新的CSGM,并重新初始化OSGM.
上述方法能夠從兩個SGM中自動選擇合適的背景模型,即便其中幾幀圖像的前景像素對背景模型造成了影響,隨著時間的推移,更貼近真實背景的SGM模型更新次數(shù)變多,又會變成當前背景模型,有效避免了前景的不利影響.
對于運動相機而言,t-1時刻的SGM無法直接用于t時刻的目標檢測,需要進行運動補償.由于每個SGM對應于一個圖像塊,直接運動插值的方法在此處不適用,為此,采用融合t-1時刻SGM模型的方法來補償t時刻的模型.
將每幀圖像劃分成大小為2 4×18的多個網(wǎng)格,針對每個網(wǎng)格中的角點,先通過KLT[14]算法進行t-1時刻到t時刻的跟蹤,然后根據(jù)跟蹤的結(jié)果采用RANSAC[15]算法計算得到單應矩陣Ht:t-1,通過單應矩陣就可以計算得到t和t-1時刻兩幀圖像之間各點的對應關(guān)系.
假設t時刻第i塊圖像的中心點坐標為Cit,則可通過Ht:t-1映射得到其在t-1時刻的位置坐標以為中心的虛擬塊與t-1時刻的多個真實塊相重疊,通過融合此t-1時刻各塊的SGM的各項參數(shù),可得到t-1時刻的各參數(shù)以實現(xiàn)運動補償.
重疊塊的集合用Gti表示,融合所用到的權(quán)重用ωk(k∈Gti)表示,則模型融合的相關(guān)公式如下:
其中,權(quán)重ωk滿足一下條件:
當?shù)玫搅藅時刻的SGM模型后,通過計算某個像素點屬于背景模型的概率,即可分辨此像素點是前景還是背景.
上述改進的單高斯模型檢測運動目標具有較好的效果,但容易受到光照變化的影響,當前后幀圖像的光照條件發(fā)生變化時,容易導致檢測出“假前景”.為此在檢測的前景基礎(chǔ)上,通過光流法做進一步分析,排除因光照變化造成的前景誤判.為了降低光流運算量,此處采用稀疏光流分析法,它是基于特征點的跟蹤方法,在提取特征點時,采用上述檢測的前景圖像作為掩模.
為了進一步節(jié)省計算時間,采用毫秒級別的FAST特征提取方法.FAST(Features from Accelerated Segment Test)角點探測算法[15]于2006年被提出,該算法檢測的角點滿足以下特點: 在像素點的周圍鄰域內(nèi)有足夠多的像素點與該點處于不同的灰度區(qū)域.領(lǐng)域通常選擇以角點為中心、半徑為3的離散化圓形區(qū)域,如圖2所示.一個候選點是否為角點需通過如下角點響應函數(shù)來判斷,即
式中,o為中心像素點(即候選角點),p為以o為中心的圓周上的任意一點,I(o)為中心像素點的圖像灰度值,I(p)為圓周上點的圖像灰度值,ξ為給定的閾值,提取的角點數(shù)目與 ξ 負相關(guān),ξ越小,角點數(shù)目越多.根據(jù)上述角點響應函數(shù),統(tǒng)計圓周上滿足式(13)的像素點個數(shù)N.若N大于給定的閾值,就可以確定該候選點為角點.通常閾值取12,此閾值可以很快排除偽角點.
圖2 角點探測模板示意圖
在檢測到特征點以后就可以運用LK光流法匹配兩幀圖像之間的特征點得到光流圖.LK光流算法是由Lucas和Kanade于1981年提出的,由于算法易于應用在輸入圖像中的一組點上,成為了求稀疏光流的一種重要方法.LK光流算法能夠求解出兩幀圖像之間精確的稀疏光流,最初運用于圖像配準領(lǐng)域并逐漸應用于目標跟蹤.
由于LK光流法的跟蹤過程需要一個大的窗口來捕捉大的運動,而大窗口往往會違背運動連貫的假設,導致檢測效果不太理想.金字塔LK光流法最初在較大的空間尺度上進行跟蹤,然后通過對圖像金字塔自頂向下直到圖像像素的處理來修正初始運動速度的假定,有效解決了這個問題.也即,在圖像金字塔的最高層計算光流,用得到的運動估計結(jié)果作為下一層金字塔的起始點,重復這個過程直到金字塔最底層.
稀疏光流分析法的總體算法流程如下:
1)讀入一幀圖像,對其進行灰度化操作,若當前處理的是第一幀圖像,只初始化相應參數(shù),否則轉(zhuǎn)步驟2);
2)采用FAST算法計算得到前一幀圖像的特征點集合PreFeaturePtSet,獲取原跟蹤點的運動軌跡在前一幀的位置集合PreTrackPtSet;
3)計算PreFeaturePtSet集合中的特征點與PreTrackPtSet集合中的各跟蹤點之間是否存在歐式距離小于閾值的情況,如果不存在,則認為該特征點是新出現(xiàn)的需要跟蹤的點,將其加入PreTrackPtSet集合中;
4)對PreTrackPtSet中的跟蹤點在前一幀和當前幀圖像間進行LK金字塔光流檢測,得到在當前幀的位置集合CurTrackPtSet;
5)根據(jù)檢測的結(jié)果依次處理各類跟蹤點.對已存在運動軌跡的原跟蹤點,如果檢測到光流,則更新跟蹤點在當前幀的位置為CurTrackPtSet中的對應點,并更新其last_update_index為當前幀序號;如果沒有檢測到光流,則繼承上一幀的跟蹤結(jié)果,不更新其last_update_index.對檢測到光流的新跟蹤點,為其建立運動軌跡對應的數(shù)據(jù)結(jié)構(gòu),并按上述方法更新;
6)判斷每個跟蹤點的last_update_index與當前幀序號之間的差值大小,若大于閾值,意味著該點對應的運動軌跡長時間沒有被更新,則刪除;
7)統(tǒng)計各跟蹤點運動軌跡對應在每幀圖像的位置變動,若隨著時間推移,該跟蹤點在每幀圖像間的位置變動不大,則刪除.繼續(xù)執(zhí)行步驟1).
檢測到的每一幀圖像的特征點是稀疏的局部運動像素點,這些點可能屬于一個或多個運動目標.為了有效檢測并區(qū)分出不同的運動目標,需要對其做進一步聚類處理.聚類的算法種類繁多,常用的有k-means[16,17]等.但k-means方法需要人為設定k值和初始化聚類中心點,不適用于多運動目標檢測的場景.為了避免這些問題,此處選擇一種比較實用的聚類算法—層次聚類.
層次聚類算法有凝聚和分裂兩種方式,取決于層次分解是自底向上(合并)還是以自頂向下(分裂)的.凝聚的層次聚類方法使用自底向上的策略,開始時每個對象都是一個獨立的類(N個),然后逐次找出兩個距離最近的類進行合并,所以最多進行N次迭代就將所有對象合并到一起了.分裂的層次聚類方法使用自頂向下的策略,開始時所有對象都在同一個類中,然后不斷的劃分成多個更小的類,直到最小的類都足夠凝聚或者只包含一個對象.
本文采用凝聚的層次聚類算法,將屬于同一運動目標的稀疏特征點聚成一類,并在對應幀圖像上畫出運動目標的外邊框.凝聚的層次聚類算法原理:
輸入: 給定要聚類的N個特征點以及N×N的距離矩陣(或者是相似性矩陣)
步驟:
1)將每個特征點歸為一類,共得到N類,每類僅包含一個特征點,類與類之間的距離就是它們所包含的特征點之間的距離;
2)找到距離最近的兩個類并合并成一類,于是類別個數(shù)減一;
3)重新計算合并的新類與所有舊類之間的距離;
4)重復步驟2)和步驟3),直到兩類間的距離不小于距離閾值;
根據(jù)步驟3)的不同,可將層次聚類方法分為: 單連接算法、全連接算法以及平均連接算法.其中單連接采用的是最小距離,全連接采用的是最大距離,平均連接采用的是平均距離,各距離公式的定義如下,其中|p-p'|是兩個特征點p和p'之間的距離.
為驗證本文提出算法的有效性,主要采用了兩個無人機視頻數(shù)據(jù)集,分別是VIVID-PETS 2005[18]和Stanford Drone Dataset[19].前者由運動的無人機采集得到,相機的運動速度較快,所以背景也存在快速地運動,并包含有光線變化的樣本集;后者是無人機在校園高空拍攝所得,無人機處于盤旋的狀態(tài),背景的運動較小,目標也很小.下述實驗的運行平臺是處理器為Intel Core i7-6700 3.4 GHz,內(nèi)存為DDR4 16 G的PC機.
圖3所示為金字塔LK光流法、改進的單高斯方法以及本文方法在VIVID-PETS 2005的egtest05數(shù)據(jù)集上的對比效果.從數(shù)據(jù)集第257幀原圖中可以看到,無人機在運動過程中,拍攝到地面上有兩輛汽車正在行駛(其中一輛被樹遮擋,僅漏出一小塊表面).由于樹的遮擋、背景的運動等原因,在不使用掩模的情況下,光流法檢測到的前景有大量的誤檢,如圖3(b)所示;通過改進的高斯方法對運動背景進行建模,并分離出前景目標圖像,得到圖3(c)所示結(jié)果,可看到由于光照的變化,該方法也檢測出了一些“假前景”;當將上述兩種方法結(jié)合起來,即將后者分離得到的前景圖像作為前者特征提取的掩模后,較好的檢測出了兩個運動目標,并排除了大量的虛警,如圖3(d)所示.
為了考察光照變化以及大目標緩慢運動對檢測效果的影響,采用了光線劇烈變化的LIMU[20]室內(nèi)部分數(shù)據(jù)集.在此數(shù)據(jù)集上,先通過改進的單高斯模型進行前景的提取(如圖4(c)~(d)),然后通過本文提出的方法檢測圖中的運動目標(如圖4(e)~(f)),并對兩種方法進行比較.
圖3 三種方法運動目標檢測效果對比
圖4 光線變化對目標檢測效果的影響
從圖4中可以看到,從數(shù)據(jù)集的第59幀到第60幀,房間的光線變暗了,由此導致了直接采用改進的單高斯模型提取的前景圖像效果變差,出現(xiàn)了大量的誤檢測點,如圖4(d)所示.但是采用本文提出的方法,仍然得到了較為理想的檢測結(jié)果,如圖4(f)所示.
表1中是在VIVID-PETS 2005和Stanford Drone Dataset的部分數(shù)據(jù)集上,執(zhí)行本文的運動目標檢測算法后,每幀圖像的計算耗時,以及與運動相機場景下兩種近似實時的運動目標檢測算法(文獻[9]和文獻[10])的性能比較,三者的測試結(jié)果分別對應表中的方法1、2、3.其中,本文方法圖像塊的大小N設置為4,表中時間的單位為毫秒(ms).
表1 各運動目標檢測算法耗時情況對比
從表中可以看出,由于本文的方法整合了改進的單高斯模型和金字塔LK光流法,因此耗時比文獻[10]略高,但是比文獻[9]的方法仍然有很大優(yōu)勢,能夠在存在運動背景的場景下快速準確地進行運動目標檢測,滿足無人機平臺的實時性要求.
本文設計了一種結(jié)合了改進單高斯與光流分析的算法,以進行無人機航拍視頻圖像的運動目標檢測.該方法使用改進的單高斯模型來進行背景建模和運動補償,并計算得到前景圖像;然后將其作為掩模,采用FAST算法提取稀疏特征點,并采用金字塔LK光流法進行光流檢測和跟蹤;最后,通過層次聚類將屬于同一個運動目標的前景圖像歸為一類,勾畫出運動目標的外邊框.通過實驗驗證與分析,該方法能有效地處理運動相機造成的前景對背景模型的干擾,背景建模速度快,對光照變化具有一定的容忍度,檢測出的目標接近真實目標.