看过上面的介绍后,我们应该思考一下:分割好的超像素有什么用?怎么用?用到哪里?

首先,超像素可以用来做跟踪,可以参考卢湖川课题组发表在IEEE TIP上的《Robust superpixeltracking》;其次,可以做标签分类,参考09年ICCV的《Class segmentation andobject localization with superpixel neighborhoods》,这篇文章对后来的文章还是有很大的指导意义的;还有做超像素级词袋(superpixel-basedbag-of-words)的,参考13年CVPR《Improving an objectdetector and extracting regions using superpixels》,作者把样本中超像素级的特征通过k-means聚类为超像素级词袋,最后又结合了SVM对难分类样本进一步分类,该文章的算法框图如下;

超像素级词袋

在视频前景分割中用的也挺多,因为相比像素,超像素处理速度会快几十倍、几百倍甚至更高,这对实时性要求较高的视频分割比较重要,还有最近提出的supervoxel概念(可以认为是三维的superpixel),文章可以参考《Video object segmentationwith shape cue based on spatiotemporal superpixel neighbourhood》和《Supervoxel-consistentforeground propagation in video》。

Supervoxel (3D superpixel)示例

除了上述介绍的之外,超像素还可以用于骨架提取、人体姿态估计(参考文章《Guiding ModelSearch Using Segmentation》)、医学图像分割等方面。

骨架提取示例

医学图像分割

其实,传统的像素级处理都可以考虑改造成超像素级处理,所以如果你想用的话,超像素就可以应用到计算机视觉这个大领域的方方面面。举一个具体的例子进行分析:下图中每个红色闭环轮廓内都是一个超像素,像素级的光流改造(例如求均值)为超像素级的光流矢量用绿色的箭头表示。这样一张300万像素的图片可以用300个(给定分割数目K=300)超像素来表示。

下面以一篇文章《Improving video foreground segmentation with an object-like pool》下载论文为例具体分析一下超像素的用法。该文章目标是在无监督条件下对序列图像中运动目标进行精细的分割。算法流程如下:

算法流程图

1.  作者先计算像素级的常用的特征:binary mask(二值化掩膜,通过帧差得到),以及optical flow。我们知道基于graph cut的方法需要多次迭代优化,如果直接进行像素级的graph cut非常耗时,所以作者将像素级的binary mask和optical flow特征转化为超像素级特征。

2.  Binarymask特征通过2012年CVPRW的论文《Improving foreground segmentationswith probabilistic superpixel Markov random fields》中的方法

改造为超像素级特征,其实就是将超像素内的binarymask逐像素统计,用目标点数目占总像素点数目(即该超像素的大小)的比例给该超像素赋予一个在binarymask特征下属于前景/背景的概率。

Optical flow像素级特征改造稍微复杂一点,因为每个像素点是一个二维矢量,作者首先将平均的光流矢量作为该超像素的光流矢量,然后将所有超像素级的光流矢量均值作为参考矢量,再计算每个超像素矢量和参考矢量的余弦相似度作为该超像素在optical flow特征下属于前景/背景的概率。

3.  分割问题其实就是对每个超像素标记的问题,作者用conditional random field(条件随机场)来对超像素的分布进行建模,上述两种超像素级的特征都需要归一化到[0,1]并加权融合,结果作为unary potential(一元势函数,描述自身属于前景/背景概率)。Pairwise potential(二元势函数,描述邻域关系)的表达参照了像素级的做法:以种子点的四邻域作为中心超像素的邻域。在这里就体现出SLIC方法的优点了,分割结果比较紧凑而且大小相差不大,所以邻域关系相对于其他的超像素分割方法依然保持的比较好。

4.  Object-likepool和background-like pool是作者引入的概念,是以上一次分割的结果作为先验条件指导当前分割,其保留的也是超像素级的信息(颜色、光流、位置)。然后利用公式(11)计算出了一个新的归一化特征foreground likelihood,把它融入上述conditional random field模型。

下面讨论一下如何设置待分割超像素数目?使用超像素对图像进行分割时,设置的超像素数目K比较重要:如果K比较小,每个超像素尺寸会比较大,这样超像素对边界的保持就会变差,如果K比较大,每个超像素的尺寸会比较小,那么会出现类似“过拟合”现象,超像素的形状会变得非常不规则,邻域关系很难保持,而且数目也比较多。如下图:

