灰度共⽣矩阵及matlab实现
matlab函数: graycomatrix()
功 能:创建灰度共⽣矩阵
Gray-level co-occurrence matrix from an image
图像的灰度共⽣矩阵
灰度共⽣矩阵是像素距离和⾓度的矩阵函数,它通过计算图像中⼀定距离和⼀定⽅向的两点灰度之间的相关性,来反映图像在⽅向、间隔、变化幅度及快慢上的综合信息。
使⽤⽅法:
glcm = graycomatrix(I)
glcms = graycomatrix(I,param1,val1,param2,val2,…)
[glcms,SI] = graycomatrix(…)
描述:
glcms = graycomatrix(I) 产⽣图像I的灰度共⽣矩阵GLCM。它是通过计算两灰度值 i,j 在图像 I 中⽔平相邻的次数⽽得到的 (你也可以通过调整’ Offts’ 参数来指定其它的像素空间关系),GLCM中的每⼀个元素(i,j)代表灰度 i 与灰度 j 在图像 I 中⽔平相邻的次数。
graycomatrix()先将图像 I 归⼀化到指定的灰度级,再计算GLCM;这是因为动态地求取图像的GLCM区间代价过⾼。如果I是⼀个⼆值图像,那么灰度共⽣矩阵就将图像转换到⼆值灰度级(⿊和⽩)。如果I是⼀个灰度图像, 那将转换到8灰度级(默认)。灰度的级数决定了GLCM的⼤⼩尺⼨,假设灰度级为L,则GLCM的尺⼨是L x L。你可以通过设定参数“NumLevels”来指定灰度级数⽬,还可以通过设
置“GrayLimits”参数来设置灰度共⽣矩阵的转换⽅式。
下图在⼀个4x5的图像I中显⽰了如何求解灰度共⽣矩阵,以(1,1)点为例,在图像 I 中⽔平相邻的像素对的灰度值都为1的情况只出现了1次,所以GLCM(1,1)的值是1。,同理,在图像 I 中⽔平相邻的像素对的灰度值分别为 1和2 的情况出现了2次,所以GLCM(1,2)的值是2。 graycomatrix迭代以上过程,就可以计算出GLCM的所有位置(L^2)的取值。
glcms = graycomatrix(I,param1,val1,param2,val2,…) 返回⼀个或多个灰度灰度共⽣矩阵,根据指定的参数对的值。参数可以简写,并且对⼤⼩写不敏感。
参数
下⾯按照字母的顺序列写了参数:
‘GrayLimits’ 是两个元素的向量[low,high],指明了图像 I 中的灰度值如何线性归⼀化到灰度级别。低于或等于low的灰度值置成1,⼤于或等于high的灰度值置成NumLevels。如果其设为[],灰度共⽣矩阵将使⽤图像I的最⼩和最⼤灰度值分别作为GrayLimits的low和high,即[min(I(:) , max(I(:)))]。
‘NumLevels’ ⼀个整数,指定灰度级的数⽬。例如,如果NumLevels为8,意思就是将图像I的灰度映射到1到8之间,它也决定了灰度共⽣矩阵的⼤⼩。默认值是8。
‘Offt’ ⼀个p*2的整数矩阵,指定了感兴趣像素对之间的距离和⽅向。矩阵中的每⼀⾏是⼀个两元素的向量,[row_offt ,
col_offt],它指定了⼀对像素之间的关系,或者说是位移。row_offt是感兴趣像素对间隔的⾏的数⽬;col_offt是感兴趣像素对间隔的列的数⽬。offt通常表⽰⼀个⾓度,下⾯列写的offt的值指定了常见⾓度。D代表是当前像素与邻居的距离。
Angle Offt
0 [0 D]
45 [-D D]
90 [-D 0]
135 [-D -D]
下图说明了数组:offt = [0 1; -1 1; -1 0; -1 -1]
‘Symmetric’ ⼀个布尔型数(逻辑型),指定创建GLCM时像素对中的两像素的顺序是否考虑。例如,当 ‘Symmetric’ 是true 时,graycomatrix计算1连接2的次数时,(1,2)和(2,1)这两种数对都计算在内。当’Symmetric’是fal时,graycomatrix只是计算(1,2)或(2,1).
[glcm,SI] = graycomatrix(….) 返回归⼀化(灰度级的)图像,SI,它被⽤来计算灰度共⽣矩阵(GLCM),SI
图像的取值范围是
[1,NumLevels]。
⽀持类型
I可以是数字型或逻辑型,但必须是⼆维的,实数的,⾮稀疏的矩阵。SI是⼀个double型矩阵,它和I的尺⼨相同。glcms是⼀
个‘NumLevels’ x ‘NumLevels’ x P的double型矩阵,P是offts的数⽬(即‘Offt’参数值的列数)。
说明:
灰度共⽣矩阵(GLCM)的另⼀个名字是灰度空间相关矩阵(gray-level spatial dependence matrix)。另⼀⽅⾯,co-occurrence在⽂献中使⽤时经常不带连字符,即cooccurrence。
如果像素对中的⼀个像素值为NaN,graycomatrix忽略该像素对。
graycomatrix⽤NumLevels值替代positive Inf,⽤1代替negative Inf。
如果边界像素的邻居落在图像边界的外边,graycomatrix忽略该边界像素。
当’Symmetric’设置成’true’时,GLCM 是关于对⾓线对称的,就是Haralick (1973)描述的GLCM。下⾯句法(1)使
⽤’Symmetric’为’true’时创建了GLCM等于句法(2)和句法(3)使⽤’Symmetric’为‘fal’时产⽣的GLCM的和。
graycomatrix(I, 'offt', [0 1], 'Symmetric', true) (1)
graycomatrix(I,'offt', [0,1], 'Symmetric', fal) (2)
graycomatrix(I,'offt', [0,-1], 'Symmetric',fal) (3)
微信图像女⽰例:
车位出租合同模板计算灰度共⽣矩阵,并且返回缩放后的图像,SI
I = [ 1 1 5 6 8 8; 2 3 5 7 0 2; 0 2 3 5 6 7]; % ⽣成图像I矩阵
[glcm,SI] = graycomatrix(I,’NumLevels’,9,’G’,[]) % 计算灰度共⽣矩阵(glcm)和归⼀化图像(SI)
计算灰度图像的灰度共⽣矩阵
I = imread(‘circuit.tif’); % 读⼊circuit.tif图像
glcm = graycomatrix(I,’Offt’,[2 0]);
参考⽂献
Haralick, R.M., K. Shanmugan, and I. Dinstein, “Textural Features for Image Classification”, IEEE Transactions on Systems, Man, and Cybernetics, Vol. SMC-3, 1973, pp. 610-621.
Haralick, R.M., and L.G. Shapiro. Computer and Robot Vision: Vol. 1, Addison-Wesley, 1992, p. 459.
灰度共⽣矩阵的特征:
⾓⼆阶矩(Angular Second Moment, ASM)
也称为 能量
ASM=sum(p(i,j).^2) p(i,j)指归⼀化后的灰度共⽣矩阵
⾓⼆阶矩是图像灰度分布均匀程度和纹理粗细的⼀个度量,当图像纹理绞细致、灰度分布均匀时,能量值较⼤,反之,较⼩。
熵(Entropy, ENT)
ENT=sum(p(i,j)*(-ln(p(i,j)))
是描述图像具有的信息量的度量,表明图像的复杂程序,当复杂程序⾼时,熵值较⼤,反之则较⼩。
反差分矩阵(Inver Differential Moment, IDM)
IDM=sum(p(i,j)/(1+(i-j)^2))
反映了纹理的清晰程度和规则程度,纹理清晰、规律性较强、易于描述的,值较⼤;杂乱⽆章的,难于描述的,值较⼩。
******************************************************************************************************************************************************************* *****
************************************************************* graycomatrix源程序代码
*****************************************************************************
******************************************************************************************************************************************************************
******
[plain]
1.
function [GLCMS,SI] = graycomatrix(varargin)
2.
%GRAYCOMATRIX Create gray-level co-occurrence matrix.
3.
% GLCMS = GRAYCOMATRIX(I) analyzes pairs of horizontally adjacent pixels
4.
绿色环保食品
% in a scaled version of I. If I is a binary image, it is scaled to 2
5.
% levels. If I is an intensity image, it is scaled to 8 levels. In this
6.
% ca, there are 8 x 8 = 64 possible ordered combinations of values for
7.
% each pixel pair. GRAYCOMATRIX accumulates the total occurrence of each
8.
% such combination, producing a 8-by-8 output array, GLCMS. The row and
9.
% column subscripts in GLCMS correspond respectively to the first and
10.
% cond (scaled) pixel-pair values.
11.池神
%
12.
% GLCMS = GRAYCOMATRIX(I,PARAM1,VALUE1,PARAM2,VALUE2,…) returns one or 13.
% more gray-level co-occurrence matrices, depending on the values of the
14.
% optional parameter/value pairs. Parameter names can be abbreviated, and
15.
% ca does not matter.
16.
假玉%
17.
% Parameters include:
18.
%
19.
% ‘Offt’ A p-by-2 array of offts specifying the distance
20.
% between the pixel-of-interest and its neighbor. Each
21.
% row in the array is a two-element vector,
22.
% [ROW_OFFSET COL_OFFSET], that specifies the
23.
% relationship, or ‘Offt’, between a pair of pixels.
24.
% ROW_OFFSET is the number of rows between the
25.
% pixel-of-interest and its neighbor. COL_OFFSET is the
26.
% number of columns between the pixel-of-interest and
27.
% its neighbor. For example, if you want the number of
28.
% occurrences where the pixel of interest is one pixel
29.
29.
% to the left of its neighbor, then
30.
% [ROW_OFFSET COL_OFFSET] is [0 1].
31.
%
32.
% Becau this offt is often expresd as an angle,
33.
隋朝建立时间% the following table lists the offt values that
易者34.
% specify common angles, given the pixel distance D.
35.
%
36.
% Angle OFFSET
37.
% —– ——
38.
% 0 [0 D]
39.
% 45 [-D D]
40.
% 90 [-D 0]
41.
% 135 [-D -D]
42.
%
43.
% ROW_OFFSET and COL_OFFSET must be integers.
44.
%
45.
% Default: [0 1]
46.
%
47.
% ‘NumLevels’ An integer specifying the number of gray levels to u when 48.
% scaling the grayscale values in I. For example, if
重叠词语
49.
% ‘NumLevels’ is 8, GRAYCOMATRIX scales the values in I so
50.
% they are integers between 1 and 8. The number of gray levels
51.
% determines the size of the gray-level co-occurrence matrix
52.
% (GLCM).
53.