摘 要:動態偵測技術已被廣泛應用于各種視頻監控中,實時、有效的偵測算法成為監控系統的核心。通過對背景重建技術進行研究,利用背景差分技術,提出一種高效、易于實現的動態偵測算法。該算法利用差分結果,對像素點分類標識,并據此對背景像素點實施不同的更新。在文中給出該算法的具體實現方法,并用demo程序的截圖展示了該算法的性能。結果證明,該算法在運算并不復雜的情況下,可以很好地完成對監控區域內移動目標的實時偵測。
關鍵詞:動態偵測;背景重建;幀間求差;Directhow
A imple Implement of Motion Detection
WANG Yao,CU Xiuqin
(chool of Electronic Engineering,Xidian University,Xi′an,710071,China)
Abstract:Motion detection techniques are widely exploited in videos in many applications,an efficient algorithm has became the most important role in the real systemsAffter studying on the background rebuilding,this work proposes a simple,efficient algorithm of background subtraction,using the subtraction between frames and flag datasIt sorts the pixels using the subtraction results,and chose different update methods based on the sortIn the paper,a solution of that algorithm with Directhow in C++ programming environment has been explained,and the frames of the demo show the resultIt can be concluded that this implement has achieved the real-time detection in the observed area with no complex operations
Keywords:motion detection;background rebuilding;frame subtraction;Directhow
1 引 言
動態偵測已廣泛地應用到視頻監視、交通監控、偵查和追蹤等應用中。動態偵測通常有2種方法:一種是幀間變換檢測;另一種是基于塊匹配或是光流方法的運動矢量場計算。(背景重建)幀間變化檢測運算簡單,速度較快,主要應用于靜止背景下的運動檢測和對實時性有較高要求的系統,但對有全局運動的背景進行運動檢測時效果不夠理想。運動適量場計算能夠較精確地處理有全局運動背景的運動物體,主要應用于背景不斷變化的運動檢測;但由于運算量過大,對復雜或快速的運動處理效果并不好。
幀間變化檢測是將每一幀圖像與背景幀(參考幀)相比較,當前幀中明顯區別于參考幀的像素被認為是移動物體。另一種方法通過建立背景,用當前幀與背景幀比較的方法來標識運動物體。
背景的建立是偵測中的核心問題,一個健壯的背景算法直接關系到動態偵測的靈敏性。由于視頻監控環境的復雜性,如監控背景的不變化、光照和天氣的影響等原因,使用固定背景的方法對運動物體的識別有著明顯的弊端[1]。
幀間變化檢測可以通過連續幀之間求差值來標識運動物體。這種方法只與前一幀進行比較,沒有復雜的運算,也不需要很多存儲資源,因此具有良好的實時性。但是由于該算法只是簡單地將前后幀進行比較,可能會錯誤地將移動物體的內部像素點當作靜止的對象,從而影響偵測的效果。
連續幀比較雖然效率較高,并且也是實時地更新背景(使用前一幀作為后一幀判斷的參考幀),但是這種方法可能會錯誤地將移動物體內部的像素點認為是靜止的。
因此,常用的方法是建立背景,實時地更新背景,然后判別運動物體。
本文采用一種簡單的背景建立和更新的算法,通過對背景簡單、有效地更新,來實現對運動物體的偵測。
2 算法描述
21 圖像的預處理
在進行圖像處理之前,可以對采集到的原始圖像做平滑處理,以濾掉設備噪聲或雨雪天氣對圖像質量的影響。這一點可以用開運算來實現[2]。
由于灰度級圖像數據結構簡單,每個像素點只需一個字節,在采用背景建立時,通常的做法是保存背景圖像的灰度信息[3],并將當前圖像的灰度圖像與背景圖像相比較。然而,常用的圖像采集設備的輸出多是RGB格式,為此,可使用下面的公式將圖像轉換為灰度圖像:
Gray(x,y)=[WB]0299×R(x,y)+087×G(x,y)+
[DW]0114×B(x,y)
當然,也可以使用RGB格式,不過要注意的是R,G,B分量的數據格式。
22 背景的處理
對背景的處理分做2步,首先是建立背景。然后實時地更新背景。
在動態偵測的過程中,所有的運算都是圍繞背景來進行的。因此,在運動目標檢測算法開始前必須先建立初始背景;也就是要用最初的幾幀圖像得到一個相對穩定的圖像作為背景。之后,在偵測的過程中,不斷地更新背景。在背景的建立過程中,由于實際應用中不可能有過長的初始化,所以,應該使背景的建立采用一種能夠快速收斂的算法。同時考慮到在建立過程中背景可能的變動,應該將這些新的信息加入背景中。同樣的,對于背景的更新,也要加入新的信息,只是更新的速度沒有必要像建立時那么快了。
在背景的處理過程中,需要4個數據結構,一個與圖像幀數大小相同的數組(m_pbyFlag)作為背景建立成功的標志信息,3個與圖像相同大小的空間分別存儲背景(m_pbyBackground)、前一幀圖像(m_pbyOld)和前景中物體的運動信息(pbyMotion)。其中,標志數組(m_pbyFlag)中的每個元素為0時表示相對應的像素點的背景尚未建立;為1時則表示背景已建立;初始時應為0。前景中物體的運動信息(pbyMotion)用二值位圖表示,即屬于運動對象的像素點對應的數組元素為白色(2),對應于背景像素的元素表示為黑色(0)。
221 背景的建立
在完成準備工作后,首先要做的是建立初始背景。對m_pbyFlag進行初始化,將采集到第一幀圖像作為背景,并存為前一幀(舊)圖像(m_pbyOld)。將第二幀圖像中的像素分別與前一幀圖像相應像素進行比較,如果差值超過某個門限(m_ihreshold),則該點屬于移動對象,將該值賦給對應的背景值(m_pbyBackground),對應的運動圖像(pbyMotion)點為白色,背景標志不變;如果,差值低于門限,則該點記為背景元素,相應的背景值為當前幀與前一幀對應像素的平均數,運動圖像點為黑色,背景標志為1。最后,將當前幀的圖像存為舊圖像。
對于被認為是運動的點,由于它的狀態還沒有穩定,這種情況多數是由背景中暫時的運動目標引起的。在一段時間之后,這個運動目標要么移出了背景;要么靜止下來,成為背景的一部分。也就是說在有限的時間之后,背景圖像基本可以達到一個穩定的狀態。當然,背景中仍然會有“移動”的像素點,但當這些點的數目很少時,就可以將它們忽略掉。
對于“靜止”的點,它在連續2幀中基本沒有變化。雖然,連續幀的差值并不能說明該點屬于背景,但是在需要快速的建立起一個初始背景的情況下,這一近似對后面運算的影響并不大。
這樣,在經過幾次循環之后,運動標志數組中的多數元素就會變為1,也就是說多數像素點已有了穩定的背景圖像,此時,背景建立完成。
222 背景的更新
前面的背景建立過程可以看作是背景圖像更新的過程。不同的是在這更新的過程中,采用不同的更新速度。
在背景更新過程中,如果當前幀的某像素點為靜止時,由于該點并不是絕對的靜止,為了保證背景的適應性,仍然將兩幀的均值賦給該點,同時運動圖像點標記為黑色。如果當前幀的像素點被判斷為運動,則使用一個調節算子用當前幀和背景幀的圖像信息計算出一個新的背景值,并將運動圖像點置為白色。
pbyBackground[j]=(unsigned char)((1-m_fAlpha)×m_pbyBackground[j]+m_fAlpha×pbyNew[j])
由上面的公式可以看出,在背景的更新過程中,背景不停地、緩慢地加入移動目標的信息,當某一目標在背景中停留一定的時間之后,該目標就會溶入到背景中,成為背景的一部分。通過修改調節算子,就可以控制目標溶入背景的速度。如果這個值過小,背景的更新速度就會很快,最終會導致將一些速度較慢的運動目標誤判為靜止[4]。相反當該值過大,背景更新速度太慢,就會影響算法的實時性。因此,這一數值應根據實際應用的要求來調整。
23 運動目標的提取
在前面的運算中,運動目標已經被初步地提取出來。它們是運動圖像中的白色區域。對于簡單的動態偵測應用,這一結果已經能夠滿足需要。比如,在錄像監視系統中,通過檢測監控區域中可疑的運動目標來報警或錄像等措施。在這一類應用中,只需判斷檢測到的運動像素點的數目是否超過某個值,來觸發事件。然而對于更加復雜的應用(如目標識別等),由于圖像相減算法的局限性,這時所得到的運動目標的信息是不夠的。需要利用形態學的算法(如區域填充、連通性判斷等),對前面的結果做進一步的處理。

