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:
flower24:
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)