李善超,車國霖,張 果,楊曉洪
(昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500)
運(yùn)動目標(biāo)檢測在智能視頻監(jiān)控的應(yīng)用中扮演著重要的角色,是計(jì)算機(jī)視覺領(lǐng)域的一個研究熱點(diǎn)[1].運(yùn)動目標(biāo)檢測的實(shí)質(zhì)是在視頻序列中定位運(yùn)動中的目標(biāo),而準(zhǔn)確的前景檢測是目標(biāo)分類、目標(biāo)跟蹤和行為識別研究的重要基石[2,3].運(yùn)動目標(biāo)檢測算法按類別可分為幀差法[1]、光流法[4]、背景建模法[5,6]3種.幀差法原理簡單且易于設(shè)計(jì),然而其檢測結(jié)果存在空洞和鬼影的問題.光流法雖然精度高,但由于其計(jì)算量大,不適用于對實(shí)時性有較高要求的場景.背景建模法是在初始化過程中構(gòu)建出由背景樣本組成的模型,并將當(dāng)前幀與背景模型進(jìn)行差分,從而對像素進(jìn)行分類,最后得到運(yùn)動目標(biāo).其具有精度高實(shí)時性好的特點(diǎn).背景模型的準(zhǔn)確性決定了背景建模法的檢測精度,主要影響檢測精度的因素有鬼影問題、動態(tài)背景、噪聲干擾等[7].
高斯混合模型(GMM,Gaussian mixture model)[8]是運(yùn)動目標(biāo)檢測算法中最為經(jīng)典的算法,其本質(zhì)是基于像素樣本統(tǒng)計(jì)信息的背景建模方法,能夠?qū)?fù)雜背景進(jìn)行準(zhǔn)確建模,然而其計(jì)算復(fù)雜度較高.GMG算法[9]是統(tǒng)計(jì)背景模型的概率,采用貝葉斯逐像素分割,但在動態(tài)場景中其檢測精確度較低.核密度估計(jì)算法(KDE,Kernel Density Estimation)[10]是一種非參數(shù)背景建模方法,其通過大量的背景樣本估算背景像素的概率密度函數(shù),從而根據(jù)像素背景概率來分類像素,然而其內(nèi)存占用與計(jì)算復(fù)雜度都較高.Barnich等人[11,12]于2009年提出一種非參數(shù)化視頻背景提取算法(ViBe,Visual Background Extractor),該算法是為每個像素設(shè)置一個樣本集,并與新幀像素進(jìn)行閾值比較,從而對像素進(jìn)行分類,其具有實(shí)時性好、魯棒性高和易于集成于嵌入式設(shè)備的特點(diǎn).然而ViBe算法仍存在一些不足,限制了其在動態(tài)場景中的應(yīng)用.例如:1)當(dāng)初始化圖像中存在運(yùn)動中的目標(biāo)時,ViBe算法會在后續(xù)幀中檢測到鬼影,降低了算法的檢測精度且鬼影消除時間長;2)ViBe算法在動態(tài)場景中檢測精度低,容易受動態(tài)噪聲干擾;3)ViBe算法的背景模型更新策略無法適應(yīng)背景動態(tài)的變化.
針對ViBe算法存在的問題,本文提出一種自適應(yīng)運(yùn)動目標(biāo)檢測算法.本文將從以下3個方面對ViBe算法進(jìn)行改進(jìn).1)采用鬼影檢測法標(biāo)記鬼影區(qū)域并強(qiáng)制引入背景樣本,加速鬼影的抑制;2)采用自適應(yīng)匹配閾值的方法進(jìn)行像素分類,提高算法抗干擾的能力;3)根據(jù)像素分類的匹配值動態(tài)調(diào)整更新因子,提高算法適應(yīng)場景變化的能力.本文采用CDNET數(shù)據(jù)集中dynamicBackground視頻類中的5個視頻序列和3組河流漂浮物的視頻序列進(jìn)行研究,以本文算法和其他5種算法為例,定性、定量對實(shí)驗(yàn)結(jié)果做出質(zhì)量評價和分析.研究結(jié)果表明,本文算法相較于ViBe算法在召回率、精確率和F度量值方面均有提高,錯誤分類比更低,達(dá)到了預(yù)期的目標(biāo).
ViBe算法是基于樣本隨機(jī)聚類的背景建模算法,具有運(yùn)算效率高、易于設(shè)計(jì)、易于集成嵌入設(shè)備的特點(diǎn),能夠?qū)崿F(xiàn)快速的背景建模和運(yùn)動目標(biāo)檢測.算法的步驟包括背景模型初始化、像素分類過程和背景模型更新.
1)背景模型定義:ViBe算法的背景模型是由N個背景樣本組成的,v(x)是像素x的像素值,則背景模型M(x)定義如公式(1)所示:
M(x)={v1(x),v2(x),…,vN(x)}
(1)
2)背景模型初始化:ViBe算法利用視頻序列第1幀建立背景模型,從第2幀開始算法就可以有效地檢測運(yùn)動目標(biāo).背景模型初始化是在像素x的8鄰域NG(x)中選取一個像素值作為背景樣本,重復(fù)N次,如公式(2)所示:
(2)
3)隨機(jī)選取策略:背景建模時,背景樣本始終采用隨機(jī)選取鄰域像素的策略,以使背景模型更加穩(wěn)定可靠.
ViBe算法采用計(jì)算歐氏距離來進(jìn)行像素的分類.SR(v(x))是以像素值v(x)作中心,匹配閾值R為半徑的二維歐氏空間,若SR(v(x))與M(x)的交集H{·}中元素個數(shù)不小于最小匹配數(shù)#min,則認(rèn)為像素x是背景像素,如公式(3)所示:
H{SR(v(x))∩{v1(x),v2(x),…,vN(x)}}
(3)
1)保守更新機(jī)制:ViBe算法通過保守更新機(jī)制進(jìn)行背景模型更新,即如果像素被分類為背景像素,則以1/φ(φ是更新因子)的概率替代背景模型中的任一樣本.假設(shè)時間是連續(xù)且選擇過程是無記憶性的,在任一dt時間后,背景模型的樣本隨時間變化的概率如公式(4)所示:
(4)
公式(4)表明,背景模型樣本值的預(yù)期剩余壽命都呈指數(shù)衰減,背景模型的樣本更新與時間無關(guān).
2)隨機(jī)更新機(jī)制:ViBe算法通過隨機(jī)更新機(jī)制進(jìn)行樣本替換,使得每個樣本的存在時間成平滑指數(shù)衰減,提高了算法適應(yīng)背景變化的能力,避免了舊像素長期不更新帶來的模型劣化的問題.
3)空間傳播機(jī)制:ViBe算法也將背景像素引入鄰域的背景模型中,保證了鄰域像素空間的一致性.例如,用背景像素替換任一鄰域NG(x)中的任一樣本.
ViBe算法首次將隨機(jī)聚類技術(shù)應(yīng)用于運(yùn)動目標(biāo)檢測中,使得算法在背景模型初始化、像素分類過程、背景模型更新3個方面都比較簡單,保證了算法的實(shí)時性,因此ViBe算法被廣泛應(yīng)用于現(xiàn)實(shí)生活中[13].
ViBe算法采用隨機(jī)采樣、非參數(shù)化和無記憶的更新策略,使得其具有較好的性能,但其在動態(tài)場景下仍然存在不能快速抑制鬼影、難以消除動態(tài)噪聲以及無法適應(yīng)場景動態(tài)變化的問題,本文將從以下3個方面對ViBe算法進(jìn)行改進(jìn).
ViBe算法利用第1幀建立背景模型,但也不可避免的將第1幀中存在的運(yùn)動目標(biāo)前景像素引入到背景模型中,導(dǎo)致鬼影問題和影響算法的檢測精度.假設(shè)背景模型M(x)是由第1幀中的前景像素樣本f(x)組成的,當(dāng)運(yùn)動目標(biāo)離開時,f(x)不在背景像素值b(x)的SR(b(x))圓內(nèi),背景像素被錯誤的分類為前景,如公式(5)所示,則在第1幀中運(yùn)動目標(biāo)所在的區(qū)域就會出現(xiàn)虛擬的前景(鬼影).
(5)
本文針對這一問題,應(yīng)用鬼影檢測法標(biāo)記出第1幀中的鬼影區(qū)域,并向位于鬼影區(qū)域的背景模型中強(qiáng)制引入背景樣本,減少其中前景像素的數(shù)量,從而快速抑制鬼影.
鬼影檢測法借鑒了幀間差分法并對其進(jìn)行改進(jìn),其原理是提取視頻序列的前3幀圖像,第1幀圖像分別與后兩幀圖像做差分運(yùn)算,設(shè)定差分閾值并對差分后的圖像進(jìn)行二值化分類,將二值化結(jié)果做邏輯或操作和形態(tài)學(xué)操作,即得到標(biāo)記有第1幀運(yùn)動目標(biāo)的鬼影模板Ghost(x),在鬼影模板Ghost(x)中大于0的位置是第1幀中鬼影區(qū)域的.具體定義如公式(6)、公式(7)和公式(8)所示:
(6)
(7)
Ghost(x)=D1(x)orD2(x)
(8)
式中:D(x)為二值化圖像,Ik(x)為第k幀輸入圖像,一般k=1,T為圖像差分閾值,or為邏輯或操作.鬼影檢測法的對比效果如圖1所示.
圖1 鬼影檢測方法對比Fig.1 Comparison of ghost detection methods
圖1(a)為視頻序列的第1幀圖像;圖1(b)和圖1(c)分別是與操作和或操作的結(jié)果對比圖,從圖中可以看出,鬼影檢測法采用或操作相比與操作能更好的檢測出第1幀中存在的運(yùn)動目標(biāo).
鬼影檢測法標(biāo)記出鬼影區(qū)域后,還需要將背景像素引入到標(biāo)記位置背景模型中.基本思路是判定當(dāng)前幀中位于鬼影區(qū)域的像素是否被分類為前景,如果當(dāng)前位置像素被分類為前景,則當(dāng)前位置像素是運(yùn)動目標(biāo)移動后被錯誤分類為前景的背景像素,應(yīng)該將背景像素強(qiáng)制引入到當(dāng)前位置的背景模型中作為背景樣本,同時鬼影模板Ghost(x)-1,直到鬼影模版Ghost(x)等于0為止;如果當(dāng)前位置像素被分類為背景,那么當(dāng)前位置還存在運(yùn)動目標(biāo),不進(jìn)行更新,直到當(dāng)前位置像素被分類為前景.該方法能夠在運(yùn)動目標(biāo)移動后強(qiáng)制將m個背景樣本引入到背景模型中,加速了鬼影的消除.鬼影區(qū)域消除具體流程如圖2所示.
圖2 鬼影消除的具體過程Fig.2 Specific process of ghost elimination
雖然ViBe算法的匹配閾值(R=20)是適用于大多數(shù)場景的,然而Van等人[14]提出固定參數(shù)對于動態(tài)場景而言是不合適的,單一的匹配閾值設(shè)定降低了像素分類的準(zhǔn)確性,導(dǎo)致背景噪聲增加.因此,設(shè)定一個自適應(yīng)場景動態(tài)變化的匹配閾值來提高像素分類準(zhǔn)確性并消除背景噪聲.
Brutzer等人[15]建議在ViBe算法中引用一個與模型樣本相關(guān)的閾值,這樣能更好的處理偽裝前景點(diǎn).因此在固定匹配閾值的基礎(chǔ)上,本文提出一種可以自適應(yīng)調(diào)整每個像素匹配閾值R(x)的方法,進(jìn)而提高像素分類的準(zhǔn)確性.該方法核心思想是對于不同區(qū)域設(shè)定不同的匹配閾值,既降低高動態(tài)區(qū)域的背景像素誤判為前景像素的概率,又提高低動態(tài)區(qū)域檢測細(xì)微變化前景的能力.這里是通過計(jì)算像素的背景模型的標(biāo)準(zhǔn)偏差來確定像素的動態(tài)范圍,具體定義如公式(9)和公式(10)所示:
(9)
(10)
式中:Mi(x)表示像素x索引為i的背景樣本,μ(x)表示像素x的背景模型的平均灰度值,σ(x)表示像素x的背景模型的標(biāo)準(zhǔn)偏差,N表示背景模型中樣本的個數(shù).
得到像素x的動態(tài)范圍后,本文算法在動態(tài)匹配閾值σ(x)·γ(γ是動態(tài)匹配閾值系數(shù))的基礎(chǔ)上加上適用于大多數(shù)視頻序列的固定匹配閾值Rfix,從而得出自適應(yīng)匹配閾值R(x).為保證檢測的精度,對匹配閾值R(x)范圍進(jìn)行限定,根據(jù)實(shí)驗(yàn)經(jīng)驗(yàn),R(x)范圍在[Rlower,Rupper]區(qū)間內(nèi)具有較理想的效果,R(x)定義公式如公式(11)所示:
R(x)=Rfix+σ(x)·γ
(11)
ViBe算法的更新因子是不變的,其是以1/16的概率將分類為背景的像素引入到背景模型中.然而固定的更新因子在背景簡單、變化單一的場景中具有較好的應(yīng)用,但在背景復(fù)雜、變化較快的場景中,固定的更新因子無法及時替換舊的背景樣本,使背景模型的豐富度和有效性大大降低,從而導(dǎo)致檢測結(jié)果中背景噪聲增加.針對這一問題,本文采用匹配值更新法來設(shè)定更新因子.
匹配值更新法是在每幀的像素分類的過程中建立一個由匹配值n所組成的更新模板updata(x),根據(jù)更新模板中對應(yīng)位置的n值大小來設(shè)定更新因子.公式(12)定義如下:
(12)
式中,update(x)=k的設(shè)定是針對前景圖像中像素?cái)?shù)小于α的連通區(qū)域(這部分像素在前景圖像中做丟棄處理);update(x)=0的設(shè)定是針對前景圖像中像素?cái)?shù)小于β的空洞區(qū)域(這部分像素在前景圖像中做填充處理);除以上兩種情況外,更新模板update(x)等于對應(yīng)位置的匹配值.
接著,根據(jù)更新模板updata(x)動態(tài)調(diào)整更新因子,不僅引入更多不同的新背景樣本,提高背景模型的復(fù)雜度,并且加速了舊樣本值地淘汰.更新模板與更新因子的關(guān)系如公式(13)所示(η是常量):
φ=updata(x)-η
(13)
由公式(13)可知,更新模板中的匹配值n越大,背景模型M(x)進(jìn)行更新的概率越小.更新概率P(x)與更新因子φ的關(guān)系是:P(x)=1/φ.
ViBe算法的空間傳播機(jī)制能夠加速背景模型的更新,保證了鄰域像素空間的一致性.但在動態(tài)背景下,前景像素被誤判背景像素時,該機(jī)制導(dǎo)致錯誤像素的擴(kuò)散,造成緩慢移動和靜止目標(biāo)出現(xiàn)空洞和殘缺問題.故本文算法決定抑制像素的空間傳播.
為了評估本文算法在動態(tài)背景下的效果,本文采用CDNET數(shù)據(jù)集[16]提供的dynamicBackground視頻類中的5個視頻序列做測試.同時采用BGSLibrary[17]中提供的可執(zhí)行程序做經(jīng)典算法對比.實(shí)驗(yàn)和開發(fā)環(huán)境為VS2017,測試硬件平臺為Core i7 CPU,8GB內(nèi)存.
為了定量比較幾種算法的性能,本文采用召回率(Recall)、精確率(Precision)、錯誤分類百分比(PWC,percentage of wrong classification)和F度量值(F-measure)作為量化指標(biāo).具體定義如公式(14)-公式(17)所示:
(14)
(15)
(16)
(17)
式中,TP(True positive)表示正確檢測的前景像素?cái)?shù);TN(True negative)表示正確檢測背景像素?cái)?shù);FP(False positive)表示錯誤檢測的前景像素?cái)?shù);FN(False negative)表示錯誤檢測的背景像素?cái)?shù).Recall反映應(yīng)該檢測到的前景像素中正確檢測的前景像素的占比;Precision反映實(shí)際檢測到的前景像素中正確檢測的前景像素的占比;PWC反映總像素中錯誤檢測像素的占比;F-measure反映算法檢測綜合質(zhì)量.
本文方法由許多可調(diào)的參數(shù)組成,這些參數(shù)必須進(jìn)行適當(dāng)調(diào)整以獲得最佳的算法性能.然而,對于某些特定場景,參數(shù)可以針對需求進(jìn)行微調(diào).圖3是不同參數(shù)設(shè)置在各動態(tài)背景序列以及整體均值的F-measure性能,通過比較設(shè)定本文算法相關(guān)參數(shù):N是背景模型中的樣本數(shù),如圖3(a)所示,在N=15時,本文算法在dynamicBackground類中性能最佳;Rfix是固定匹配閾值,如圖3(b)所示,在Rfix為10時,本文算法性能最佳;γ是動態(tài)匹配閾值系數(shù),如圖3(c)所示,當(dāng)取γ=0.5,算法結(jié)果最佳;Rlower和Rupper分別是匹配閾值的取值范圍的下界和上界,由于σ(x)是大于等于0的數(shù),因此R(x)=Rlower≥Rfix,而Rupper設(shè)定為50;α和β分別是小目標(biāo)丟棄和空洞填充的像素?cái)?shù)閾值,如圖3(d)所示,α取15最佳,這里β取值為40;k是針對像素被丟棄時設(shè)定的更新模板值,k取值為2;T是幀間差分閾值,T取值為30;m是鬼影區(qū)域強(qiáng)制更新次數(shù),m取值為3;#min是最小匹配數(shù),同ViBe算法一樣取2;η經(jīng)實(shí)驗(yàn)測試取1最優(yōu);圖3(e)是匹配值更新法與固定更新因子的對比結(jié)果,可以看出匹配值更新法可以提高算法F-measure性能.
圖3 不同參數(shù)設(shè)置在各動態(tài)背景序列及整體均值上的F-measure性能Fig.3 F-measure performance of different parameters on each dynamic background sequence and the overall mean
圖4是鬼影消除實(shí)驗(yàn)在baseline視頻類中highway視頻序列上與ViBe算法的對比實(shí)驗(yàn),highway視頻序列中第1幀中包含兩輛正在移動的車輛,分別位于圖像的中上和右上區(qū)域,如圖4所示,自從而下分別為視頻序列第50幀、第150幀、第250幀、第350幀、第600幀.從圖中可以看出,在第50幀時本文方法在圖中中上和右上區(qū)域已經(jīng)不存在鬼影,相反的是,直到第600幀ViBe算法還未完全消除干凈鬼影.ViBe算法雖然能夠利用空間傳播機(jī)制緩慢消除鬼影,但該機(jī)制設(shè)置的更新條件較為苛刻(這是為了避免前景像素快速融入到背景模型中導(dǎo)致背景模型的劣化),尤其是在更新因子設(shè)置較大的時候,鬼影消除較為緩慢.通過實(shí)驗(yàn)對比可以看出本文方法相較于ViBe算法能夠更快速地消除鬼影.
圖4 鬼影消除對比實(shí)驗(yàn)Fig.4 Comparison experiment of ghost elimination
圖5是各算法dynamicBackground視頻類測試結(jié)果的定性比較,圖5中以行為單位,自上而下分別為:canoe、fall、fountain01、fountain02、overpass視頻序列,以列為單位自左向右分別為:(a)輸入幀、(b)真值圖、(c)GMM-Stauffer、(d)GMM-Zivkovic、(e)GMG、(f)KDE、(g)ViBe、(h)本文算法的檢測結(jié)果.從圖5可以看出,GMM、GMG、KDE、ViBe算法雖然能夠檢測出運(yùn)動目標(biāo),但其也將河水、晃動的樹葉、噴泉這類動態(tài)變化的干擾錯誤檢測為前景,影響檢測的精度.本文算法相較于其他算法,可以有效的克服背景噪聲干擾,適應(yīng)場景的動態(tài)變化規(guī)律,目標(biāo)檢測完整度和準(zhǔn)確度更高.
圖5 各算法在dynamicBackground視頻類的定性對比Fig.5 Qualitative comparison of algorithms in the dynamic Background video category
本文分別對各算法在dynamicBackground視頻類下的5個視頻序列求取性能指標(biāo)的平均值,如表1所示是各算法的性能定量對比結(jié)果.從表1中可以看出本文算法在Precision、PWC還是F-measure指標(biāo)上都好于其他5種算法.
表1 各算法在dynamicBackground視頻類的定量對比Table 1 Quantitative comparison of algorithms in the dynamicBackground video category
智能視頻監(jiān)控作為計(jì)算機(jī)視覺的重要應(yīng)用方面,近年得到廣泛重視[18],尤其是在水文領(lǐng)域中的應(yīng)用.河流漂浮物對水質(zhì)、水面景觀、供水、水產(chǎn)、航運(yùn)、發(fā)電、水文測驗(yàn)造成了嚴(yán)重威脅[19],河流漂浮物檢測是保障河道和水文測驗(yàn)安全的前提,故基于運(yùn)動目標(biāo)檢測方法的河流漂浮物檢測具有重要的應(yīng)用價值.
運(yùn)動目標(biāo)檢測方法在河流漂浮物檢測的應(yīng)用中能夠快速準(zhǔn)確的定位河流漂浮物位置與漂浮物面積大小,具有實(shí)時性好、適用范圍廣、易集成于嵌入式設(shè)備的特點(diǎn).在河流漂浮物檢測的應(yīng)用中,由于漂浮物種類多、數(shù)量大、組成多樣,導(dǎo)致漂浮物難以用單一模型進(jìn)行模擬推測[20].同時河流漂浮物的運(yùn)移受河流流勢影響,因此對目標(biāo)檢測方法的實(shí)時性有較高要求.尤其在鉛魚測流過程中,河流漂浮物沖撞鉛魚及其懸掛的流速儀會導(dǎo)致流速儀損壞,干擾正常的測流工作,嚴(yán)重時漂浮物纏繞鉛魚致使承載鉛魚的纜道坍塌.因此對河流漂浮物的快速檢測為鉛魚預(yù)警與避障提供了重要的依據(jù).
本文采用3組河流漂浮物視頻序列進(jìn)行ViBe算法與本文方法在現(xiàn)實(shí)應(yīng)用上的對比,如圖6所示.
圖6 2種算法在河流漂浮物檢測中的定性對比Fig.6 Qualitative comparison of two algorithms in thedetection of river floating objects
在圖6中自上而下分別是視頻序列1、視頻序列2和視頻序列3.視頻序列1中是較為平靜的河流場景,漂浮物為人工丟置的黑色泡沫板,灰度特征較為明顯,除了較小的波浪干擾外,無其他干擾.視頻序列共有300幀.視頻序列2中是波動較大的河流場景,河流漂浮物為圖像左側(cè)漂過來的油桶,灰度特征較為復(fù)雜,除了較大的波浪干擾外,還有河岸樹木晃動干擾.視頻序列共有100幀.視頻序列3中是波動較大的河流場景,河流漂浮物為圖像右側(cè)漂過來的垃圾,由于下雨影響,圖像清晰度較差,波浪干擾較多,視頻序列共有150幀.從圖6對比實(shí)驗(yàn)可以看出本文方法相較于ViBe算法能更好的適應(yīng)以動態(tài)背景為主的河流漂浮物檢測場景,有效檢測河流漂浮物的同時消除噪聲干擾.ViBe算法與本文算法在河流漂浮物檢測實(shí)驗(yàn)中的定量性能對比如表2所示.
表2 2種算法在河流漂浮物檢測中的定量對比Table 2 Quantitative comparison of two algorithms in thedetection of river floating objects
通過求取3個視頻序列性能指標(biāo)的平均值得到表2.通過表2可以看出,本文算法在河流漂浮物檢測中,Recall、Precision、F-measure指標(biāo)相較于ViBe算法有明顯提高,PWC指標(biāo)有明顯下降.
本文提出了一種自適應(yīng)運(yùn)動目標(biāo)檢測算法,該算法提出鬼影檢測法標(biāo)記鬼影區(qū)域并強(qiáng)制引入標(biāo)記像素到背景模型中,加速鬼影的消除,采用自適應(yīng)匹配閾值的方法進(jìn)行像素分類,并根據(jù)匹配值大小動態(tài)調(diào)整更新因子,提高算法對動態(tài)背景的適應(yīng)能力.實(shí)驗(yàn)結(jié)果表明,相比于ViBe算法,本文算法更能有效消除鬼影,克服動態(tài)噪聲的負(fù)面影響,適應(yīng)場景的變化,將其應(yīng)用于河流漂浮物檢測場景中,也能夠?qū)崟r檢測出河流漂浮物,保障鉛魚測流安全.