1. 程式人生 > >背景建模演算法--平均背景建模、單高斯背景建模C實現

背景建模演算法--平均背景建模、單高斯背景建模C實現

1、背景建模

  視訊影象中運動目標的檢測的一種基本思想是對影象的背景進行建模,既是將所有畫素分為背景和運動前景兩類。
背景建模方法可以分為兩類 – 顏色背景建模和紋理背景建模。此文只涉及顏色背景建模。紋理背景建模可參考
顏色背景建模的基本原理:對影象中每個畫素的顏色值(灰度或彩色)進行建模。若當前影象座標(x,y)上的畫素顏色值與背景模型中(x,y)處的畫素顏色值有較大差異,當前畫素被認為是前景,否則為背景。

2、平均背景建模(Average Background Model)

平均背景建模是一種簡單,計算速度快但是對環境光照變化和背景的多模態性比較敏感的一種備件建模演算法。


基本思想:
  計算每個畫素的平均值作為它的背景建模。檢測當前幀時,只需要將當前幀畫素值I(x,y)減去背景模型中相同位置畫素的平均值u(x,y),得到差值d(x,y),將d(x,y)與一個閾值TH進行比較,大於閾值的就認為是前景,否則為背景。輸影象為二值影象。
在這裡插入圖片描述
公式(3-5):
在這裡插入圖片描述
為了提高演算法的魯棒性可以在檢測之後對背景模型進行更新。
在這裡插入圖片描述
這裡α為學習率(0-1),該值越大,對背景變化的適應速度越快。
公式(3-9):
在這裡插入圖片描述
原始的演算法流程:

1、計算M幀影象的平均值建立一個初始背景BG並計算平均值和標準差(公式3-4 及3-5)
2、將當前影象減去BG得到差值D,通過公式(3-2)檢測前景畫素和背景畫素;
3、通過公式3-7,3-8,3-9對BG,平均值和標準差進行更新;
4、繼續步驟2,3直到遍歷完所有畫素;

demo輸出:
在這裡插入圖片描述

演算法改進:
  增加一個輔助背景SBG(Secondary Background),將SBG的初始值設定為BG,既是
     SBG(X,Y) = BG(X,Y) (3.11)
得到的新的輸出影象output_s的值如下:
在這裡插入圖片描述
其中
      在這裡插入圖片描述

demo結果:
在這裡插入圖片描述

3、單高斯背景建模

  單高斯背景建模能處理有微小變化與慢慢變化的簡單場景。 當場景背景變化很大、發生突變或者背景畫素為多峰分佈(如微小的重複運動)時,背景畫素變化較快,這事單高斯背景建模不適用,可以考慮使用GMM。
  單高斯背景建模基本原理:該模型認為對一個背景影象,特定畫素亮度的分佈滿足高斯分佈,對背景影象B,每一個(x,y)的亮度滿足B(x,y)~N(u,d):
                           在這裡插入圖片描述


既是每一個點(x,y)都包含了兩個屬性,均值u和方差d。
計算一段時間內的視訊序列影象中每一個點的均值u和方差d,作為背景模型。對於一幀影象G,圖片上每一個(x,y)計算,若:
                                在這裡插入圖片描述
(T為閾值常數)則認為該點是背景點,否則為前景點。接下來進行背景更新,每一幀影象的背景更新公式為:
                        在這裡插入圖片描述
  其中P為一個常數,用來反映背景更新率,p越大,背景更新的越慢。(具體看公式,B,G的位置可能調換,demo實現的p越小更新越慢) 若P取1則退化為幀間差分法。
demo輸出:(第一幅為一開始的輸出,第二幅背景更新之後輸出:)
在這裡插入圖片描述
在這裡插入圖片描述

3、demo

4、參考

https://blog.csdn.net/zzq060143/article/details/53736650
https://blog.csdn.net/shenziheng1/article/details/60881160