进行了一段时间的论文学习后,现在下载了一些代码,准备从OpenCV跟matlab两个方面着手搭建自己的图像分割平台,计划耗时一个月左右的时间!

昨天去西工大,听了一场Graph Asia的报告,里面有个Microsoft的人讲述自己怎么写paper。纠正了我一直以来的一个误区:就是做完实验再写paper,这个是不对的,应该像软件工程的开发流程一样,文档先行才对,一遍写文档一边写代码

还有一点感悟就是,关于图像分割这块的内容,大家都做的比较多了,怎么样让自己的工作出彩,还有原创性的idea很重要。

图论方法的主要思想是将图像映射成加权图,把图像像素看作图的顶点, 邻接像素之间的关系看作图的边, 邻接像素之间的相似性看作边的权值, 根据边的权值设计能量函数,
通过最小化能量函数完成对图的分割, 从而实现图像分割. 基于图论的分割方法对图像进行分割时优点明显:

1) 图论是一门研究比较早而且已经发展成熟的学科, 具有较好的数学基础. 针对某个问题, 图论中有多个方法可以解决;

2) 图像和图之间非常相似. 在图像映射为图之后, 便可以利用图论中的各种理论和数学工具进行图像分割.

目前常用的基于图论的分割方法包括最小割 (通常称为图割)、归一化割等. 和图割相比, 归一化割存在以下几点不足:

1) 没有嵌入一元 (Unary) 项, 如各自图结点的先验, 相当于对所有结点都是零先验;

2) 需要计算大矩阵的广义特征向量, 尽管采取了复杂度抑制措施, 计算量仍很大;

3) 只能逼近全局最优解;

4) 倾向于分割出的类具有相同的类内相似度.

因此, 尽管图割容易分离出小目标, 但图割方法的优点更加明显:

1) 在全局最优的框架下进行分割, 保证了能量函数的全局最优解;

2) 同时利用了图像的像素灰度信息和区域边界信息, 分割效果好;

3) 用户交互简单且方便, 只需在目标内部和背景区域标记少量的种子点, 对种子点的具体位置也没有严格要求, 而且通过预处理方法自动确定种子点, 也可让图割方法自动化.

因此, 近 10 年来, 基于图割的图像分割方法的发展和应用尤为广泛. 经典的图割只能精确求解特定的能量函数, 而对其他能量函数需要用线性规划松弛方法来求解, 有两个思路可实现:

1) 基于移动制造的方法, 包括 α 扩展和 α−β 交换等, 不试图精确地求解松弛问题;

2) 基于消息传递的方法, 包括信念传播 (Belief propagation) 和 TRW (Tree-reweightedmessage-passing) 等, 试图精确地求解松弛问题.

参考文献[7]中证明了,最小割等价于能量函数最小化

参考文献

[1] Y. Boykov, and M. P. Jolly, "Interactive graph cuts for optimal boundary and region segmentation of objects in N-D images",
Proceeding of IEEE International Conference on Computer Vision, 1:105~112, July 2001.

[2] C. Rother, A. Blake, and V. Kolmogorov, "Grabcut – interactive foreground extraction using iterated graph cuts",
Proceedings of ACM SIGGRAPH 2004, 23(3):307~312, August 2004.

[3] A. Agarwala, M. Dontcheva, M. Agrawala, et al, "Interactive digital photomontage",
Proceedings of ACM SIGGRAPH 2004, 23(3):294~302, August 2004.

[4] Y. Li, J. Sun, C. Tang, et al, "Interacting with images: Lazy snapping",
Proceedings of ACM SIGGRAPH 2004, 23(3):303~308, August 2004.

[5] A. Blake, C. Rother, M. Brown, et al, "Interactive Image Segmentation using an adaptive GMMRF model".
Proceedings of European Conference on Computer Vision, pp. 428~441, May 2004.

[6] V. Kwatra, A. Schodl, I. Essa, et al, "Graphcut Textures: Image and Video Synthesis Using Graph Cuts".
Proceedings of ACM Siggraph 2003, pp.277~286, Augst 2003.

[7] Song-Tao L I U, Fu-Liang Y I N. 基于图割的图像分割方法及其新进展[J]. 自动化学报, 2012, 38(6): 911-922.

