codebook 背景建模更新及码本模型怎么释放内存

codebook 背景建模更新及码本模型如何释放内存

在使用codebook背景建模过程中,对于模型的背景更新始终一个问题。

1 我们要求的目标是:

  • 1 在人静止不动时,不能把人更新成背景(必须保证人始终是前景);
  • 2 但是对于移动的书本等要能够被更新成背景

2 提出的解决办法:

2.1 采用两个codebook背景模型,

一个模型:主模型M,用来分割前景
另一个模型:重新建模模型R,满足条件后重新建模成功,R替代M
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 重新建模的条件(满足一个即可)

  1. 画面没有前景时, 意味着此时房间没有人
  2. 有太多的前景时,意味着光线发生了变化或摄像头被移动,或背景模型计算不准确

3 参考论文

Smart Vision for Managed Home Care:
http://download.****.net/detail/quzhongxin/8671203