不同尺寸的超像素分割结果对比。(a)原图,超像素尺寸:(b)100X100,(c)30X30,(d)8X8

实际上具体分割数目K和具体应用有关,比如如果对上图做主要人物(左边的小魔女)分割的话,100X100大小的超像素就够了,但是如果对两个骑自行的人物也进行分割的话,需要使用30X30的尺寸,但是此时较小人物的分割精度不高,如果有更高要求,则需要使用8X8甚至更小的尺寸。另外,由于上图是动画,所以细节和纹理并不是很多,现实场景下的图片纹理会复杂的多,尺寸也需要根据不同场合选择。

SLIC 超像素分割详解(三):应用相关推荐

  1. SLIC超像素分割详解

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

  2. 【转】 SLIC超像素分割详解(一):简介

    http://blog.csdn.net/electech6/article/details/45509779 转载于:https://www.cnblogs.com/nfydream/p/57749 ...

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

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

  4. VLFeat SLIC超像素分割(Cpp版)

    这段时间对VLFeat的C接口非常的感兴趣,以前用的都是其Matlab接口,虽然很方便,而且提供的Matlab接口要比C接口功能更强大,但Matlab终归只能用来做一下快速的方法验证,所以想比较完整的 ...

  5. SLIC超像素分割方法

    为了方便查找,记录SLIC超像素分割方法的介绍 简介 关键代码分析 应用

  6. SLIC超像素分割的算法介绍和源码分析

    前述 最近在看显著性检测,发现很多算法的基础是超像素分割,而正在看的Saliency Optimization from Robust Background Detection算法的预处理是SLIC算 ...

  7. julia 调用python库_Julia调用Python实现超像素分割SLIC算法

    最近想要在julia中实现 Simple Linear Iterative Clustering (SLIC) 算法对图像进行超像素分割,关于SLIC超像素分割算法,请参考SLIC Superpixe ...

  8. 超像素分割算法————综述

    参考:超像素-学习笔记 什么是超像素?评价标准?SLIC.SEED.ETPS算法 比较的指标:图像边界的粘附性.算法速度.存储效率.分割性能 超像素算法:将像素组合成感知有意义的原子区域( atomi ...

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

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

最新文章

  1. this和that的区别和原理
  2. 揭晓高速公路场景下计算机视觉与交通的秘密
  3. wxWidgets:设备上下文
  4. php 单元测试 静态类,可选的PHP类型提示/检查单元测试或静态分析?
  5. Python3.6学习笔记(五)
  6. 前端学习(1432):模板引擎概述
  7. 领域应用 | 完备的娱乐行业知识图谱库如何建成?爱奇艺知识图谱落地实践
  8. 数据库基础知识——MySQL服务的启动和停止
  9. CentOS7 升级Python2.x到3.x
  10. 电商移动促销页面设计素材PSD分层模板,轻松出稿稿
  11. 讨论小程序游戏开发用什么好?
  12. matplotlib绘制随机漫步
  13. Makefile之wildcard
  14. 让座席管理工作听得见也看得着
  15. 如何用化学软件画立体图?
  16. 《回炉重造 Java 基础》——集合(容器)
  17. android 跳转腾讯地图导航,Android 跳转到百度、高德、腾讯地图导航
  18. 实训9——蓝牙修改开锁密码
  19. 使用Python写的CRC计算工具
  20. golang 简明教程

热门文章

  1. 计算机组成与结构数据通路实验
  2. FastRule: Efficient Flow Entry Updates for TCAM-based OpenFlow Switches(二)
  3. CREE第二代SiC MOSFET驱动电路原理图及PCB板设计)
  4. 奥维地图怎么标注文字_如何在奥维地图上准确地告诉别人“我在哪?”
  5. 平稳信号、非平稳信号
  6. cocos creater 2.4 Error Bundle resources doesn‘t contain
  7. 【了解结构体与指针、数组、函数、字符串之间的关系】(学习笔记14--结构体)
  8. 在MATLAB中创建函数
  9. MySQL---查看数据表结构
  10. RateLimiter实现限流