Graph Cuts学习笔记2014.5.16----1的更多相关文章

  1. 《深入Java虚拟机学习笔记》- 第16章 控制流

    <深入Java虚拟机学习笔记>- 第16章 控制流

  2. 自学python:python学习笔记之Ubuntu 16.04网络的配置

    Ubuntu 作为一个Linux的发行版,在桌面环境的易用性上做了很多改善,对推动Linux的推广做了很大的贡献.同时,它作为服务器的操作系统也越来越多的被使用.当然,服务器端可能更多的人在使用Red ...

  3. 【c++ Prime 学习笔记】第16章 模板与泛型编程

    面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器.迭代器.算法都是泛型编程 编写泛型程序时独 ...

  4. 使用Broadcast实现android组件之间的通信 分类: android 学习笔记 2015-07-09 14:16 110人阅读 评论(0) 收藏

    android组件之间的通信有多种实现方式,Broadcast就是其中一种.在activity和fragment之间的通信,broadcast用的更多本文以一个activity为例. 效果如图: 布局 ...

  5. ubuntu中安装samba 分类: linux 学习笔记 ubuntu 2015-07-07 16:14 46人阅读 评论(0) 收藏

    为了方便的和Windows之间进行交互,samba必不可少. 当然,他的安装使用也很简单: 安装: sudo apt-get install samba sudo apt-get install sm ...

  6. Swift 2.0学习笔记(Day 16)——字典集合

    Swift字典表示一种非常复杂的集合,允许按照某个键来访问元素.字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合.键集合是不能有重复元素的,而值集合是可以重复的,键和值是成 ...

  7. java学习笔记—JDBC1(16)

    1.数据持久化 l  持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用,也称为“固化”.在大多数情况下,服务器或客户端应用中数据的持久化是通过关系型数据库来实现 l  存储 ...

  8. Django学习笔记-2018.11.16

    知识储备: 1 Python基础 2 数据库SQL 3 HTTP协议 4 HTML&&CSS 5 正则表达式 Django启动 django-admin startproject pr ...

  9. python学习笔记:第16天 面向对象02--对象中的成员

    目录 ⼀.类的成员介绍: 二.类的成员-变量 三.类的成员-方法 四.类的成员-属性 五.私有属性 ⼀.类的成员介绍: ⾸先, 什么是类的成员. 很简单. 我么能在类中写什么? 写的内容就是成员. 到 ...

随机推荐

  1. iOS设计指南

    备忘:iOS设计指南:http://www.ui.cn/detail/32167.html

  2. Android简易实战教程--第六话《开发一键锁屏应用2·完成》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http:// ...

  3. Android批量打包-如何一秒内打完几百个apk渠道包

    在国内Android常用渠道可能多达几十个,如: 谷歌市场.腾讯应用宝.百度手机助手.91手机商城.360应用平台.豌豆荚.安卓市场.小米.魅族商店.oppo手机.联想乐商.中兴汇天地.华为.安智.应 ...

  4. Fragment的事务操作&Actvity的状态丢失

    Fragment Transactions & Activity State Loss 本文翻译自Fragment Transactions & Activity State Loss ...

  5. [python]标准库json格式化工具

    这段时间做的事情比较杂乱,一部分时间在做运维,一部分时间在做开发,总是太着急,总是感觉很多东西做的不是很满意.还是要静下心来好好想一想,多花些时间来改进,重构和思考. 软件开发绝不紧紧是写代码,完成功 ...

  6. java 单元测试教程(junit)

    单元测试概念:最小化测试  比如说你想测试某个类中的一个方法 优点:无须启动整个程序 clipse使用junit教程: (一)配置jar: 1.右键工程选择Build Path 在二级菜单选择 Add ...

  7. Android进阶(二)https请求No peer certificate的解决方法.

    在做Android客户端通过https协议访问12306,并爬取数据时,出现了如下错误: 其中有一条错误提示是 javax.net.ssl.SSLPeerUnverifiedException: No ...

  8. React Native项目组织结构介绍

    代码组织: 目录结构: . ├── components //组成应用的各个组件 │   ├── Routers.android.js //每个组件若实现不一样,分为android的实现和ios的实现 ...

  9. Mybatis接口编程原理分析(一)

    Mybatis接口编程示例 (1)首先定义接口编程需要的接口及其方法 public interface IUserMapper { public User getById(int id);//接口方法 ...

  10. eclipse进行关联代码

    关联代码找了半天,终于找到了详细解说的: http://blog.csdn.net/long2010yu2010/article/details/8497505