如何使用OpenCV提高Grabcut算法的准确性?

时间:2014-07-25 05:25:01

标签: android algorithm opencv

我使用OpenCV的抓取算法来获取android中图像的背景扣除。算法运行良好,但它给出的结果并不准确。 例如。我的输入图片是:

http://i.stack.imgur.com/UkChv.jpg

输出图像如下:

http://i.stack.imgur.com/Kyp3O.jpg

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

P.S:由于信誉不佳而没有上传示例图片的道歉:(

1 个答案:

答案 0 :(得分:0)

我一直在与同样的问题争论很长一段时间。我有一些提示和技巧

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

A>你的形象会有人类吗?使用面部检测器找到面部,并将这些像素标记为可能/确定的前景,如您所愿。您还可以在一些感兴趣的区域内使用肤色模型来进一步细化种子

B个如果您有关于分割后期望的前景类型的数据,您可以训练颜色模型并使用它们来标记更多像素

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

2 - ;后处理:尝试简单的后处理技术,如打开和关闭操作,以平滑你的fgmask。它们将帮助您摆脱最终输出中的大量噪音。

一般情况下,图形切割(以及因此的抓取)往往会快速捕捉到边缘,因此如果您的边缘接近前景边界,则可能会出现结果不准确的情况。