楊 波 潘崢嶸
(蘭州理工大學電氣工程與信息工程學院 蘭州 730050)
運動目標檢測是計算機視覺中研究的熱點問題之一,也是智能視頻監控系統的核心[1]。常用的運動目標檢測算法有光流法[2]、幀間差分法[3]、背景差分法[4]。幀間差分法是通過在視頻圖像序列的連續兩幀或三幀中進行像素的“相減”運算,然后與預先設置的閾值比較,來提取出圖像中的運動區域[5]。該算法在靜態背景下和動態背景下都具較好的檢測能力,實現簡單,運算量小并且處理速度很快,但是在處理實際問題時會出現一些無法避免的問題,如只能檢測到運動目標的外部輪廓,并且會有大量的空洞。背景差分法流程主要分為預處理、背景建模、前景檢測、后處理四個階段[6]。常用的背景建模方法有高斯背景建模方法[7]、Codebook背景建模方法[8]。混合高斯模型(Gaussian Mixture Model,GMM)能夠對動態背景進行建模,但是計算復雜度較高,實時性得不到保障。Kim等[9]提出的Codebook背景模型算法是通過在RGB顏色空間中使用碼本來描述像素點,用亮度和顏色扭曲度來進行判斷構建背景,此算法容易實現,但是對于復雜背景進行背景建模效果不好,而且計算冗余大。
針對傳統算法在背景建模過程中出現的問題,Barnich等[10]于2011年提出可視化背景提取(visual background extractor,ViBe)算法。該算法運算速度快能夠快速地建立背景模型并且實時性好,但是當首幀圖像中存在運動目標時會產生鬼影,因此會影響后續前景檢測的準確性。雖然鬼影會隨著背景的更新逐漸消失,但是通常需要100幀~200幀才能夠完全將鬼影消除并且隨著背景模型越復雜,鬼影的消除就越緩慢,這嚴重影響了對前景目標的判斷。針對上述問題,本文采用三幀差分算法和改進的ViBe算法相結合,改進的三幀差分算法能夠快速地檢測出運動目標,改進的ViBe通過自適應閾值來調整固定閾值和背景更新率,提高前景目標檢測精度,這兩種算法相互補充可以快速地消除鬼影并且對空洞和噪聲也有抑制作用,從而提高前景目標檢測的準確性。
ViBe算法主要包含三個模塊:背景模型初始化、目標檢測、背景更新。
ViBe算法是利用圖像序列的首幀圖像為每個像點素建立一個背景模型,對于其中任意一個像素點,可以隨機地選擇空間鄰域范圍內的像素值構成的模型樣本集,其中空間鄰域的大小要能包括足夠
數量的不同樣本。像素點x的背景樣本集M(x)可以用式(1)描述:

上式中vi(i=1,2,…,N)為每個像素x的8鄰域內隨機采樣得到像素值,N為采樣集中的采樣數。
當初始背景模型建立之后,從下一幀新的圖像開始,像素點x處新的像素值vt(x)與樣本集合中該點所在位置對應的背景模型M(x)中的元素進行比較,來對新的像素進行分類。像素的分類原理如圖1所示。
在圖1中,SR[(vt(x))]代表以當前像素值vt(x)為圓心,以R為像素范圍半徑的圓形區域。在該范圍內利用像素歐式距離的大小將像素值v(x)與其采樣集中鄰近的像素值進行比較。如式(2)所示,如果SR[(v(x))]與背景樣本集M(x)的交集的匹配個數T小于給定的最小閾值Tmin,則該像素就被認定為前景像素點(FG),否則為背景像素點(BG)。在ViBe算法中R一般取20,最小閾值Tmin=2,采樣數N=20。


