【CV现状-3.2】纹理与材质
#磨染的初心——计算机视觉的现状
【这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣。可以随意传播,随意喷。所涉及的内容过多,将按如下内容划分章节。已经完成的会逐渐加上链接。】
- 缘起
- 三维感知
- 目标识别
3.0. 目标是什么
3.1. 图像分割
3.2. 纹理与材质
3.3. 特征提取与分类
3.4. 其它 - 目标(和自身)在三维空间中的位置关系
- 目标的三维形状及其改变、目标的位移
- 符号识别
- 数字图像处理
纹理与材质
在前文中提到的分割算法中,基于区域的方法和基于图割的方法都利用了基于纹理的相似性度量方法。另外,除了基于卷积神经网络的算法之外,目前所有的分割算法都存在严重的过分割,区域合并将是不得不采纳的选择。对于区域合并来说,纹理相似性是一种非常重要的相似性度量方法。那么纹理是什么呢?到目前为止,这个问题并没有被广泛认同的答案,甚至已经鲜有人继续关注了。但是基于我们的第一个感觉可以很容易的给出一个答案,纹理是反应空间上同质性的视觉特征,它体现了物体表面的具有缓慢变化或者周期性重复的视觉要素的组织排列属性。这个答案包含了纹理描述的线索——缓慢变化或者周期性重复,然而除了缓慢变化或者周期性重复这个两个特征本身的描述之困难外,组成纹理的视觉要素是什么也没有明确的答案,不同算法对其做出了不同的假设。目前纹理描述与分析算法归纳起来可以分为五类——结构分析方法、统计方法、特征描述法、模型拟合法、信号处理法。

