【问题标题】:OpenCV Background subtraction with varying illumination具有不同照明的 OpenCV 背景减法
【发布时间】:2020-05-07 08:13:21
【问题描述】:

我正在进行一个项目,我必须在摄像头提供的图像中自动分割汽车的不同部分(即车门、前灯等)。

在第一步中,我想删除背景,这样算法就不会在不应该的地方找到任何东西。

我也有只是背景的图像,但是由于曝光时间、汽车光线的反射等原因,光照有很大的不同。

我尝试通过简单的减法来消除 BG,但不幸的是,由于光照条件非常不同,这并没有太大帮助。

所以接下来我应用了直方图均衡化,但这也没有太大帮助。

我怎样才能摆脱这种不同照明场景中的背景?有没有我可以对这两个图像使用的 OpenCV 方法?

【问题讨论】:

    标签: opencv image-processing background-subtraction


    【解决方案1】:

    Opencv 有三种不同的背景减法方法:

    BackgroundSubtractorGMG  bs_gmg;
    BackgroundSubtractorMOG  bs_mog;
    BackgroundSubtractorMOG2 bs_mog2;
    
    Mat foreground_gmg;
    bs_gmg  ( image,  foreground_gmg, -1.0 );
    Mat foreground_mog;
    bs_mog  ( image,  foreground_mog, -1.0 );
    Mat foreground_mog2;
    bs_mog2 ( image, foreground_mog2, -1.0 );
    

    您可以阅读它们并使用最适合您的。

    【讨论】:

    • 嗨,Safir,感谢您的意见。我是否正确地假设这只适用于几个图像而不是只有 2 个(背景和背景+前景)?我发现的示例依赖于视频流,即多个输入图像。
    • 背景在视频流的意义上具有意义。否则你怎么知道某事是否是背景。在这些算法中,他们学习什么是移动的,因此是前景,什么是不动的,因此是背景。如果您有静态背景,我认为通过减法您必须能够从任意图像中删除它。
    【解决方案2】:

    我的经验表明,照明条件可以有如此多的变化,两张图像根本不够。您从基于像素的方法开始,对两个图像进行简单的逐像素减法,但光照变化使颜色看起来非常不同,即使在 HSV 空间中也是如此。这是光圈问题的一个例子,它是计算机视觉中最基本的困难之一。简单来说,我们需要更多的上下文。因此,您尝试通过估计和校正全局照明参数来获得该上下文,但发现这还不够,因为图像的不同区域可能具有不同的反射率属性,或者与光源的角度不同。如果继续使用这种方法,下一步是根据外观将图像分割成区域,并分别均衡每个区域中的直方图。例如,试试Watershed Segmentation

    还有另一种方法。背景实际上可能不是这里信息最丰富的线索,为什么要从它开始呢?你可以转向Viola-Jones approach,然后从那里开始。让它工作后,从后台添加信息以提高质量。

    【讨论】:

      【解决方案3】:

      你没有提到你使用什么色彩空间。我假设RGB?有一些颜色空间类型默认处理亮度参数,因此您可以使用这些信息应用背景减法算法。看看http://en.wikipedia.org/wiki/HSV_color_space

      【讨论】:

      • 我目前正在使用 RGB 颜色空间(我收集的 opencv 中的 BGR)。我会尝试转换到另一个空间,看看这是否会有所帮助,谢谢 Adi。
      【解决方案4】:

      嗯...只是说,我不确定这是否可行,但您可以基于更大的区域(如内核)应用减法,然后在该点放置直方图变化。 例如。假设我们的内核补丁设置为30x30 像素,我们将其应用于来自背景图像的像素p(x,y) 和来自测试图像的q(x,y)(p 和 q 是每个图像上相同的相应位置)。因此,我们有一个 30x30 的减色补丁图像。

      现在,试着处理这个减去的补丁产品,比如它的直方图。零直方图意味着相同的比较补丁。 “几乎平坦”的直方图可能意味着相同。否则,将其视为前景。

      【讨论】:

      • 你会碰巧有一些用于这种方法的代码吗?不幸的是,我在 OpenCV / C++ 方面没有那么先进。
      • 搜索“访问 cvMat 元素”、“opencv 直方图比较”和“opencv filter2d”。
      猜你喜欢
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2014-04-03
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多