圖1 像素的分類原理示意圖
在背景模型更新過程中,一般采用無記憶性的隨機更新策略,即一個像素保存在背景模型中的概率在某個時間段呈指數型單調遞減。每一個背景像素點有1/φ的概率去隨機的更新背景樣本集中的樣本值,同時也有1/φ的概率來更新某個鄰域像素的模型樣本值。φ是時間采樣因子,通常取值為16。
由于傳統的幀間差分算方法在前景目標提取時,檢測到的物體不完整,物體的輪廓是“雙邊”的,當物體的移動速度越快,產生的這種雙邊的輪廓現象就越明顯,并且會產生很大的空洞。因此,本文在原有的三幀差分法[11]的基礎上進行改進。
改進后的三幀差分算法步驟如下。
步驟1將輸入的視頻序列預處理,其中包括圖像的灰度化,以及采用中值濾波來消除噪聲對圖像信息的干擾。分別對這三幀連續的視頻序列用Sobel[12]算子邊緣檢測算子,Sobel算子具有處理速度快,所得到的圖像的邊緣光滑,并且邊緣處是連續的。
步驟2對連續相鄰的三幀圖像,分別進行差分,將得到的差分圖像分別進行自適應閾值分割,從而剔除一些干擾像素。
步驟3將步驟2得到兩個二值圖像進行“與”運算,然后進行形態學處理,最后進行中值濾波處理消除閃爍點,提取圖像輪廓。
步驟4通過步驟3得到的比較清晰的運動目標的輪廓后,對其進行10次輪廓填充,進行中值濾波。
步驟5將步驟4得到的圖像進行腐蝕操作,就得前景目標。
如圖2所示,三幀差分法與改進的三幀差分算法的結果對比。

圖2 三幀差分算法與改進的三幀差分算法的實驗結果
ViBe算法采用固定的閾值來進行前景運動目標檢測,這使得對鬼影消除緩慢,且在不同的環境下對運動目標的誤檢率較高,而且當背景模型比較復雜時出現誤檢的概率會更高。針對ViBe算法采用固定的閾值,采用自適應閾值的方法,來為每個像素值設定閾值。本文利用三幀差分法的優點以及改進的ViBe算法來實現運動目標的準確檢測,并且提高運動目標的完整性,為后續運動目標跟蹤做好準備。圖3為運動目標前景檢測流程。

圖3 運動目標前景檢測流程
3.2.1 采用自適應閾值與顏色畸變的像素分類
在傳統的ViBe算法中進行前景目標檢測時,通過背景模型中的每個像素創建的樣本值和當前圖像序列中的每個像素值是否匹配來進行判斷,采用的是固定的閾值T。但是由于實際背景環境的復雜,固定的閾值往往不能很好地表達模型的復雜度[13]。本文針對此問題在原始ViBe算法的基礎上引入背景模型樣本集的標準差σ,樣本均值μ,其表達式如式(3)、式(4)所示,并引入振幅因子β,像素x處背景模型樣本集中所有像素值的和記為自適應閾值Tada如式(5)所示,并將自適應閾值Tada的值設定在[20,40],其表達式如式(6)所示。

為了使當前像素值與背景像素值更好匹配,這里引入顏色扭曲度[14]δ(顏色失真),對于當前幀中任意位置處的像素xt=(Rt,Gt,Bt),以及對應背景模型樣本中的像素xi=(Rˉi,Gˉi,Bˉi),有:

3.2.2 對背景的更新
傳統的ViBe算法采用固定的更新率來更新背景模型,但是當背景模型比較復雜時,背景像素如果不能夠及時更新,就會出現鬼影,并且在很長的時間內無法得到消除。通過當前幀的像素xt與對應背景模型中的像素xi,如果滿足條件Tada&&δ<δ0,其中δ0為先前設定的值,并且匹配數Tmatch>Tmin,則此時可以將該處判斷為背景像素點,并且更新該像素模型的樣本以及該像素點鄰域像素點的模型樣本值,此處有1/φ的概率隨機的來更新模型樣本值以及更新背景模型中對應鄰居點模型中的樣本值。鄰域像素點的更新采用空間一致性原則,相鄰背景像素有相似的時間分布特性,一個像素的新背景采樣也可以被用來更新相鄰像素。
為了驗證本文算法的正確性和有效性,從四個不同場景進行對比實驗,其中的視頻序列信息如表1所示,視頻分別來自OpenCV3.1中的vtest.avi,以及Matlab2016b的數據集atrium.avi和visiontraffic.avi,以及交通十字路口處Camera Road 01.avi。實驗環境和參數分別如下:Windos7系統,AMD Ath?lon(th)X4740 Quad Core Processor CPU,3.2GHz主頻,4G內存,Visual Studio 2015集成開法環境,以及OpenCV3.1計算機視覺算法庫。其中ViBe算法的相關參數如下:背景模型樣本集中鄰近像素點個數N=20,匹配點的個數閾值R一般取20,最小閾值Tmin=2,采樣更新率為16。采用三幀差分法、傳統的ViBe算法以及改進的ViBe算法做對比實驗。

