最近两年,超像素分割方法非常火爆,计算机视觉、模式识别许多方向都兴起了超像素研究的热潮,提出的方法也比较多。其实这不是个什么新鲜的东西,以前的许多分割算法所获得的结果都可以称为超像素,如Watershed,meanshift,graph-based segmentation,只不过后来兴起一种加入形状约束,使得到的区域如同细胞一般比较紧凑。个人觉得这对某些应用还是有一些好处的,比如这些小区域排列规整,可以把以前基于像素的方法改造改造加以应用,统计特征比较好保持等。

鉴于最近总有一些朋友在问超像素合并怎么弄?原因其实很简单,超像素分割的代码很多都已经被公开了,没有技术含量,应用又做不来,找个相对容易入手点儿的。总结一下目前常用的超像素分割方法,以及基本的区域合并方法,希望对感兴趣的朋友们有用。

1、超像素分割方法

常见的超像素分割方法:TurboPixel,SLIC,NCut,Graph-based,Watershed(Marker-based Watershed),Meanshift等等, 这里列举几种我常用的方法及其效果

需要指出的是,其实分水岭方法效果非常好的,在TurboPixel那个文章中实现的分水岭方法绝对有问题。真实的效果绝对不是那个样子。

算法的效率:这个是本人比较关心的问题,因为是个急性子,等不得程序跑半天出不来结果。这也是为什么上面只列举了4种方法(其实还有些效果非常好的方法,只是自己想的,没有参考文献),因为有些方法效率太低,比如TurboPixel,NCut什么的,等得让我难受死。整体而言,在效率方面,以上四种方法都非常好,处理481*321的图像只需要0.15 s左右(笔记本i7 4500U, 2.1Ghz),对较大的影像效率也非常好。 经典的Turbopixel, NCut什么的在效率上被甩了N条街了....

个人建议:如果非常看重紧凑度,选择NCut和SLIC;非常看重效率,SLIC和Watershed;非常看重边缘精确度和后期区域合并效果:Marker-based Watershed 和 Meanshift。 如果你仅仅是止步于超像素层次,就开始应用了,那么选择SLIC吧,速度,紧凑度都非常好;如果要做后面的区域合并,SLIC不一定拼得过后面三种方法。

2、区域合并方法

区域合并基本方法:区域合并是实现比较精细的分割重要方法,常采用的方法可以是层次区域合并(Hierarchical Stepwise Region Merging),也可以是简单的剔除小区域(EDISON源码里面的Prune函数)。层次区域合并虽已提出多年,但仍然是顶尖的方法(K. Harris, 1998, IEEE TIP, Hybrid image segmentation using watershed and fast region merging),这个文章里面提及了区域邻接图(Region Adjacent Graph, RAG)和最近邻域图(Nearest Neighbor Graph,NNG)的概念,非常清晰明了。虽然后来有些人对RAG和NNG翻译了一下,在中文期刊上发表了不少文章,其实都是简单的实现了一遍,翻译了一下。在我看来没有啥创新,不过大家可以搜搜看,作为学习的参考。对这些方法的改进提了一些,但是有些是站不住脚的,仅仅是因为编程水平有限,没有把别人的方法实现好,以此却说别人的方法效率低。具体我就不点出来了。

RAG和NNG记录区域合并一个简单的示例

区域合并的代价:最早,区域合并是问题的数学解释其实是分片的影像拟合(Jean-Marie Beaulieu,1989, IEEE TPAMI, Hierarchy in Picture Segmentation: A Stepwise Optimization Approach ),每次的区域合并都会带来整个拟合误差的增加,这个增加量称之为合并代价,在图2中表现为,图的每条边都是有权重的,这个权重就表示这两个区域合并对整个图像拟合误差带来的增加量,具体的推导参见原文吧。

其中N表示面积,μ表示区域的光谱平均值,这个合并代价后来又衍生出了很多版本,这个是大家关注的重点。比如把(μi-μj)2换成光谱直方图距离的,加入形状约束的,加入纹理约束的等等。这个选择取决于你处理的图像是啥,比如对于SAR图像,可能得更多的考虑统计特性,对于高光谱的遥感影像,得考虑光谱曲线相似性等。因为个人是研究遥感图像处理的,对于普通的遥感图像,自然影像,推荐Multi-resolution, object-oriented fuzzy analysis of remote sensing data for GIS-ready information这篇文章中的准则,主要是其适应性比较好,比较稳定。(顺便打个小广告:A Spatially-Constrained Color-Texture Model for Hierarchial VHR Image Segmentation,其实效果也很好,不过稍慢一些,毕竟模型复杂很多)。以下是两者准则下的效果:

通过对比就可发现了,其实SLIC对于区域合并而言,效果一般。其实在当前流行的超像素分割中,SLIC已经算好的了,其他的方法效果相比真是没法看了....

算法效率:如果按照原版的RAG和NNG实现,速度非常快的,关键看你技术水平怎么样了,具体实现非常麻烦,我用到了RBTree这样的结构,如果有用C++编程实现该功能的看官,可以考虑下什么地方可以用这个优化下。在我实现的版本里,对于481*321的图,采用以上超像素分割方法和推荐的合并准则,对于约700个初始区域,包括读取影像,区域合并,保存结果,花费0.236s,1200个初始区域 0.26s,更极端的,154401个初始区域(1个像素1个区域),花费2.1s,用我那个相比复杂一点的准则,时间略多一些,大概是前一组实验的2.5倍时间。 2.1s合并掉15W个区域,速度其实已经满足绝大多数的计算机视觉和模式识别中的图像处理需求了,如果进行并行可以实现近乎实时了。

3、区域合并的终止/尺度选择

何时终止区域合并的过程?这是研究的热点之一。常用的方法是设定一个阈值,当合并的代价值超过给定的阈值时,合并终止。然而一个重要的问题是,这个值常常需要手动设置。这无法实现对不同影像的精确分割。

在遥感图像处理领域,可以称之为尺度选择,有一些自动尺度选择的方法,大家可以搜索一下 “分割 最优尺度选择”,如:ISPRS Journal上发表的Unsupervised image segmentation evaluation and refinement using a multi-scale approach这都是采用了全局同质性和异质性来度量分割质量的方法,文章虽然是发表了,但经过我的测试该方法也仅仅只能在特定的软件(eCognition)和算法环境下可用,且对于许多影像,效果不行。当用这个策略来确定区域合并停止阈值时,很多时候会失败。是失败,而不是效果不好。因为在某些情况下按照这个准则,区域合并一开始就应该停止。 (许多中文文章跟这个是换汤不换药)。 还有IJGIS上的一篇文章 ESP: a tool to estimate scale parameter for multiresolution image segmentation of remotely sensed data,虽然引用比较多,但是最终还是有人敢于说实话(在这篇文章中:Semiautomatic Object-Oriented Landslide Recognition Scheme From Multisensor Optical Imagery and DEM Jiann-Yeou Rau, Jyun-Ping Jhan, and Ruey-Juin Rau),这玩意儿纯属扯淡!IJGIS这么牛叉的期刊怎么登了这么一篇水文?

言归正传,这块儿,个人仅限于对遥感图像处理领域有些了解,可能在计算机视觉和模式识别中的很多方法不知道。在此,仅推荐一个比较简单,但是有效的方法。借助于ISPRS Journal那篇文章的方法,你可以计算初始分割和每次合并之后的 Global Homogeneity,依次合并得到一个序列,直到所有的可能的合并进行到底(只剩下一个1个区域了),这时候你就可以得到一条Global Homogeneity演化的曲线,大概如下(红线),那么把最低点和最高点连成直线,计算所有点到这条直线的距离,距离最大的点就是区域合并该停止的点。 这个只能保证你得到一个比较好的结果,但是对于很多计算机视觉的应用,大概已经足够了。至于更好的方法,暂时还不太适合公开...

什么?都合并完了才来找该在哪儿停止? 是的,有时候往往就是这样曲折。但是你也不必重新执行一遍区域合并的,只需要把之前的区域合并顺序重新遍历一遍,找到停止点,把结果反算出来就OK了。

4、更多的思考

     (a) 你研究超像素干嘛的?不要一味追求当前的所谓超像素....

(b) 你确定你真的是改进了当前的方法?还是仅仅没有阅读足够的资料,说不定别人已经做过了,或者你编程实现能力太弱了....

(c) 路在何方? 这个领域可以研究的还是比较多的,区域合并准则、停止条件(尺度选择)、多尺度层次关系组织、应用等都还有许多进步的空间。对于遥感影像,还需要解决超大影像并行快速处理,比如给你一个20W*20W像素大小的图像,可能一幅图像就有100G,你怎么办?

(d) 超像素的合并方法提供了丰富的层次结构信息,你用上了么?

(e) 这些东西咋用啊? 遥感图像分类、目标识别、场景分类、显著性检测、目标提取等等等等等...具体咋样看情况..

(f) 文献推荐: Scale-Sets image Analysis, IJCV,2006,个人认为可能会是该领域后续许多问题的指导思想之一。

