Main Content

Create gray-level co-occurrence matrix from image

creates
a gray-level co-occurrence matrix (GLCM) from image `glcms`

= graycomatrix(`I`

)`I`

. Another
name for a gray-level co-occurrence matrix is a *gray-level spatial
dependence matrix*.

`graycomatrix`

creates the GLCM by calculating
how often a pixel with gray-level (grayscale intensity) value *i* occurs
horizontally adjacent to a pixel with the value *j*.
(You can specify other pixel spatial relationships using the `'Offsets'`

parameter.)
Each element (*i,j*) in `glcm`

specifies
the number of times that the pixel with value *i* occurred
horizontally adjacent to a pixel with value *j*.

returns one or more gray-level co-occurrence matrices, depending on the values of
the optional name-value pair arguments.`glcms`

= graycomatrix(`I`

,`Name,Value`

)

`graycomatrix`

calculates the GLCM from a scaled version of the image. By
default, if `I`

is a binary image, `graycomatrix`

scales the image to two gray-levels. If `I`

is an intensity image,
`graycomatrix`

scales the image to eight gray-levels. You can
specify the number of gray levels `graycomatrix`

uses to scale the
image by using the `'NumLevels'`

parameter, and the way that
`graycomatrix`

scales the values using the
`'GrayLimits'`

name-value argument.

The following figure shows how `graycomatrix`

calculates several values in
the GLCM of the 4-by-5 image `I`

. Element (1,1) in the GLCM contains
the value `1`

because there is only one instance in the image where
two, horizontally adjacent pixels have the values `1`

and
`1`

. Element `(1,2)`

in the GLCM contains the
value `2`

because there are two instances in the image where two,
horizontally adjacent pixels have the values `1`

and
`2`

. `graycomatrix`

continues this processing to
fill in all the values in the GLCM.

`graycomatrix`

ignores pixel pairs if either of the pixels contains a
`NaN`

, replaces positive `Infs`

with the value
`NumLevels`

, and replaces negative `Infs`

with the
value `1`

. `graycomatrix`

ignores border pixels, if
the corresponding neighbor pixel falls outside the image boundaries.

The GLCM created when `'Symmetric'`

is set
to `true`

is symmetric across its diagonal, and is
equivalent to the GLCM described by Haralick (1973). The GLCM produced
by the following syntax, with `'Symmetric'`

set to `true`

graycomatrix(I,'offset',[0 1],'Symmetric',true)

is equivalent to the sum of the two GLCMs produced by the following statements where
`'Symmetric'`

is set to `false`

.

graycomatrix(I,'offset',[0 1],'Symmetric',false) graycomatrix(I,'offset',[0 -1],'Symmetric',false)

[1] 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.

[2] Haralick, R.M., and L.G. Shapiro. Computer and Robot Vision: Vol. 1, Addison-Wesley, 1992, p. 459.