在Focus App的智能焦点算法之后

时间:2017-04-25 13:49:10

标签: ios image opencv image-processing image-segmentation

我正在尝试在iOS中制作图像分割应用程序。所以我在OpenCV中使用了GrabCut

然后我查看了类似的iOS应用程序并找到了After Focus。他们使用用户的提示(前景,背景)快速分割图像。

我想知道如何分割图像。

enter image description here

1 个答案:

答案 0 :(得分:0)

GrabCut算法基本上是从图论中推导出来的。关键方面是将图像分为两个部分:

  • 前景
  • 背景

现在,用户在图像上绘制许多线条(白色和黑色)以表示前景和背景。这些行上的每个像素都被视为图表中的节点另外两个**节点称为** sink(背景)源(前景)

绘制的线条上的每个像素都连接到具有特定权重的 sink

这些权重是多少?

  • 如果某个像素(节点)被用户标记为 background ,它将连接到 sink 节点,其重量更高 较低权重的节点。
    • 如果用户将像素(节点)标记为前景,它将连接到节点,其重量更高使用较低权重 sink 节点。

因此每个像素(节点)都连接到 sink source 节点。

用户绘制的线上的每个像素(节点)也以特定权重相互连接:

  • 前景中的每个像素(节点)彼此连接,边缘具有更高权重。
  • 同样,背景中的每个像素(节点)彼此连接,边缘具有更高重量。
  • 但前景中的每个像素(节点)都连接到背景中的另一个像素(节点),其中较低权重,反之亦然。

最后,GrabCut使用名为minimum_cut的参数。该参数扫描整个图像(图形),其中像素(节点)以不同重量的边缘相互连接。这个minimum_cut变量沿着所有边缘切割,使整个图像的总重量尽可能小。

因此,你会得到两个单独的图像 foreground background

有关该主题的更多信息: