第五章 纹理分析 笔记

第五章 纹理分析

  • 摘要:第五章 纹理分析 笔记 主要内容:纹理的表示(灰度同现矩阵、词袋模型)、纹理的合成

5.1 纹理简介

  • 纹理广泛存在,很容易识别,是很难定义的一种现象。

  • 纹理会包含重复出现的模式,即同样的小图像会以某种方式重复出现多次,同时,这些小图像块可能由于视角变化等原因会存在一定的变形。

  • 纹理是由一些元素以某种方式重复出现而形成的。这些元素称为纹理基元。可以通过首先找到纹理基元,然后总结纹理基元重复出现的方式,来表示和分析纹理

  • 纹理反映了图像中灰度或颜色的空间分布情况,并不关心灰度或颜色的具体的值,而且纹理受尺度的影响很大。如图5-2所示。

  • 纹理的产生:纹理可以由场景中不同表面间的反照率变化产生。

    • 如:衣服上图案形成的纹理/由表面形状变化产生的树皮的纹理/由很多小元素组成,如很多树叶形成的纹理
  • 纹理作用:通过纹理可以推断场景的信息也可以辨别物体分析物体的形状

  • 纹理分析:包含两个重要问题:

    • 如何表示纹理
    • 如何进行纹理的合成

    在这里插入图片描述
    图5-2

5.2 纹理的表示

5.2.1灰度同现矩阵

灰度同现矩阵(Gray Level Cooccurence Matrix,GLCM)是一种通过研究灰度的空间相关特性来描述纹理的方法。

由于纹理是由灰度分布在空间位置上反复出现而形成的,因此在图像空间中相隔某距离的两像素之间会存在一定的关系,即图像中灰度的空间相关特性。灰度直方图是对图像上每个像素具有的灰度进行统计的结果,而灰度同现矩阵是对图像上保持某距离的两个像素分别具有的灰度值的情况下进行统计而得到的。

