基于图的图像分割(Graph-Based Image Segmentation),论文《Efficient Graph-Based Image Segmentation》

论文和C++代码:

Graph-Based Segmentation 是经典的图像分割算法,作者Felzenszwalb也是提出DPM算法的大牛。不过,目前直接用它做分割的应该比较少,但是很多算法用它作垫脚石,用它来产生过分割(oversegmentation)。

文章主要介绍了一种基于图表示(graph-based)的图像分割方法。图像分割(Image Segmentation)的主要目的也就是将图像(image)分割成若干个特定的、具有独特性质的区域(region),然后从中提取出感兴趣的目标(object)。而图像区域之间的边界定义是图像分割算法的关键,论文给出了一种在图表示(graph-based)下图像区域之间边界的定义的判断标准,其分割算法就是利用这个判断标准(predicate)使用贪心选择(greedy decision)来产生分割。

该算法在时间效率上,基本上与图像(Image)的图(Graph)表示的边(edge)数量成线性关系,而图像的图表示的边与像素点成正比,也就说图像分割的时间效率与图像的像素点个数成线性关系。这个算法有一个非常重要的特性,它能保持低变化(low-variability)区域(region)的细节,同时能够忽略高变化(high-variability)区域(region)的细节。这个性质很特别也很重要,对图像有一个很好的分割效果(能够找出视觉上一致的区域,简单讲就是高变化区域有一个很好聚合(grouping),能够把它们分在同一个区域),这也是为什么那么多人引用该论文的原因吧。

图的基本概念

图像(image)的图表示是指将图像(image)表达成图论中的图(graph)。具体说来就是,把图像中的每一个像素点看成一个顶点vi ∈ V(node或vertex),像素点之间的关系对(可以自己定义其具体关系,一般来说是指相邻关系)构成图的一条边ei ∈ E,这样就构建好了一个图 G = (V,E)。图每条边的权值是基于像素点之间的关系,可以是像素点之间的灰度值差,也可以是像素点之间的距离(如果是4-邻域相邻关系的话,这个权值就没意义了)。

是由顶点集V(vertices)和集E(edges)组成,表示为G=(V, E),每个像素点代表图的一个顶点vi ∈ V ,相邻的两个像素点构成一条边(vi, vj) ∈ E,像素颜色值的差异构成边(vi, vj)的权值w((vi, vj)),本文中的意义为顶点之间的不相似度(dissimilarity),所用的是无向图


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

   最小生成树(MST, minimum spanning tree):给定需要连接的顶点,选择边权之和最小的树。

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

相似性

对于孤立的两个像素点,所不同的是灰度值,自然就用灰度的距离来衡量两点的相似性,本文中是使用RGB的距离,即                                                     

对于灰度图像就只能使用亮度值了,此外,还可以先使用纹理特征滤波,再计算距离,比如先做Census Transform再计算Hamming distance距离。

全局阈值à自适应阈值

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

不同于灰度图像特征,纹理通过像素及其周围空间邻域的灰度分布来表现,即局部纹理信息,纹理具有三大标志:

  • 某种局部序列性不断重复;
  • 非随机排列;
  • 纹理区域内大致为均匀的统一体;

举个例子说明:下面这张图应该聚成右图所思的3类,高频区h,斜坡区s,平坦区p。如果我们设置一个全局阈值,那么如果h区要合并成一块的话,那么该阈值要选很大,但是那样就会把p和s区域也包含进来,分割结果太粗。如果以p为参考,那么阈值应该选特别小的值,那样的话,p区是会合并成一块,但是,h区就会合并成特别特别多的小块,如同一面支离破碎的镜子,分割结果太细

显然,全局阈值并不合适,那么自然就得用自适应阈值。对于p区该阈值要特别小,s区稍大,h区巨大。

对于两个区域(原文中叫Component,实质上是一个MST,单独的一个像素点也可以看成一个区域),本文使用了非常直观,但抗干扰性并不强的方法。先来两个定义,原文依据这两个附加信息来得到自适应阈值。

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

俩个区域的类间差异Diff(C1, C2):即连接两个区域所有边中,不相似度最小的边的不相似度,也就是两个区域最相似的地方的不相似度。

直观的判断,当:  ,时,两个区域应当合并!

解释: 分别是区域C1, C2所能忍受的最大差异,当二者都能忍受当前差异时,你情我愿,一拍即合,只要有一方不愿意,就不能强求。

特殊情况,当二者都是孤立的像素值时,,所有像素都是"零容忍"只有像素值完全一样才能合并,自然会导致过分割。所以刚开始的时候,应该给每个像素点设定一个可以容忍的范围,当生长到一定程度时,就应该去掉该初始容忍值的作用。

阈值函数τ主要是为了更好的控制分割区域边界的定义。比较直观的理解,小分割区域的边界定义要强于大分割区域,否则可以将小分割区域继续合并形成大区域。在这里给出的阈值函数与区域的大小有关。

|C|是指分割部分顶点的个数(或者像素点个数),如此,随着区域逐渐扩大,这一项的作用就越来越小,最后几乎可以忽略不计。那么k就是一个可以控制所形成的的区域的大小,如果,那么,几乎每个像素都成为了一个独立的区域,如果,显然整张图片都会聚成一块。所以,越大,分割后的图片也就越大。

