【问题标题】:OpenCV background subtraction/codebook?OpenCV背景减法/码本?
【发布时间】:2011-12-07 07:47:50
【问题描述】:

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

其次,在 ce 结构体中,int t_last_update 和 int stale member data 的意义何在? t_last_update 应该杀死过时的条目,但什么是过时的条目? “杀了它”是什么意思?而对于 int stale,它应该计算最大负数运行?什么是负数,它的用途是什么?

感谢您的帮助

PS:只是确认我需要什么:解释 int t 在 code_book 结构中的作用以及 int t_last_update 和 int _stale 在 ce 结构中的作用。

【问题讨论】:

  • 什么是“码本法”?
  • 背景减法的高级方法

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


【解决方案1】:

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

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

基本上,您可以将 t 字段视为每次将新帧添加到代码簿时的滴答计数。它用于确定从代码簿收集开始或最后一次清除陈旧像素开始的时间。

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

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

stale 有助于跟踪密码本条目在密码本中的“旧”程度。

negRun 代表负运行时间。它跟踪自访问代码簿条目以来的时间。如果时间过长,则认为它已过时并被删除以节省内存。

OpenCV 示例中的代码簿方法有更新。查看bgfg_codebook.cpp 示例。

希望对您有所帮助!

【讨论】:

  • 谢谢我完全理解了:) 只是一件小事- t_last_update 和 int t 看起来基本相同,那么为什么有两个不同的变量呢?再次感谢
  • 抱歉,我没有说得很清楚 :) 我将编辑答案以澄清这一点!
  • 谢谢你完美的总结:)
猜你喜欢
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
相关资源
最近更新 更多