基于图的图像分割(Graph-Based Image Segmentation)

一、介绍

基于图的图像分割(Graph-Based Image Segmentation),论文《Efficient Graph-Based Image Segmentation》,P. Felzenszwalb, D. Huttenlocher,International Journal of Computer Vision, Vol. 59, No. 2, September 2004

论文下载和论文提供的C++代码在这里

Graph-Based Segmentation是经典的图像分割算法,其作者Felzenszwalb也是提出DPM(Deformable Parts Model)算法的大牛。

Graph-Based Segmentation算法是基于图的贪心聚类算法,实现简单,速度比较快,精度也还行。不过,目前直接用它做分割的应该比较少,很多算法用它作垫脚石,比如Object Propose的开山之作《Segmentation as Selective Search for Object Recognition》就用它来产生过分割(over segmentation)。

二、图的基本概念

因为该算法是将图像用加权图抽象化表示,所以补充图的一些基本概念。

1、图

是由顶点集V(vertices)和边集E(edges)组成,表示为G=(V, E),顶点v∈V,在论文即为单个的像素点,连接一对顶点的边(vi, vj)具有权重w(vi, vj),本文中的意义为顶点之间的不相似度(dissimilarity),所用的是无向图。

2、树

特殊的图,图中任意两个顶点,都有路径相连接,但是没有回路。如下图中加粗的边所连接而成的图。如果看成一团乱连的珠子,只保留树中的珠子和连线,那么随便选个珠子,都能把这棵树中所有的珠子都提起来。

如果顶点i和h这条边也保留下来,那么顶点h,i,c,f,g就构成了一个回路。


3、最小生成树(minimum spanning tree)

特殊的树,给定需要连接的顶点,选择边权之和最小的树。

论文中,初始化时每一个像素点都是一个顶点,然后逐渐合并得到一个区域,确切地说是连接这个区域中的像素点的一个MST。如下图,棕色圆圈为顶点,线段为边,合并棕色顶点所生成的MST,对应的就是一个分割区域。分割后的结果其实就是森林。



三、相似性

既然是聚类算法,那应该依据何种规则判定何时该合二为一,何时该继续划清界限呢?对于孤立的两个像素点,所不同的是灰度值,自然就用灰度的距离来衡量两点的相似性,本文中是使用RGB的距离,即


当然也可以用perceptually uniform的Luv或者Lab色彩空间,对于灰度图像就只能使用亮度值了,此外,还可以先使用纹理特征滤波,再计算距离,比如先做Census Transform再计算Hamming distance距离。

四、全局阈值 >> 自适应阈值,区域的类内差异、类间差异

上面提到应该用亮度值之差来衡量两个像素点之间的差异性。对于两个区域(子图)或者一个区域和一个像素点的相似性,最简单的方法即只考虑连接二者的边的不相似度。如下图,已经形成了棕色和绿色两个区域,现在通过紫色边来判断这两个区域是否合并。那么我们就可以设定一个阈值,当两个像素之间的差异(即不相似度)小于该值时,合二为一。迭代合并,最终就会合并成一个个区域,效果类似于区域生长:星星之火,可以燎原。


举例说明:


对于上右图,显然应该聚成上左图所示的3类:高频区h,斜坡区s,平坦区p。

如果我们设置一个全局阈值,那么如果h区要合并成一块的话,那么该阈值要选很大,但是那样就会把p和s区域也包含进来,分割结果太粗。如果以p为参考,那么阈值应该选特别小的值,那样的话p区是会合并成一块,但是h区就会合并成特别特别多的小块,如同一面支离破碎的镜子,分割结果太细。显然,全局阈值并不合适,那么自然就得用自适应阈值。对于p区该阈值要特别小,s区稍大,h区巨大。

先来两个定义,原文依据这两个附加信息来得到自适应阈值。

一个区域内的类内差异Int(C)


可以近似理解为一个区域内部最大的亮度差异值,定义是MST中不相似度最大的一条边。

俩个区域的类间差异Diff(C1, C2)


即连接两个区域所有边中,不相似度最小的边的不相似度,也就是两个区域最相似的地方的不相似度。

直观的判断,当:


时,两个区域应当合并!

五、算法步骤

1、计算每一个像素点与其8邻域或4邻域的不相似度。


如上图,实线为只计算4领域,加上虚线就是计算8邻域,由于是无向图,按照从左到右,从上到下的顺序计算的话,只需要计算右图中灰色的线即可。

2、将边按照不相似度non-decreasing排列(从小到大)排序得到e1, e2, ..., en

3、选择ei

