codebook

codebook

CodeBook演演算法的基本思想是得到每個像素的時間序列模型

文章出處


K. Kim, T. H. Chalidabhongse, D. Harwood and L. Davis, "Real-time Foreground-Background Segmentation using Codebook Model", Real-time Imaging, Volume 11, Issue 3, Pages 167-256, June 2005.

基本原理


這種模型能很好地處理時間起伏,缺點是需要消耗大量的內存。CodeBook演演算法為當前圖像的每一個像素建立一個CodeBook(CB)結構,每個CodeBook結構又由多個CodeWord(CW)組成。
CB和CW的形式如下:
CB={CW1,CW2,…CWn,t}
CW={lHigh,lLow,max,min,t_last,stale}
其中n為一個CB中所包含的CW的數目,當n太小時,退化為簡單背景,當n較大時可以對複雜背景進行建模;t為CB更新的次數。CW是一個6元組,其中IHigh和ILow作為更新時的學習上下界,max和min記錄當前像素的最大值和最小值。上次更新的時間t_last和陳舊時間stale(記錄該CW多久未被訪問)用來刪除很少使用的CodeWord。
假設當前訓練圖像I中某一像素為I(x,y),該像素的CB的更新演演算法如下,另外記背景閾值的增長判定閾值為Bounds
(1) CB的訪問次數加1;
(2) 遍歷CB中的每個CW,如果存在一個CW中的IHigh,ILow滿足ILow≤I(x,y)≤IHigh,則轉(4);
(3) 創建一個新的碼字CWnew加入到CB中, CWnew的max與min都賦值為I(x,y),IHigh <- I(x,y) + Bounds,ILow <- I(x,y) – Bounds,並且轉(6);
(4) 更新該碼字的t_last,若當前像素值I(x,y)大於該碼字的max,則max <- I(x,y),若I(x,y)小於該碼字的min,則min <- I(x,y);
(5) 更新該碼字的學習上下界,以增加背景模型對於複雜背景的適應能力,具體做法是:若IHigh < I(x,y) + Bounds,則IHigh 增長1,若ILow > I(x,y) – Bounds,則ILow減少1;
(6) 更新CB中每個CW的stale。
使用已建立好的CB進行運動目標檢測的方法很簡單,記判斷前景的範圍上下界為minMod和maxMod,對於當前待檢測圖像上的某一像素I(x,y),遍歷它對應像素背景模型CB中的每一個碼字CW,若存在一個CW,使得I(x,y) < max + maxMod並且I(x,y) > min – minMod,則I(x,y)被判斷為背景,否則被判斷為前景。
在實際使用CodeBook進行運動檢測時,除了要隔一定的時間對CB進行更新的同時,需要對CB進行一個時間濾波,目的是去除很少被訪問到的CW,其方法是訪問每個CW的stale,若stale大於一個閾值(通常設置為總更新次數的一半),移除該CW。
綜上所述,CodeBook演演算法檢測運動目標的流程如下:
(1) 選擇一幀到多幀使用更新演演算法建立CodeBook背景模型;
(2) 按上面所述方法檢測前景(運動目標);
(3) 間隔一定時間使用更新演演算法更新CodeBook模型,並對CodeBook進行時間濾波;
(4) 若檢測繼續,轉(2),否則結束。

演演算法效果圖


1、多模態背景的檢測情況
2、對壓縮視頻的處理方面
codebook
codebook
3、非乾淨背景訓練
codebook
codebook