在介绍这些纹理描述和分析方法之前,先来观察一些纹理图像。左上角的两幅纹理图像是严格符合周期性重复这一直觉的,至于其他纹理图像,如果仔细比对一下人类能够提取出来的组成纹理的视觉要素,将会发现没有任何两个视觉要素是一模一样的。如果观察到了由一模一样的视觉要素组成的纹理图案,人类只要一眼就能强烈地感受出来,这一定是人造物,一定是机械制造的。如果因而就将纹理的特点总结为“整体表现出规律性,局部表现出随机性”是没有任何意义的,还应该追根究底地继续问一问。我们确实感受到了“缓慢变化和周期性重复”这两个规律性,这到底是什么原因呢?回到上面的纹理图像,稍作思考可以给出一个初步的回答——视觉要素的大小、间距、方向、形状在统计上反应出来了趋同性。
在上面的叙述中,一直在使用“视觉要素”一词,那么组成纹理的视觉要素到底是什么?相信所有考虑过纹理问题的研究者都会感觉到这个问题的答案就在脑子里萦绕,就在嘴边。然而有些人自信满满地认为这样就算是解答了,有些人却焦虑地发现近在眼前的答案就是抓不住,我就是其中一个抓不住的。但是关于如何回答这个问题,有一个模糊的思路——搜集很多纹理,让很多人来描述,然后分析人类对纹理的描述。例如,“按行排列的方砖,行之间有交错,方砖之间的间距均等”,“紧密排列的细杆,两排细杆相互交叠”,“镶嵌铺陈的碎石板,石板有大有小,边缘略平直”,“表面稍有起伏,无尖锐突起的石板”,“平整多坑的红砖面”,“坑坑洼洼的泥土裹挟碎石的土墙”,“表面平整,有纵横交错长短不一的平直划痕”,“在一个方向上相互压叠的鳞片状蛇腹皮”,“布满长短不一平直或弧形浅细沟槽的皮革”,“挤压粘连在一起的碎木片形成的平板”,“一环套一环的圈纹,还有放射状裂缝”,“纵向延展的细裂纹树皮”,“纵向延展的粗裂纹树皮”,“一端尖、一端宽的狭长条带,宽端集束,尖端发散,草皮”,“丝状交错盘绕的草皮,散布了一些落叶”……
这一系列关于纹理的语言描述仿佛让纹理描述和分析变得更难了,其中提到的视觉要素,如方砖、细杆、石板、尖锐凸起、坑、划痕、鳞片、裂痕、条带,竟然是需要识别的目标!甚至还需要用到三维感知的结果! 但是又有什么别的办法呢?!这总算是让组成纹理的视觉要素变得具体一些了。直接对纹理的描述是如此艰难,或许应该跳出来,看看纹理之间有那些显然的区别。从上面的纹理图案中可以看出,组成纹理的视觉要素有的大,有的小,有的规整,有的复杂,有的排布整齐,有的排布错乱,有的狭长,有的短粗……这些区别对于斑块状纹理的区分是很有意义的,对于丝状、网状、脉状纹理(上图的划痕纹理)彷佛并没有太大的价值。斑块状纹理易于分割出组成纹理的视觉要素,而组成丝状、网状、脉状纹理的视觉要素则难以分割出来,他们只是图上细小的前景,分割后易于混入背景。那么是否需要开发用于分割丝状、网状、脉状纹理图的分割算法呢?
带着这些关于纹理的思考,开始纹理描述与分析算法的介绍吧。当然,不会深入到细节,因为他们都不好使。另外关于纹理分析和描述方法的分类是依据方法所基于的假设而不是具体的算法,如,属于结构分析方法的具体算法也会用到统计、滤波等手段。
结构分析方法假设纹理是由纹理基元(即组成纹理的视觉要素的一种)按某种规则排列形成的,这类方法的两个核心要点在于基元建模和排列建模,但是并没有广泛使用的好方法出现。此外结构方法只适合于描述和分析规则的纹理。
统计方法认为纹理可以通过像元值的空间分布来描述,这里涉及到两个不同维度——像元值维度和空间维度。值得注意的是,这两个维度相对于一般意义上多维向量有很大的区别——量纲不同,且量纲具有至关重要的作用,各自又可以有多个维度(二维平面,三维空间,以及RGB波段)。一般为了兼顾两者,都会采用加窗的方式进行统计,又带来了需要设置窗口宽度这个超参数的问题。实践发现,很多不同的纹理在多种统计值上是相同的。统计方法中较为常用的是灰度共生矩阵(GLCM),知道其原理的人都会承认这个算法对纹理的描述实际上是挂一漏万的,仅从方向和步长两方面来说,要完全描述纹理将会需要无法忍受的计算量和数据量。
特征描述方法认为图像局部的灰度变化表现出一定的特征,将局部特征用某种特征提取手段提取出来,获取与图像对应的特征图像。局部二值模式(LBP)应该是该模式的早期代表,当前大火的CNN也应该归于此类。在《纹理图像分析》一书中将纹理描述和分析方法归为了4类,LBP归于模型方法中。在论文《图像纹理特征提取方法综述》中将纹理描述和分析方法同样归为4类,LBP归于统计方法中。笔者认为将LBP归于这两类都是不合适的,LBP更类似于通过经验和观察总结出来的类似于HAAR、HOG的特征提取算子。一个特征提取算子能提取某一方面的特征,通常需要大量的特征描述算子才能对纹理进行有效的描述。到目前为止,到底有多少可用的特征提取算子呢?

模型拟合法认为图像上的灰度值是一个以二维图像坐标为自变量之一灰度值为因变量的参数化模型,从而将纹理特征提取归结为参数估计问题, 如何采用各种优化参数估计的方法进行参数估计是模型家族研究的主要内容。显然可以预见该类算法必然计算量大,效果也定然不如人意。图像内容千差万别,简单模型必然难以有效表达,复杂模型更加难以求解。
信息号处理方法的主要依据是纹理的周期性特点,将图像视作承载信号的波函数,从而从信息滤波器设计的角度对纹理进行描述和分析。较为常用的是小波分解,人工设计不同的小波核对图像进行滤波,提取出符合不同小波结构的分量。然而通过对上面纹理图像的观察可以发现,很多自然纹理并不严格具有周期性,周期性更多的体现在组成纹理的视觉要素的抽象概念层面和统计层面。另外一个问题就是噪声干扰严重。
除了纹理的描述和分析之外,还需要注意到的是,纹理和材质是有对应关系的。而材质则对应了一些物理属性——硬度、弹性、质量、可塑性,说明了材料潜在的功用。在纹理描述和分析的基础上,是否有必要开展材质识别的研究?笔者认为是很有必要的。纹理的描述和分析首先是有利于图像分割,其次对于目标识别也有很大的促进作用。
【CV现状-3.2】纹理与材质的更多相关文章
- 【CV现状-3.3】特征提取与描述
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.1】图像分割
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.0】"目标"是什么
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-2】三维感知
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-1】磨染的初心——计算机视觉的现状:缘起
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 贴图、纹理、材质的区别是什么? 还有shader
贴图.纹理.材质的区别是什么? 还有shader 整个 CG 领域中这三个概念都是差不多的,在一般的实践中,大致上的层级关系是:材质 Material包含贴图 Map,贴图包含纹理 Texture.纹 ...
- Unity优化之纹理集
发现了一个比较好用的插件:ProDrawCallOptimizer. 它是用来合并纹理和材质的,而且用起来非常简便. 操作方法: 1.将包拖入Unity5中:ps:由于版本问题,直接双击包时导入不了 ...
- 光源 材质 简析——基于《real time rendering》第三版 第五章
对于真是世界的渲染,有三个重要的组成部分,光源,材质,以及摄像机.下面,我们一个一个来简单介绍一下. 光源:方向光,点光源,聚光灯.但是,在和物体表面交互的时候,光源对物体表面的影响是依赖光的辐照度( ...
- Unity -- 材质-Material和预设体-Prefabs
材质(Materials)用来把网格(Mesh)或粒子渲染器(Particle Renderers)贴到游戏对象上.他们在定义对象怎么被显示发挥重要组成部分.材质包括用于呈现网状或颗粒着色器的参考,所 ...
随机推荐
- 【论文阅读】A practical algorithm for distributed clustering and outlier detection
文章提出了一种分布式聚类的算法,这是第一个有理论保障的考虑离群点的分布式聚类算法(文章里自己说的).与之前的算法对比有以下四个优点: 1.耗时短O(max{k,logn}*n), 2.传递信息规模小: ...
- 使用 Topshelf 组件一步一步创建 Windows 服务 (2) 使用Quartz.net 调度
上一篇说了如何使用 Topshelf 组件快速创建Windows服务,接下来介绍如何使用 Quartz.net 关于Quartz.net的好处,网上搜索都是一大把一大把的,我就不再多介绍. 先介绍需要 ...
- python 正确字符串处理(自己踩过的坑)
不管是谁,只要处理过由用户提交的调查数据,就能明白这种乱七八糟的数据是怎么一回事.为了得到一组能用于分析工作的格式统一的字符串,需要做很多事情:去除空白符.删除各种标点符号.正确的大写格式等.做法之一 ...
- 数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF
1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合. 例(1): 设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C} ...
- 使用spring boot配置Gmail邮箱发送邮件
最近项目有用到配置Gmail来发送通知邮件给客户,由于国内众所周知的原因,联调测试中遇到了一些问题,不过好在都一一解决了,现在做个记录,也给其他同仁做个参考. 相关配置: spring.mail.ho ...
- 【RN - 基础】之Text使用简介
基本用法 Text组件是React Native中的一个重要组件,相当于iOS中的UILabel和Android中的TextView.Text组件用来存放文本数据.下面是一个简单的例子: import ...
- AVLTree的Python实现
AVLTree 自己最近在学习数据结构,花了几天理解了下AVLTree的实现,简单一句话概括就是先理解什么是旋转,然后弄明白平衡因子在各种旋转后是如何变化的.最后整理了下学习的过程,并尽量用图片解释, ...
- CentOS 7 安装 dnsmasq 服务 实现内网DNS
目录 安装 配置 服务管理 测试解析 安装 废话不多述,上来就安装 yum install -y bind-utils dnsmasq 配置 [root@jenkins ~]# rpm -ql dns ...
- fsockopen用feof读取http响应内容的一些问题
在前面三个例子中,都有这么一段代码: while (!feof($fp)) { // 读取文件/数据 //$content .= fgets($fp, 128); //$line = fread($f ...
- 爬虫新宠requests_html 带你甄别2019虚假大学 #华为云·寻找黑马程序员#
python模块学习建议 学习python模块,给大家个我自己不专业的建议: 养成习惯,遇到一个模块,先去github上看看开发者们关于它的说明,而不是直接百度看别人写了什么东西.也许后者可以让你很快 ...