8

OpenCV 2.4.5 版提供了几种不同的实现,可用于跟踪使用统计方法估计背景的移动对象。OpenCV 具有在 CPU 上实现的类BackgroundSubtractorMOGBackgroundSubtractorMOG2此外,它还分别具有 和 的 GPU 实现BackgroundSubtractorMOGBackgroundSubtractorMOG2gpu::MOG_GPUgpu::MOG2_GPU。还有另外两种算法gpu::GMG_GPUgpu::FGDStatModel.

在我的应用程序中,我想在移动对象进入场景后立即对其进行分割。我想避免诸如阴影之类的误报。这 4 种算法似乎都专注于同一个目标——它们通过创建一个随时间变化的背景模型来将背景与前景分开。如果有这些实现经验的人可以帮助我决定使用哪个(GPU)实现,我正在徘徊。这些算法——MOG、MOG2、GMG 和 FGDStatModel——彼此之间有何不同?使用一种或另一种算法有什么优势?这些实现如何在速度、配置参数的能力、准确性、阴影检测(误报)等方面进行比较?

4

1 回答 1

5

我偶然发现了bgfg_segm.cpp位于{opencv_folder}\samples\gpu. 该演示显示了以下背景 - 前景分割类的用法并显示输出

FGDStatModel
MOG_GPU 
MOG2_GPU
VIBE_GPU  <- listed under `non-free functionality` in OpenCV documentation 
GMG_GPU 

这正是我比较算法所需要的。显然,需要调整算法的参数以找到适合给定应用程序的一个算法(以及一组参数)。

速度比较:

FGDStatModel  ~60 frames per second (fps) <-slowest 
MOG_GPU       ~650 fps
MOG2_GPU      ~650 fps
VIBE_GPU      ~1000 fps <- fastest
GMG_GPU       ~190 fps
于 2013-04-25T16:15:52.003 回答