劉志聰,陳德為,李鴻揚,李一杭,鐘劍兵
(福州大學 機械工程及自動化學院,福建 福州 350116)
運動目標檢測是視頻監(jiān)控領域研究的熱點和難點之一,其難點在于如何克服復雜多變的背景環(huán)境,準確地提取出運動目標作為前景[1]。家居環(huán)境因其簡單穩(wěn)定的環(huán)境特點,計算量較小,一般采用嵌入式設備進行算法計算。
目前,檢驗算法可分為三類,分別是背景法、幀差法和光流法[2]。光流法由于其龐大的計算量,不適用于嵌入式設備,本文不作研究。幀間差分法有計算簡單、反應迅速的優(yōu)點,缺點是檢測的前景易出現內部空洞,常作為輔助檢驗算法。背景建模法的算法較多,包括背景差分法、中值法、均值法、單高斯模型、混合高斯模型、ViBe算法、W4算法、CodeBook法等[3]。其中,背景差分法最簡單,適合簡單固定的背景環(huán)境;混合高斯模型法的總體檢測效果優(yōu)于其他大多數算法,作為運動目標的主流算法,不少改進的算法研究都是基于混合高斯模型建模[4];ViBe算法是由BARNICH O等人在2011年提出的有別于傳統(tǒng)方法的算法[5],該算法在計算速度和內存占有方面優(yōu)于混合高斯模型,并且有不錯的檢驗效果。
背景差分法常出現以下三大問題[6]:
(1)“陰影”問題
這是幾乎所有背景法公有的問題,背景法對陰影較為敏感,因而運動目標在光照下產生的陰影會被誤檢為前景,使檢測的前景不夠準確。
(2)Ghost區(qū)域
Ghost區(qū)域即“鬼影”區(qū)域,指的是原本背景中靜止的物體開始運動以后,背景算法將物體靜止時所處區(qū)域誤檢為前景目標,或者當運動目標靜止一段時間后再運動,也會產生Ghost區(qū)域。盡快消除Ghost區(qū)域也是所有背景法的難點之一。
(3)光線突變問題
不適應光線突變環(huán)境是所有背景法的不足之處。當光線突變時,背景模型無法馬上更新,當前幀和背景模型的亮度差異造成誤檢,出現大面積的前景目標,并將持續(xù)一段時間。
本文提出的算法是基于背景差分法和幀間差分法,主要致力于改善以上“陰影”問題、Ghost區(qū)域問題和光線突變這三大主要問題,并且盡可能減少計算開銷和內存開銷,以實現算法的實時性并適用于嵌入式設備。
本文的改進算法分為兩部分,分別是日常檢測部分和深度檢測部分,如圖1所示。由于在實際的應用中極少有運動目標出現的情況,若對每一幀圖像都采用完整的檢測流程,必然會造成較大的計算開銷和資源浪費。因此,本文提出一種分階段進行運動目標檢測的方法,每一幀圖像首先由背景差分法進行運動目標檢測,若檢測出的前景圖像點數超過預設的閾值T1,再進入下一階段的深度檢測。
圖1 改進的運動目標檢測算法步驟
算法采用多閾值層層判定的設計方式,主要檢測步驟如下:
(1)背景差分法檢測
當無運動目標入侵時,算法僅在該步驟不斷循環(huán)檢測。輸入的圖像幀選擇較為簡單的圖像預處理方式(灰度化+均值濾波),背景差分二值化得二值圖像D1,采用均值法更新背景模型(學習率a設為0.003),再通過開運算形態(tài)學處理平滑圖像邊緣,最后通過計算得出前景點數目是否超過預設的閾值T1,若不超過T1,則讀取下一幀循環(huán)計算;若前景點數超過T1,則讀取當前幀開始的10幀圖像進行深度檢測。背景差分法計算簡單迅速、對運動目標較為敏感,可滿足日常檢測的實時性要求。基于背景差分法自身算法缺陷引起的誤檢情況可由后續(xù)算法進行改進。
(2)幀間差分法并填補孔洞
觸發(fā)閾值T1后,開始對當前幀開始的10幀圖像進行幀間差分法計算,第一幀選取背景幀作為前一幀進行差分計算。幀間差分法最大的缺點是檢測的前景圖像內部有較大面積空洞區(qū)域,本算法采用以下步驟(如圖2所示)填補這些空洞:
①對每一幀進行圖像梯度化處理增強輪廓信息,使差分的結果更完整;
②幀間差分并二值化處理得二值圖像D2;
③幀間差分完成后,對差分的二值化結果進行閉運算形態(tài)學處理,通過閉運算可填補小面積孔洞、裂縫;
④設定閾值T2,當二值圖D2中的孔洞面積不大于T2時,通過查找外輪廓與內輪廓,循環(huán)填充封閉輪廓包圍的孔洞區(qū)域。當運動目標移動較慢時,幀差法檢測的輪廓局部區(qū)域會出現缺口,未封閉的輪廓將影響填充效果。因此本文的解決方式是通過將未填充圖像縮小為1/2后進行填充,填充完成后再將圖像放大2倍成原圖大小??s小圖像的實質是像素點大小不變而相對的位置發(fā)生變化,這樣的變化使得像素點之間更加緊湊,也使得小的輪廓斷點連接到一起。這種方法造成填充后的前景圖像較理想,前景圖像較肥大且輪廓信息模糊,在后續(xù)算法中會消除這些影響。
圖2 幀間差分與填補孔洞
(3)D1、D2與運算
幀間差分法填補孔洞后彌補了內部空洞的不足,填充后的D2圖像雖然較理想前景圖像較肥大且輪廓信息模糊,但在D1、D2與運算后,結果保留了D1較完整的圖像輪廓信息(如圖3所示)。由于幀間差分法基本不受光線變化、背景環(huán)境突變的影響,并且無Ghost區(qū)域和陰影產生,因而D1、D2與運算后,基本能夠消除背景差分法受陰影、光線變化、Ghost區(qū)域的影響,效果較好。此時前景點數若超過預設閾值T3,則進行輪廓比例判斷,否則記為無效報警,進入下一幀檢測。
圖3 D1、D2與運算
(4)運動目標輪廓矩形框標定
由于本算法應用于家居背景環(huán)境,考慮到消除家庭寵物引起的誤檢情況,采用了運動目標輪廓比例判斷的方法來實現。通過查找輪廓的方法,首先摒棄面積較小的團塊,其次根據輪廓繪制矩形框標定運動目標大小與位置(如圖4(a)所示),最后根據矩形框高度與寬度比例是否位于預設閾值區(qū)間[T4,T5]內判斷是否為有效報警。
實驗時在畫面右側向左推入紙箱模擬寵物移動場景,由圖4(b)、圖4(c)可以看出,算法檢測出入侵目標并判定為前景,但由于前景目標的高度與寬度比例不在[T4,T5]區(qū)間,不進行矩形框標定,記為無效報警。
圖4 模擬寵物入侵實驗
(5)報警判定
觸發(fā)閾值T1后,連續(xù)檢測10幀圖像,若一幀圖像同時滿足閾值T1、T3、T4、T5的觸發(fā)要求,則判定為有效報警,否則判定為無效報警。當10幀圖像中累積有8幀圖像判定為有效報警,則發(fā)出報警信息,若超過2幀無效報警,則算法重新進入背景差分計算循環(huán)。這種判斷方法一定程度上能夠減少其他外界干擾因素引起的誤檢情況(如鏡頭輕微抖動、光照突變瞬間的誤檢),增加報警準確度。
本文算法中各閾值的設定與攝像頭的放置位置有關,其中,攝像頭與監(jiān)控最遠位置的距離決定T1、T2、T3的設定,攝像頭離地高度決定T4、T5的設定。本實驗中,攝像頭監(jiān)控最遠距離約5 m,離地高度約1 m。
閾值T1的設定取決于攝像頭與監(jiān)控最遠位置的距離,距離越大,閾值設置越小。本實驗的測試距離下,選取測試視頻出現運動目標時的圖像50幀,前景點數在(5 000,13 000)范圍內,故預設閾值T1為3 000。
閾值T2用于填補大面積孔洞,可設定得較大。一般情況下,孔洞面積不大于前景目標面積,故本實驗設置閾值T2為13 000。
閾值T3用于判定D1、D2與運算后的前景點數是否超標,由于與運算操作消除了D1中的陰影部分,同時幾乎可以排除Ghost區(qū)域和光線突變帶來的影響,因而其前景點數必然小于D1檢測的前景點數,且趨近于理想狀態(tài)下的前景點數,故設置閾值T3=T1=3 000。
閾值T4、T5用于設置運動目標輪廓比例區(qū)間,通過對測試視頻總共828幀達到繪制矩形框要求的圖像幀統(tǒng)計,矩形框比例(高度/寬度)分布如表1所示。
表1 矩形框(高度/寬度)比例分布統(tǒng)計
根據統(tǒng)計結果可知,位于(1.5,5]區(qū)間的幀數高達795幀,占總幀數96.0%,考慮被測人身高、體型的波動情況,故設置T4=1.3,T5=5。本測試視頻由于被測人在右側小部分區(qū)域活動時受遮擋物影響,部分前景圖像被遮擋,故少部分幀數的運動目標輪廓比例位于(0,1.5]區(qū)間。正常情況下,監(jiān)控區(qū)域無遮擋物且排除兒童獨自在家的情況,檢測的運動目標輪廓比例位于(0,1.3]區(qū)間可判定為寵物活動,記為無效報警。
實驗基于OpenCV庫函數進行運動目標檢測,OpenCV庫函數可移植至嵌入式設備,算法通過調用OpenCV庫函數進行運動目標檢測。為了直觀比較幾種主流算法與改進算法的測試結果,在Windows平臺下的Microsoft Visual Studio 2010開發(fā)工具中進行仿真測試。VS2010已導入OpenCV庫函數。
測試實驗通過USB攝像頭CMOS OV7725錄制了3 000幀640×480像素的測試視頻,測試范圍約5 m,離地高度約1 m,被測人身高178 cm,中等身材。視頻在室內背景環(huán)境下拍攝,模擬相對簡單穩(wěn)定的家居環(huán)境,在第938幀、第1 432幀、第2 641幀處分別測試了各算法處理“陰影”問題、Ghost區(qū)域問題、光線突變問題的能力,同時各幀也反映了各算法檢驗運動目標的優(yōu)劣效果。
本節(jié)選取第938幀、第1 432幀、第2 641幀進行測試,分別測試了運動目標在正常背景下移動、短暫停留后移動、光線突變時各算法的檢測情況。圖5~9分別為各算法對所選3幀圖像的檢測結果。圖10為本文算法對檢測運動目標的位置標定結果。
圖5 幀間差分法測試
圖6 背景差分法測試
圖7 ViBe算法測試
圖8 混合高斯背景建模法測試
圖9 本文算法測試
圖10 運動目標位置標定測試
實驗選取第401~750幀共350幀無運動目標出現的圖像幀,以及第831~980幀共50幀有運動目標出現的圖像幀,分別測試三種算法處理一幀圖像的平均時間,如表2所示。該測試基于PC平臺,采用Intel(R) Core(TM) i5-2410M處理器,最高頻率為2.30 GHz。
表2 三種算法處理一幀圖像的平均時間比較 (ms)
由表2數據可知,當無運動目標出現時,本文算法的計算優(yōu)勢明顯,長時間運算可保證實時性和較低的CPU開銷;當出現運動目標時,本文算法計算速度僅略差于速度較快的ViBe算法。
在實際應用中,無運動目標出現的概率較大,算法需長時間處理無運動目標出現的圖像幀,因而本文算法相比與背景法中處理效果較好的混合高斯背景建模法和ViBe算法具有明顯的速度優(yōu)勢。
本文提出了一種室內環(huán)境下基于幀間差分法和背景差分法改進的多閾值運動目標檢測算法。通過仿真實驗對比可以看出,本文算法相比四種經典算法,在消除陰影、光線突變、Ghost區(qū)域等不利影響方面的效果最優(yōu)。同時,多閾值判定的方法不僅提升了算法檢測的準確性,也提高了算法的運算效率,滿足算法檢測的實時性,較小的計算開銷使其適用于家用安防嵌入式設備。