After Focus App的智能对焦算法

After Focus App's smart focus algorithms

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

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

我想知道如何分割图像。

GrabCut算法基本来源于图论。关键方面是将图像分为两个部分:

  • 前景
  • 背景

现在用户在图像上绘制许多线(白色和黑色)来表示前景和背景。这些线上的每个像素都被认为是 graph 中的一个 node。还有 两个额外的 ** 节点称为 **sink(背景)source(前景)

画线上的每个像素都连接到具有特定权重的sourcesink

这些权重是多少?

  • 如果一个像素(节点)被用户标记为background,它连接到sink节点,更高权重和节点具有更低权重。
    • 如果一个像素(节点)被用户标记为前景,它连接到节点,higher 权重和 sink 节点具有 lower 权重。

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

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

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

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

因此你得到两个单独的图像前景背景

有关该主题的更多信息: