【CV现状-3.1】图像分割
#磨染的初心——计算机视觉的现状
【这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣。可以随意传播,随意喷。所涉及的内容过多,将按如下内容划分章节。已经完成的会逐渐加上链接。】
- 缘起
- 三维感知
- 目标识别
3.0. 目标是什么
3.1. 图像分割
3.2. 纹理与材质
3.3. 特征提取与分类
3.4. 其它 - 目标(和自身)在三维空间中的位置关系
- 目标的三维形状及其改变、目标的位移
- 符号识别
- 数字图像处理
图像分割
为了通过材质、形状、结构识别目标,对图像进行分割应该是必然的选择。在这一点上计算机视觉研究者们算是勉强达成了共识,图像分割甚至被很多研究者列为计算机视觉的基本任务之一了。很多图像分割算法被提了出来,归纳起来可以分为基于阈值的方法、基于聚类的方法、基于区域的方法、基于图割的方法、活动边界模型和水平集、基于卷积神经网络的方法。
基于阈值的方法里,有全局一个阈值的,也有对图像不同区域使用不同阈值的。此类方法的关键在于确定阈值,然而对于大多数图像即使遍历所有的取值也无法找到实现合理分割的阈值,因此该算法常用于符号识别、指纹识别和分割遥感领域中的各种指数图像(水体指数、植被指数、干旱指数、热红外影像)。
凡是认真思考或者亲身尝试过的,都会承认基于聚类的方法的分割结果难以令人接受。所有的聚类算法都直接或者间接假设了类别内部的样本密度高于类别边界的样本密度。观察过一些图像的直方图后就会发现,像素在像元值空间的分布形状通常都类似钟型曲线(只有一个凸起),也就是说按照聚类算法的假设应该将全部像素聚为一类。即使同时使用多个图像通道,这种情况也没有什么改观。没有或者难以使用空间信息是基于聚类的方法的直接缺陷,导致分割结果形状复杂、越过显而易见的边界。通常基于聚类的方法都作为其他算法的预处理步骤,在图像处理领域用于压缩颜色数量。
基于聚类的方法中有一个叫做SLIC的超像素分割算法与基本的聚类算法有较大的不同,首先在图像上均匀的撒上种子点,然后以一定的半径执行KMeans聚类,所使用的距离度量方法考虑到了空间信息。该算法与方格网形划分超像素相比有很大的优势,但是由于聚类算法的用于分割的天然缺陷仍然会导致超像素越过显而易见的边界。如果目标是为了保持形状的准确性,SLIC并不是很好的预处理选择。
基于区域的方法目前包含种子区域生长、区域分裂和合并、分水岭。种子区域生长法的关键在于种子点的选择、相似性的度量、生长规则,其中相似性度量最为关键。常用的相似性度量方法有像元值、颜色、纹理,相似性的度量也是区域分裂和合并法的最关键所在。区域分裂和合并的另外一个关键是分裂和合并的机制。分水岭算法通常应用在梯度图上,将梯度值看作高程值,设想从高程值的局部极小值处向外涌水,整幅图上水位升高的速度是一样的,在两处涌水相遇处修建堤坝。当水位上升至最高点后,所有像素点都被淹没,所有的堤坝形成对图像的分割。分水岭算法对微弱的边缘也有很好的响应,因而也会导致过分割。对于保持形状来说,分水岭加区域分裂和合并应该还有较大的提升空间。
基于图割的方法是将图像分割转换为图的最小割问题,关键在于设置边的权重,这只不过是相似性度量的另一个称呼。因此基于图割的全图分割方法并不会比种子区域生长、区域分裂和合并更好;此外最小割是NP问题,难以最优求解。基于图割的方法中值得一提的是Graphcut和Grabcut,该算法用于分割前背景,需要人工粗略标注部分背景和前景。这两个算法的直接意义在于图像处理领域的交互式前景提取。
活动边界模型和水平集的用处同样在于交互式前景提取,需要人工提供初始前景范围曲线,然后让范围曲线在根据图像数据得到的能量函数的作用下演化,使其向前景边缘逐渐逼近,最终找到前景的边缘,在达到前景边缘时能量函数的取值最小。活动边界模型直接对范围曲线进行演化,而水平集则根据初始范围曲线及图像数据构造出三维曲面,通过三维曲面的演化以及取等值线的方式间接实现范围曲线的演化。前背景的边缘处一定具有较大的梯度,因此能量函数最重要的构造依据就是图像的梯度,仅依靠梯度会陷入局部最优,一般还会加入曲线的曲率和其它先验知识。活动边界模型和水平集方法不过是希望通过曲线和曲面的传递作用以及其它先验突破梯度的局部极大值,在前景分割上的表现不会比基于图割的方法更好,事实也是如此。
基于卷积神经网络的方法包括语义分割、实例分割、全景分割三种,归根到底都是通过已知的样本数据建立像素及其一定范围内领域的像素到实例或者类别的映射。得益于神经网络能够模拟任意函数的优势,在大量样本数据参与训练的条件下所建立出来的映射模型具有较高的准确性。然而机械的映射模型的缺陷也是显而易见的,迁移能力(只能分割猫的网络不能分割狗)和泛化能力(只能分割白猫的网络分割不了花猫)几乎没有。另外由于映射模型过分复杂,输入数据的轻微改变也会导致无法预料的错误(像素攻击)。
以上就是图像分割的所有进展,凡是有过尝试的人都会承认,即使人类也很难从目前图像分割的结果中提取出形状和结构特征。不禁要问,在没有识别出目标的情况下,到底能够分割到什么程度?目前图像分割算法是否还能继续提升?就我个人的感觉,目前的进展还未达到图像分割的极限,虽然不可能达到人类的水平,但是仍然有很大的提升空间。关键的问题是朝着什么方向去提升,也就是应该用什么指标来评价图像分割能力的提升?
目前图像分割算法的评价指标都是基于IOU的,IOU直接强调的是面积,而面积对于图斑来说是区分度非常差的特征。对于很多形状复杂的自然目标来说,IOU大但是形状和结构则相去甚远,因此基于IOU的评价指标对于强调形状和结构没有任何价值。但是目前并没有形状和结构特征的描述方法,仿佛陷入了进退两难的境地。其实不难看出,如果边界是准确的,那么将准确的边界连接起来就能形成准确的分割。边界的少量错位是在所难免的,因此在评价边界的准确性时需要允许一定程度的错位。但是若果边界有缺失,则无论如何也无法恢复形状和结构了。至此,分割算法的一项评价指标就呼之欲出了——边界缺失率。与之对应的另一项评价指标则是——边界冗余率。
【CV现状-3.1】图像分割的更多相关文章
- 【CV现状-3.3】特征提取与描述
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.2】纹理与材质
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.0】"目标"是什么
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-2】三维感知
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-1】磨染的初心——计算机视觉的现状:缘起
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- Convolutional Neural Networks 笔记
1 Foundations of Convolutional Neural Networks 1.1 cv问题 图像分类.目标检测.风格转换.但是高像素的图片会带来许多许多的特征. 1.2 边缘检测( ...
- <学习opencv>过滤器和卷积
/*=========================================================================*/ // 过滤器和卷积 /*========== ...
- 深度学习与CV教程(14) | 图像分割 (FCN,SegNet,U-Net,PSPNet,DeepLab,RefineNet)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
随机推荐
- Spring与Shiro整合 登陆操作
Spring与Shiro整合 登陆操作 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 编写登陆Controller方法 讲解: 首先,如果你登陆失败的时候,它会把你的异常信息丢到 ...
- 图解 Spring:HTTP 请求的处理流程与机制【1】
2003 年,老兵哥初到中兴开始研究生实习,Spring 就是那年诞生的,2004 年 3 月发布了 1.0 版本,到现在已经超过 15 年了.从单体式分层架构到云原生微服务架构,它稳坐在 JAVA ...
- EntityFramework Core 3.0查询
前言 随着.NET Core 3.0的发布,EF Core 3.0也随之正式发布,关于这一块最近一段时间也没太多去关注,陆续会去对比之前版本有什么变化没有,本节我们来看下两个查询. 分组 我们知道在E ...
- sql注入问题回顾
(以下语法均为在python中使用mysql语句,部分代码省略,使用python中的pymsql模块获取游标对象即可直接执行sql语句) sql注入:在传入参数的时候做出改变,使得插入数据这条sql语 ...
- myql数据库,sql横排转竖排以及竖排转横排,oracle的over函数的使用
一.引言 前些日子遇到了一个sql语句的横排转竖排以及竖排转横排的问题,现在该总结一下,具体问题如下: 这里的第二题和第三题和下面所讲述的学生的成绩表是相同的,这里给大家留一下一个念想,大家可以自己做 ...
- R语言学习笔记(2)——数据结构与数据集
一.数据集 数据集的概念 数据集是由数据组成的矩阵数组,行表示观测(observation),列表示变量(variable) 数据类型 数值型变量 PatientID.AdmData.Age 为数值型 ...
- Django-settings可插拔实现
Setting可插拔 django暴露了一个可以给用户自定义配置的文件,优先使用用户配置的信息,而且必须要大写才有效 文件目录 --about_settings --default --conf -- ...
- centos7.6安装python3.7
1.安装python3.7后,需要: yum install libffi-devel -y 然后再到python源码目录再make install 重新编译一下. 否则pip安装一些包时会安装不上, ...
- Hello! 第一篇博客!
我在博客园开通博客啦 :) 欢迎大家来关注和玩耍,和我互动, Follow 我! 我关心算法和Python!
- go proxy athens 部署到k8s
目录 go proxy athens 部署到k8s 一.athens简介 二.部署 1.创建 PersistentVolume 2.创建service 3.创建deployment 4.ci/cd中使 ...