MATLAB函数说明(graycomatrix)

参考链接

1、《 基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片
2、《 graycomatrix 计算(图像)灰度共生矩阵(CLCM)——matlab相关函数说明,很详细

1、Matlab函数说明:graycomatrix

1.1 灰度共生矩阵的理解

灰度共生矩阵是描述图像纹理特征的一种重要方法,是像素距离和角度的矩阵函数

它通过计算图像中一定距离和方向的两点灰度之间的相关性,反映图像在方向、间隔、变化幅度及快慢上的综合信息。

对于灰度共生矩阵的理解,需要明确几个概念:方向,偏移量和灰度共生矩阵的阶数。
(1)方向:一般计算过程会分别选在几个不同的方向来进行,常规的是水平方向0°,垂直90°,以及45°和135°;
(2) 步距d:中心像元;
(3)灰度共生矩阵的阶数:与灰度图像灰度值的阶数相同,即当灰度图像灰度值阶数为N时,灰度共生矩阵为N × N的矩阵;

1.2 函数用法

(1)glcm = graycomatrix(I)
(2)glcms = graycomatrix(I,param1,val1,param2,val2,…)
(3)[glcms,SI] = graycomatrix(…)

1.3 函数描述

graycomatrix( ) 先将图像 I 归一化到指定的灰度级,再计算GLCM。

如果I是一个二值图像,那么灰度共生矩阵就将图像转换到二值灰度级(黑和白)。
如果I是一个灰度图像, 那将转换到8灰度级(默认)。

灰度的级数决定了GLCM的大小尺寸,假设灰度级为N,则GLCM的尺寸是N × N。你可以通过设定参数“NumLevels”来指定灰度级数目,还可以通过设置“GrayLimits"参数来设置灰度共生矩阵的转换方式。

(1)glcms = graycomatrix(I) 产生图像I的灰度共生矩阵GLCM。
它是通过计算两灰度值 i,j 在图像 I 中水平相邻的次数而得到的 (你也可以通过调整’ Offsets’ 参数来指定其它的像素空间关系),GLCM中的每一个元素(i,j)代表灰度 i 与灰度 j 在图像 I 中水平相邻的次数

(2)glcms = graycomatrix(I,param1,val1,param2,val2,…) 返回一个或多个灰度灰度共生矩阵,根据指定的参数对的值。参数可以简写,并且对大小写不敏感。

1.4 参数解释

(1)输入图片的类型
图片 I 可以是数字型或逻辑型,但必须是二维的,实数的,非稀疏的矩阵。SI是一个double型矩阵,它和I的尺寸相同。

(2)偏移量
’Offset’ 一个p*2的整数矩阵,指定了感兴趣像素对之间的距离和方向

矩阵中的每一行是一个两元素的向量,[row_offset , col_offset],它指定了一对像素之间的关系,或者说是位移。row_offset是感兴趣像素对间隔的行的数目;col_offset是感兴趣像素对间隔的列的数目。offset通常表示一个角度,下面列写的offset的值指定了常见角度。D代表是当前像素与邻居的距离(通常取1)。

Angle Offset
0 [0 D]
45 [-D D]
90 [-D 0]
135 [-D -D]

eg:下图说明了数组:offset = [0 1; -1 1; -1 0; -1 -1]
在这里插入图片描述
(3)返回值
glcms 是一个 ‘NumLevels’ x ‘NumLevels’ x P 的 double 型矩阵,P 是 offsets 的数目 (即 ‘Offset’ 参数值的列数)。

2、函数实现

以两种花为例:
flower5:flower1
flower24:flower2
flower5代码:(这里只求取了对比度、逆差矩、相关、熵)

I = imread('C:\pictures\flw\flower5.jpg'); % 输入RGB图像
    I=rgb2gray(I); % 转化为灰度图像
    GLCM = graycomatrix(I,'Offset',[1 0;0 1]); % angle角度,offset偏移量
    stats = graycoprops(GLCM,{'contrast','homogeneity','correlation','energy'});

flower5运行结果:
在这里插入图片描述
在这里插入图片描述
flower24运行结果:
在这里插入图片描述在这里插入图片描述
结果表明,纹理不同,灰度共生矩阵的结果不同。

灰度差越大,对比度越大;矩阵像素值相差很大,相关值小;纹理细,能量小;纹理复杂,熵值越大;

另一段代码附上(将四个方向的灰度共生矩阵分别求出来)

  I3 = imread('C:\Pictures1\Hail\2.jpg');
  image=rgb2gray(I3);
  
  glcm = graycomatrix(image, 'Offset', [0,1]); % 灰度共生矩阵
  stats = graycoprops(glcm); % stats = greycoprops(glcm,properties)计算灰度共生矩阵glcm在属性中指定的统计量,stats表示检验回归模型的统计量
    
    glcm45 = graycomatrix(image, 'Offset', [-1,1]);
    stats45 = graycoprops(glcm45);
    
    glcm90 = graycomatrix(image, 'Offset', [-1,0]);
    stats90 = graycoprops(glcm90);
    
    glcm135 = graycomatrix(image, 'Offset', [-1,-1]);
    stats135 = graycoprops(glcm135);
    
    stats7x4 = [stats.Contrast stats.Correlation stats.Energy stats.Homogeneity;
        stats45.Contrast stats45.Correlation stats45.Energy stats45.Homogeneity;
        stats90.Contrast stats90.Correlation stats90.Energy stats90.Homogeneity;
        stats135.Contrast stats135.Correlation stats135.Energy stats135.Homogeneity];

最终合并,结果如下:(对应代码中的矩阵)
在这里插入图片描述
Day Day UP UP UP(还好有很多大神的总结啊,不然我什么时候才能摸索清楚啊,感恩感谢加油,希望可以督促自己,每天学会一点点)

最重要的是,有错误欢迎指正(虽然不一定有人看hahah)

发布了4 篇原创文章 · 获赞 5 · 访问量 87

猜你喜欢

转载自blog.csdn.net/weixin_45739042/article/details/105690762