#磨染的初心——计算机视觉的现状

【这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣。可以随意传播,随意喷。所涉及的内容过多,将按如下内容划分章节。已经完成的会逐渐加上链接。】

  1. 缘起
  2. 三维感知
  3. 目标识别
    3.0. 目标是什么
    3.1. 图像分割
    3.2. 纹理与材质
    3.3. 特征提取与分类
    3.4. 其它
  4. 目标(和自身)在三维空间中的位置关系
  5. 目标的三维形状及其改变、目标的位移
  6. 符号识别
  7. 数字图像处理

纹理与材质

在前文中提到的分割算法中,基于区域的方法和基于图割的方法都利用了基于纹理的相似性度量方法。另外,除了基于卷积神经网络的算法之外,目前所有的分割算法都存在严重的过分割,区域合并将是不得不采纳的选择。对于区域合并来说,纹理相似性是一种非常重要的相似性度量方法。那么纹理是什么呢?到目前为止,这个问题并没有被广泛认同的答案,甚至已经鲜有人继续关注了。但是基于我们的第一个感觉可以很容易的给出一个答案,纹理是反应空间上同质性的视觉特征,它体现了物体表面的具有缓慢变化或者周期性重复的视觉要素的组织排列属性。这个答案包含了纹理描述的线索——缓慢变化或者周期性重复,然而除了缓慢变化或者周期性重复这个两个特征本身的描述之困难外,组成纹理的视觉要素是什么也没有明确的答案,不同算法对其做出了不同的假设。目前纹理描述与分析算法归纳起来可以分为五类——结构分析方法、统计方法、特征描述法、模型拟合法、信号处理法。

在介绍这些纹理描述和分析方法之前,先来观察一些纹理图像。左上角的两幅纹理图像是严格符合周期性重复这一直觉的,至于其他纹理图像,如果仔细比对一下人类能够提取出来的组成纹理的视觉要素,将会发现没有任何两个视觉要素是一模一样的。如果观察到了由一模一样的视觉要素组成的纹理图案,人类只要一眼就能强烈地感受出来,这一定是人造物,一定是机械制造的。如果因而就将纹理的特点总结为“整体表现出规律性,局部表现出随机性”是没有任何意义的,还应该追根究底地继续问一问。我们确实感受到了“缓慢变化和周期性重复”这两个规律性,这到底是什么原因呢?回到上面的纹理图像,稍作思考可以给出一个初步的回答——视觉要素的大小、间距、方向、形状在统计上反应出来了趋同性。

在上面的叙述中,一直在使用“视觉要素”一词,那么组成纹理的视觉要素到底是什么?相信所有考虑过纹理问题的研究者都会感觉到这个问题的答案就在脑子里萦绕,就在嘴边。然而有些人自信满满地认为这样就算是解答了,有些人却焦虑地发现近在眼前的答案就是抓不住,我就是其中一个抓不住的。但是关于如何回答这个问题,有一个模糊的思路——搜集很多纹理,让很多人来描述,然后分析人类对纹理的描述。例如,“按行排列的方砖,行之间有交错,方砖之间的间距均等”,“紧密排列的细杆,两排细杆相互交叠”,“镶嵌铺陈的碎石板,石板有大有小,边缘略平直”,“表面稍有起伏,无尖锐突起的石板”,“平整多坑的红砖面”,“坑坑洼洼的泥土裹挟碎石的土墙”,“表面平整,有纵横交错长短不一的平直划痕”,“在一个方向上相互压叠的鳞片状蛇腹皮”,“布满长短不一平直或弧形浅细沟槽的皮革”,“挤压粘连在一起的碎木片形成的平板”,“一环套一环的圈纹,还有放射状裂缝”,“纵向延展的细裂纹树皮”,“纵向延展的粗裂纹树皮”,“一端尖、一端宽的狭长条带,宽端集束,尖端发散,草皮”,“丝状交错盘绕的草皮,散布了一些落叶”……

这一系列关于纹理的语言描述仿佛让纹理描述和分析变得更难了,其中提到的视觉要素,如方砖、细杆、石板、尖锐凸起、坑、划痕、鳞片、裂痕、条带,竟然是需要识别的目标!甚至还需要用到三维感知的结果! 但是又有什么别的办法呢?!这总算是让组成纹理的视觉要素变得具体一些了。直接对纹理的描述是如此艰难,或许应该跳出来,看看纹理之间有那些显然的区别。从上面的纹理图案中可以看出,组成纹理的视觉要素有的大,有的小,有的规整,有的复杂,有的排布整齐,有的排布错乱,有的狭长,有的短粗……这些区别对于斑块状纹理的区分是很有意义的,对于丝状、网状、脉状纹理(上图的划痕纹理)彷佛并没有太大的价值。斑块状纹理易于分割出组成纹理的视觉要素,而组成丝状、网状、脉状纹理的视觉要素则难以分割出来,他们只是图上细小的前景,分割后易于混入背景。那么是否需要开发用于分割丝状、网状、脉状纹理图的分割算法呢?

带着这些关于纹理的思考,开始纹理描述与分析算法的介绍吧。当然,不会深入到细节,因为他们都不好使。另外关于纹理分析和描述方法的分类是依据方法所基于的假设而不是具体的算法,如,属于结构分析方法的具体算法也会用到统计、滤波等手段。

结构分析方法假设纹理是由纹理基元(即组成纹理的视觉要素的一种)按某种规则排列形成的,这类方法的两个核心要点在于基元建模和排列建模,但是并没有广泛使用的好方法出现。此外结构方法只适合于描述和分析规则的纹理。

统计方法认为纹理可以通过像元值的空间分布来描述,这里涉及到两个不同维度——像元值维度和空间维度。值得注意的是,这两个维度相对于一般意义上多维向量有很大的区别——量纲不同,且量纲具有至关重要的作用,各自又可以有多个维度(二维平面,三维空间,以及RGB波段)。一般为了兼顾两者,都会采用加窗的方式进行统计,又带来了需要设置窗口宽度这个超参数的问题。实践发现,很多不同的纹理在多种统计值上是相同的。统计方法中较为常用的是灰度共生矩阵(GLCM),知道其原理的人都会承认这个算法对纹理的描述实际上是挂一漏万的,仅从方向和步长两方面来说,要完全描述纹理将会需要无法忍受的计算量和数据量。

特征描述方法认为图像局部的灰度变化表现出一定的特征,将局部特征用某种特征提取手段提取出来,获取与图像对应的特征图像。局部二值模式(LBP)应该是该模式的早期代表,当前大火的CNN也应该归于此类。在《纹理图像分析》一书中将纹理描述和分析方法归为了4类,LBP归于模型方法中。在论文《图像纹理特征提取方法综述》中将纹理描述和分析方法同样归为4类,LBP归于统计方法中。笔者认为将LBP归于这两类都是不合适的,LBP更类似于通过经验和观察总结出来的类似于HAAR、HOG的特征提取算子。一个特征提取算子能提取某一方面的特征,通常需要大量的特征描述算子才能对纹理进行有效的描述。到目前为止,到底有多少可用的特征提取算子呢?

模型拟合法认为图像上的灰度值是一个以二维图像坐标为自变量之一灰度值为因变量的参数化模型,从而将纹理特征提取归结为参数估计问题, 如何采用各种优化参数估计的方法进行参数估计是模型家族研究的主要内容。显然可以预见该类算法必然计算量大,效果也定然不如人意。图像内容千差万别,简单模型必然难以有效表达,复杂模型更加难以求解。

信息号处理方法的主要依据是纹理的周期性特点,将图像视作承载信号的波函数,从而从信息滤波器设计的角度对纹理进行描述和分析。较为常用的是小波分解,人工设计不同的小波核对图像进行滤波,提取出符合不同小波结构的分量。然而通过对上面纹理图像的观察可以发现,很多自然纹理并不严格具有周期性,周期性更多的体现在组成纹理的视觉要素的抽象概念层面和统计层面。另外一个问题就是噪声干扰严重。

