熊玲,陳勇
(重慶師范大學計算機與信息科學學院,重慶401331)
隨著社會的發展,人們的生活水平隨之不斷提高,監控視頻快速的進入到尋常百姓家,因此監控視頻成為了人們安防系統中不可缺少的部分。要使監控視頻發揮最大的作用,那么計算機視覺在監控視頻中的應用就變得越來越重要。而監控視頻中的信息又復雜萬千,我們在進行安防的時候卻只針對我們需要的信息進行采集,所以視頻的處理越來越趨于智能化和自動化。在針對室內的獨居老人的行為檢測中由于背景環境相對復雜,所以就需要一個健壯穩定的運動目標檢測算法來對視頻的前期進行預處理。
運動目標檢測的前提是需要準確地分割出我們所需要的準確的目標,目標分割是后續行為檢測的基石。目前,目標檢測最主流,也是最經典的算法有:光流法[2]、幀差法[3]和背景減除法[4]。而背景減除法中最常用的算法是 ViBe(Visual Background Extractor),此算法是一種針對像素級建立背景模型并和當前幀作背景差的算法。但該算法也存在著不足之處:①當第一幀圖像含有運動目標時,建立的背景模型就不準確,會分割出虛擬的前景,即鬼影。②當室內的光照變化很大時,或者背景由于前景目標而出現不完全時怎樣精確地得到背景圖像并與當前幀圖像差分從而提取完整的前景目標。針對以上問題文獻[6]通過將原來的固定閾值變成動態閾值來減少前景提取出現的空洞,以提高目標檢測的抗干擾能力,還利用二次更新的策略來更新背景模版。文獻[7]中是利用邊緣的相似性來判斷鬼影,并結合三幀差分的方法消除鬼影。
本文深入研究背景差分法中的一種高效建模方法——ViBe算法,利用像素之間的空間特性和前景判斷的周期來改進優化該算法,提高該算法的性能和準確度,得到令人滿意的結果。
ViBe算法在運動目標檢測中是采用隨機原則。在背景建模和更新中都是使用隨機更新和鄰域隨機算法的機制[5]。其中該算法中包含的三個部分為:背景模板初始化、目標檢測和背景更新。
ViBe算法是采用視頻序列圖像的第一幀來初始化背景模板。針對視頻圖像的每一個像素所表示出的背景模型如下所示:

其中,vi表示的是視頻序列中像素x所對應的背景樣本空間,N表示的是樣本空間的大小。
該算法的初始化使用的是視頻序列中每個像素與其鄰域像素之間所特有的相似空間分布特性,利用視頻序列的第一幀圖像,隨機的從每個像素的八鄰域(如圖1所示)中選取像素值作為該像素點的背景模型值,并被記為vi,以此重復選擇N次,得到該像素點的背景模型 M(x)。

圖1 八鄰域模型
目標檢測是從視頻序列的第二幀開始,通過當前幀與背景模型樣本中之間像素的差值來判斷是否屬于前景目標,也就是當前幀的每一個像素與該像素所對應的背景模型N個樣本之間的距離來判斷(如圖2所示)。

圖2 當前像素點與背景模型的比較
如圖2所示,對應的是以v(x)為中心,R為半徑的圓形區域中所對應的像素x,若包含在該圓形中的像素點個數大于#min,則該像素點就是背景點,因此就需要對背景模型進行更新,而背景模型更新的準則為:

背景更新采用的是隨機更新的策略,更新機制如下所示:
(1)當像素點被判定為背景時,就得給背景模型更新,該像素點有的概率更新該像素點,也就是當該像素點被判定為背景點時,并不是必須更新該背景像素點,更新是具有一定的概率性的。而更新的方法是是隨機的選擇一個樣本點,用當前幀的該像素點進行填充更新。
(3)在更新時采用的是隨機更新的機制,以此可以保證樣本值的平滑周期。每一個像素點不被更新的概率是,假設在連續時間下,dt后樣本值的保留概率為:

(4)從公式(3)中看出,樣本模型的更新與時間是無關的,所以隨機策略的方法是有效的。
ViBe算法在模型初始化和鬼影殘影[8-10]的快速消除中仍存在很多不足。本算法針對原算法在該方面的不足提出了兩方面的問題改進,一是在背景模型初始化中選擇初始化的鄰域發生變化;二是在針對鬼影和殘影的問題上,為了加快鬼殘影的去除加入了滯留參數和背景分割參數,以此提高檢測精確度。
在原始ViBe算法中是通過第一幀視頻序列圖像每個像素周圍的八鄰域來初始化該像素的背景模板,然后在隨機選擇像素值時,由于每次都是從3×3的像素中選擇N次,導致每次初始化時就會出現對一個像素選擇多次,導致在后面進行閾值分割出前景目標時出現更多的空洞。
所以本文提出使用像素幀的每個像素的24鄰域來初始化背景幀,而針對圖像邊緣值則就用邊緣像素值來填充,為每幀圖像對添加兩行兩列,而此兩行兩列的值都是原始序列幀的邊緣值。
在原始ViBe算法中當視頻序列的第一幀中出現運動目標,那么初始化背景模型時就會出現鬼影,在后面運動加速時就會出現殘影,所以針對這兩種情況,本文提出了滯留參數和背景分割參數的方法來抑制鬼殘影的出現,加快鬼殘影的消除。
本文在原算法上為每個像素點都分配了滯留值β,當一個像素點通過閾值的判定一直被判定為前景時,且該值超過了滯留值,那該像素點就會是鬼影或殘影。在背景分割上為了分割出更精準的前景,通過閾值判定來進行判斷,而針對每個像素值與背景樣本值通過閾值判定得到前景目標的二值圖像后,再通過閾值來把當前像素值與其鄰域像素值作比較得到二值圖像,最后通過兩二值圖像做與操作得到最后精確的前景目標。
改進后的算法的流程如下:
(1)背景模板初始化。假設每個像素的背景模板樣本的數量為N,對視頻第一幀的每一個像素隨機選擇該像素的24鄰域作為樣本值,同時為每個像素設置該像素(x,y)的前景生命周期矩陣為F(x,y)并初始化為零。
(2)前景目標差分。利用當前像素與N個背景模板像素做差分,通過閾值判斷是否屬于前景,如果是前景分割出前景目標
(3)模板更新。模板的更新包括背景樣本、背景模板和生命周期矩陣的更新。利用分割出的二值圖像判定(x,y)像素點是否是前景,如是前景則F(x,y)中的值就得加1。若連續被判斷為前景點的次數大于滯留值β,則該點是鬼影或者殘影,那么就得利用相同的方法更新背景模板。若(x,y)在其中一旦出現是背景點,則F(x,y中的值被置零。而樣本模版的更新則根據1/γ的概率隨即更新。
(4)空洞填充。通過改進的算法得到前景目標的二值圖像后會出現很多空洞,所以使用形態學方法進行空洞填充。
為了驗證本文的算法,利用三組室內視頻對實驗進行測試并做對比試驗。本文實驗的環境和參數設置如下:Windows 10系統,Intel i5的處理器,4G的運行內存,使用MATLAB R2015a做實驗仿真。實驗中的運行參數為背景模型樣本數N=20,判斷閾值R=20,背景樣本最小匹配數#min=2,更新因子γ=10,滯留值為β=3。本文選取changedetection視頻庫中的input視頻和in?telligentroom視頻驗證本文算法。
本算法采用input視頻的第36幀和intelligentroom的第300幀呈現算法之間的對比。實驗結果如下:圖(a)和(b)分別使input監控視頻序列第36幀和intelli?gentroom監控視頻序列第300幀的圖像,圖(c)和(d)分別是原圖像經過傳統的ViBe算法的檢查結果,圖(e)和(f)分別是在原始算法上改進鄰域值的選取后出現的實驗結果,圖(g)和(h)分別是添加滯留值后出現的實驗結果,圖(i)和(j)是針對不同的視頻經過本文改進算法后得到的實驗結果。

圖3
由實驗結果可以看出在視頻input中原始的ViBe算法在視頻序列第一幀出現運動目標時,到第36幀還出現嚴重的鬼影或者殘影,經過本文算法的改進在圖(i)中鬼影或殘影基本消失。在intelligentroom視頻中由于視頻序列的第一幀沒有出現與運動目標,所以沒有出現鬼影或殘影,從而增加了前景目標的完整性。但在圖(d)中能夠看到很多由于光照不均勻,背景的變化導致提取的前景目標不精準,所以通過本文算法(j)后得到了完整的前景目標。經過本文的算法,得到的前景目標與實際壞境中相一致。
本文對ViBe算法進行了分析研究,針對其在室內檢測出現的不足提出了改進算法。利用背景初始化時鄰域的選擇增加背景模型初始化的精確度減少前景起初出現的空洞現象,并為提取得到的前景目標設置滯留值消除由于初始化存在運動目標從而導致存在殘影或者鬼影出現的前景提取錯誤的問題。在這兩組視頻中通過對原始算法和本文算法做了一個對比,證明了本文算法的有效性和檢測性能的提高。