孫 潔 錢 蕾
(華北理工大學電氣工程學院 唐山 063200)
云計算中心具有較強的計算處理能力,將網絡邊緣設備產生的數據上傳到云中心進行存儲與處理已經得到了普遍應用[1]。隨著萬物互聯時代的到來,網絡邊緣設備的數量訊速增加,未來必將產生海量數據,如果直接將源數據上傳到云計算中心進行處理,一方面會占用很多不必要的存儲空間,另一方面給網絡帶寬資源帶來了巨大的負擔。施魏松等提出了邊緣計算模型[2],并從概念、原理以及挑戰等三個方面對其進行介紹[3]。隨著物聯網的發展,攝像頭遍布了我們的生活。據統計,大約有3000萬個監控攝像頭部署在美國,每周生成超過40億小時的視頻數據[4],甚至一個攝像頭也能產生幾百GB的數據[5]。如果將這些攝像頭采集到的原始數據未經處理直接上傳到云計算中心,那將會是十分龐大的數據量。為此,本文提出在視頻數據上傳至云中心之前,先在邊緣設備上執行預處理,在監控攝像頭上加入計算能力,當檢測到視頻畫面中有運動目標時,對監控信息進行存儲,如果沒有運動目標就不存儲。這樣可以節省大量的存儲空間,而且可以減輕數據傳輸對網絡帶寬的壓力。
運動物體檢測是智能監控中視頻圖像分析的重點和難點,關于運動目標檢測的方法多種多樣,其中最基礎的有幀差法[6]、背景差分法[7]和光流法[8],其他都是在這三種基礎上的改進或者組合。幀間差分法檢測到的前景區域的邊緣模糊不完整,而且當物體移動緩慢時會出現誤判和空洞現象。光流法準確率高,但計算復雜,容易受到背景擾動和光照變化的影響,不適用于實際應用。背景差分法可以將運動目標完整地檢測出來,但是容易受到光照變化和背景變化的影響,因此只適用于背景不變的情況[9]。針對上述問題,本文在幀間差分法的基礎上,選用三幀差分法結合形態學運算和自適應閾值計算方法進行運動物體檢測,其計算簡單,可以檢測出完整的運動目標。將該方法用于智能監控系統,可以對視頻信息選擇性存儲,減輕了對網絡帶寬的壓力。在視頻檢索中,可以快速定位異常動態圖象,在工作人員回放查看異常信息時節約時間。
幀間差分法是一種比較常見的運動目標檢測方法,根據兩幀圖像的差分值與設定的閾值進行比較來判定的。當監控畫面中有運動物體時,相鄰兩幀圖像間就會有像素的變化。選取相鄰兩幀圖像,進行灰度化處理,然后對處理后的圖像進行差分運算,將差分結果的絕對值與設定的閾值T進行比較,若大于閾值T則判斷為畫面中有運動目標,若小于或等于閾值T則判斷為沒有運動目標。其數學公式描述如下:

g(x,y)為連續兩幀圖像經過差分運算、二值化得到的二值圖像,fk(x,y)為當前幀灰度值,fk-1(x,y)表示當前幀前一幀的灰度值,T為二值化時設定的閾值,二值化將圖像呈現出只存在黑色和白色,g(x,y)=1表示前景,g(x,y)=0表示背景。幀間差分法不會受到緩慢光線變化的影響,算法簡單易實現。但是該方法只能檢測到前后兩幀變化的部分,不能檢測到重疊部分,檢測到的運動目標內部容易出現空洞現象。
背景差分法主要應用于背景靜止的情況下的運動目標檢測,選取沒有運動物體進入監控畫面時的圖像作為背景圖像,然后將當前幀與背景幀做差分運算,差分的結果與閾值T進行比較,二值化得到運動目標[10]。如果大于閾值T,則判斷有運動目標,如果小于等于閾值T,則判斷為沒有運動目標。數學公式表示如下:

fk(x,y)為當前幀圖像,b(x,y)為背景幀圖像,g(x,y)為當前幀與背景幀經過差分運算、二值化后得到的二值圖像,g(x,y)=1表示運動目標,g(x,y)=0表示背景區域。
背景靜止的情況下,背景差分法可以檢測出完整的運動目標,但是當背景中有光線變化或者樹葉晃動等情況時,就會發生誤判,因此不適用于背景發生變化的情況。
光流法[11]通過區別靜止的物體和運動的物體產生的運動場的不同,將運動目標從背景中分離出來。光流法可以應用于攝像機運動的情況下,但是光照變化、遮擋等因素存在時會影響光流場的分布,增加了計算的難度。這種方法計算復雜、實時性較差,使用存在局限性。
在幀差法的基礎上,研究學者提出了三幀差分法,基本思路是提取連續三幀圖像fk-1(x,y),fk(x,y),fk+1(x,y),然后將第k-1幀與第k幀進行式(1)的運算得到二值圖像g1(x,y),將第k幀與第k+1幀進行式(1)的運算得到二值圖像g2(x,y),然后對這兩個二值圖像進行邏輯與運算,提取相同的部分,從而得出運動目標的二值圖像。三幀差分法的數學公式描述如下:

其中G(x,y)是g1(x,y)與g2(x,y)進行邏輯相與的結果,三幀差分法可以定位出運動目標在監控畫面中的位置,要比幀間差分法更精確,但是檢測到的運動目標內部還是會存在空洞現象。三幀差分法的流程如圖1所示。

