用于背景扣除的高斯混合模型

时间:2019-10-09 22:10:32

标签: algorithm opencv computer-vision background-subtraction gmm

这更像是我想与社区讨论的事情,而不是我寻求绝对答案的事情。

我正在尝试从头开始实现基于GMM的背景扣除算法。显然,OpenCV已经实现良好(MOG2)。我仍想从头开始实现它,因为我想测试一些OpenCV不提供访问的参数。但是,我的实现在4k图像上运行时非常慢,并且占用了大量内存,而OpenCV每秒可以实现约5-10张图像甚至更快,并且不占用太多内存。我并不感到惊讶,OpenCV比我的要快得多,但仍然对它的实现方式感到好奇。

所以这是我的想法:

  • GMM方法是构建高斯混合体来描述每个像素的背景/前景。话虽如此,每个像素将具有3-5个关联的3维高斯分量。我们可以通过对不同通道使用共享方差而不是协方差来简化计算。然后,对于每个高斯分量,我们至少应具有3个均值,1个方差和1个权重参数。如果我们假设每个像素将保持3个分量。读取图像时,这大约是4000 * 2000 * 3 *(3 + 1 + 1)个参数。

  • 用于更新GMM的计算,尽管单个像素不是很复杂,但是用于计算整个4000 * 2000像素的总时间仍然非常昂贵。

  • 当我在没有图形卡的Mac上进行测试时,我认为CUDA不会加速OpenCV MOG2。速度仍然很快。

所以我的问题是:

  • OpenCV是否在将图像输入模型之前先对其进行压缩并在返回时解压缩结果?
  • 是否可以在CPU上并行化实现4k图像的近实时处理(无图像压缩)?
  • 我的实现使用4000 * 2000双向链接列表来维护4k图像的高斯分量。我期望它可以为我节省一些内存,但是当我在4k图像上对其进行测试时,内存仍然爆炸。

加:

    我确实在调整大小的图像上测试了OpenCV MOG2(从(3840,2160)减小到(384,216)),并且检测似乎可以接受。

这可能是一个奇怪的问题...但是,对此我表示感谢。

0 个答案:

没有答案
相关问题