灰度共生矩阵GLCM及其matlab实现

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

Prerequisites

概念

计算方式

对于精度要求高且纹理细密的纹理分布,我们取像素间距为d=1)出现的次数,如图所示,共出现九次,在两个方向上即是18次。


这里写图片描述


这里写图片描述

matlab

matlab相关工具箱函数

使用灰度共生矩阵(GLCM)描述和提取图像纹理特征,是一个强大且流行的工具,自然matlab工具箱会提供相应的函数——graycomatrix

给出一个图像矩阵,设置一些参数,得到其灰度共生矩阵,这就是函数的基本用法:

扫描二维码关注公众号,回复: 4040381 查看本文章
[glcm, SI] = graycomatrix(I, ...)
   
   
  • 1

主要的参数有二个,分别是

  1. NumLevels(灰度级数)

最终glcm的size是NumLevels*NumLevels

  1. Offset(方向[0, 1; -1, 1; -1, 0; -1, -1]):

[0, 1]中的1表示的偏移数(offset),当然也可以取2或者更多,如上文所说,对于精度要求高且图像纹理本身即很丰富的图像来说,为了更精细地刻画,我们取偏移量(offset)为1

我们将原始I转换为SI,对SI计算GLCM,SI中元素的值介于[1, NumLevels]之间。

I = [     1 1 5 6 8 8;     2 3 5 7 0 2;     0 2 3 5 6 7    ];[glcm, SI] = graycomatrix(I, 'NumLevels', 9, 'G', [])% 'Offset'的default值为`[0, 1]`
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
glcm =     0     0     2     0     0     0     0     0     0     0     1     0     0     0     1     0     0     0     0     0     0     2     0     0     0     0     0     0     0     0     0     0     2     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     2     1     0     0     0     0     0     0     0     0     1     1     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1SI =     2     2     6     7     9     9     3     4     6     8     1     3     1     3     4     6     7     8
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

demo

这里先写一个demo,稍微有点难懂的地方在于灰度共生矩阵的计算方式,然后是一些编程上的循环判断。其他方向的情况还未考虑(在第三和第四层循环的地方可能会略有不同),以及将其封装成一个函数的操作还是留待以后吧:

clear, clcP = [ 0 1 2 0 1 2    1 2 0 1 2 0   2 0 1 2 0 1   0 1 2 0 1 2   1 2 0 1 2 0   2 0 1 2 0 1];[r, c] = size(P);P_u = unique(P);        % 去重,得到所有的灰度级n = length(P_u);        % 不同灰度级的个数G = zeros(n, n);        % 初始化灰度共生矩阵为全0矩阵,%% 四层循环,最外层的两层循环用来为GLCM的各个位置赋值% 内层的两层循环时遍历原始图像矩阵,累计符合某一对应关系的的情况出现的次数for p = 1:n,    for q = 1:n,        cnt = 0;            % GLCM刻画的是灰度图像像素的统计特性,在matlab中通过次数的统计计算得到        for i = 1:r,            for j = 1:c,                if  (j+1) <= c && ((P(i, j) == p && P(i, j+1) == q) || P(i, j) == q && P(i, j+1) == p),                    cnt = cnt + 1;                end            end        end        G(p, q) = cnt;    endendG   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

References

[1] <图像特征提取——灰度共生矩阵(GLCM)>

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hftytf/article/details/83988798
今日推荐