最小割(min cut)算法

0引言

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

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

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

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

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

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

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

最小割(min cut)算法_第1张图片

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

1.2****图的构造

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F204AlRy-1599298221349)(file:///C:/Users/15945/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)]

最小割(min cut)算法_第2张图片
最小割(min cut)算法_第3张图片

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算法总体流程:

最小割(min cut)算法_第4张图片

生长阶段(Growth stage):

最小割(min cut)算法_第5张图片

扩展阶段(Augmentation stage):

最小割(min cut)算法_第6张图片

收养阶段(Adoption stage):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jT1d3I3N-1599298221369)(file:///C:/Users/15945/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg)]

**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?》

你可能感兴趣的:(数学知识,点云分割)