0引言

图像分割可以看作不同的划分问题,而图可以进行不同的划分,将图像映射为图后,分割问题就可以用图论方法(如:最小割)求解.这只是直观地解释,具体如何将图像分割转化为求图的最小割呢?本文的分析思路是首先将图像分割问题看作能量函数最小化问题,当能量函数最小时,实现最优图像分割.然后,对给定的能量函数定义一个图,让图的割集的代价正好等于给定的能量函数.最后,通过求图的最小割(即图割),实现给定能量函数的最小化,也就实现了最优图像分割.关于图像分割如何表示为能量函数最小化,可参考相关文献.本文重点分析图割与能量函数最小化之间的关系。

这里有两个问题值得思考:1)如何将给定的能量函数转化为图?2)为什么图的割集的代价最小值正好等于给定的能量函数最小值?

1基于图割的图像分割步骤

从图割可以精确求解的能量函数入手,可概括出基于图割的图像分割步骤,主要包括三步:1)能量函数的设计;2)图的构造;3)最小割/最大流方法.

1.1****能量函数的设计

在满足一定前提条件下,能量函数最小化可用最小割来精确求解[22].这个前提条件是:1)二值标记;2)所有权重是非负的.这反映到能量函数中,对数据项函数,可以是任意的,因为如果权重是负的,加一个常数即可.对平滑项函数要满足子模函数的条件。

图割模型的核心问题在于如何设计适当的似然项和平滑项,来得到更加准确的分割结果。一般的能量函数定义为:

Dp:似然项(我们要分割的对象,也称为前景项,区域项,数据项)。Vp,q:平滑能量项,也称为背景项,边界项,光滑项

1.2****图的构造

1)构建图.图的顶点和图像的像素或区域对应.每个顶点有两个边,连接源(s)和汇(t),称为t-links,反映了每个标记的偏好程度.邻域连接n-links反映了平滑项,指示顶点之间的不连续性.图定义后,由所有顶点和所有边组成,即


2)对图的各个边缘权重进行赋值

首先,图由顶点和边来组成,边有权值。这个图有两类顶点,两类边和两类权值。普通顶点由图像每个像素组成,然后每两个邻域像素之间存在一条边,它的权值由能量函数中的“平滑能量项Vp,q”来决定。还有两个终端顶点s(目标)和t(背景),每个普通顶点和s都存在连接,也就是边,边的权值,以及每个普通顶点和t连接的边的权值由“似然项Dp(我们要分割的对象,也称为前景项,区域项)”来决定。这样所有边的权值就可以确定了,也就是图就确定了。这时候,就可以通过min cut算法来找到最小的割,这个min cut就是权值和最小的边的集合,这些边的断开恰好可以使目标和背景被分割开,也就是min cut对应于能量的最小化

