高斯背景建模学习 icvUpdatePartialWindow()
2009-08-06 20:36
337 查看
//更新局部窗口,当我们设时间窗为500帧时,2~499帧的更新方法,与500帧的更新不同点为alpha和pho 不一样
static void icvUpdatePartialWindow( double* src_pixel, int nChannels, int* match, CvGaussBGPoint* g_point, const CvGaussBGStatModelParams *bg_model_params )
{
int k, m;
int window_current = 0;
for( k = 0; k < bg_model_params->n_gauss; k++ )
window_current += g_point->g_values[k].match_sum;//计算匹配的高斯模型个数和
for( k = 0; k < bg_model_params->n_gauss; k++ )
{
g_point->g_values[k].match_sum += match[k];
double learning_rate_weight = (1.0/((double)window_current + 1.0)); //increased by one since sum
g_point->g_values[k].weight = g_point->g_values[k].weight +
(learning_rate_weight*((double)match[k] - g_point->g_values[k].weight));
if( g_point->g_values[k].match_sum > 0 && match[k] )
{
double learning_rate_gaussian = (double)match[k]/((double)g_point->g_values[k].match_sum);
for( m = 0; m < nChannels; m++ )
{
const double tmpDiff = src_pixel[m] - g_point->g_values[k].mean[m];
g_point->g_values[k].mean[m] = g_point->g_values[k].mean[m] +
(learning_rate_gaussian*tmpDiff);
g_point->g_values[k].variance[m] = g_point->g_values[k].variance[m]+
(learning_rate_gaussian*((tmpDiff*tmpDiff) - g_point->g_values[k].variance[m]));
}
}
}
}
static void icvUpdatePartialWindow( double* src_pixel, int nChannels, int* match, CvGaussBGPoint* g_point, const CvGaussBGStatModelParams *bg_model_params )
{
int k, m;
int window_current = 0;
for( k = 0; k < bg_model_params->n_gauss; k++ )
window_current += g_point->g_values[k].match_sum;//计算匹配的高斯模型个数和
for( k = 0; k < bg_model_params->n_gauss; k++ )
{
g_point->g_values[k].match_sum += match[k];
double learning_rate_weight = (1.0/((double)window_current + 1.0)); //increased by one since sum
g_point->g_values[k].weight = g_point->g_values[k].weight +
(learning_rate_weight*((double)match[k] - g_point->g_values[k].weight));
if( g_point->g_values[k].match_sum > 0 && match[k] )
{
double learning_rate_gaussian = (double)match[k]/((double)g_point->g_values[k].match_sum);
for( m = 0; m < nChannels; m++ )
{
const double tmpDiff = src_pixel[m] - g_point->g_values[k].mean[m];
g_point->g_values[k].mean[m] = g_point->g_values[k].mean[m] +
(learning_rate_gaussian*tmpDiff);
g_point->g_values[k].variance[m] = g_point->g_values[k].variance[m]+
(learning_rate_gaussian*((tmpDiff*tmpDiff) - g_point->g_values[k].variance[m]));
}
}
}
}
相关文章推荐
- 高斯背景建模学习 icvUpdateFullWindow()
- 高斯背景建模学习 icvUpdateFullNoMatch()
- 高斯背景建模学习 icvUpdateGaussianBGModel()
- 图像处理学习之改进的混合高斯背景建模
- 高斯背景建模的学习
- 高斯背景建模学习之icvUpdateFullWindow函数篇
- 背景建模与前景检测(一)——混合高斯GMM
- 单高斯背景建模
- 单高斯背景建模
- 单高斯背景建模opencv仿真
- 混合高斯背景建模理解(原创)
- 单高斯背景建模
- 高斯背景建模(待写)
- 高斯背景建模
- 【OpenCV】高斯混合背景建模
- 混合高斯背景建模
- 混合高斯背景建模原理及实现
- 车辆前景检测算法——GMM(高斯混合背景建模)
- OpenCV学习之利用背景建模检测运动物体
- 高斯背景建模