有关超像素的代码,请参考:http://blog.csdn.net/anshan1984/article/details/8918167

学术交流QQ群: 217312431

超像素分割与超像素合并/区域合并/多尺度分割相关推荐

  1. 图像分割:Python的SLIC超像素分割

    图像分割:Python的SLIC超像素分割 1. 什么是超像素? 2. 为什么超像素在计算机视觉方面有重要的作用? 3. 简单线性迭代聚类(SLIC) 4. 效果图 5. 源码 参考 1. 什么是超像 ...

  2. opencv14-图像分割--超像素分割与形态学分割

    二值形态学在二值图像上进行运算,二值图像是从其他等级的强度通道产生的.为了进行图像分析,采用的方法是去除形状噪声或异常值以及加强主要特征点.形态学可用于目标识别.细胞生物学.医学.粒子分析和自动显微镜 ...

  3. SLIC超像素分割详解

    SLIC超像素分割详解(一) 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理.颜色.亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块.它利用像素之间 ...

  4. 论文解读:《自适应非局部随机游动用于图像超像素分割》

    论文解读:<Adaptive Nonlocal Random Walks for Image Superpixel Segmentation> 1.文章概述 2.背景 2.1 现有的超像素 ...

  5. 开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素

    开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素摘要: 超像素提供图像数据的有效低/中级表示,这极大地减少了后续视觉任务的图像基元的数量. 现有的超像素算法无法区分,因此难以集成 ...

  6. 超像素SLIC算法源码阅读

    超像素SLIC算法源码阅读 超像素SLIC算法源码阅读 SLIC简介 源码阅读 实验结果 其他超像素算法对比 超像素SLIC算法源码阅读 SLIC简介 SLIC的全称Simple Linear Ite ...

  7. 真正的端到端超像素网络——Superpixel Segmentation with Fully Convolutional Networks(CVPR2020)

    0. 传送门 论文地址:https://arxiv.org/abs/2003.12929 github地址:https://github.com/fuy34/superpixel_fcn 1. 简介 ...

  8. (超、深)超像素网络SSN

    1.简介 目前超像素难以和深度学习相结合主要由两个原因: 标准卷积运算是在规则网格上定义的,当应用于超像素时其效率会变的很低. 超像素的聚类操作具有不可微分的计算,使得无法使用反向传播进行深度学习(难 ...

  9. 使用OpenCV和Python标记超像素色彩

    本文翻译自光头哥哥的博客: [Labeling superpixel colorfulness with OpenCV and Python],仅做学习分享. 原文链接: https://www.py ...

最新文章

  1. ruby Mixin用法
  2. 微信 小程序组件 搜索分类 带缓存(终极 上线版)
  3. 我遇到了Hibernate异常
  4. java memcached设置过期时间_Memcached的MemCachedClient设置过期时限
  5. vue项目原理分析-3:vuex
  6. Linux 命令(76)—— kill 命令
  7. matlab连接github,GitHub - chenboshuo/learn_matlab: 我的matlab学习
  8. 层次聚类python实现
  9. 薛定谔的猫、量子纠缠、和量子计算机
  10. 一堂难忘的计算机课作文,难忘的信息课作文
  11. 路由器连接路由器设置教程
  12. YAML简介(.yml文件后缀)
  13. 那些git中常见的面试题及知识点
  14. 齐家网、土巴兔、酷家乐,千亿市值路上谁会先圆梦?
  15. 设备安全--IPS部署与维护
  16. 两套供左撇子人士使用的鼠标指针(带自动安装inf文件)
  17. Python多线程多进程、异步、异常处理等高级用法
  18. 【企业了解】人人都是产品经理、鸟哥笔记、CSDN、稀土掘金(2020年11月稀土掘金被字节跳动,金融与科技)
  19. HERP和单臂路由结合配置时,提示 %IP-4-DUPADDR: Duplicate address错误
  20. 【温故知新系列】软件测试原则的7个基本原则

热门文章

  1. java所定义的版本中不包括_java试题模拟出题
  2. 中控门禁控制器接玻璃移动门
  3. c语言初学——运算符和表达式
  4. 机器学习之梯度提升决策树(GBDT)
  5. Apple FairPlay DRM及其工作原理
  6. 删除SQL表中的某一列
  7. linux mysql5.7.11_Centos7.2 Systemd 方式编译 Mysql5.7.11
  8. DM8 控制文件转换为文本文件
  9. 本地项目与Git项目关联
  10. WGS84坐标系下,经纬度如何换算成米