OpenCV背景减法/码本

OpenCV background subtraction/codebook?

本文关键字:码本 背景 OpenCV      更新时间:2023-10-16

我尝试了codebook方法,但不太理解在code_book结构体中使用int t的意义。它是用于"计数每次访问"的变量,但这完全让我迷惑了。计算什么访问权限?由谁?有人能给我解释一下成员变量的用途吗?请尽量使用非专业术语

其次,在ce结构体中,int t_last_update和int过期成员数据的意义是什么?T_last_update应该杀死陈旧的条目,但是陈旧的条目是什么?你说的"杀了它"是什么意思?对于int stale,它应该计算最大负运行?什么是负运行,它的用途是什么?

谢谢你的帮助

PS:只是确认我需要的:解释一下在code_book结构体中int t做什么,在ce结构体中int t_last_update和int _stale做什么。

我想你说的是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示例。

希望这对你有帮助!