表1 四個不同場景下的視頻序列
圖4 為vtest.avi中部分幀的檢測結果,其中主要顯示視頻序列第11幀、第18幀、第22幀、第110幀、第534幀。圖5為atrium.avi中第519幀檢測結果,vision-traffic.avi中第143幀檢測結果,以及Camera Road 01.avi中第883幀檢測結果。
本文算法采用三幀差分算法和改進的ViBe算法,從圖4和圖5中可以看到,本文算法和傳統ViBe算法和其他算法相比有很好的性能,從鬼影出現到開始消除只需18幀就可以,而傳統的ViBe算法至少需要110幀才能夠將第一幀圖像中產生的鬼影消除。背景中的一些不必要的干擾信息也得到了有效的消除,針對其中的閃爍像素,采用形態學處理和自適應閾值分割,在第534幀可以清楚的看到,前景目標在地面上的拖影已被完全消除。在圖5中分別從室內到室外以及背景模型由簡單到復雜來檢測算法。

圖4 vtest.avi中部分幀的檢測結果

圖5 視頻序列中部分幀的檢測結果
從visiontraffic.avi的第143幀以及Camera Road 01.avi的第883幀中看出,三幀差分算法只能夠檢測出檢運動物體的輪廓,對光線不敏感,光線變化對其影響比較小,但是只能夠檢測到物體的外部輪廓信息,當運動目標的運動速度比較快時,輪廓的部分信息也會部分丟失。傳統ViBe算法在光線穩定的條件下可以檢測到比較完整的前景目標,但是內部會有空洞,如第143幀所示圖像中的光線先比較其它圖像,此時的視頻序列中的光線最強,但是仍然可以檢測到運動目標。改進的算法能夠適應比較復雜的環境,并且受到噪聲的影響也相對較小,而且對背景中的噪聲有很好的抑制作用,對光照變化也有一定的魯棒性。
為了定量的檢驗本文算法的有效性,利用Pr(精確率)和Re(召回率)以及F1-measure(F1值)三個指標來對算法進行精確度評價[15~16]。其計算公式為

其中,TP表示能夠檢測出正確的前景目標個數,FP代表誤檢為非運動的目標個數,即運動目標被識別為背景的數目,FN是沒有檢測到運動目標數。表2列出了不同算法定量分析的比較結果。從表2中可以看到,本文改進的算法在準確率、召回率,以及F1值相比較而言大于其他算法,算法的綜合性能高于其他算法。

表2 不同算法定量分析的比較結果
本文將三幀差分算法與改進的ViBe算法相結合,對視頻序列中的運動目標進行前景和背景進行正確的分類。改進背景模型的初始化來對鬼影進行消除,并且加快了鬼影的消除速度。采用自適應閾值和顏色畸變度量使算法不但能夠適應比較復雜的環境,而且提高檢測效果,針對背景中存在的噪聲和空洞點采用形態學處理來對其進行消除。實驗結果表明本文算法可以在很短的時間內消除鬼影,并且在消除噪聲和空洞等方面有很好的效果。在可接受的時間成本內得到了良好的綜合性能,在視頻圖像處理領域有比較廣闊的應用前景。