我试图使用absdiff函数减去两个图像,以提取移动物体,它工作正常但有时背景出现在前景之前。 这实际上发生在背景和前景色相似时,是否有任何解决方案可以解决这个问题? 可能对上述问题的描述不够;所以我附上以下图片 link。 谢谢..
答案 0 :(得分:3)
您可以使用一些预处理技术,如边缘检测和一些对比度拉伸算法,这将为您提供一些额外的信息来减去图像。由于颜色相同,但新物体应具有边缘等纹理特征;如果边缘得到正确保存,那么在执行图像减法时,您将获得该对象。
流程:
答案 1 :(得分:1)
没有足够的信息来为您的问题制定完整的解决方案,但我可以提供一些提示:
首先,使用强大的预过滤输入和背景图像 中位数(或高斯)滤波器。这将使您的结果更多 强大的图像噪音和轻微的,非必要的细节混淆 (就像你的背景图片的水平线)。除非你想要 要检测单根移动的头发,您不需要处理 原始像素。
接下来,根据评论中提供的建议来测试所有3种颜色 通道而不是直接进入灰度级。
然后从完成的3个absdiffs的最大值创建一个灰度图像 在每个频道上。
然后执行结账和开业程序。
我不知道你的要求,所以我不能将它们考虑在内。如果准确性至关重要。我在高斯输入图像上使用中值滤波器。如果速度是一个问题,我会缩小输入图像以进行至少一半的处理,然后再将结果放大。如果摄像机处于固定位置并且您具有预先校准的背景,那么当前的天真差异方法应该起作用。如果系统必须在很长一段时间内确定来自真实世界环境的移动(移动阴影,植物,车辆,天气等),那么滚动平均(或高斯)背景模型将更好地工作。如果相机正在移动,则需要进行更多处理,可能需要进行一些光流和/或傅立叶变换测试。所有这些都需要考虑为应用程序提供最佳解决方案。