除了纹理的描述和分析之外,还需要注意到的是,纹理和材质是有对应关系的。而材质则对应了一些物理属性——硬度、弹性、质量、可塑性,说明了材料潜在的功用。在纹理描述和分析的基础上,是否有必要开展材质识别的研究?笔者认为是很有必要的。纹理的描述和分析首先是有利于图像分割,其次对于目标识别也有很大的促进作用。

【CV现状-3.2】纹理与材质的更多相关文章

  1. 【CV现状-3.3】特征提取与描述

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  2. 【CV现状-3.1】图像分割

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  3. 【CV现状-3.0】"目标"是什么

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  4. 【CV现状-2】三维感知

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  5. 【CV现状-1】磨染的初心——计算机视觉的现状:缘起

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  6. 贴图、纹理、材质的区别是什么? 还有shader

    贴图.纹理.材质的区别是什么? 还有shader 整个 CG 领域中这三个概念都是差不多的,在一般的实践中,大致上的层级关系是:材质 Material包含贴图 Map,贴图包含纹理 Texture.纹 ...

  7. Unity优化之纹理集

    发现了一个比较好用的插件:ProDrawCallOptimizer. 它是用来合并纹理和材质的,而且用起来非常简便. 操作方法: 1.将包拖入Unity5中:ps:由于版本问题,直接双击包时导入不了 ...

  8. 光源 材质 简析——基于《real time rendering》第三版 第五章

    对于真是世界的渲染,有三个重要的组成部分,光源,材质,以及摄像机.下面,我们一个一个来简单介绍一下. 光源:方向光,点光源,聚光灯.但是,在和物体表面交互的时候,光源对物体表面的影响是依赖光的辐照度( ...

  9. Unity -- 材质-Material和预设体-Prefabs

    材质(Materials)用来把网格(Mesh)或粒子渲染器(Particle Renderers)贴到游戏对象上.他们在定义对象怎么被显示发挥重要组成部分.材质包括用于呈现网状或颗粒着色器的参考,所 ...

随机推荐

  1. 【NOIP2017】【Luogu P3956】【SPFA】棋盘

    Luogu P3956 本题是一道简单的SPFA 具体看程序 #include<iostream> #include<cstdio> using namespace std; ...

  2. Python-beautifulsoup库

    #beautifulsoup库的安装 pip install beautifulsoup4 python -m pip install --upgrage pip from bs4 import Be ...

  3. Lua和C交互的简易教程

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52458051 本文出自: [HansChen的博客] Lua栈 要理解Lua和C++ ...

  4. 6. 彤哥说netty系列之Java NIO核心组件之Buffer

    --日拱一卒,不期而至! 你好,我是彤哥,本篇是netty系列的第六篇. 简介 上一章我们一起学习了Java NIO的核心组件Channel,它可以看作是实体与实体之间的连接,而且需要与Buffer交 ...

  5. SpringBoot项目集成Hystrix

    Hystrix Hystrix是由Netflix开源的一个服务隔离组件,通过服务隔离来避免由于依赖延迟.异常,引起资源耗尽导致系统不可用的解决方案. 1.什么是服务熔断   服务熔断就是对该服务的调用 ...

  6. Dockerfile构建私有镜像

    构建第一个镜像 镜像的定制实际上就是定制每一层所添加的配置,文件.我们可以把每一层修改,安装,构建,操作的命令都写入一个脚本,这个脚本就是Dockerfile.Dockerfile是一个文本文件,其内 ...

  7. python画樱花

    用python画简单的樱花 代码如下: import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, t): ...

  8. css4——浮动

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. Cypher基本指令学习1

    1.查询节点 查询所有节点match (n) return n 查询带有标签的节点 match(movie:Flyer) return movie.name 查询关联节点(查询A导演的所有电影) ma ...

  10. SQL 数字转为中文大写

    USE [SPECIAL_BLD]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO CREATE FUNCTION [dbo].[get_upper] ...