【问题标题】:how to increase the accuracy of Grabcut Algorithm using OpenCV?如何使用 OpenCV 提高 Grabcut 算法的准确性?
【发布时间】:2017-03-20 05:56:00
【问题描述】:

我正在使用 OpenCV 的抓取算法对 android 中的图像进行背景减法。算法运行良好,但它给出的结果并不准确。 例如。我的输入图像是:

输出图像如下:

那么我们如何提高 Grabcut 算法的准确性?

P.S: 因声誉低而未上传示例图片深表歉意:(

【问题讨论】:

  • 如何链接:/没有任何托管..
  • 我已经更新了问题:)
  • 你看过this tutorial吗?它包含示例图像、示例代码,并且似乎可以解决与您的图像中的问题类似的问题。

标签: android algorithm opencv


【解决方案1】:

我已经与同样的问题作斗争了很长一段时间了。我对此有一些提示和技巧

1> 改进你的种子。考虑到 GrabCut 基本上是一个黑盒子,你给它种子并期望分割图像作为输出,种子是你可以控制的,选择好的种子变得势在必行。如果您对要分割的图像有一些期望,那么您可以在这方面做很多事情。对于少数情况,请考虑以下情况:

a> 你的图像会有人类吗?使用人脸检测器找到人脸并将这些像素标记为可能/确定的前景,只要您认为合适。您还可以使用某些感兴趣区域内的肤色模型来进一步完善您的种子

b>如果您有一些关于分割后期望什么样的前景的数据,您可以训练颜色模型并使用它们来标记更多像素

列表将继续。您需要创造性地想出不同的方法来添加更准确的种子。

2> 后期处理:尝试简单的后期处理技术,例如打开和关闭操作来平滑 fgmask。它们将帮助您消除最终输出中的大量噪音。

一般而言,graphcut(以及因此的grabcut)倾向于快速捕捉到边缘,因此如果您的前景边界附近有强边缘,则结果可能会不准确。

【讨论】:

  • 感谢您的详细回复。我是openCV的新手,你能指导如何标记图像的像素吗?
  • Grabcut 允许种子掩码输入。这意味着,对于图像中的每个像素,您可以设置以下四个值之一:GC_PR_FGD(可能前景)、GC_FGD(确定前景)、GC_BGD(背景)、GC_PR_BGD(可能背景)。因此,创建一个与图像大小相同的蒙版,并为每个像素设置其中一个值。如果您需要进一步的帮助,我建议您查看文档和一些示例代码,两者都可以在 openCV 网站上找到。
  • 嗨@TheBlueNotebook,我在制作相同尺寸的面具时遇到了一些问题,请看看希望你能帮忙[stackoverflow.com/questions/25180975/…
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2013-10-07
  • 2020-02-12
  • 2019-10-07
  • 1970-01-01
  • 2016-04-02
  • 2013-03-02
  • 2013-12-10
相关资源
最近更新 更多