9.2-9.16:codebook
【一】 基本原理
CodeBook算法的基本思想是为每一个像素点建立一个codebook,每个codebook包含一个或者多个码元code_elements,并且随着背景像素值波动情况的不同,不同像素点所包含的码元数目不一定相同。
CodeBook算法为当前图像的每一个像素建立一个码本CodeBook(CB)结构,每个CodeBook由多个码元code_element(ce)组成。CB和ce的形式如下:
CB={**cb,numEntries,t }
ce={learnHigh, learnLow,max,min,t_last_update,stale}
其中numEntries为一个CB中所包含的ce的数目,当n太小时,退化为简单背景,当n较大时可以对复杂背景进行建模;t为CB更新的次数。ce中learnHigh和learnLow作为更新时的学习上下界,max和min记录当前像素的最大值和最小值。t_last_update表示此码元最后一次更新的时间,stale表示此码元最长不更新时间(即该ce多久未被访问),用来删除很少使用的码元,精简码本。
【二】 步骤
1 模型训练
假设当前训练图像I中某一像素 (x,y),该像素的CB的更新算法如下,另外记背景阈值的增长判定阈值为Bounds:
(1) CB的访问次数加1;
(2) 遍历CB中的每个ce,如果存在一个ce中的learnHigh,learnLow满足learnLow≤I(x,y)≤learnHigh,则转(4);
(3) 创建一个新的码字new ce加入到CB中, new ce的max与min赋值为I(x,y),learnHigh <- I(x,y) + Bounds,learnLow <- I(x,y) – Bounds,并且转(6);
(4) 更新该码字的t_last_update,若当前像素值I(x,y)大于该码字的max,则max <- I(x,y),若I(x,y)小于该码字的min,则min <- I(x,y);
(5) 更新该码字的学习上下界,以增加背景模型对于复杂背景的适应能力,具体做法是:若learnHigh < I(x,y) + Bounds,则learnHigh 增长1,若learnLow > I(x,y) – Bounds,则learnLow减少1;
(6) 更新CB中每个ce的stale。设定刷新时间,遍历每个码元,若码元中的不更新时间大于设定的刷新时间,则删除;在刷新时间内则保持。
2 背景检测
使用已建立好的CB进行运动目标检测,记判断前景的范围上下界为minMod和maxMod,对于当前待检测图像上的某一像素I(x,y),遍历它对
opencv学习记录【6】(codebook
最新推荐文章于 2019-09-24 10:38:52 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)