![]() |
OpenCV 4.12.0
开源计算机视觉
|
在本章中,
背景减除是许多基于视觉的应用中的一个主要预处理步骤。例如,考虑访客计数器的情况,其中静态相机拍摄进出房间的访客数量,或者交通摄像头提取有关车辆的信息等。在所有这些情况下,首先需要单独提取人员或车辆。从技术上讲,您需要从静态背景中提取移动的前景。
如果您有一张单独的背景图像,例如没有访客的房间图像,没有车辆的道路图像等,那么这是一项简单的工作。只需从背景中减去新图像即可。您将单独获得前景对象。但在大多数情况下,您可能没有这样的图像,因此我们需要从我们拥有的任何图像中提取背景。当车辆有阴影时,情况会变得更加复杂。由于阴影也会移动,因此简单的减法也会将其标记为前景。这使事情变得复杂。
为此目的引入了几种算法。在下文中,我们将介绍来自 bgsegm 模块的两种算法。
它是一种基于高斯混合的背景/前景分割算法。它由 P. KaewTraKulPong 和 R. Bowden 在 2001 年的论文“An Improved Adaptive Background Mixture Model for Realtime Tracking with Shadow Detection”中引入。它使用一种方法通过 K 个高斯分布(K = 3 到 5)对每个背景像素进行建模。混合的权重表示这些颜色停留在场景中的时间比例。可能的背景颜色是那些停留时间更长且更静态的颜色。
在编码时,我们需要使用函数 cv.bgsegm.createBackgroundSubtractorMOG() 创建一个背景对象。它有一些可选参数,如历史长度、高斯混合的数量、阈值等。它都设置为一些默认值。然后在视频循环中,使用 backgroundsubtractor.apply() 方法来获取前景掩码。
请参阅下面的简单示例
(所有结果都显示在最后以进行比较)。
该算法结合了统计背景图像估计和逐像素贝叶斯分割。它由 Andrew B. Godbehere、Akihiro Matsukawa 和 Ken Goldberg 在他们 2012 年的论文“Visual Tracking of Human Visitors under Variable-Lighting Conditions for a Responsive Audio Art Installation”中引入。根据该论文,该系统从 2011 年 3 月 31 日至 7 月 31 日在加利福尼亚州旧金山的当代犹太博物馆成功运行了一个名为“我们到了吗?”的互动音频艺术装置。
它使用前几个(默认情况下为 120 个)帧进行背景建模。它采用概率前景分割算法,该算法使用贝叶斯推理识别可能的前景对象。估计是自适应的;较新的观察结果比旧的观察结果具有更高的权重,以适应可变照明。执行几个形态学滤波操作,如闭合和开启,以去除不需要的噪声。在最初的几帧中,您将获得一个黑色窗口。
最好对结果应用形态学开运算以去除噪声。
原始帧
下图显示了视频的第 200 帧
BackgroundSubtractorMOG 的结果
BackgroundSubtractorGMG 的结果
通过形态学开运算去除噪声。