楊 波 潘崢嶸
(蘭州理工大學(xué)電氣工程與信息工程學(xué)院 蘭州 730050)
運(yùn)動(dòng)目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)中研究的熱點(diǎn)問(wèn)題之一,也是智能視頻監(jiān)控系統(tǒng)的核心[1]。常用的運(yùn)動(dòng)目標(biāo)檢測(cè)算法有光流法[2]、幀間差分法[3]、背景差分法[4]。幀間差分法是通過(guò)在視頻圖像序列的連續(xù)兩幀或三幀中進(jìn)行像素的“相減”運(yùn)算,然后與預(yù)先設(shè)置的閾值比較,來(lái)提取出圖像中的運(yùn)動(dòng)區(qū)域[5]。該算法在靜態(tài)背景下和動(dòng)態(tài)背景下都具較好的檢測(cè)能力,實(shí)現(xiàn)簡(jiǎn)單,運(yùn)算量小并且處理速度很快,但是在處理實(shí)際問(wèn)題時(shí)會(huì)出現(xiàn)一些無(wú)法避免的問(wèn)題,如只能檢測(cè)到運(yùn)動(dòng)目標(biāo)的外部輪廓,并且會(huì)有大量的空洞。背景差分法流程主要分為預(yù)處理、背景建模、前景檢測(cè)、后處理四個(gè)階段[6]。常用的背景建模方法有高斯背景建模方法[7]、Codebook背景建模方法[8]?;旌细咚鼓P停℅aussian Mixture Model,GMM)能夠?qū)?dòng)態(tài)背景進(jìn)行建模,但是計(jì)算復(fù)雜度較高,實(shí)時(shí)性得不到保障。Kim等[9]提出的Codebook背景模型算法是通過(guò)在RGB顏色空間中使用碼本來(lái)描述像素點(diǎn),用亮度和顏色扭曲度來(lái)進(jìn)行判斷構(gòu)建背景,此算法容易實(shí)現(xiàn),但是對(duì)于復(fù)雜背景進(jìn)行背景建模效果不好,而且計(jì)算冗余大。
針對(duì)傳統(tǒng)算法在背景建模過(guò)程中出現(xiàn)的問(wèn)題,Barnich等[10]于2011年提出可視化背景提?。╲isual background extractor,ViBe)算法。該算法運(yùn)算速度快能夠快速地建立背景模型并且實(shí)時(shí)性好,但是當(dāng)首幀圖像中存在運(yùn)動(dòng)目標(biāo)時(shí)會(huì)產(chǎn)生鬼影,因此會(huì)影響后續(xù)前景檢測(cè)的準(zhǔn)確性。雖然鬼影會(huì)隨著背景的更新逐漸消失,但是通常需要100幀~200幀才能夠完全將鬼影消除并且隨著背景模型越復(fù)雜,鬼影的消除就越緩慢,這嚴(yán)重影響了對(duì)前景目標(biāo)的判斷。針對(duì)上述問(wèn)題,本文采用三幀差分算法和改進(jìn)的ViBe算法相結(jié)合,改進(jìn)的三幀差分算法能夠快速地檢測(cè)出運(yùn)動(dòng)目標(biāo),改進(jìn)的ViBe通過(guò)自適應(yīng)閾值來(lái)調(diào)整固定閾值和背景更新率,提高前景目標(biāo)檢測(cè)精度,這兩種算法相互補(bǔ)充可以快速地消除鬼影并且對(duì)空洞和噪聲也有抑制作用,從而提高前景目標(biāo)檢測(cè)的準(zhǔn)確性。
ViBe算法主要包含三個(gè)模塊:背景模型初始化、目標(biāo)檢測(cè)、背景更新。
ViBe算法是利用圖像序列的首幀圖像為每個(gè)像點(diǎn)素建立一個(gè)背景模型,對(duì)于其中任意一個(gè)像素點(diǎn),可以隨機(jī)地選擇空間鄰域范圍內(nèi)的像素值構(gòu)成的模型樣本集,其中空間鄰域的大小要能包括足夠
數(shù)量的不同樣本。像素點(diǎn)x的背景樣本集M(x)可以用式(1)描述:
上式中vi(i=1,2,…,N)為每個(gè)像素x的8鄰域內(nèi)隨機(jī)采樣得到像素值,N為采樣集中的采樣數(shù)。
當(dāng)初始背景模型建立之后,從下一幀新的圖像開始,像素點(diǎn)x處新的像素值vt(x)與樣本集合中該點(diǎn)所在位置對(duì)應(yīng)的背景模型M(x)中的元素進(jìn)行比較,來(lái)對(duì)新的像素進(jìn)行分類。像素的分類原理如圖1所示。
在圖1中,SR[(vt(x))]代表以當(dāng)前像素值vt(x)為圓心,以R為像素范圍半徑的圓形區(qū)域。在該范圍內(nèi)利用像素歐式距離的大小將像素值v(x)與其采樣集中鄰近的像素值進(jìn)行比較。如式(2)所示,如果SR[(v(x))]與背景樣本集M(x)的交集的匹配個(gè)數(shù)T小于給定的最小閾值Tmin,則該像素就被認(rèn)定為前景像素點(diǎn)(FG),否則為背景像素點(diǎn)(BG)。在ViBe算法中R一般取20,最小閾值Tmin=2,采樣數(shù)N=20。
圖1 像素的分類原理示意圖
在背景模型更新過(guò)程中,一般采用無(wú)記憶性的隨機(jī)更新策略,即一個(gè)像素保存在背景模型中的概率在某個(gè)時(shí)間段呈指數(shù)型單調(diào)遞減。每一個(gè)背景像素點(diǎn)有1/φ的概率去隨機(jī)的更新背景樣本集中的樣本值,同時(shí)也有1/φ的概率來(lái)更新某個(gè)鄰域像素的模型樣本值。φ是時(shí)間采樣因子,通常取值為16。
由于傳統(tǒng)的幀間差分算方法在前景目標(biāo)提取時(shí),檢測(cè)到的物體不完整,物體的輪廓是“雙邊”的,當(dāng)物體的移動(dòng)速度越快,產(chǎn)生的這種雙邊的輪廓現(xiàn)象就越明顯,并且會(huì)產(chǎn)生很大的空洞。因此,本文在原有的三幀差分法[11]的基礎(chǔ)上進(jìn)行改進(jìn)。
改進(jìn)后的三幀差分算法步驟如下。
步驟1將輸入的視頻序列預(yù)處理,其中包括圖像的灰度化,以及采用中值濾波來(lái)消除噪聲對(duì)圖像信息的干擾。分別對(duì)這三幀連續(xù)的視頻序列用Sobel[12]算子邊緣檢測(cè)算子,Sobel算子具有處理速度快,所得到的圖像的邊緣光滑,并且邊緣處是連續(xù)的。
步驟2對(duì)連續(xù)相鄰的三幀圖像,分別進(jìn)行差分,將得到的差分圖像分別進(jìn)行自適應(yīng)閾值分割,從而剔除一些干擾像素。
步驟3將步驟2得到兩個(gè)二值圖像進(jìn)行“與”運(yùn)算,然后進(jìn)行形態(tài)學(xué)處理,最后進(jìn)行中值濾波處理消除閃爍點(diǎn),提取圖像輪廓。
步驟4通過(guò)步驟3得到的比較清晰的運(yùn)動(dòng)目標(biāo)的輪廓后,對(duì)其進(jìn)行10次輪廓填充,進(jìn)行中值濾波。
步驟5將步驟4得到的圖像進(jìn)行腐蝕操作,就得前景目標(biāo)。
如圖2所示,三幀差分法與改進(jìn)的三幀差分算法的結(jié)果對(duì)比。
圖2 三幀差分算法與改進(jìn)的三幀差分算法的實(shí)驗(yàn)結(jié)果
ViBe算法采用固定的閾值來(lái)進(jìn)行前景運(yùn)動(dòng)目標(biāo)檢測(cè),這使得對(duì)鬼影消除緩慢,且在不同的環(huán)境下對(duì)運(yùn)動(dòng)目標(biāo)的誤檢率較高,而且當(dāng)背景模型比較復(fù)雜時(shí)出現(xiàn)誤檢的概率會(huì)更高。針對(duì)ViBe算法采用固定的閾值,采用自適應(yīng)閾值的方法,來(lái)為每個(gè)像素值設(shè)定閾值。本文利用三幀差分法的優(yōu)點(diǎn)以及改進(jìn)的ViBe算法來(lái)實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)的準(zhǔn)確檢測(cè),并且提高運(yùn)動(dòng)目標(biāo)的完整性,為后續(xù)運(yùn)動(dòng)目標(biāo)跟蹤做好準(zhǔn)備。圖3為運(yùn)動(dòng)目標(biāo)前景檢測(cè)流程。
圖3 運(yùn)動(dòng)目標(biāo)前景檢測(cè)流程
3.2.1 采用自適應(yīng)閾值與顏色畸變的像素分類
在傳統(tǒng)的ViBe算法中進(jìn)行前景目標(biāo)檢測(cè)時(shí),通過(guò)背景模型中的每個(gè)像素創(chuàng)建的樣本值和當(dāng)前圖像序列中的每個(gè)像素值是否匹配來(lái)進(jìn)行判斷,采用的是固定的閾值T。但是由于實(shí)際背景環(huán)境的復(fù)雜,固定的閾值往往不能很好地表達(dá)模型的復(fù)雜度[13]。本文針對(duì)此問(wèn)題在原始ViBe算法的基礎(chǔ)上引入背景模型樣本集的標(biāo)準(zhǔn)差σ,樣本均值μ,其表達(dá)式如式(3)、式(4)所示,并引入振幅因子β,像素x處背景模型樣本集中所有像素值的和記為自適應(yīng)閾值Tada如式(5)所示,并將自適應(yīng)閾值Tada的值設(shè)定在[20,40],其表達(dá)式如式(6)所示。
為了使當(dāng)前像素值與背景像素值更好匹配,這里引入顏色扭曲度[14]δ(顏色失真),對(duì)于當(dāng)前幀中任意位置處的像素xt=(Rt,Gt,Bt),以及對(duì)應(yīng)背景模型樣本中的像素xi=(Rˉi,Gˉi,Bˉi),有:
3.2.2 對(duì)背景的更新
傳統(tǒng)的ViBe算法采用固定的更新率來(lái)更新背景模型,但是當(dāng)背景模型比較復(fù)雜時(shí),背景像素如果不能夠及時(shí)更新,就會(huì)出現(xiàn)鬼影,并且在很長(zhǎng)的時(shí)間內(nèi)無(wú)法得到消除。通過(guò)當(dāng)前幀的像素xt與對(duì)應(yīng)背景模型中的像素xi,如果滿足條件Tada&&δ<δ0,其中δ0為先前設(shè)定的值,并且匹配數(shù)Tmatch>Tmin,則此時(shí)可以將該處判斷為背景像素點(diǎn),并且更新該像素模型的樣本以及該像素點(diǎn)鄰域像素點(diǎn)的模型樣本值,此處有1/φ的概率隨機(jī)的來(lái)更新模型樣本值以及更新背景模型中對(duì)應(yīng)鄰居點(diǎn)模型中的樣本值。鄰域像素點(diǎn)的更新采用空間一致性原則,相鄰背景像素有相似的時(shí)間分布特性,一個(gè)像素的新背景采樣也可以被用來(lái)更新相鄰像素。
為了驗(yàn)證本文算法的正確性和有效性,從四個(gè)不同場(chǎng)景進(jìn)行對(duì)比實(shí)驗(yàn),其中的視頻序列信息如表1所示,視頻分別來(lái)自O(shè)penCV3.1中的vtest.avi,以及Matlab2016b的數(shù)據(jù)集atrium.avi和visiontraffic.avi,以及交通十字路口處Camera Road 01.avi。實(shí)驗(yàn)環(huán)境和參數(shù)分別如下:Windos7系統(tǒng),AMD Ath?lon(th)X4740 Quad Core Processor CPU,3.2GHz主頻,4G內(nèi)存,Visual Studio 2015集成開法環(huán)境,以及OpenCV3.1計(jì)算機(jī)視覺(jué)算法庫(kù)。其中ViBe算法的相關(guān)參數(shù)如下:背景模型樣本集中鄰近像素點(diǎn)個(gè)數(shù)N=20,匹配點(diǎn)的個(gè)數(shù)閾值R一般取20,最小閾值Tmin=2,采樣更新率為16。采用三幀差分法、傳統(tǒng)的ViBe算法以及改進(jìn)的ViBe算法做對(duì)比實(shí)驗(yàn)。
表1 四個(gè)不同場(chǎng)景下的視頻序列
圖4 為vtest.avi中部分幀的檢測(cè)結(jié)果,其中主要顯示視頻序列第11幀、第18幀、第22幀、第110幀、第534幀。圖5為atrium.avi中第519幀檢測(cè)結(jié)果,vision-traffic.avi中第143幀檢測(cè)結(jié)果,以及Camera Road 01.avi中第883幀檢測(cè)結(jié)果。
本文算法采用三幀差分算法和改進(jìn)的ViBe算法,從圖4和圖5中可以看到,本文算法和傳統(tǒng)ViBe算法和其他算法相比有很好的性能,從鬼影出現(xiàn)到開始消除只需18幀就可以,而傳統(tǒng)的ViBe算法至少需要110幀才能夠?qū)⒌谝粠瑘D像中產(chǎn)生的鬼影消除。背景中的一些不必要的干擾信息也得到了有效的消除,針對(duì)其中的閃爍像素,采用形態(tài)學(xué)處理和自適應(yīng)閾值分割,在第534幀可以清楚的看到,前景目標(biāo)在地面上的拖影已被完全消除。在圖5中分別從室內(nèi)到室外以及背景模型由簡(jiǎn)單到復(fù)雜來(lái)檢測(cè)算法。
圖4 vtest.avi中部分幀的檢測(cè)結(jié)果
圖5 視頻序列中部分幀的檢測(cè)結(jié)果
從visiontraffic.avi的第143幀以及Camera Road 01.avi的第883幀中看出,三幀差分算法只能夠檢測(cè)出檢運(yùn)動(dòng)物體的輪廓,對(duì)光線不敏感,光線變化對(duì)其影響比較小,但是只能夠檢測(cè)到物體的外部輪廓信息,當(dāng)運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)速度比較快時(shí),輪廓的部分信息也會(huì)部分丟失。傳統(tǒng)ViBe算法在光線穩(wěn)定的條件下可以檢測(cè)到比較完整的前景目標(biāo),但是內(nèi)部會(huì)有空洞,如第143幀所示圖像中的光線先比較其它圖像,此時(shí)的視頻序列中的光線最強(qiáng),但是仍然可以檢測(cè)到運(yùn)動(dòng)目標(biāo)。改進(jìn)的算法能夠適應(yīng)比較復(fù)雜的環(huán)境,并且受到噪聲的影響也相對(duì)較小,而且對(duì)背景中的噪聲有很好的抑制作用,對(duì)光照變化也有一定的魯棒性。
為了定量的檢驗(yàn)本文算法的有效性,利用Pr(精確率)和Re(召回率)以及F1-measure(F1值)三個(gè)指標(biāo)來(lái)對(duì)算法進(jìn)行精確度評(píng)價(jià)[15~16]。其計(jì)算公式為
其中,TP表示能夠檢測(cè)出正確的前景目標(biāo)個(gè)數(shù),F(xiàn)P代表誤檢為非運(yùn)動(dòng)的目標(biāo)個(gè)數(shù),即運(yùn)動(dòng)目標(biāo)被識(shí)別為背景的數(shù)目,F(xiàn)N是沒(méi)有檢測(cè)到運(yùn)動(dòng)目標(biāo)數(shù)。表2列出了不同算法定量分析的比較結(jié)果。從表2中可以看到,本文改進(jìn)的算法在準(zhǔn)確率、召回率,以及F1值相比較而言大于其他算法,算法的綜合性能高于其他算法。
表2 不同算法定量分析的比較結(jié)果
本文將三幀差分算法與改進(jìn)的ViBe算法相結(jié)合,對(duì)視頻序列中的運(yùn)動(dòng)目標(biāo)進(jìn)行前景和背景進(jìn)行正確的分類。改進(jìn)背景模型的初始化來(lái)對(duì)鬼影進(jìn)行消除,并且加快了鬼影的消除速度。采用自適應(yīng)閾值和顏色畸變度量使算法不但能夠適應(yīng)比較復(fù)雜的環(huán)境,而且提高檢測(cè)效果,針對(duì)背景中存在的噪聲和空洞點(diǎn)采用形態(tài)學(xué)處理來(lái)對(duì)其進(jìn)行消除。實(shí)驗(yàn)結(jié)果表明本文算法可以在很短的時(shí)間內(nèi)消除鬼影,并且在消除噪聲和空洞等方面有很好的效果。在可接受的時(shí)間成本內(nèi)得到了良好的綜合性能,在視頻圖像處理領(lǐng)域有比較廣闊的應(yīng)用前景。