圖1 三幀差分法流程圖
輸入原始的監控視頻流,對視頻流進行圖像分幀,采集連續的三幀圖像,然后將分幀后的圖像從RGB彩色空間變換到灰度空間,獲取對應的灰度圖像fk-1(x,y),fk(x,y),fk+1(x,y)。然后對兩組相鄰的圖像做差分運算,也就是三幀差分。采用Otsu方法計算出最佳閾值對圖像二值化處理,將得到的兩個二值圖像邏輯與運算。最后通過中值濾波來消除圖像中的噪聲,圖像形態學處理確定移動物體的區域。整個算法的程序流程如圖2所示。

圖2 改進的三幀差分法流程圖
3.1.1 最大類間方差閾值計算方法
在傳統的三幀差分法中,閾值T是根據不同的視頻、不同的背景、不同的運動目標來設定的,若T選取得偏大,很可能出現漏檢或者檢測不完全,若T選取得偏小,會出現大量噪聲。本文采用Otsu方法(最大類間方差法),可自動選取閾值進行二值化。計算公式如下:

其中,w0為背景像素點數占圖像的比例,u0為背景像素點的平均灰度,w1為前景像素點占圖像的比例,u1為前景像素點的平均灰度,u為整個圖像的平均灰度,上式的最大值T即為圖像的最佳閾值。
3.1.2 圖像預處理
此時獲得的視頻圖像并不理想,其中含有大量的噪聲,需要通過圖像預處理來去除這些噪聲。常用的圖像去噪方法有均值濾波和中值濾波,中值濾波是圖像處理技術中最常用的預處理技術,濾除噪聲的同時,能夠保持圖像的清晰度。本文采用中值濾波的方法,通過3×3模版濾波,消除散雜噪聲點對運動目標的影響。
對灰度化后的第k幀圖像進行Canny邊緣檢測[12],得到第k幀圖像的邊緣圖像E(x,y)。然后將之與改進三幀差分算法得到的二值圖像G(x,y)進行與運算,得到運動目標的邊緣E1(x,y)。將E1(x,y)和G(x,y)進行或運算,然后再進行形態學處理,從而可以得到完整的前景圖像G1(x,y)。
在普通PC機上進行仿真實驗(處理器為Intel(R)Core(TM)i5-3230M,主頻為2.60GHz,內存為4GB,操作系統為Windows10專業版64位)。實驗所用的視頻是在華北理工大學圖書館四層樓梯間門口拍攝,視頻為AVI格式,總時長14s,幀速率24幀/s。分別采用幀間差分法、三幀差分法和改進后的三幀差分法,利用Matlab2016a對監控視頻進行運動目標檢測。
提取視頻中的連續三幀圖像(分別為視頻序列中的第160幀、第161幀、第162幀圖像)進行試驗,如圖3所示。

圖3 視頻序列中連續三幀圖像
圖4(a)是幀間差分法檢測到的運動目標,雖然可以將運動目標的基本輪廓提取出來,但是檢測到的運動目標輪廓不完整,且目標內部存在比較嚴重的空洞現象,當選取的閾值過小會出現大量噪聲,容易出現誤報警的情況。
圖4(b)是文獻[13]中的三幀差分算法檢測到的運動目標,可以看出內部有小范圍的空洞,而且部分邊緣缺失,前后兩幀之間運動物體灰度值相同的區域被判斷為背景,不能檢測到完整的運動目標。
圖4(c)是本文算法提取的運動目標,可見輪廓清晰,檢測出的運動目標非常完整,很好地解決了傳統三幀差分算法內部空洞的問題,具有很強的抗干擾能力。檢測效果對比圖如圖4所示。

圖4 檢測效果對比圖
當監控畫面中有運動物體時,經過本文運動目標檢測算法,可以提取出運動目標(即白色的前景圖像)。而當監控畫面中沒有運動物體時,經過本文算法二值化后得到的是全黑的圖像。圖像是由一個個的像素點組成的,如果所有的像素點的值都為0,則判斷為沒有運動目標。
以華北理工大學校園內三處監控攝像頭作為實驗對象,分別為蘭園2號樓一層自習室門口、蘭園2號樓五層樓道、圖書館三層電梯間門口。根據實際調查,這幾處攝像頭每天錄下的視頻會全部保存,保存時長為三個月。然而,在這種存儲方式下保存的視頻很多是沒有意義的。比如,當監控畫面中沒有人走動時,錄下來的全部是靜態的背景視頻,可以直接刪除。本實驗選取了三個監控點,每個監控點分別取三個時間段的視頻作為實驗數據,得到的結果如表1所示。
監控點A位于自習室門口,正常從這里經過只要短短幾秒鐘,由表1中數據計算得出,有98%的時間是沒有運動目標的。監控點B位于宿舍樓道,早上7:00~8:00是洗漱和出行人數最多的時間,這個時候有運動目標的視頻段數也是最多的。由表1中數據計算得出,在實驗的這三個小時中,有52.7%的時間是沒有運動物體經過的。監控點C位于電梯間門口,可以看出除了等電梯和進出電梯時有運動物體之外,其余67.8%的時間是沒有運動物體的。實驗表明,將這些沒有運動目標的視頻圖像直接刪除,保留下來的都是有用的信息,節省了大量的存儲空間。

表1 監控視頻智能存儲實驗結果
在邊緣計算模型的背景下,為了實現監控視頻圖像的智能存儲,本文提出將網絡攝像頭加入計算分析能力。在傳統三幀差分法的基礎上加入了最大類間方差閾值計算方法,因而檢測出的前景圖像既不會失真也沒有大量噪聲,Canny邊緣算子的加入使得前景圖像的輪廓更為完整。實驗表明,本文算法能夠檢測出完整的運動目標,可以自動檢測和分析監控范圍內的運動物體,并對視頻選擇性存儲,節省了大量存儲空間。