Calculating image textures with GLCM

Alex Zvoleff bio photo By Alex Zvoleff

glcm can calculate image textures from either a matrix or a Raster* object from the raster package. First install the package if it is not yet installed:

if (!(require(glcm))) install.packages("glcm")
## Loading required package: glcm

The below examples use an image included in the glcm package, a red/green/blue cutout of a Landsat 5 image from 1986 from a Tropical Ecology Assessment and Monitoring (TEAM) Network site in Volcan Barva, Costa Rica. The image is included in the glcm package as L5TSR_1986:

library(raster) # needed for plotRGB function
## Loading required package: sp
plotRGB(L5TSR_1986, 3, 2, 1, stretch='lin')

1986 Landsat 5 image from Volcan Barva

To calculate GLCM textures from this image using the default settings, type:

textures <- glcm(raster(L5TSR_1986, layer=3))

where raster(L5TSR_1986, layer=3) selects the third (red) layer. To see the textures that have been calculated by default, type:

names(textures)
## [1] "glcm_mean"          "glcm_variance"      "glcm_homogeneity"  
## [4] "glcm_contrast"      "glcm_dissimilarity" "glcm_entropy"      
## [7] "glcm_second_moment" "glcm_correlation"

This shows the eight GLCM texture statistics that have been calculated by default. These can all be visualized in R:

plot(textures$glcm_mean)

mean of GLCM texture

plot(textures$glcm_variance)

variance of GLCM texture

plot(textures$glcm_homogeneity)

homogeneity of GLCM texture

plot(textures$glcm_contrast)

contrast of GLCM texture

plot(textures$glcm_dissimilarity)

dissimilarity of GLCM texture

plot(textures$glcm_entropy)

entropy of GLCM texture

plot(textures$glcm_second_moment)

second moment of GLCM texture

plot(textures$glcm_correlation)

correlation of GLCM texture