3 算法的實現
這里將文中提出的算法,在C++環境中借助Directshow開發包予以實現。下面是得到的3組程序的截圖。
圖1中,除了少數噪聲引起的誤判,背景的建立基本完成。
圖2中,當背景中出現運動目標后,運動偵測圖像中能偵測到運動目標的存在,并將前景圖像與背景的差別準確地顯示出來(正常圖像下方的差別百分比顯示條)。
圖3中,當新的背景建立后,運動目標已經完全溶入背景圖像中,成為背景的一部分。
4 結 語
本文提出的動態偵測的算法,可以比較準確地提取出運動目標;同時,由于運算簡單,實時可靠,較好地解決了運動物體的實時偵測問題。然而,在實際的偵測應用中,該算法的可靠性和穩定性仍需改進。
參 考 文 獻
[1]en-Ching ,Cheung C KRobust echniques for Background ubtraction in Urban raffic Video[A]Proceedings of PIE2004
[2]Rafael C GonzalezDigital Image Processing[M]Beijing:Publishing ouse of Electronics Industry,2003
[3]王星,潘石柱視頻監控系統中運動物體的實時偵測 [J]微型機與應用,2004,23(10):47-49
[4]Cucchiara R,Grana C,Piccardi M,et alDetecting Moving Objects,Ghosts and hadows in Video treams[J]IEEE ranson PattAnaland Machine Intell,2003,2(1):1 337-1 342
作者簡介 王 堯 男,1982年出生,碩士。