3.1 EGBIS

news/2024/7/1 18:27:03

目录

  • 3.1 EGBIS
    • 3.1.1 算法基础概念
    • 3.1.2 EGBIS 算法
    • 3.1.3 算法应用
      • 参考资料

3.1 EGBIS

在本章内容中,我们将介绍基于图的高效图像分割(Efficient Graph-Based Image Segmentation, EGBIS)算法,该算法是基于图的贪婪聚合算法,原理简单,速度较快,也是后期诸如选择搜索、语义分割等算法的基础。EGBIS 算法的目标是作为一种通用的图像分割计算方法,因此在设计之初就被要求满足:

  • 能够捕获视觉上重要的区域,且具有全局观
  • 需要具备较高的计算性能,运行时间应该是图像像素大小的线性函数

然而,这样的设计目标存在很多难点,例如,如何将一个图片划分为多个区域,如何定义一个指标去检测划分的优劣,以及如何解决局部高变区域的划分以及如何保证这个过程的计算高效性。实际上,在此之前已有许多解决方案,但是这些方式通常速度很慢,且对局部高变区域处理的不够理想,不能捕获非局部特性。

下图解释了什么是高变区域及非局部图像特征,
【图 1】

左上角是我们的原始图像,直觉上它分为三个主要区域,左侧的渐变矩形区域,右侧带孔的常值矩形区域以及右侧中间像素高度变化的小矩形区域。如果我们仅仅使用相邻像素之间的差值作为划分依据,由于高变区域内像素之间的差值远大于渐变区域内以及渐变区域边界与常值区域之间的差值,若阈值设定较大,则高变区域内图像则会被划分为多个极小的区域而其他区域化为一体(如右下角图像),这就是典型的单纯局部特性捕获,反之处理,则高变区域会归为常值区域中(如右上角图像),而通过 EGBIS 自适应的非局部特征捕获则可以较好的将图像划分为视觉上的三个区域(如左下角图像)。

3.1.1 算法基础概念

图在计算机算法中是一种基本的数据结构,可以表达为 G = ( V , E ) G=(V,E) G=(V,E) ,其中 V V V 是图中的所有顶点集合,在该算法中,对应的是图像中的所有像素点集合, E E E 代表图中顶点之间的边。每条边具有不同的权重 w ( v i , v j ) w(v_i, v_j) w(vi,vj),以衡量两个顶点 v i , v j v_i, v_j vi,vj 之间的差值。我们可以将图 G G G 划分为多个不重叠的区域集合 S S S S S S 中每个小区域我们称之为 C C C
【图 2】

为了判断两个区域之间是否存在一个边界,我们定义如下的判定准则,

D ( C 1 , C 2 ) = { true , if  D i f ( C 1 , C 2 ) > M I n t ( C 1 , C 2 ) false , otherwise D(C_1, C_2)= \begin{cases} \text{true}, & \text {if $Dif(C_1, C_2) > MInt(C_1,C_2)$} \\ \text{false}, & \text{otherwise} \end{cases} D(C1,C2)={true,false,if Dif(C1,C2)>MInt(C1,C2)otherwise

其中 D i f ( C 1 , C 2 ) Dif(C_1,C_2) DifC1,C2 评估的是两个不同区域中元素之间的距离值,而 M I n t ( C 1 , C 2 ) MInt(C_1, C_2) MInt(C1,C2) 评估的是一个区域内部两个元素之间的距离值,如图 2 所示。

D i f ( C 1 , C 2 ) Dif(C_1, C_2) Dif(C1,C2) 具体指的是两个不同区域中所有元素组合中距离最小的值,形象化可以理解为两个区域中最近点之间的距离,反过来 M I n t MInt MInt 应该评估的是一个区域内部某种最大的距离。即,如果一个区域内部相当紧密,不同区域间最小间距大于单个区域内部的最大距离,我们则认为两个区域间确实存在边界,否则,两个区域应该被合并为一个大区域。具体地:

D i f ( C 1 , C 2 ) = min ⁡ v i ∈ C 1 , v j ∈ C 2 , ( v i , v j ) ∈ E w ( v i , v j ) Dif(C_1, C_2)=\min_{v_i \in C_1, v_j \in C_2, (v_i, v_j)\in E} w(v_i, v_j) Dif(C1,C2)=viC1,vjC2,(vi,vj)Eminw(vi,vj)

在给出 M I n t MInt MInt 具体形式之前,我们先介绍一下最小生成树(MST)的概念。最小生成树是一棵连通加权无向图中所有节点且整体权值最小的一棵树。

【图 3,图片来源自维基百科】

如图 3 所示,浅灰色线及黑色线组成一个带有权值的无向图,黑色线组成的树连接了图中所有顶点且保证了所有权重加权最小。 I n t Int Int 被定义为 MST 中权值最大的边(以上图为例为 8)。即:

I n t ( C ) = max ⁡ e ∈ M S T ( C , E ) w ( e ) Int(C)=\max_{e \in MST(C,E)}w(e) Int(C)=eMST(C,E)maxw(e)

这里并没有直接在内部采用任意两个元素之间的距离,因为这存在大量的冗余连接,而最小生成树可以摒弃这种冗余连接。在实际使用过程中,我们在 I n t Int Int 指标上做了一点处理,即 M I n t MInt MInt

M I n t ( C 1 , C 2 ) = min ⁡ ( I n t ( C 1 ) + τ ( C 1 ) , I n t ( C 2 ) + τ ( C 2 ) ) MInt(C_1,C_2)=\min(Int(C_1)+\tau(C_1), Int(C_2)+\tau(C_2)) MInt(C1,C2)=min(Int(C1)+τ(C1),Int(C2)+τ(C2))

根据公式,我们可知, M I n t MInt MInt 取两个区域中 I n t Int Int 较小者,即两个区域中,只要有一个内部区域的最大值小于 D i f Dif Dif ,则认为两个区域间存在边界,这也是很直观的。另外 τ ( C ) = k / ∣ C ∣ \tau(C)=k/|C| τ(C)=k/C 是一个阈值项。 ∣ C ∣ |C| C 表示区域内顶点数。如果不加这一项,对于较小的区域评估误差较大,例如极端情况下,如果区域中只存在一个顶点,则 I n t = 0 Int=0 Int=0. k k k 是一个常量,对于较大的 k k k 会导致趋向于划分较大区域块,极端情况,如果 k = + ∞ k=+\infty k=+,则 M I n t = + ∞ MInt=+\infty MInt=+,则任意区域间不存在边界,即整理聚为一块。 k k k 的取值需要结合聚类结果决定,对于边界差异较强的图像可以采用较小的 k k k 值。

3.1.2 EGBIS 算法

  1. 将图 G G G 中所有边按权重值大小非递减排序, Sort E = π = ( o 1 , … , o m ) \text{Sort}_E = \pi=(o_1, \dots, o_m) SortE=π=(o1,,om) ,共有 m m m 个边

  2. S 0 S^0 S0 作为初始阶段,所有的顶点 v i v_i vi 分别作为一个独立的区域 C C C

  3. 设置一个变量 q = 1 , … , m q=1, \dots, m q=1,,m 循环第 3 步:

  4. 给定 S q − 1 S^{q-1} Sq1 我们构造 S q S^q Sq,具体的:

    1. 取出第 0 步中经过排序的,边序列中的第 q q q 个权重, v i , v j v_i,v_j vi,vj 分别为该边所连接的两个顶点,例如 o q = w ( v i , v j ) o_q=w(v_i, v_j) oq=w(vi,vj)

    2. 如果在 S q − 1 S^{q-1} Sq1 阶段, v i , v j v_i, v_j vi,vj 处于两个不同的区域中,且 w ( o q ) w(o_q) w(oq) 比它们的内部区域距离都小,则应该合并它们,否则什么也不做。

      上步中形式化描述为:设 S q − 1 S^{q-1} Sq1 阶段包含 v i v_i vi 顶点的区域为 C i q − 1 C_i^{q-1} Ciq1,包含 v j v_j vj 顶点的区域为 C j q − 1 C_j^{q-1} Cjq1

      ​ if C i q − 1 ≠ C j q − 1 C_i^{q-1} \neq C_j^{q-1} Ciq1̸=Cjq1 and w ( o q ) ≤ M I n t ( C i q − 1 , C j q − 1 ) w(o_q) \leq MInt(C_i^{q-1},C_j^{q-1}) w(oq)MInt(Ciq1,Cjq1):

      ​ from S q − 1 S^{q-1} Sq1 to S q S^q Sq by merge ( C i q − 1 , C j q − 1 ) \text{merge}(C_i^{q-1}, C_j^{q-1}) merge(Ciq1,Cjq1)

      ​ else:

      S q = S q − 1 S^q = S^{q-1} Sq=Sq1

  5. 最终的 S = S m S = S^m S=Sm 作为返回结果。

3.1.3 算法应用

【图 4, σ = 0.5 , k = 1500 , m i n _ s i z e = 20 \sigma=0.5,k=1500, min\_size=20 σ=0.5,k=1500,min_size=20

在实际使用过程中,我们通常需要利用高斯核对原图进行平滑处理,该过程不会改变原图的视觉效果却帮助我们移除掉图像中的一些伪影,如上图所示,左侧是我们的原图,中间及右侧图像均为利用 EGBIS 算法得到的切分结果,其中中间图像的色彩使用的划分区域内所有像素点的均值填充的,而右侧的色彩搭配则是随机的。

参考资料

1、Efficient Graph-Based Image Segmentation
2、Tutorial PPT
3、Efficient Graph-Based Image Segmentation in Python


http://www.niftyadmin.cn/n/3657478.html

相关文章

推荐阅读《Applications = Code + Markup》

最近在通过一边动手做一个智能客户端的WPF应用,一边在学习WPF技术。 WPF技术跟之前的Windows Form应用两者给我的感觉是:这两个技术是一个非常大的跨越。很多Windows Form的心得,想法,思想在WPF中都不再有用了。 我最近几年学习新…

2.2 Selective Search

目录2.2 Selective Search2.2.1 算法设计原则2.2.2 层次聚合2.2.3 多元化采样策略参考资料2.2 Selective Search 在目标检测任务中,我们不仅需要判断出图像中包含的对象类别,还需要检测出目标所在位置,理论上图片任何位置都可能存在任意尺度…

Html Encode时的单引号的替换

我们在Html Encode 时候&#xff0c;需要把单引号、双引号"&#xff0c;尖括号<> 作替换。 在替换单引号的时候&#xff0c;我们有两个选择&#xff1a; 1、替换成 2、替换成 如果你使用的是IE浏览器&#xff0c;你会看到第一种替换方式不可用。 但是你如果用的是…

2.3 OverFeat

目录2.3 OverFeat2.3.1 任务与评估指标2.3.2 OverFeat 模型设计2.3.3 多尺度分类2.3.4、OverFeat 视图参考文献2.3 OverFeat OverFeat 是 ILSVRC2013 中目标定位任务的冠军&#xff0c;它提出了一种集成式框架&#xff0c;将图像分类、目标定位以及目标检测三种任务的学习过程…

ViewState 解码工具

每天都能收到不少的“无效的视图状态”这样的错误报告。今天突然想知道如果我只能看到ViewState的信息&#xff0c;即源文件中类似如下的这些信息时候&#xff0c;我是否能分析出ViewState中到底存在了那些信息。 结果发现了一个现成的解码工具&#xff0c;这个工具可以在如下地…

两个Cookie类

.Net 提供了两个Cookie类: System.Web.HttpCookie 类 和 System.Net.Cookie 类 对应的有两个Cookie 集合类 System.Web.HttpCookieCollection 类 和 System.Net.CookieCollection 类 我们一般来理解他们的区别就是下面简单的一句&#xff1a; System.Web 命名空间下的是给服务器…

2.4 R-CNN

目录2.4 R-CNN2.4.1 采样2.4.2 R-CNN 架构2.4.3 R-CNN 设计细节2.4.3.1 IoU 概念2.4.3.2 图片缩放策略2.4.3.3 预训练微调模式2.4.3.4 NMS 算法2.4.3.5 边界框回归参考资料2.4 R-CNN R-CNN 由 Ross Girshick(rbg) 提出&#xff0c;Ross Girshick是 Facebook 人工智能研究&…

使用 Request.QueryString 接受参数时,跟编码有关的一些问题

我们先来看以下几个请求&#xff0c;看a.aspx 页面用Request.QueryString接受到的是啥信息&#xff1f; 页面URLRequest.QueryString["info"]接受到的值案例一a.aspx?info%25 % 案例二a.aspx?info%bc%bc%ca%f5 情况分析&#xff1a; 案例一 a.aspx?info%25 为何…