Graph Cuts中的最小割-最大流见解

最小割-最大流
1.最小割
:以最小的代价让s到到不了t。未割时,两相邻pixel属于同一类,当p-------q被割开时,q与q则各自属于s和t类(在图像分割中则是foreground 和background)
2. 最大流
:可以理解为多个集合的交集,最后能从s到达t的肯定是能满足这个过程中所有的“两点之间weight“的值。

通常情况下:都是将最小割的问题转化为最大流的问题来求解

两种求解方法:

1.Ford-Fulkerson方法
首先了解什么是augmenting path(增广路经)
:①是一条从s到t的无向路径,可以经过非满的forward paths(s—>t)或者是非空的backward paths(t—>s)
②FF算法的思想:只要存在从s到t的路径,在路径中的所有边缘上具有可用容量,就沿着其中一个path发送flow。 然后我们找到另一条路径,依此类推。 具有可用容量的路径称为扩充路径(增广路径)
注:FF其实是一种贪婪算法,在不断地找augmenting path,直到找不到为止,此时则结束
wukaoliu
在这三处地方切开则正好似的s到打不了t,同时结果也满足最小割。

2.Yuri Boykov的优化算法
:关键点
:①在树S和T中只有两种状态(主动and被动),Active point还可以扩展树,而Passive point作为搜索树的内部节点,不能扩展。
主动态节点因为可以向外扩展,所以有可能会搜索到另一搜索树的节点,当主动节点检测到另一搜索树的节点,就找到了一条增广路径。
 ②算法的三步走战略
  A:搜索树S和T扩展节点,直到两树相遇,得到一条由源点s到汇点t的增广路径
  B:根据找到的增广路径将搜索树拆分为子树或森林
  C:搜索树S和T的重新构建
  整体流程:初始化时,搜索树S只有源点s为主动节点,搜索树T只有汇点t作为主动节点,增长搜索树直到它们的主动节点相遇,得到一条增广路径P。如果P为空则算法终止,反之则对P进行增广流量处理。然后对孤点进行领养处理,以此循环。
 ③最大流的求解过程就是循环重复以上三个阶段,直到搜索树S和T不能再增长。
 很赞同该博主的看法。

最大流转化为最小割的问题

对于上图,把流量已经占满的边去掉,得到如下图
在这里插入图片描述

在该图中,以s为顶点去遍历(以BFS为例),遍历结束后,可以得到遍历经过的所有点:S、B、C、D。
 这样,把S、B、C、D构成一个子图(图4中紫色部分),其他的点A、E、F、t构成另一个子图(图4中黄色部分)。连接两个子图的边有两种情况:

  1. 已占满的forward paths: s -> A, B -> E, D -> t
  2. 未占满的backward paths: A -> B, E -> D
    其中“已被占满的前向边”就是我们要求的最小割。对上图来说,就是”s -> A”、”B -> E”、”D -> t”这3条边。

补充:1.对s和t的理解
    :s和t都是终点,它们可以直接连接图中各个节点,从而给每个节点打label,意味着每个终点表示一类,例如图中有两个终点,则该图像最终只会被分为两种标签值。   
           在这里插入图片描述
例如用最小割-最大流的方法cut之后(如图绿线所示)划分为两个不相交的子集,上面的点则被分为s类(foreground),而下面的点则被分为t类(background)
   2.对能量函数的理解
    :在这里插入图片描述
    t_link --惩罚项(像素点自身的能量评测项)
    n_link--互动项(两像素之间的不连续性对整体能量值的影响)

Summary: 在图像分割中想分出前景和背景--->将一个图中的所有节点划分为两个互不相交的集合,前景在集合S中,背景在集合T中--->采用最小割的方法以最小的代价(weight)让俩集合分开(即让s到不了t)--->等价于求最大流问题--->采用增广路径算法--->Ford-Fulkerson算法 or  Yuri Boykov的优化算法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值