纹理是影像的局部特征,其度量方法有:基于空间一阶和二阶统计特征、基于傅里叶功率谱、基于分形、基于小波变换等。这里主要介绍空间域的二阶统计纹理,资料来源于Mryka Hall-Beyer的主页,包括以下内容:
- 定义和创建灰度共生矩阵(GLCM)
- 基于GLCM的纹理运算
- 其他相关问题
1. GLCM的定义及创建
1.1 定义
灰度共生矩阵(Grey Level Co-occurrence Matrix, GLCM)是像元灰度值的不同组合(combination)出现的频率的列联表,也叫Grey Tone Spatial Dependency Matrix(灰度色调空间依赖矩阵)。
测试影像及其像元值如下:
1.2 普通GLCM的结构
计算窗口
一般为 (2k−1)×(2k−1) 的窗口,纹理特征是该窗口内影像的局部特征。本文的测试影像是 4×4 的一小幅影像,直接使用它计算纹理而不采用任何窗口。位移(Offset)
位移是一个向量 d⃗ =(Δx,Δy) ,不同的位移决定了不同方向的纹理特征,理论上可以计算任意方向的纹理特征。两个像元间的空间关系
GLCM纹理考虑了两个像元间的关系,一个为参考像元(reference pixel),另一个为邻域像元(neighbour pixel),两个像元的灰度值按照这种空间关系会形成一个组合。
计算某个组合的频数时,从窗口左上角到右下角,每个像元依次作为参考像元。若参考像元的位置为 (i,j) ,则处于 (i+Δx,j+Δy) 位置的像元就是其邻域像元。比如 d⃗ =(1,0) 时,邻域像元为参考像元右侧的第一个像元,此时纹理的方向是向东。普通GLCM
假设测试影像灰度值的范围为 [0,3] , d⃗ =(1,0) ,则所有可能的组合如下表:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | (0,0) | (0,1) | (0,2) | (0,3) |
1 | (1,0) | (1,1) | (1,2) | (1,3) |
2 | (2,0) | (2,1) | (2,2) | (2,3) |
3 | (3,0) | (3,1) | (3,2) | (3,3) |
将每个组合出现的频数作为对应位置的矩阵元素,得到的矩阵就是测试影像的一个GLCM:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 2 | 2 | 1 | 0 |
1 | 0 | 2 | 0 | 0 |
2 | 0 | 0 | 3 | 1 |
3 | 0 | 0 | 0 | 1 |
可以记为:
1.3 对称GLCM
以上GLCM并不对称,而纹理运算要求GLCM是对称矩阵,因为非对称矩阵按照行和列计算得到的纹理值不同。
GLCM对称意味着两个灰度值顺序相反的组合有相同的频数,比如(2,3)和(3,2)。也就是说将它们视为同一组合,计算过程中每个像元组合都按两次计数则能获得对称矩阵:一次正向、一次反向。以 d⃗ =(1,0) 为例,正向是向东,反向则向西,对应 d⃗ =(0,1) ,此时其实得到的是水平方向的GLCM。
这样以来,计算纹理的方向就会在0°-180°范围内。然而由于窗口大小有限,只需要选择有代表性的几个角度即可例如下图所示的四个方向:
获得对称阵的一个简单方法是加上自身的转置矩阵。测试影像对应的对称GLCM为:
1.4 归一化GLCM
V
的元素是不同组合出现的次数,也就是频数,
其中
Vi,j
是矩阵元素,
N
是行数或列数(两者相等)。符号
归一化得到的是联合概率分布:
如无特别说明,下文中GLCM均指归一化的GLCM。
1.5 GLCM的属性
GLCM是方阵
行数和列数与影像的量化等级相同
对于量化为 k bit的影像而言,其量化等级为2k ,灰度值的取值范围是为 [0,2k−1] ,对应的GLCM大小为 2k×2k 。GLCM对称
- 主对角线上是值相等的组合(0-0, 1-1, 2-2…),主对角线元素和越大,说明影像值越均一,差异越小,纹理越不明显
- 平行于主对角线的直线(副对角线)上,是与参考像元有差值的组合,越远插值越大,最近的两条线上差值为1,次近的两条线差值为2,依此类推
2. 基于GLCM的纹理运算
大多数纹理运算(texture calculation)是归一化GLCM元素值的加权平均。加权平均的主要目的是强调归一化GLCM中不同值的相对重要性。
按照不同纹理特征所表达的纹理信息,将其分为三组:
- 反差(Contrast)
- 有序性(Orderliness)
- 描述性统计量(Descriptive Statistics)
2.1 反差
与反差相关的特征使用的是和GLCM对角线距离相关的权重,也就是说,权重是距离的函数。
为了强调窗口内的局部反差,权重应该使反差大的影像的运算结果得到较大的数值。对角线元素没有反差,离对角线越远反差越大。因此,权重应该随距离而增加。
对比度(Contrast)
Con=∑i,j=0N−1Pi,j(i−j)2
以前文为例,对应的权重矩阵为:
⎡⎣⎢⎢⎢0149101441019410⎤⎦⎥⎥⎥
因此
Con=0⋅.166+1⋅.083+⋯+0⋅.083=0.586相异性(Dissimilarity)
计算对比度时,权重随矩阵元素与对角线的距离以指数方式增长,如果改为线性增长,则得到相异性。
Dis=∑i,j=0N−1Pi,j|i−j|
P对应的权重矩阵为:
⎡⎣⎢⎢⎢0123101221013210⎤⎦⎥⎥⎥
且 Con=0.418同质性(Homogeneity)
与对比度或相异性相反,同质性的权重随着元素值与对角线的距离而减小,其减小方式是指数形式的。
Hom=∑i,j=0N−1Pi,j1+(i−j)2
P对应的权重矩阵为:
⎡⎣⎢⎢⎢00.50.20.10.510.50.20.20.510.50.10.20.50⎤⎦⎥⎥⎥
且 Hom=0.807
2.2 有序性
有序性(Orderliness)是指窗口内像元值的规律程度或有序程度。比如以下两个窗口A, B,其水平方向有相同的对比度(都为1),因为每个像元都比左侧像元大1。但是A, B的有序性却很不相同,A很明显比B更有规律。
在GLCM中,元素的值是各种组合的概率, 用GLCM元素本身来构造权重就可以得到度量有序性的纹理特征。
角度二阶矩(Angular Second Moment, ASM)和能量(Energy)
这两个特征直接以 Pi,j 作为权重,W=P,有序性越高,ASM和能量越大。能量有时也被称为均匀性(Uniformity)。
ASM=∑i,j=0N−1P2i,jEnergy=ASM−−−−−√
对于测试影像, ASM=0.145,Energy=0.381 。熵(Entropy)
以 Pi,j 的自然对数的相反数作为权重。有序性越低,熵越大。
Ent=∑i,j=0N−1Pi,j(−lnPi,j)
当元素为0时,由于ln0没有定义,这时的熵被定义为0。上文示例的熵为2.095。
度量有序性的三个特征都有一定的物理意义。角度二阶矩是旋转加速度(额,其实,咱家也不是很理解…)的一种度量,能量则是一个常见的物理量,而熵在热动力学中代表的是永久损失掉无法再利用的热量。熵可以不严格的理解为混沌或无序,可以认为和能量是相反的一对概念。
2.3 描述性统计量
描述性统计量包括GLCM均值、GLCM方差(或GLCM标准差)和GLCM相关系数,这三个特征的计算过程和一般的均值、方差、相关系数的计算方式并没有本质区别,只是这里使用的是GLCM矩阵的元素值而不是原始影像的灰度值,也就是说,这三个特征度量的是灰度值组合出现的期望,标准差和相关系数。
如果使用原始影像的灰度值,得到的是一阶统计纹理。
GLCM均值(GLCM Mean)
μi=∑i,j=0N−1iPi,jμj=∑i,j=0N−1jPi,j
左侧的权重为参考像元的灰度值,得到的是基于参考像元的GLCM均值,而右侧的权重为邻域像元的灰度值,得到的是基于邻域像元的GLCM均值。由于GLCM的对称性,这两个结果是相等的。GLCM均值是像元的灰度值(i或j)与该像元的所有组合出现的频率的加权平均,其实质是离散型随机变量的期望,因此得到的是GLCM均值。
文中,求和从0到N-1而不是1到N,这对于GLCM均值、方差和相关系数的计算很方便,行列号就是参考像元和邻域像元的灰度值。
GLCM方差(GLCM Variance)
σ2i=∑i,j=0N−1Pi,j(i−μi)2σ2j=∑i,j=0N−1Pi,j(j−μj)2GLCM标准差(GLCM Standard Deviation)为:
σi=σ2i−−√σj=σ2j−−√与一般方差或标准差一样,GLCM方差或标准差度量的是GLCM元素值以其均值为中心的分散程度,类似于熵。
GLCM相关系数(GLCM Correlation)
r=∑i,j=0N−1Pi,j⎡⎣⎢(i−μi)(j−μj)σ2i⋅σ2j−−−−−−√⎤⎦⎥GLCM相关系数度量的是像元灰度值与其邻域像元灰度值的线性相关性。
GLCM相关性的计算和其他纹理特征的计算有很大的不同,因此,它独立与其他纹理特征,提供不同的信息。将它和其他特征组合使用往往比较好。它的值有更直观的意义:0表示无关,1表示完全相关。
当窗口内的灰度值相等时,GLCM标准差为0,相关系数分母为0。这时,不同的软件有不同的处理方式,定义为1(完全相关)更符合逻辑。
3. 其他相关问题
3.1 数据压缩(重采样)
减少计算量
前文说过,GLCM的大小取决于影像的量化等级,量化等级越高矩阵越大。由于GLCM创建时计算复杂度很高,一般将影像压缩为8bit。改善统计结果
另外,如果直接使用原始灰度值,可能得到很稀疏的GLCM,因为很多灰度值组合不会出现在影像上。压缩后的GLCM稀疏性更低,有利于改善统计有效性(statistical validity)。
3.2 如何建立纹理影像
纹理运算得到窗口内某一纹理特征的值,最终将该值赋予窗口中心位置的像元,得到一景纹理影像。
影像边缘
对于
N×N
的窗口,在影像边缘上将有宽度为(N-1)/2的条带不能处于窗口中心,通常的处理方式是用最近的纹理值来填充。
3.3 GLDV
GLDV(Grey Level Difference Vector,灰度差值向量)是GLCM每条对角线上元素的和,分别是差值为0, 1, 2…的像元组合的频数或频率。测试影像的GLDV如下表:
差值 | 频数 | 频率 |
---|---|---|
0 | 16 | .666 |
1 | 6 | .250 |
2 | 2 | .083 |
3 | 0 | 0 |
3.4 多通道影像处理
- 每个通道单独计算纹理特征
- 使用主成份变换或其他方法进行组合
- 任意三个纹理特征可以投影到色彩空间查看
- 可以获取多个纹理影像的主成份,但结果的解释十分困难
3.5 参数选择
纹理运算涉及多个参数的选择:
- 窗口大小
- 位移方向
- 位移大小
- 影像通道
- 纹理特征
下面是一些经验法则:
- 窗口大小应该小于物体大小,同时应该足够大以包含对象的特征变化
- 通过目视检查或用主成份来减少通道数量,有些对象在不同的通道上表现不同
- 目视检查确定重要的方向,如果没有明显的方向性,那么选择所有方向求平均
- 位移几乎总是为1
- 纹理特征间存在相关性,其中只有4到5个是完全独立的(见下文)
- 最后,剩余的参数组合可以使用特征选择方法,或者直接比较其精度
3.6 纹理特征间的相关性
由于纹理特征的计算方法只是权重不同,因此有些特征有很大的相关性。比如对比度和相异性,本质上包含了相同的信息。而GLCM方差和度量反差的特征也有很高的相关性。
下面是特征间的相关系数,假设具有相同的窗口,不同的影像可能不尽相同,但大体趋势是可以肯定的:
- 同质性 vs 对比度, r=−0.80
- 同质性 vs 相异性, r=−0.95
- GLCM方差 vs 对比度, r=0.89
- GLCM方差 vs 相异性, r=0.91
- GLCM方差 vs 同质性, r=0.83
- 熵 vs ASM, r=−0.87
而GLCM均值和GLCM相关系数的无关性要高一点,在测试影像中与其他特征的相关系数分别小于0.1和0.5.
因此,实际可以选择一个反差特征,一个有序性特征,两个或三个描述性特征。