OpenCV背景减法/码本?

时间:2011-10-13 21:38:04

标签: c++ image video opencv background-subtraction

我试用了codebook方法,但是并没有真正理解code_book结构中int t的要点。它的变量用于“计算每次访问”,但这完全失去了我。算什么访问什么?通过谁?有人可以向我解释成员变量的目的吗?请尝试使用非技术性术语

其次,在ce结构中,int t_last_update和int stale成员数据是什么意思? t_last_update应该杀死陈旧的条目,但是什么是陈旧的条目? “杀死它”是什么意思?对于int stale,它应该计算最大负面运行?什么是负面运行,它用于什么?

感谢您的帮助

PS:只是确认我需要的东西:解释一下code_book结构中的int t以及int结构中int t_last_update和int _stale的作用。

1 个答案:

答案 0 :(得分:3)

我假设您正在讨论OpenCV书中的这部分代码:

typedef struct code_book {
  ...
  int t; // Count every access
} codeBook;

基本上,每次将新帧添加到代码簿时,您都可以将 t 字段视为刻度计数。它用于确定从代码簿集合开始的时间长度,或最后清除过时像素的时间。

修改 您正在跟踪两个数据结构。 codeBook就像存储在其中的codeBook_elements(即 ce 结构)的父代。每次更新codeBook时, t 都会递增。但是,该更新可能不会增加所有codeBook_elements。所以......

t_last_update 是访问特定codeBook_element的最后一次。

陈旧有助于跟踪代码簿条目在代码簿中的“陈旧”程度。

negRun 代表负运行时间。它记录了自访问代码簿条目以来的时间。如果它太长,那么它被认为是陈旧的,并被删除以节省内存。

OpenCV示例中的代码簿方法有更新。看一下bgfg_codebook.cpp样本。

希望这很有用!