【发布时间】:2014-05-22 12:25:20
【问题描述】:
我正在研究一种跟踪算法,它最早的步骤之一是背景减法。该算法获取一系列帧,这些帧代表具有移动对象和静态背景的视频。对象在每一帧中。
在这个过程的第一个版本中,我计算了所有帧的中值图像,并获得了非常好的背景场景近似值。然后我从视频序列中的每一帧中减去生成的图像以获得前景(移动对象)。
上述方法效果很好,但后来我尝试使用 OpenCV 的背景减法器 MOG 和 MOG2 来替换它。
我不明白的是这两个类如何执行“背景模型的预计算”?据我从几十篇教程和文档中了解到,每次我使用 apply() 方法并返回前景蒙版时,这些减法器都会更新背景模型。
但这意味着 apply() 方法的第一个结果将是一个空白掩码。并且后面的图像将在其中包含初始对象的位置重影(参见下面的示例):
我错过了什么?我用谷歌搜索了很多,似乎是唯一一个遇到这个问题的人......有没有一种方法可以运行我不知道的后台预计算?
编辑:我发现了一个“技巧”:在使用 OpenCV 的 MOG 或 MOG2 之前,我首先计算中值背景图像,然后在第一次 apply() 调用中使用它。以下 apply() 调用会生成没有初始位置重影的前景蒙版。
但是,这是应该这样做还是有更好的方法?
【问题讨论】:
-
你不是唯一一个遇到这个问题的人 :-)
标签: opencv computer-vision background-subtraction