灰度同现矩阵(适用于描述微小纹理

  • 灰度同现矩阵P[i,j]是一个二维相关矩阵。规定一个位移矢量d=(dx,dy),计算被d分开且具有灰度级i和j的所有像素对的个数就可以得到灰度同现矩阵
  • 针对同一幅图像,给定不同的位移矢量,可以得到不同的灰度同现矩阵
  • 灰度同现矩阵表示了图像中的灰度在空间中的分布信息
  • 由于具有灰度级[i,j]的像素对的数量不一定等于具有灰度级[j,i]的像素对的数量,因此灰度同现矩阵是非对称矩阵
  • 灰度同现矩阵的大小只与最大灰度级有关,与图像大小无关,易于理解和计算。
  • 缺点:由于灰度同现矩阵并没有包含形状信息,因此不适合用于描述含有大面积基元的纹理。

归一化的灰度同现矩阵

  • 计算:将灰度同现矩阵除以满足位移矢量的像素对的总数,可以得到归一化的灰度同现矩阵

  • 通过归一化后的灰度同现矩阵

    • 可以计算出纹理对应于度量灰度级分布的随机性的熵
    • 均匀度特征熵值是纹理内容随机性的量度:熵值越大表示随机性越强
    • 计算纹理的能量特征:能量特征反映了纹理的均匀性或平滑性。能量小则纹理比较均匀或光滑;
    • 对比度特征是反映纹理点对中两个像素间灰度差的度量灰度差大的点对较多对比度较大,纹理较粗糙,反之纹理较柔和。
    • 均匀度:反映纹理的均匀程度

5.2.2 词袋模型

  • 纹理是由一些元素以某种方式重复出现而形成的。这些元素称为纹理基元

    第3章介绍了滤波器可以视为模式检测器,因此可以用各种模式的滤波器检测各种模式的纹理基元

  • 可以通过首先找到纹理基元,然后总结纹理基元重复出现的方式,来表示和分析纹理

  • 但是纹理基元模式近乎无穷,很难检测。所以用另一种方式间接描述纹理

    • 找到纹理基元的子元素(一般是各种以及各种边。子元素数量比纹理基元数量得多,可以用各种滤波器检测)

    • 总结子元素出现方式间接描述纹理

  • 过程

    • 1.选取一系列滤波器(大小、方向、尺度不同)

      每个滤波器表示一种模式,包括各种点以及各种方式的边。

      2.使用滤波器对图像进行滤波,并对滤波的结果进行矫正

      通常使用半波(half wave)方式进行校正,即对于一个滤波器Fi,对其与图像的滤波结果进行操作,得到两个校正后的结果max(Fi*I)和max(0,-(fi * I))。

      校正原因:避免后续进行平均等操作时,将深色前景和浅色背景浅色前景和深色背景的响应平均掉。

      3.对矫正后的响应进行某种形式的总结。(总结向量

      eg:求最大值、求平均等

      • 这些总结可以在不同的尺度上捕获邻近元素的信息从而得到对纹理的整体描述

      • 然后对每一个像素可以使用一个总结向量来描述,这个向量的维度为采用的滤波器的数目乘以2.

      • 每一个像素的总结向量表示在这个像素位置上,各种滤波器的响应组合

        • eg:只有水平和垂直两个滤波器,那么每个像素的总结向量就是一个四维向量(每个滤波器经过矫正后会有两个响应图)。

          [1,1,0,0]表示在这个像素位置上有较强的水平边缘,没有垂直边缘。

      • 表示整个纹理图像:计算其包含的像素的总结向量的直方图

      • 总结向量是连续的,不能直接计数来计算直方图。

        实际计算中,总结向量表示是连续的,即滤波器的响应都是连续值。所以在得到每一个像素的总结向量后,不能简单的对这些向量进行计数计算直方图。(即使将总结向量离散化,也不能直接计算直方图)。

        • 原因:总结向量维度高,直接计算直方图,直方图所包含元素数量过于巨大。
        • 解决:词袋模型

      词袋模型过程:如图5-6

      • 1.建立字典/码本

        • 字典中包含N个字(向量)。
        • 建立字典方式:聚类方法。

        常用聚类方式:K-means/K-均值方法

        • 是一种基于划分的聚类算法,以样本间距离作为样本间相似性度量的标准。(即样本间距离越小,相似程度越高,越有可能位于同一个类中)(样本间距离计算方式多种,K-means使用欧氏距离计算样本间距)

        • K:类别的个数

        • means:类内数据对象的均值(可以看做是对类中心的描述)。因此又称为K-均值算法

        • K-means算法过程:

          • (1)输入K值(通过聚类得到的类别数目
          • (2)从数据集中随机选取K个样本作为初始的聚类中心
          • (3)对集合中每一个样本,计算其与每一个初始聚类中心的距离,划分到距离最近的类别中
          • (4)计算每个类别的均值作为新的聚类中心
          • (5)如果新的聚类中心和旧的聚类中心之间的距离变化大于给定设置的阈值,则重复步骤(3)~(5)
      • 2.使用字典中字的直方图表示纹理。(直方图的元素数量=字典中字的数量N)

        • 对于纹理图像中每个像素,计算其总结向量。
        • 判断其与字典中的哪个字(向量)比较相似(距离比较近),就使用该字(向量)来表示这个总结向量。
        • 使用每个像素的总结向量对应的字典中字出现的次数来建立纹理的直方图表示(字典中各个字(向量)出现频率的直方图

在这里插入图片描述
图5-6

5.3纹理的合成

纹理合成是指给定一小块纹理图像,通过算法生成一大块该纹理图像的过程。

纹理合成在图形学以及图像填洞等方面有着重要的应用

纹理合成方法

假定给定一块纹理图像,其中有一个像素的值是缺失的。

选取该像素周围的一个窗口,在图像其他区域进行匹配,找到和该窗口最匹配的窗口,使用匹配窗口中心像素的值来填充这个像素,通过计算两个窗口的误差平方和(Sum of Squared Differences,SSD)来进行匹配。

遇到问题:

  • 问题1:找不到一个满足阈值的窗口

    • 导致原因:进行窗口间匹配时,简单的设定一个阈值,然后选取那些距离小于阈值的窗口来进行纹理补全。

    • 解决:更好的策略是选择所有距离小于(1+α)smin的窗口。

      • smin是与待匹配窗口距离最近的窗口与待匹配窗口之间的距离。
      • α是参数,保证每次都可以找到匹配的窗口进行纹理合成。
  • 问题2:纹理合成时选取窗口的大小对于纹理合成效果有着很大的影响。

    • 选取窗口过小,无法捕捉到纹理较大尺度上的特征。

    • 例如:图5-8第一行的点状纹理为例

      • 窗口很小,无法捕捉到点的形状特征,生成的纹理就是一些条纹
      • 窗口变大一些后,生成的纹理具有环形的特点,但是没有捕捉到环形之间均匀分布的特点
      • 当窗口变得更大后,就可以生成均匀分布的纹理了

      在这里插入图片描述
      图5-8

  • 问题3:以像素为单位进行纹理合成速度很慢。

    • 解决:纹理合成的时候以图像块为单位进行合成,合成的方式与基于像素的方式类似。

    • 基于图像缝合的纹理合成方法:如图5-9

      • 首先,从原始图像的纹理图像中随机抽取一小块图像,放在空白的目标图像上

        • 从原始纹理图像中寻找与图中方框所示区域最相似的图像块,寻找时不计算方框中网格的部分,仅使用方框中网格以外的部分来计算图像块之间的相似度。
        • 图像之间的相似度使用SSD来计算,选取那些距离小于阈值的窗口来进行补全
      • 其次,按照从左到右、从上到下的顺序进行纹理生成

        在这里插入图片描述
        图5-9

纹理合成用途:填充图像中的空洞

若空洞所在的图像区域是相对不太规则的的纹理区域,导致无法找到相似的图像块来进行填充,则可以通过合成纹理的方式来填充空洞。

问题:通过纹理合成填充空洞时,填充像素的顺序会对结果产生很大的影响。

解决:一般都是从空洞的边界处来合成纹理的。

这是由于这些地方的像素其周围的已知像素最多,最容易进行匹配,但是这样做可能会使图中的长边界消失。

纹理合成的顺序对纹理合成的结果的影响。 例子:如图5-12

若从空洞的边缘处进行合成的话,则会使图像中的灯杆消失;

而从图像边缘部分开始合成,则可以保留这些长边缘。

在这里插入图片描述
图5-12

猜你喜欢

转载自blog.csdn.net/seasonsyy/article/details/131967399