背景平均不起作用

信息处理 计算机视觉 opencv 机器学习 背景减法
2022-01-26 20:07:23

我正在解决一个问题,我正在尝试使用背景平均来查看框架在蜜蜂后面的蜂箱中的样子。我一直在尝试使用标准平均(在我的 3 小时视频过程中,我每 1 或 4 秒拍摄一张图像)以及其他技术,如 mog 和 mog2。问题是中心的蜜蜂密度非常高,紧紧地挤在一起,几乎不动,所以当我最终看到中间的背景很好时,中心变成了像这样的一点污点:

在此处输入图像描述

有人对我可以做些什么来改善事情有任何建议吗?我与一位研究人员交谈过,他建议将所谓的“稀疏编码”作为一种可能的选择,我很好奇 OpenCV 是否有类似的东西,或者是否有人知道我可以尝试的任何其他技术。

3个回答

我会尝试与您的数据的低秩近似相关的技术X. 例如,论文GoDec: Randomized Low-rank & Sparse Matrix Decomposition in Noisy Case试图分解

X=L+S+G
具有低等级部分(rank(L)r),稀疏部分 (card(S)k) 和一个残差G.

它已被用于背景建模,背景与低秩部分相关,加上稀疏的独立对象。

在此处输入图像描述

一些视频演示是:

在鲁棒矩阵分解领域有其他选择,我将其理解为稀疏编码的一个例子。

为什么不在平均之前对每个图像进行高通滤波,去掉低频(比梳子更大的蜜蜂)?然后,当您对图像进行平均/求和时,您应该主要集成梳子

嘿,似乎平均值不是这里的解决方案,因为大多数时候蜜蜂捕捉到背景,

如果你说高斯混合不起作用,我会尝试 1. 使用可视化来更多地了解我想要找到的东西。我将绘制背景像素的时间值并查看其中的一堆

例如,如果您的图像构建为类似于称为 timeSeries的 [ rows column times ] 矩阵

plot ( timeSeries(i,j,:) ,'.');
  1. 我使用的一个非常简单的想法是中值滤波,它可以很好地去除明亮的异常值。但是,在您的情况下,您可能需要在每个像素上使用较小的百分位数

就像是:

bg_img(i,j) = prctile ( timeSerties(i,j,:) , 30 ) ;

希望有帮助,干杯,埃拉德