混合高斯背景建模是基於畫素樣本統計資訊的背景表示方法,利用畫素在較長時間內大量樣本值的概率密度等統計資訊(如模式數量、每個模式的均值和標準差)表示背景,然後使用統計差分(如3σ原則)進行目標畫素判斷,可以對複雜動態背景進行建模,計算量較大。
在混合高斯背景模型
高斯分布
來描述每個畫素點的顏色呈現規律【單模態(單峰),多模態(多峰)】。
詳細演算法流程:
更正:4中p的更新如下:
**如下:
// my_mixgaussians.cpp : 定義控制台應用程式的入口點。
//
//#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int main(int argc,char *argv)
} }
//update gaussian components for each pixel
for (i=0;iimagedata[i*width+j];
sd[i*width*c+j*c+k] =sqrt((1-p)*(sd[i*width*c+j*c+k]*sd[i*width*c+j*c+k]) + p*(pow((uchar)current->imagedata[i*width+j] - mean[i*width*c+j*c+k],2)));
}else
temp += w[i*width*c+j*c+k];
} for(k=0;kimagedata[i*width+j] = (uchar)bg_bw[i*width+j];
//if no components match, create new component
if (match == 0)
for (k=0;krank[m])
} }
//calculate foreground
match = 0;k = 0;
//frg->imagedata[i*width+j]=0;
while ((match == 0)&&(k= thresh)
if (abs(u_diff[i*width*c+j*c+rank_ind[k]]) <= d*sd[i*width*c+j*c+rank_ind[k]])
else
frg->imagedata[i*width+j] = (uchar)current->imagedata[i*width+j];
k = k+1;
} }
}
mframe = cvqueryframe(capture);
cvshowimage("fore",frg);
cvshowimage("back",test);
cvshowimage("yuan",current);
char s=cvwaitkey(33);
if(s==27) break;
free(rank_ind);
} free(fg);free(w);free(mean);free(sd);free(u_diff);free(rank);
cvnamedwindow("back",0);
cvnamedwindow("fore",0);
cvnamedwindow("yuan",0);
cvreleasecapture(&capture);
cvdestroywindow("fore");
cvdestroywindow("back");
cvdestroywindow("yuan");
return 0;
}
程式執行結果:
從左到右依次為:前景,背景,原圖。
OpenCV混合高斯背景建模
本文主要內容是乙個混合高斯背景建模 1 的opencv例子。想要了解mog原理可以參考混合高斯背景建模原理及實現 opencv的mog例子 如下 include stdafx.h include include include include include include include incl...
高斯混合背景建模的改進方案
高斯混合背景建模原理 1 stauffer提出自適應混合高斯背景建模,通過融入幀間差分把每幀中的影象區分為背景區域 背景顯露區域和運動物體區域。相對於背景區域,背景顯露區中的畫素點將以大的更新率更新背景模型,使得長時間停滯物體由背景變成運動前景時,被遮擋的背景顯露區被快速恢復。劉鑫,劉輝,強振平,等...
matlab 混合高斯背景建模的實現
clc clear 混合高斯背景建模 引數 gauss n 3 每個畫素點高斯背景模型數量 a 0.005 學習速率 alpha vt 2.5 2 方差閾值 2.5 2.5倍的方差varthreshold bgr 0.7 背景比率 backgroundratio w0 0.05 初始權值 weigh...