原文链接:http://blog.csdn.net/quzhongxin/article/details/45558269
在使用codebook背景建模过程中,对于模型的背景更新始终一个问题。
1 我们要求的目标是:
- 1 在人静止不动时,不能把人更新成背景(必须保证人始终是前景);
- 2 但是对于移动的书本等要能够被更新成背景
2 提出的解决办法:
2.1 采用两个codebook背景模型,
一个模型:主模型M,用来分割前景
另一个模型:重新建模模型R,满足条件后重新建模成功,R替代M;如果重新建模失败,需释放掉R
R替代M后,要将M释放掉,然后重新初始化一份R
temp = M;
M = R;
free(temp);
R = Init();
如何释放存在的codebook码本模型?
void CodeBookDestroy(codeBook* T, int len) //len = width*height
{
for(int j = 0; j < len; j++)
{
if (T[j].cb)
{
for (int i = 0; i < T[j].numEntries; i++)
{
delete T[j].cb[i];
}
delete [] T[j].cb;
}
}
if (T)
delete [] T;
T = NULL;
}
2.2 重新建模的条件(满足一个即可)
统计当前帧中前景点的比例 p:
1. 画面没有前景时, 意味着此时房间没有人 (
2. 有太多的前景时,意味着光线发生了变化或摄像头被移动,或背景模型计算不准确(
3 参考论文
Smart Vision for Managed Home Care:
http://download.csdn.net/detail/quzhongxin/8671203