本文参考自 OpenCV22(灰度共现矩阵/灰度共生矩阵)
一、什么是灰度共生矩阵(Grey-Level Co-occurrence Matrix)
一种描述图像局部区域或整体区域的某像素与相邻像素或一定距离内的像素的灰度关系的矩阵(大白话:灰度图像中某种形状的像素对,在全图中出现的次数)。
该矩阵中的元素值表示灰度级之间联合条件概率密度 P(i, j | d, θ),即在给定空间距离d和方向θ时,灰度以i为起始点(行),出现灰度级j(列)的概率(对频数进行归一化,即除以所有频数之和)。
二、基本概念
1. 矩阵的大小:如果不对原图像进行灰度级别的压缩的话,GLCM的大小为原灰度级^2;在实际应用中,从纹理特征的计算效率以及GLCM矩阵的存储方面考虑,通常先把原始图像的灰度等级进行压缩,比如从灰度级别为0-255的8bit图像压缩为灰度级别0-31的5bit图像,相应的共生矩阵的维数就从256*256降低到了32*32。
2. 基准窗口:以当前像素为中心,尺寸通常为奇数(3*3, 5*5, 7*7等)的一个窗口。
3. 滑动窗口:以基准窗口作为参考窗口,通过先前规定的移动方向和步长进行移动的窗口。尺寸与基准窗口相同。
4. 移动方向:基准窗口与移动窗口的相对方向。移动方向可以任意设定,通常为 0°, 45°,90°,135°
5. 移动步长:基准窗口中心像素和滑动窗口中心像素的像素距离
三、灰度共生矩阵的统计属性
灰度共生矩阵虽然提供了图像灰度方向、间隔和变化幅度的信息,但它不能直接提供区别纹理的特性,因此需要在GLCM的基础上计算用来定量描述纹理特征的统计属性——常用的9种纹理特征统计属性为
均值(Mean),方差(Variance),标准差(Std),同质性(Homogeneity),对比度(Contrast),非相似性(Dissimilarity),熵(Entropy),角二阶矩(Angular Second Moment),相关性(Correlation)
四、具体示例
假设原图像为
对应的灰度值为
对灰度等级进行压缩(256 -> 3)
可以知道,这个图像的灰度是3阶,也就是说,我们的GLCM,是3阶方阵(GLCM的阶数等于灰度的等级数)
δ:表示像素对的位置关系(两个像素相对位置关系,分为水平、垂直,+45,-45)
i、j:分别表示两个像素的灰度等级;
n(i, j):表示灰度等级i和j的像素对,在δ定义的位置关系下,出现的次数
比如n(0,0),δ定义为水平,(0,0)像素对水平排列在灰度图中出现的次数为“0”
比如n(0,1),δ定义为水平,(0,1)像素对水平排列在灰度图中出现的次数为“12”
如图:
即最后得到的GLCM 如下(注意 (2,0), (1, 2) 水平出现的次数也为12):