算法过程

  1. 对于图G的所有边,按照权值进行排序(升序)
  2. S[0]是一个原始分割,相当于每个顶点当做是一个分割区域
  3. q = 1,2,...,m 重复4的操作(m为边的条数,也就是每次处理一条边)
  4. 根据上次S[q-1]的构建。选择一条边o[q](vi,vj),如果vi和vj在分割的互不相交的区域中,比较这条边的权值与这两个分割区域之间的最小分割内部差MInt,如果o[q](vi,vj) < MInt,那么合并这两个区域,其他区域不变;如果否,什么都不做。
  5. 最后得到的就是所求的分割S = S[m]

上面的过程算法过程就相当于先将图分割成一个个顶点,然后通过合并策略,将它们合并.

from :https://blog.csdn.net/huixingshao/article/details/42642973

基于图的图像分割(Graph-Based Image Segmentation)相关推荐

  1. 基于图的图像分割(Effective graph-based image segmentation)python实现

    基于图的图像分割Effective graph-based image segmentation 前言 简介 代码实现与解读 图的构建 图像分割 问题 前言 最近在学习区域卷积神经网络(RCNN)时, ...

  2. 图构造总结-Graph‑based semi‑supervised learning via improving the quality of the graph dynamically

    前言 本博文主要对论文中提到的图构造方法进行梳理,论文自己提出的模型并未介绍,感兴趣的可以阅读原文 摘要 基于图的半监督学习GSSL主要包含两个过程:图的构建和标签推测.传统的GSSL中这两个过程是完 ...

  3. 当图网络遇上计算机视觉!计算机视觉中基于图神经网络和图Transformer的方法和最新进展...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 可能是目前最全面的<当图网络遇上计算机视觉>综述!近四 ...

  4. 【论文解读 ICEIT2022】Heterogeneous Graph Based Knowledge Tracing基于异构图的知识追踪

    文章目录 摘要 1 引言 2 相关工作 2.1 知识追踪 2.2 异构图嵌入 3 基于异构图嵌入的知识追踪 4 实验 5 结论 依然是两阶段 摘要 最近,随着在线辅导系统的发展,对知识追踪(Knowl ...

  5. 【论文笔记】Revisiting graph based collaborative Filtering:一种线性残差图图卷积网络方法

    Revisiting Graph based Collaborative Filtering:A Linear Residual Graph Convolutional Network Approac ...

  6. 【质量评价】Inferring Point Cloud Quality via Graph Similarity 基于图相似性的点云质量评价

    [质量评价]Inferring Point Cloud Quality via Graph Similarity 基于图相似性的点云质量评价 内容介绍 1. Introduction 1.1 Back ...

  7. 基于图卷积的价格推荐论文(Price-aware Recommendation with Graph Convolutional Networks)

    基于图卷积的价格推荐论文概述 ICDE2020非常好的文章 Price-aware Recommendation with Graph Convolutional Networks paper lin ...

  8. 基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...

    课程概要 本课程来自集智学园图网络论文解读系列活动. 是对论文<Graph WaveNet for Deep Spatial-Temporal Graph Modeling>的解读. 时空 ...

  9. 基于matlab的图像分割,基于MATLAB的图像分割算法研究毕业论文

    作者姓名   XXX 学号 指导教师    XX教授 学科专业   计算机科学与技术 所在学院     计算机学院 提交日期 结  论 数字图像目标分割与提取是数字图像处理和计算机视觉领域中一个备受关 ...

最新文章

  1. PMP-【第1章 引论】-2020-12-07(18页-24页)
  2. 智慧城市成为国家战略 浙江同兴股份乘势迈进
  3. bzoj4448 SCOI2015 情报传递 message
  4. 全球及中国电动车行业品牌竞争策略与投资机会分析报告2022版
  5. 超星考试浏览器_超星浏览器官方下载
  6. Quick BI产品核心功能大图(三)电子表格:新手亦可表格自由
  7. oracle的order by排序优化,oracle order by 排序优化
  8. 搜狗收录方法之搜狗推送接口实现
  9. 必先利其器之 IDEA 磨刀好杀猪
  10. python几何拼贴画_什么是拼贴艺术、集合艺术、拼贴画?
  11. iOS6下关于屏幕旋转的控制
  12. 无线局域网攻防之Wi-Fi破解
  13. 用c语言实现三子棋,它来了!!
  14. LINUX 防火墙开放端口,查看状态,查看开放端口
  15. 双百双新产业项目是什么_全区“双百双新”产业项目推进工作电视电话会议召开...
  16. 前端开发实习生-实习日志
  17. 【六大设计原则-SOLID】
  18. Windows 10 开机不一会出现MEMORY_MANAGEMENT蓝屏
  19. Scrapy实战案例--抓取股票数据并存入SQL数据库(JS逆向)
  20. VLC 屏幕录像时录制鼠标的方法:

热门文章

  1. php 函数 中文,PHP语言之PHP中文函数连载(二)
  2. 非线编辑软件 linux,Flowblade 2.0 发布,非线性开源Linux视频编辑器
  3. python拓展库random_一分钟让你学会Python Random库的使用
  4. springboot整合jwt_springBoot整合JWT使用
  5. JavaScript---函数
  6. formSelects使用
  7. css单位介绍em ex ch rem vw vh vm cm mm in pt pc px
  8. 视图with check option语句详解
  9. 0.接口测试学习路径
  10. 解决win2008下IIS7的HTTP500错误