高斯背景建模

從今天開始,想把openCV下的實例一個個都弄清楚。今天剛好學習gaussian background modeling。本來只是以爲建立高斯尺度空間,後來看代碼才發現我想的太簡單了。哎,以後我不能想當然了。所以我重新搜索資料,論文。也把自己的學習體會寫出來

Reference:

1An Improved Adaptive Background Mixture Model for Real-time Tracking and Shadow Detection

2, Real-time foreground–background segmentation

3, 基於混合高斯背景建模的陰影抑制算法

混合高斯模型 的基本思想是 對每個像素,定義 個狀態,每個狀態用一個高斯函數表示 ,這些狀態一部分表示背景 ,其餘部分表示前景。

我們先討論下Grimson & Stauffer的算法,他們引進一種算法,通過混合K個高斯分佈對每個背景像素進行建模(這裏K很小,一般取35)。不同的高斯分佈被假設爲不同顏色展示。混合模型的權重參數表示這些顏色分佈在場景中的時間熟悉。他們的算法不像Friedman 等人的工作,背景成分顏色是這些待得長久更顯靜態的那種。

在這裏,每一個像素都被K個高斯分佈來建模。某一像素在時間T的值Xn可以被寫爲

高斯背景建模

在這裏提出在線EM算法。這裏我們這樣估計高斯混合模型:通過期望有效估計更新方程,然後轉向L層最新窗口當前L樣本被處理過。在線EM算法通過期望有效估計(左邊式子)當L層最新窗口更新(右邊式子)

高斯背景建模

詳細分析cvbgfg_gaussmix.cpp(此文件在C:/OpenCV2.0/src/cvaux),這個cpp文件就是參照參考文獻1寫的代碼。這裏有一些很重要的函數,我在這裏貼出來,供自己以後用時參考。(這裏定義的函數大多是static ,如果要從cvaux.h中調用,需要把前面的函數聲明給注視掉,並且在函數定義中把static改爲CV_IMPL,其他不變,重新生成cvaux.h, 好像我也重新生成了install,纔可以正常使用)。

icvInsertionSortGaussians高斯背景檢測的內聯函數,插入。

icvMatchTest測試像素是否被高斯建模

icvUpdateFullWindow, icvUpdateFullNoMatch,

icvUpdatePartialWindow, icvUpdatePartialwindow

更新介於初始化過程和一般過程的不同

cvCreateGaussianBGModel 創建高斯背景模型

icvReleaseGaussianBGModel 釋放高斯背景模型

icvUpdateGaussianBGModel 更新高斯背景模型

發佈了29 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章