4、对当前选择的边ej(vi和vj不属于一个区域)进行合并判断。设其所连接的顶点为(vi, vj)

if 不相似度小于二者内部不相似度:

5、更新阈值以及类标号

else:

6、如果i < n,则按照排好的顺序,选择下一条边转到Step 4,否则结束。


六、论文提供的代码

打开本博文最开始的连接,进入论文网站,下载C++代码。下载后,make编译程序。命令行运行格式:

/********************************************
sigma  对原图像进行高斯滤波去噪
k      控制合并后的区域的数量
min:   后处理参数,分割后会有很多小区域,当区域像素点的个数小于min时,选择与其差异最小的区域合并
input  输入图像(PPM格式)
output 输出图像(PPM格式)

sigma: Used to smooth the input image before segmenting it.
k:     Value for the threshold function.
min:   Minimum component size enforced by post-processing.
input: Input image.
output:Output image.

Typical parameters are sigma = 0.5, k = 500, min = 20.
Larger values for k result in larger components in the result.
*/
./segment sigma k min input output

七、OpenCV3.3 cv::ximgproc::segmentation::GraphSegmentation类

/opencv_contrib/modules/ximgproc/include/opencv2/ximgproc/segmentation.hpp




  • 21
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 基于图像分割图像分割是一种基于像像素之间的相似性和差异性来分割像的方法。该方法将像表示为形,其中每个像素都是形中的一个节点,相邻像素之间的边缘表示它们之间的相似性和差异性。然后,使用分割算法将形分成不同的区域,每个区域都具有相似的像素值和特征。这种方法在计算机视觉和像处理中广泛应用,例如目标检测,图像分割像分析等领域。 ### 回答2: 图像分割是一种通过将图像分割成若干个子区域,从而将像信息分解的方法,其中每个子区域能够代表整个像的一个重要部分。在计算机视觉应用中,图像分割技术是非常重要的,因为它可以为像处理和像分析提供基础。 其中一种广泛应用的图像分割技术就是图像分割算法,其中一种主要的算法就是基于图像分割算法。这种算法的基本原理是将像转换成一个带权,然后使用图论算法来将像切分成若干子区域。其中图论算法包括最小割算法和归一化割谱聚类算法等。 最小割算法的基本思想是将像中的每个像素点表示为中的一个节点,并且将节点之间的边表示为不同像素之间的相似性。最小割算法通过不断地在中切割最小权重的边,从而实现最小割。这样,像的每个节点都位于一个切割的区域内。 归一化割谱聚类算法是一种基于图像分割算法,它首先将像表示为一个带权的临界矩阵,然后通过计算临界矩阵的本征矢量和本征值,来对像进行聚类。归一化割谱聚类算法适用于像中具有多个分离目标的情况,它可以通过本征值的数量和本征向量的个数来对像进行有效的分割。 总之,基于图像分割算法是一种非常有效和广泛应用的技术,它可以在很多计算机视觉应用中发挥重要作用。无论是最小割算法,还是归一化割谱聚类算法,它们都是基于像特征来切割像的,并且可以在不同场景中应用。因此,我们可以使用这些算法来实现图像分割、物体检测和像分析等领域。 ### 回答3: 图像分割像处理中的一个重要研究领域,它旨在将一幅图像分割成不同的区域,每个区域内的像素具有相似的特点。图像分割在计算机视觉、医学像处理、机器人技术、自动驾驶等领域有着广泛的应用。其中,基于图像分割是一种常见的方法。 基于图像分割是指将像表示为一个,并使用图论方法对其进行分割。通常,我们将像的像素看做中的节点,将相邻的像素之间连接一条边,边权则表示节点之间的相似度。然后,我们将中的节点分为不同的集合,使得集合内的节点相似度高于不同集合之间的相似度。 基于图像分割有很多算法,常见的包括最小割算法、谱聚类算法、标准化割算法等。其中,最小割算法是基于像中两个不同区域间的点连接权重的最小价值问题来实现的。 对于一个像,我们先将其表示为一个无向,并将每一个像素点看作该中的节点。接着,我们将相邻像素点之间的连线看作边,每一条边的权值取决于相邻像素点间的相似度,我们可以使用灰度差值和颜色差值作为相似度的衡量标准。然后,在这个中,我们找出一条最小路径来将该分成两个部分,这条路径就是最小割,分成两部分的区域就是像的分割结果。 总之,基于图像分割是一种常见的图像分割方法,它使用像形式来表示并更好地处理像中的区域分割问题,是计算机视觉领域中的一个重要研究方向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值