**1.3****最小割/**最大流方法

最小割/最大流方法主要包括两大类:推进重标记(Pushrelabel)方法和增广路径(Augment-ingpaths)方法.推进重标记方法沿着非饱和边缘给一个到汇(t)的距离的低界估计,然后,面向具有到汇最小估计距离的顶点来推进剩余的流.随着推进操作,边缘逐渐饱和,距离逐渐增加.该方法易于并行实现,通常采用GPU加速实现来提高效率.Ford和Fulkerson的标号方法(简称FF方法)是基于增广路径的方法,通过标号不断生长一棵树,直到找不到关于可行流的增广路径为止.FF方法的计算复杂性和网络的节点数或者边数无关,而与边上的权值有关.为了避免求最大流时计算复杂度依赖于边的权值大小的缺点,Dinic设计了一种分层算法.为了进一步提高最小割/最大流方法的效率,Boykov等提出了基于增广路径的新方法,该方法在当前计算机视觉领域的应用最为广泛**.**其核心是建立两棵搜索树S和T,S以源点s为根,T以汇点t为根.树S中所有父结点到孩子结点的边都是不饱和的.树S中的结点分为\主动(Active)结点"和\被动(Passive)结点",主动结点可以通过从树T获得新的后代来使得搜索树\生长(Grow)",被动结点不能生长.算法重复以下三个阶段:

1)生长阶段(Growth stage):搜索树S、T生长,直到找到汇点;

2)扩展阶段(Augmentation stage):扩展路径,搜索树变成森林;

3)收养阶段(Adoption stage):收养孤立结点,恢复搜索树.

Boykov算法总体流程:

生长阶段(Growth stage):

扩展阶段(Augmentation stage):

收养阶段(Adoption stage):

**1.4****最小割/**最大流开源代码

http://pub.ist.ac.at/~vnk/software.html — An implementation of the maxflow algorithm described in “An Experimental Comparison of Min-Cut/Max Flow Algorithms for Energy Minimization in Computer Vision” by Boykov

http://vision.csd.uwo.ca/code/ — some graph cut libraries and MATLAB wrappers

2总结

PCL中Min-Cut Based Segmentation->Theoretical Primer主要讲的是如何分配图的权重,对于min cut算法并为详细描述。PCL min-cut分割算法源自于《MIN-CUT BASED SEGMENTATION OF AIRBORNE LIDAR POINT CLOUDS》,但是这篇文中并没提及能量函数,对于权重分配说的也很模糊,整篇文章让人云里雾里(或者我菜??),点云min-cut分割分为交互式和自动化式

参考文献:

《基于图割的图像分割方法及其新进展》

https://blog.csdn.net/ccblogger/article/details/77658166

《POLE-LIKE OBJECT EXTRACTION FROM MOBILE LIDAR DATA》

《An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision》
《基于图割算法的摄影测量点云面向对象分类方法》
《MIN-CUT BASED SEGMENTATION OF AIRBORNE LIDAR POINT CLOUDS》

https://www.cnblogs.com/ironstark/p/5008258.html

https://www.lijl888.com/archives/113

https://pcl.readthedocs.io/projects/tutorials/en/latest/min_cut_segmentation.html#min-cut-segmentation

更多著名参考文献:

《What energy functions can be minimized via graph cuts?》

最小割(min cut)算法相关推荐

  1. 最大流最小割经典例题_最大流, 最小割问题及算法实现

    本博客采用创作共用版权协议, 要求署名.非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议. 由于博文中包含一些LaTex格式数学公式, 在简书中显示不好, 所以 ...

  2. 【HDU - 3002】King of Destruction(无向图全局最小割,SW算法,模板题)

    题干: Zhou xingxing is the successor of one style of kung fu called "Karate Kid".he is falli ...

  3. 最小割(Stoer-Wagner算法)

    Stoer-Wagner算法 简介: 割:在一个图G(V,E)中V是点集,E是边集.在E中去掉一个边集C使得G(V,E-C)不连通,C就是图G(V,E)的一个割: 最小割:在G(V,E)的所有割中,边 ...

  4. 基于最小割的分割算法(Min-Cut Based Segmentation)

    参考: https://www.cnblogs.com/ironstark/p/5008258.html https://github.com/Ewenwan/MVision/blob/master/ ...

  5. 图像分割经典算法--《最小割最大流》(Minimum Cut——Max Flow)

    1.算法介绍 最小割算法(Minimum Cut)是图像分割的经典算法之一,同时也在"Graph Cut"."Grab Cut"等算法中都有被使用过.最小割最大 ...

  6. poj 2914(stoer_wanger算法求全局最小割)

    题目链接:http://poj.org/problem?id=2914 思路:算法基于这样一个定理:对于任意s, t   V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Cont ...

  7. 【学习笔记】无向图最小割

    零.概述 什么离谱的人会研究这种离谱的东西啊--从定义,到构造,到性质,我完全想象不到 idea\rm ideaidea 的来源-- 研究带权无向图上,任意两点之间的最小割.最朴素的方法是做 O(n2 ...

  8. Grab Cut算法

    转载自:http://blog.csdn.net/zouxy09/article/details/8534954 上一文对GraphCut做了一个了解,而现在我们聊到的GrabCut是对其的改进版,是 ...

  9. POJ - 2914 Minimum Cut(全局最小割-Stoer_Wagner)

    题目链接:点击查看 题目大意:给出一张无向图,要求将其分为两个集合,使得最小割最小 题目分析:算法学习自:https://blog.csdn.net/dingdi3021/article/detail ...

最新文章

  1. python报错 ValueError: dictionary update sequence element #0 has length 1; 2 is require
  2. 青龙羊毛——灰兔掌赚吹牛逼
  3. 搭建通用性多用户后台-思路
  4. 如何在C++Builder中使用全局变量
  5. TCP/IP / 四次挥手之状态转换图、过程说明和原因
  6. oracle多次发运,Oracle EBS-SQL (OM-4):检查发运网络.sql
  7. [代码阅读] ECS toString实现方法
  8. Oracle建立表空间,用户等环节
  9. WebRTC通信流程
  10. C语言程序设计谭浩强(第四版)部分课后习题作答——第四章
  11. 选择驱动便携式计算机显示器GPU,显示器不是最佳分辨率怎么办
  12. linux系统中XLib在什么位置,什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo...
  13. PyTorch 编写自定义数据集,数据加载器和转换
  14. 算力网络 — 东数西算政策
  15. 鼠标连点+键盘连按+键盘鼠标录制精灵独立版
  16. Word引用参考文献批量设置为上标
  17. BZOJ1370洛谷P1892 [BOI2003]团伙
  18. java分页器_java分页之假分页实现简单的分页器
  19. 使用PowerDesigner生成数据库建表语句含有clustered关键字
  20. 机房环境监控什么意思?机房环境监控系统作用

热门文章

  1. 计算机毕业设计android平台的出租打车软件app
  2. python设置笔记本屏幕背光亮度
  3. C++ 可变参数模板
  4. 将登陆中输入的手机号进行格式化展示
  5. python内置函数及方法_python 内置函数 应用及方法
  6. 常用交换机品牌ONV/光网视解析PoE交换机常见问题
  7. 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)
  8. ZYNQ 7020 XME0724 linux 系统没有 hit any key to stop autoboot
  9. C语言函数 (习题)
  10. Hadoop集群测试