杜 瑾,蘇 雨,張義飛,鄒 坤
(1.中國空空導(dǎo)彈研究院,河南 洛陽 471000;2.空基信息感知與融合全國重點實驗室,河南 洛陽471000;3.西北工業(yè)大學(xué),陜西 西安 710072;4.中航光電科技股份有限公司,河南 洛陽 471000)
相機(jī)等攝影錄像設(shè)備的廣泛使用和互聯(lián)網(wǎng)信息的快速傳播帶來了大量視頻數(shù)據(jù),目標(biāo)在這些數(shù)據(jù)中占較小比例卻包含了大部分信息量[1]。作為處理視頻的計算機(jī)視覺任務(wù)的第一步,運(yùn)動目標(biāo)檢測為視頻中運(yùn)動目標(biāo)“在哪里”的問題提供可靠信息,可以高效提取視頻數(shù)據(jù)信息,在智能視頻監(jiān)控、智能交通系統(tǒng)、航空航天、國防軍事等需要自動分析視頻的領(lǐng)域有著潛在經(jīng)濟(jì)價值和良好應(yīng)用前景[2,3]。運(yùn)動目標(biāo)檢測的任務(wù)是確定視頻幀中運(yùn)動目標(biāo)所在區(qū)域,即分離視頻中的前景運(yùn)動目標(biāo)和背景,為視頻每一幀生成指示運(yùn)動目標(biāo)的二值圖。
背景減除法是較為常用的運(yùn)動目標(biāo)檢測算法,其關(guān)鍵步驟是將背景圖像與當(dāng)前圖像的像素、區(qū)域等進(jìn)行比較,從而獲得運(yùn)動目標(biāo)所在區(qū)域[4]。依照建模方式,背景減除法可分為基于參數(shù)的方法、基于樣本的方法、基于低秩的方法和基于深度神經(jīng)網(wǎng)絡(luò)的方法[2]。基于樣本的背景減除法應(yīng)用較為廣泛,通常是通過收集一系列樣本值來建立背景模型。Barnich等[5]提出的視覺背景提取算法(visual background extractor,Vibe)是較流行的基于樣本的方法之一,其核心是利用第一幀圖像內(nèi)各像素的鄰域像素產(chǎn)生背景樣本,通過判別當(dāng)前幀各像素點和背景樣本的相似度來區(qū)分前景和背景像素。該算法只需利用一幀圖像的鄰域像素完成初始化,且計算量小、內(nèi)存占用小,由于其快而準(zhǔn)的檢測能力而受到越來越多的關(guān)注[6]。
原始Vibe 算法采用保守更新的方式,不能及時更新背景模型以適應(yīng)背景變化,因此利用Vibe 算法檢測運(yùn)動目標(biāo)的挑戰(zhàn)之一是易引入“鬼影”[7]。如果Vibe 的背景樣本中包含運(yùn)動區(qū)域像素,當(dāng)運(yùn)動目標(biāo)離開該區(qū)域時,該區(qū)域一系列聯(lián)結(jié)的像素點會被誤判為前景運(yùn)動目標(biāo),即“鬼影”(“ghosts”)。因此,若視頻初始幀包含的運(yùn)動目標(biāo)或原本靜止的運(yùn)動目標(biāo)開始運(yùn)動,會出現(xiàn)鬼影現(xiàn)象,即原本屬于背景的像素被錯誤分類為前景像素。每幀檢測結(jié)果中的鬼影作為虛假目標(biāo),其所在區(qū)域的像素在檢測結(jié)果中屬于對運(yùn)動目標(biāo)的誤檢像素,且可能與真實目標(biāo)區(qū)域的像素粘連,導(dǎo)致難以將視頻幀中的前景運(yùn)動目標(biāo)準(zhǔn)確提取出來,這會對運(yùn)動目標(biāo)檢測的后續(xù)任務(wù)造成干擾[8]。如何快速有效地消除鬼影是運(yùn)動目標(biāo)檢測算法需要解決的問題之一[9]。本文對這一問題進(jìn)行研究,提出使用時域區(qū)間參考模塊來已知鬼影,以達(dá)到準(zhǔn)確提取運(yùn)動目標(biāo)的目的。
針對鬼影問題,文獻(xiàn)[7]、文獻(xiàn)[10]和文獻(xiàn)[11]都提出在背景模型中加入計算像素被判定為前景次數(shù)的模塊,但該方法需依據(jù)經(jīng)驗提前設(shè)定全局計數(shù)閾值,對復(fù)雜場景適應(yīng)性較差。利用鬼影區(qū)域與運(yùn)動目標(biāo)區(qū)域的鄰域特性存在差異(如方差[12]、直方圖[6,13,14]等),可以確定鬼影像素點,但此類方法對時間信息利用不足??紤]到初始化背景樣本中包含運(yùn)動區(qū)域像素是引入鬼影的因素,文獻(xiàn)[11]和文獻(xiàn)[15]都采用前幾幀作為初始化背景樣本選取的范圍,使得初始化背景模型包含背景信息,但該方法對于后續(xù)視頻幀中原本靜止的目標(biāo)轉(zhuǎn)為運(yùn)動狀態(tài)產(chǎn)生的鬼影抑制效果較差。上述方法對Vibe 算法的改進(jìn)方式主要可分為兩類,或是在Vibe 算法背景初始化階段利用視頻某幾幀來擴(kuò)大背景樣本抽取范圍,或是利用一定的手段確定鬼影區(qū)域再對其進(jìn)行處理[3]。為充分利用視頻幀序列的時空信息,本文將利用多個視頻幀與判別鬼影的改進(jìn)方式綜合考慮,提出利用時域區(qū)間內(nèi)的像素信息來區(qū)分鬼影像素與運(yùn)動目標(biāo)像素,在識別出鬼影像素后將其劃分為背景像素,從而緩解鬼影現(xiàn)象。
本算法研究對象是視頻中的運(yùn)動目標(biāo),因此選擇運(yùn)動目標(biāo)檢測常用的CDnet2014[16]數(shù)據(jù)集中的視頻序列作為實驗對象。本文提出的TIR-Vibe 算法相比原始Vibe 算法加入了時域區(qū)間參考(temporal integral reference,TIR)模塊,該模塊利用連續(xù)視頻幀區(qū)間內(nèi)同一位置像素的統(tǒng)計值,以該統(tǒng)計值作為二次判別前景像素的參考依據(jù),通過比較當(dāng)前幀前景候選像素與參考值的差異來識別鬼影像素,從而去除誤判為前景的鬼影像素,最終實現(xiàn)對視頻序列中運(yùn)動目標(biāo)的檢測。
Vibe 算法是一種基于樣本一致性進(jìn)行建模的背景減除法,本文為緩解原始Vibe 算法帶來的鬼影問題,加入了時域區(qū)間參考模塊來改進(jìn)Vibe算法。
Vibe 算法為每個像素建立的背景模型M(x) ={v1,v2,…,vN}為N個背景樣本的集合(N取值為20 時效果最好[5]),模型建立在圖1 所示的2D 歐式顏色空間(C1,C2)內(nèi),其中,v(x)為當(dāng)前像素,vi為第i個背景樣本,圖1中展示了N= 6時v(x)的背景模型,其中每個黑色實心圓表示v(x)的每個背景樣本[5]。與其他常用的背景減除法不同,Vibe 算法根據(jù)鄰近像素具有相似性的思想,只需一幀圖像即可完成模型初始化。對于第一幀圖像中的各像素,其背景模型是通過在其鄰域中隨機(jī)選取N次像素填充而得到的。
圖1 像素v(x)的背景模型
與其他背景減除法的判定思想相同,V i b e 算法根據(jù)像素與背景模型的相似程度來判定像素為背景或者前景,其判別指標(biāo)是距離閾值R和決策閾值#min。具體而言,如圖1 所示,在當(dāng)前像素v(x)的所有背景樣本中,如果樣本在以該像素為中心、半徑為R的圓內(nèi)(滿足dist(v(x),vi)<R),則認(rèn)為像素與該背景樣本匹配,這樣的樣本的個數(shù)記為#R,即#Rv(x) =#{SRv(x) ?{v1,v2,…vN}}。然后,將#R與設(shè)定好的決策閾值#min比較,如果#R小于#min,則判定其為前景像素,否則認(rèn)為該像素與其背景模型相似程度較高,把該像素分類為背景像素,并更新其背景模型[5]。
依據(jù)是否將前景像素點包含到模型中,背景減除法更新機(jī)制分為保守更新機(jī)制和盲目更新機(jī)制。保守更新的模型不包含前景像素,但在靜止的背景物體突然開始移動的情況下(比如,停著的車開始行駛)會引起“死鎖”,即被錯誤分類為前景的背景樣本并不會被加入背景模型中;盲目更新機(jī)制會把前景像素包含進(jìn)背景模型,但同時也意味著不能有效檢測出移動速度很低的運(yùn)動目標(biāo)。Vibe 算法采取的是保守更新機(jī)制,并引入無記憶更新、隨機(jī)時間子采樣和鄰域像素空間傳播的樣本更新策略。如果某個像素經(jīng)判別被認(rèn)為是背景像素,則從它的背景模型中隨機(jī)抽出一個樣本替換為當(dāng)前像素,而不是“先進(jìn)先出”的替換方法,這種無記憶更新的方式保證了每一個樣本更新概率相同,都有指數(shù)平滑衰減壽命,從而提高算法的魯棒性[17]。由于在現(xiàn)實場景中,并非需要更新每一幀像素的每一個背景樣本,因此,Vibe 引入了隨機(jī)時間子采樣,并引入時間子采樣因子Φ(Φ = 16)[5]。出于空間一致性的考慮,在更新某個像素的背景模型的同時,其鄰域像素的背景模型也會被隨機(jī)更新,即空間擴(kuò)散。綜合以上策略,若v(x)被判定為背景像素,則以1/Φ 的概率隨機(jī)選取背景模型中的一個樣本并用該像素值代替樣本值,同時以相同的概率隨機(jī)替換其鄰域像素的背景樣本。
為說明“鬼影”問題,截取CDnet2014 的baseline視頻組中highway 視頻序列第1000 幀以后的序列幀,即以原1001 幀作為新視頻序列初始化幀。由于highway 序列第1001 幀中含有運(yùn)動目標(biāo),當(dāng)使用原始Vibe 算法時,這些目標(biāo)區(qū)域像素會被包含到初始化背景樣本,使得后續(xù)幀中該區(qū)域被誤檢為前景。如圖2所示,對第1001幀對應(yīng)groundtruth圖中的運(yùn)動目標(biāo)用外接矩形框指示,同樣位置和大小的方框在后續(xù)第1201幀的檢測結(jié)果圖對應(yīng)的區(qū)域內(nèi)出現(xiàn)鬼影,可以看出,經(jīng)過200幀后原始Vibe算法仍未完全消除鬼影像素。
圖2 “鬼影”現(xiàn)象
如前所述,因Vibe 算法采取了保守的背景更新方式,所以易出現(xiàn)“鬼影”問題,盡管其樣本更新策略可使鬼影像素慢慢吸收進(jìn)背景模型中,但經(jīng)過較多幀數(shù)后才可將鬼影區(qū)域完全消除,對檢測準(zhǔn)確度不利。本文基于視頻幀序列中背景部分占有較大比例的規(guī)律,使用一定長度時域區(qū)間內(nèi)多個連續(xù)視頻幀的像素統(tǒng)計值獲得背景參考,根據(jù)像素值與背景參考的差異區(qū)分出前景像素與鬼影像素,并將鬼影像素歸為背景像素,以實現(xiàn)對鬼影的抑制。
對于一個視頻幀序列,將其按照選定的時域區(qū)間長度劃分為若干區(qū)間,例如,一個200 幀的視頻序列按照25 幀的時域區(qū)間長度將劃分為8 個區(qū)間。在時域區(qū)間內(nèi),均值和眾數(shù)在一定程度上可反映像素值時間分布的總體情況和出現(xiàn)頻次,而中位數(shù)可以降低異常像素值的影響,本文的時域區(qū)間參考模塊綜合利用這些統(tǒng)計數(shù)。在本文提出的時域區(qū)間參考模塊中,使用每一區(qū)間內(nèi)的每個視頻幀在同一位置處的像素值組成該位置像素的時域區(qū)間集合,綜合使用取均值、取中位數(shù)等統(tǒng)計方式對該集合進(jìn)行處理,獲得該集合的像素統(tǒng)計值,該像素統(tǒng)計值即該位置處像素在該區(qū)間內(nèi)獲得的時域區(qū)間參考值,以該值作為辨識鬼影像素與前景像素的背景參考值。通過對視頻幀每個位置處像素作上述統(tǒng)計學(xué)處理,便可獲得對應(yīng)的時域區(qū)間參考幀,時域區(qū)間參考幀相當(dāng)于對視頻畫面中運(yùn)動目標(biāo)所占區(qū)域做了一定的時域平滑處理,以使該區(qū)域像素取值偏離原本的運(yùn)動目標(biāo)像素而更接近背景像素。
圖3(c)、圖3(d)和圖3(e)展示了以pedestrians 視頻序列第701 幀至725 幀為時域區(qū)間時,分別取時域上的均值、眾數(shù)和中位數(shù)的情況下獲得的參考幀。設(shè)選定的時域區(qū)間長度為m,即該區(qū)間內(nèi)有m個連續(xù)視頻幀,以這m幀圖像中同一位置處像素作為統(tǒng)計對象,該位置處的背景像素參考值是按照以下方式做統(tǒng)計處理而獲取的,記為由第k個區(qū)間獲得的時域區(qū)間參考幀,則由第k個區(qū)間獲得的視頻幀中(x,y)處背景像素參考值(x,y)為[18]:
圖3 時域區(qū)間參考幀
公式(1)中,mode、mean 和median 分別表示統(tǒng)計一組數(shù)據(jù)的眾數(shù)、平均數(shù)和中位數(shù)。{(x,y)}k表示第k個區(qū)間內(nèi)m幀圖像中(x,y)處像素ft(x,y)的集合。
利用上述背景像素參考值,對上一節(jié)介紹的算法檢測出的前景像素做進(jìn)一步處理,以這些前景像素為前景候選像素,然后對這些前景候選像素進(jìn)一步作前景像素和鬼影像素的區(qū)分,區(qū)分依據(jù)是歐氏空間內(nèi)像素的距離。若fg'(x,y)為經(jīng)上一節(jié)算法判別出的前景像素(即前景候選像素),則鬼影像素的判別規(guī)則如公式(3)所示。
其中,SegMap(x,y)表示二值分割圖中(x,y)的像素,dist表示歐式距離,fg表明將當(dāng)前像素分類為前景像素,ghost則表明當(dāng)前像素為鬼影像素,應(yīng)當(dāng)歸為背景像素。若前景候選像素與背景像素參考值的距離小于距離閾值,則認(rèn)為該像素位于鬼影區(qū)域,將該像素分類為背景像素。鬼影像素也應(yīng)當(dāng)吸收進(jìn)背景模型中,按照Vibe 算法的無記憶更新策略和隨機(jī)時間子采樣策略,更新鬼影像素對應(yīng)的背景樣本模型,即以1/Φ 的概率隨機(jī)替換其背景模型中的某個樣本為該像素值。圖4(c)中左側(cè)白色區(qū)域為鬼影,圖4(b)是利用時域區(qū)間參考模塊獲得的背景參考幀,比較圖4(c)和圖4(d)可以看出利用時域區(qū)間參考,檢測結(jié)果左側(cè)的鬼影得到了抑制。
圖4 時域區(qū)間參考與鬼影
實驗平臺是Windows 10 操作系統(tǒng)的電腦,使用MATLAB R2017a在CDnet2014[13]數(shù)據(jù)集上進(jìn)行驗證,該數(shù)據(jù)集為視頻連續(xù)幀提供有前景目標(biāo)的參考真值圖像,其中,highway、pedestrians等涉及監(jiān)控場景的視頻包含了一般場景需要應(yīng)對的噪聲、動態(tài)背景等挑戰(zhàn),因而可被用作評價運(yùn)動目標(biāo)檢測算法通用性的測試數(shù)據(jù)。
為驗證算法的鬼影抑制效果,分別從highway 序列第1001 幀和pedestrians 序列第601 幀開始截取視頻幀序列,記為high 序列和pedes 序列,以這兩個首幀含有運(yùn)動目標(biāo)的視頻序列作為待處理視頻序列。
Vibe 算法和本文算法對high 序列和pedes 序列的處理結(jié)果可通過圖5 直觀比較,圖5(a)自左至右對應(yīng)high 序列第26 幀、第101 幀、第201 幀,圖5(b)自左至右對應(yīng)pedes 序列第30 幀、第66 幀、第115 幀,圖5(a)和圖5(b)自上至下對應(yīng)輸入幀、groundtruth、原始Vibe 檢測結(jié)果和本文算法檢測結(jié)果。以high 序列為例,其以highway 視頻幀序列第1001 幀為初始化幀,原始Vibe 算法對high 序列的檢測結(jié)果中明顯出現(xiàn)了鬼影現(xiàn)象。經(jīng)25 幀后,本文算法已將大部分鬼影區(qū)域消除,而在原始Vibe 算法的檢測結(jié)果中,仍可以清晰看出初始化幀中的運(yùn)動目標(biāo)的外觀和所在區(qū)域,而這些區(qū)域內(nèi)像素應(yīng)被歸為背景;經(jīng)200 幀后,本文算法的檢測結(jié)果中已幾乎不存在鬼影像素,而原始Vibe 算法檢測結(jié)果的左下區(qū)域和右上區(qū)域仍存在較多鬼影像素。對于pedes 序列,統(tǒng)計初始幀(即pedestrians 序列第600幀)運(yùn)動目標(biāo)在后續(xù)幀檢測結(jié)果中引起的鬼影像素的個數(shù),本文算法的時域區(qū)間長度取為25,由于本文不涉及對陰影的研究,故陰影引起的鬼影像素不在計數(shù)范圍內(nèi)。后續(xù)幀中該區(qū)域內(nèi)前景像素個數(shù)如圖6所示,本文算法經(jīng)50幀左右已基本將鬼影消除,而Vibe算法經(jīng)250幀左右仍只抑制了部分鬼影像素。
圖5 鬼影抑制效果
圖6 鬼影像素個數(shù)的變化
本文使用的CDnet2014 數(shù)據(jù)集關(guān)于運(yùn)動目標(biāo)像素的參考真值數(shù)據(jù)可用,因而使用像素級的定量評價指標(biāo)作為算法性能的評價標(biāo)準(zhǔn)[1]。定量評價指標(biāo)基于TP、TN、FP、FN這4 個參數(shù),即混淆矩陣的4個分類(如圖7所示)。
圖7 混淆矩陣的4個分類
常用的運(yùn)動目標(biāo)檢測指標(biāo)包括準(zhǔn)確度、召回率和F1值。準(zhǔn)確度反映算法對運(yùn)動目標(biāo)所在區(qū)域的檢測準(zhǔn)確度,召回率描述算法對運(yùn)動目標(biāo)包含像素的檢測完整情況,F(xiàn)1 值則是調(diào)和平均二者所得的值。依據(jù)以上指標(biāo)構(gòu)建的曲線也可用來表示算法的性能,在運(yùn)動目標(biāo)檢測評價中常用的曲線是precisionrecall(P-R)曲線。理想情況下,準(zhǔn)確度和召回率越高,P-R 曲線越靠右上角,F(xiàn)1 值越大,表明算法具有越好的性能。
圖8 展示了在pedes 序列和pedestrians 序列上,Vibe 算法、三幀差法、混合高斯模型法(GMM)以及本文算法的檢測結(jié)果的P-R 曲線。通過圖9 中的P-R曲線可看出,本文算法對應(yīng)的曲線均比其他算法對應(yīng)的曲線更靠近右上角,即本文算法具有更高的檢測準(zhǔn)確度和完整度。對于首幀存在運(yùn)動目標(biāo)的pedes序列來說,本文算法與原始Vibe 算法的P-R 曲線差異更為明顯,這表明本文算法可以提升抑制鬼影性能,并改善算法的檢測性能。
圖8 P-R曲線示意圖
圖9 不同算法在各序列幀上的檢測結(jié)果
圖9 中,自左至右分別為待處理視頻幀、檢測結(jié)果參考真值、三幀差法檢測結(jié)果、混合高斯模型法檢測結(jié)果、Vibe 算法檢測結(jié)果和本文算法檢測結(jié)果,表1 給出了各算法檢測結(jié)果的準(zhǔn)確度、召回率和F1 值,其中總體一欄對應(yīng)的性能指標(biāo)為各序列上性能指標(biāo)的平均數(shù)。high 序列、pedes 序列和PETS2006 序列的初始幀中含有運(yùn)動目標(biāo),從圖9(a)-(d)、圖9(i)-(j)可以看出鬼影影響了Vibe 算法檢測結(jié)果的準(zhǔn)確度,而本文算法的檢測結(jié)果中幾乎不存在鬼影。此外,三幀差法的檢測結(jié)果完整度較差,對應(yīng)著較低的召回率;混合高斯模型法召回率相對較高,但同時也為檢測結(jié)果引入了過多噪點,會對運(yùn)動目標(biāo)檢測后續(xù)任務(wù)造成額外干擾。
表1 各算法檢測結(jié)果評價
從圖9中各算法對不同序列的檢測結(jié)果可看出,本文算法魯棒性較好,不僅可較好地消除鬼影,而且對噪點也有一定的抑制作用。對于highway 和pedestrians 序列,本文算法的F1 值分別比Vibe 算法提高了13.69%和6.42%;對于初始幀有運(yùn)動目標(biāo)存在的high 序列和pedes 序列,本文算法具有最高的準(zhǔn)確度,且F1 值分別比Vibe 算法提高了14.02%和20.40%,這進(jìn)一步驗證了本文算法通過加入時域區(qū)間參考模塊可以改進(jìn)對鬼影的抑制效果。從總體結(jié)果來看,本文算法有著最高的準(zhǔn)確度和F1值,而在各測試序列中,本文算法與其他算法相比都對應(yīng)了最高的F1 值,這表明本文算法可以同時較為準(zhǔn)確而完整地檢測出運(yùn)動目標(biāo)。實驗表明,本文提出的時域區(qū)間參考模塊對原始Vibe 算法有明顯的改善作用,且對于首幀包含目標(biāo)的視頻序列改進(jìn)效果更為顯著。
Vibe 算法作為一種經(jīng)典的運(yùn)動目標(biāo)檢測算法,可以較好地檢測出運(yùn)動目標(biāo),但由于其保守更新背景模型,在檢測初始幀存在運(yùn)動目標(biāo)的視頻序列時會出現(xiàn)鬼影現(xiàn)象。本文針對Vibe 算法的這一問題進(jìn)行研究,在原始算法框架的基礎(chǔ)上引入更多的時空信息,在判別前景目標(biāo)像素時加入了一個時域區(qū)間參考模塊,通過像素值與參考值之間的差異性進(jìn)一步確定背景像素和運(yùn)動目標(biāo)像素,以便去除原始算法產(chǎn)生的誤檢像素點。實驗結(jié)果表明,本文所提出的加入時域區(qū)間參考模塊的算法可有效抑制鬼影像素,提高運(yùn)動目標(biāo)檢測的準(zhǔn)確率,具有較好的檢測性能。