朱帥飛 楊 芳 馬 偉
(河南科技大學機電工程學院 洛陽 471003)
運動目標檢測是當今計算機視覺領域中研究的熱點,在交通監控、人工智能、軍事等領域有著廣泛的應用,是目標跟蹤與識別的基礎。因此,運動目標檢測方法的研究具有重要的價值。
目前常用的運動目標檢測方法主要包括:背景差分法[1~2]、幀間差分法[3]和光流法[4~5]。背景差分法是當前應用應用最廣泛的檢測方法,背景差分法需要對背景進行建模,然后把圖像序列當前幀與建立的背景模型進行差分運算。背景差法算法簡單易于實現,但對陰影去除效果差,易受噪聲影響。幀間差分法是把圖像序列中相鄰兩幀圖像進行差分運算,然后通過閾值分割得到前景目標。該方法魯棒性強、原理簡單,但是提取出的運動目標的不完整,對于過快移動和過慢移動的目標會造成漏檢和空洞現象[6~11]。光流法利用光流場反映像素點運動的方向和速度,并根據光流場的分布特征,提取出運動目標的區域。該方法檢測精度高,但計算量大,實時性和實用性都較差[12~14]。
針對以上算法的不足,2011 年Bamieh 和Van Droogenbroeck 提出了一種新穎的基于背景減除的目標檢測方法—ViBe 算法[15]。ViBe 模型計算簡單、實時性強、提取出的運動目標較完整,但是對光照變化的適應性差,在強光下會把大面積的背景誤判成前景;而五幀差分算法對光照適應性強但容易出現空洞。因此,本文提出一種結合兩種算法來提取運動目標的方法,采用連通性檢測和形態學操作等進行后處理,最終提取出運動前景目標。經過實驗驗證:該算法能夠有效地防止ViBe 算法把大面積的背景誤判成前景,提高了ViBe 算法對光照變化場景下的魯棒性。
ViBe 算法是一種像素級別的視頻背景建模和前景檢測的算法,該算法計算簡單、實時性強、提取出的運動目標較完整,目前已經被廣泛地使用。ViBe 算法與其他算法的區別在于背景模型的更新策略,其特點是隨機選擇需要替換的像素的樣本,隨機選擇鄰域像素進行更新。當像素變化的模型無法預測時,采用隨機的更新策略,可以在一定程度上模擬像素變化的不確定性。主要步驟分為三個:背景模型初始化、前景檢測和模型更新。
ViBe 算法對背景模型的初始化通過建立樣本集的方法來實現的,該算法只需一幀就能完成初始化。對于初始化幀中每個像素點隨機選擇N個它的鄰域點的像素值作為模型樣本值,這些模型樣本值構成了一個樣本集Mi(x,y) 。其中N一般取20,Vx表示圖像中像素點x的像素值或者它的鄰域像素值,則背景模型表示為

為了實現前景檢測需要對像素點進行分類。判斷一個像素點是屬于前景像素點還是背景像素點,只需計算該像素點背景模型Mi(x)與圓形區域SR(Pn(x))的交集的總數是否大于閾值T,大于閾值T判定此像素點為背景點,反之為前景像素點。

圖1 ViBe算法前景分割示意圖
Pn(x)表示第n幀圖像中像素點x的像素值,P1、P2…Pn表示為背景模型Mi(x)中的像素值,SR(Pn(x))表示以x為圓心,R為半徑的圓形區域。
ViBe 算法常用的背景模型更新方法主要有兩種分別是結合前景點計數法的保守更新法和結合空間鄰域傳播法的保守更新法舊文獻。本文采用的是結合空間鄰域傳播法的保守更新策略,其特點是當某一幀的某一個像素點被判斷為背景點時,它將有的概率更新自己的背景樣本,同時也有的概率更新自己某一個鄰域像素的背景樣本。
傳統的兩幀差分法和三幀差分法都能夠迅速檢測出運動目標,但是兩種方法都容易出現空洞和雙影現象。為了改善這些問題,采用五幀差分法。五幀差分法的基本思想是:獲取預處理后的五幀圖像 分 別 為fi-2(x,y) ,fi-1(x,y) ,fi(x,y) ,fi+1(x,y),fi+2(x,y);把中間幀fi(x,y)分別與剩余幀做差分運算,可以得到如下結果:

然后將得到的四個差分結果分別進行“與”運算,如下所示:

將得到的運算結果D1和D2進行降噪,再分別用動態閾值進行二值化處理,最后將其結果進行“或”運算:

與運算可以有效地防止目標重疊現象,或運算可以克制空洞現象的產生。對差分結果先“與”后“或”的邏輯運算??梢允固崛〉那熬澳繕烁油暾蚀_。
傳統ViBe 算法遇到發生光照突變時,會把大面積的背景誤判成前景;而五幀差分算法對光照適應性強。為此我們引入了光照突變判斷,其基本思想為:首先使用ViBe 算法對視頻進行逐幀處理,然后判斷是否發生了光照突變,如果沒有發生光照突變,則輸出ViBe 算法的運算結果;如果發生了光照突變,輸出五幀差分算法的運算結果。
光照突變判斷:首先采用ViBe 算法提取運動前景目標,然后將整個前景圖片分成若干區域,當某塊的前景像素大于某一個閾值r時,則計數器+1,依次遍歷整個圖像,統計得到計數器的值,計算計數器值與整個前景圖像區域的總數,當比值大于某一閾值t,則判斷為光照突變。改進算法流程圖如圖2所示。

圖2 改進算法流程圖
對于閾值r和t的選取,如果閾值r和t過大,則會增加輸出誤判結果的機率,如果閾值t過小,大部分的視頻幀將會采用三幀差分法處理,使得檢測結果的輪廓不完整。在本文實驗中,通過對實驗數據中發生光照不均及未發生光照不均的多個圖像幀分析并反復修正將最終閾值r和t分別設定為32 和0.6。需要說明的是,針對不同的應用場景與測試數據,閾值r和t需要結合具體情況進行分析并重新設定。
該實驗是在VS2013、OpenCV2.4.10 軟件為開發工具在 Intel(R)CorelM(TM)i3-3110M CPU @2.40GHz、運行內存為4 GB 的環境中進行的。實驗所用通用視頻序列是存在光照突變的一組視頻序列圖像,視頻序列的圖像大小為160×120 像素。分別采用五幀差分算法、ViBe 算法和本改進算法對視頻圖像序列中的運動目標進行檢測。
如圖3 所示,圖(a)是發生光照突變的第40、43、77 幀的原圖像;圖(b)是傳統ViBe 算法的進行目標檢測的結果;圖(c)是本文改進算法進行目標檢測的結果。從實驗結果可以看出:當目標場景存在光照突變時,ViBe 算法會把大面積的背景誤判成前景,造成檢測失??;本文改進算法有效克服了光照變化和樹枝擺動所帶來的影響,沒有大面積的背景被誤判成前景,得到了相對完整的運動目標。

圖3 vibe算法與本文改進算法對光照突變場景檢果對比
如圖4 所示,圖4 為一組非光照突變場景檢測結果對比實驗。圖(a)為視頻1 中未發生光照突變的第18、35、71 幀的原圖像,圖(b)是五幀差分算法進行目標檢測的結果,圖(c)是本文改進算法的進行目標檢測的結果。從實驗結果可以看出:兩種算法算法都能檢測出運動目標,但是五幀差法檢測結果存在空洞,得到的運動目標輪廓不完整;而本文改進算法檢測出的目標輪廓相對比較完整更接近目標本身,也消除了噪聲和空洞。

圖4 五幀差分法算法與本文改進算法對非光照突變場景檢測結果對比
上述實驗結果表明,將ViBe 算法與五幀差分法結合起來的本文算法在光照突變場景下也可以檢測出相對完整的運動目標區域,檢測出來結果更加接近目標本身,提高了目標識別度,在一定的場景下對目標檢測具有通用性。
為了分析本文算法的性能,本文以視頻處理時間T和誤檢率F兩個指標進行評價。實驗所用測試視頻序列共120幀,其中評價指標誤檢率F計算方法如下:

式中,a 為檢測結果中前景數目與實際不相符的幀數,b 為檢測結果中前景數目與實際相符的幀數。在相同實驗環境下三種算法的比較結果如表1 所示。

表1
實驗結果表明,由于本算法增加了一些步驟,實時性不如其他的兩種算法,但是與ViBe 算法相差不大,不過與其他兩種算法相比本文方法在誤檢率上有明顯改進,檢測結果相對準確、完整,目標輪廓更加清晰。
針對已有的ViBe算法進行改進,,結合五幀差分法提出了一種新的運動目標提取方法。通過實驗結果表明:該算法能夠有效地防止ViBe 算法把大面積的背景誤判成前景,提高了ViBe 算法對光照變化場景下的魯棒性,檢測效果優于單獨使用ViBe算法
和五幀差分法的檢測效果。本文在發生光照突變的場景下使用五幀差分法檢測物體時,檢測結果還待提高,這是下一步研究的方向。