【问题标题】:About the labels on OpenCV GrabCut segmentation with mask?关于带有掩码的 OpenCV GrabCut 分割的标签?
【发布时间】:2014-07-17 18:04:45
【问题描述】:

我正在使用 OpenCV 使用 GrabCut 分割一些图像。在我的图像上,我想从背景中分割出单个对象。我想找到物体的轮廓;我知道它的大概位置,所以我将它的中心标记为 FG = Foreground。然后我将它周围的一个小带标记为 P_BG = 可能的背景,这是我希望 GrabCut 执行分割的区域。最后,图像的其余部分被标记为 BG = 背景。我不想让 GrabCut 在这里做任何事情(没有图表,没有颜色模型,什么都没有)

现在,有 4 个可能的标签:

  • 可能的背景 (P_BG)
  • 可能的前景 (P_FG)
  • 背景(BG)
  • 前景 (FG)

问题

  • P_BGP_FG 之间的实际区别是什么?(看起来很明显,但我已将它们互换使用,但没有任何改变?
  • GrabCut 使用哪些标签来生成所使用的颜色模型(可能/不可能)?
  • 最后,我如何告诉 GrabCut 不要在背景区域做任何事情?(我希望它完全忽略背景区域,因为分割完整图像比分割裁剪版本(见下图),我等不及它分析整个图像,我已经提供了它应该“工作”的区域)

【问题讨论】:

    标签: python c++ opencv image-segmentation


    【解决方案1】:

    它在 BG 上什么也做不了,因为它使用像素作为 100% 确定背景的模型。 FG像素也是如此。

    如果您不使用 FG 和 BG 标签,您将看到 P_FG 和 P_BG 之间的区别。此 P_* 标签用于第一个模型,但可以在下一次迭代中重新标记。

    实际上,使用矩形初始化与使用矩形内部的 P_FG 和其余像素的 P_BG 的掩码相同。

    【讨论】:

      【解决方案2】:

      在 OpenCV 中 GrabCut 的当前实现中,无法让 GrabCut 完全忽略任何像素。每个像素都用于创建前景色和背景色模型。

      如果你不想被忽略的区域是矩形,可以先用roi提取图片的相关区域,剩下的部分再调用GrabCut。这将导致原始 ROI 之外的像素不会在颜色模型中使用,并且将是一种有效的实现,因为没有任何内容被复制。

      【讨论】:

        猜你喜欢
        • 2020-09-06
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2021-04-08
        • 1970-01-01
        • 2020-01-14
        • 2023-04-10
        相关资源
        最近更新 更多