SACON(SAmple CONsensus)算法是基於樣本一致性的運動目標檢測算法。該算法通過對每個像素進行樣本一致性判斷來判定像素是否為背景。
算法框架圖
由上圖可知,該算法主要分為四個主要部分,分別是鄰域差分、SACON算法核心處理、空洞填充后處理、TOM(Time Out Map),其中TOM(Time Out Map)主要用於背景模型更新,其他部分屬於前景目標檢測。
背景模型建立
SACON算法建立背景模型的方法是直接取視頻序列的前N幀作為背景模型。
對於每個像素而言,其背景模型可以表示為:C(c1,c2,...,cN),對於彩色圖像,ci=(r,g,b),對於灰度圖像,則對應於灰度值。
前景目標檢測
1.鄰域幀間差分
為了減少計算量,加快計算速度,采用鄰域幀間差分法提取可能的運動像素。
2.SACON算法核心
對於新像素,將其與對應的背景模型比較,判斷新像素是否滿足背景模型樣本的一致性。判定方法如下:
其中,兩個公式分別計算新像素與背景模型的樣本是否距離相近和統計距離相近的樣本數目,當距離相近的樣本數目大於閾值時,則判定新像素為背景,Bt(m) = 1。
公式涉及的閾值主要有Tr和Tn,當背景模型的樣本集合的數目N越大,距離閾值Tr越大,則近似樣本數目閾值Tn越大,因而Tn正比於N和Tr,Tn = a * N * Tr,a為比例因子。
3.后處理
后處理主要包括兩個操作:陰影去除和空洞填充。
陰影去除:采用進一步的驗證規則,去除陰影區域,驗證規則如下:
其中,{r,g,I}是歸一化的色彩空間,r = R/(R+G+B), g = G/(R+G+B),I = (R+G+B)/3,具體細節請參考論文資料。
空洞填充:對於檢測到的前景,采用連通性分析,填充前景區域的內部空洞,主要通過形態學濾波實現。
背景模型更新
考慮到背景的移出或前景的停止,SACON算法采用TOM(Time of Map)進行處理,將背景的移出和運動目標的停止而引起的變化很快的融入到背景中,具體的更新方法分為Pixel-level和Blob-level。
1.Pixel-level
該方法主要統計像素m連續分為前景的次數,TOMt(m)。
如果TOMt(m)的值超過一個閾值,則更新像素m對應的背景模型。
2.Blob-level
如果一個目標(a blob)處於靜止狀態,則該目標所包含的所有像素的TOM都加1;
如果不處於靜止狀態,則該目標所包含的所有像素的TOM都置為0;
如果目標的TOM值大於閾值時,則該目標所包含的所有像素更新為背景像素。
Blob-level的更新方法,主要是彌補Pixel-level的不足,當一個目標包含運動的部分和不運動的部分,不運動的部分會持續被判定會前景,從而會被Pixel-level更新為背景;而運動的部分會時而被判定為前景,時而判定為背景,不會被Pixel-level更新為背景;最終的更新后結果是一個目標被分割,部分被檢測為前景,部分被檢測為背景,不合理。
Blob-level通過整體判斷目標是否處於運動或靜止,從而整體更新目標,保證了目標的完整性。
如上圖所示,描述一個人走入房間,坐下並打電話,打電話過程中,人大部分區域處於靜止狀態,只有部分區域處於輕微運動狀態。
(a)是原始圖片,(b)是利用Pixel-level更新方法后的檢測結果,(c)是結合Pixel-level和Blob-level更新方法的檢測結果。
由顯示結果可以看出,Pixel-level將處於靜止狀態的區域更新為背景,而Blob-level方法判定人整體處於運動狀態,因而人未被更新為背景。
注意:
1.背景更新時,背景模型樣本集合的替換策略未說明,是先進先出,還是隨機替換,每次替換的數目也未說明。
2.如何判定一個目標(a blob)是處於運動狀態,還是處於靜止狀態,文中只是提到可以利用目標的中心和像素的數目判定,但具體的策略也未說明。
參考資料:
http://blog.csdn.net/kezunhai/article/details/9500637
http://www.dotblogs.com.tw/dragon229/archive/2012/01/13/65615.aspx
Background Subtraction Based on a Robust Consensus Method
SACON: A Consensus Based Model for Background Subtraction