Provided by: grass-doc_7.8.2-1build3_all bug

NAME

       r.texture  - Generate images with textural features from a raster map.

KEYWORDS

       raster, algebra, statistics, texture

SYNOPSIS

       r.texture
       r.texture --help
       r.texture       [-san]       input=name       output=basename        [size=value]        [distance=value]
       [method=string[,string,...]]   [--overwrite]  [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:
       -s
           Separate output for each angle (0, 45, 90, 135)
           Angles are counterclockwise from east: 0 is East to West, 45 is North-East to South-West

       -a
           Calculate all textural measurements

       -n
           Allow NULL cells in a moving window
           This will also avoid cropping along edges of the current region

       --overwrite
           Allow output files to overwrite existing files

       --help
           Print usage summary

       --verbose
           Verbose module output

       --quiet
           Quiet module output

       --ui
           Force launching GUI dialog

   Parameters:
       input=name [required]
           Name of input raster map

       output=basename [required]
           Name for output basename raster map(s)

       size=value
           The size of moving window (odd and >= 3)
           Default: 3

       distance=value
           The distance between two samples (>= 1)
           The distance must be smaller than the size of the moving window
           Default: 1

       method=string[,string,...]
           Textural measurement method
           Options: asm, contrast, corr, var, idm, sa, sv, se, entr, dv, de, moc1, moc2

DESCRIPTION

       r.texture creates raster maps with textural features from a user-specified raster map layer.  The  module
       calculates textural features based on spatial dependence matrices at 0, 45, 90, and 135 degrees.

       In  order  to  take  into  account  the scale of the texture to be measured, r.texture allows the user to
       define the size of the moving window and the distance at which to compare pixel grey values.  By  default
       the  module  averages  the  results  over the 4 orientations, but the user can also request output of the
       texture variables in 4 different orientations (flag -s). Please note that angles are defined  in  degrees
       of  east  and  they  increase counterclockwise, so 0 is East - West, 45 is North-East - South-West, 90 is
       North - South, 135 is North-West - South-East.

       The user can either chose one or several texture measures (see below for  their  description)  using  the
       method parameter, or can request the creating of maps for all available methods with the -a.

       r.texture  assumes  grey levels ranging from 0 to 255 as input.  The input is automatically rescaled to 0
       to 255 if the input map range is outside of this range.  In order to reduce noise in the input data (thus
       generally reinforcing the textural features), and to speed up processing, it is recommended that the user
       recode the data using equal-probability quantization.  Quantization rules for r.recode can  be  generated
       with r.quantile -r using e.g 16 or 32 quantiles (see example below).

NOTES

       Texture  is  a feature of specific land cover classes in satellite imagery.  It is particularly useful in
       situations where spectral differences between classes are small, but classes are distinguishable by their
       organisation  on the ground, often opposing natural to human-made spaces: cultivated fields vs meadows or
       golf courses, palm tree plantations vs natural rain forest, but texture can also be a  natural  phenomen:
       dune  fields,  different  canopies  due  to  different tree species. The usefulness and use of texture is
       highly dependent on the resolution of satellite imagery and on the scale of the human intervention or the
       phenomenon  that created the texture (also see the discussion of scale dependency below). The user should
       observe the phenomenon visually in order to determine an adequat setting of the size parameter.

       The output of r.texture can constitute very useful additional variables as input for image classification
       or  image segmentation (object recognition).  It can be used in supervised classification algorithms such
       as i.maxlik or i.smap, or for the identification of objects in i.segment, and/or for the characterization
       of these objects and thus, for example, as one of the raster inputs of the i.segment.stats addon.

       In  general,  several variables constitute texture: differences in grey level values, coarseness as scale
       of grey level differences, presence or lack of directionality and regular  patterns.  A  texture  can  be
       characterized  by  tone  (grey  level  intensity properties) and structure (spatial relationships). Since
       textures are highly scale dependent, hierarchical textures may occur.

       r.texture uses the common texture model based  on  the  so-called  grey  level  co-occurrence  matrix  as
       described  by Haralick et al (1973). This matrix is a two-dimensional histogram of grey levels for a pair
       of pixels which are separated by  a  fixed  spatial  relationship.  The  matrix  approximates  the  joint
       probability  distribution  of  a  pair of pixels. Several texture measures are directly computed from the
       grey level co-occurrence matrix.

       The following part offers brief explanations of the Haralick et al texture measures (after Jensen 1996).

   First-order statistics in the spatial domain
           •   Sum Average (SA)

           •   Entropy (ENT): This measure analyses the randomness. It is high when the  values  of  the  moving
               window  have  similar values. It is low when the values are close to either 0 or 1 (i.e. when the
               pixels in the local window are uniform).

           •   Difference Entropy (DE)

           •   Sum Entropy (SE)

           •   Variance (VAR): A measure of gray tone variance within the  moving  window  (second-order  moment
               about the mean)

           •   Difference Variance (DV)

           •   Sum Variance (SV)
       Note  that  measures  "mean",  "kurtosis", "range", "skewness", and "standard deviation" are available in
       r.neighbors.

   Second-order statistics in the spatial domain
       The second-order statistics texture model is based on the so-called  grey  level  co-occurrence  matrices
       (GLCM; after Haralick 1979).

           •   Angular  Second  Moment (ASM, also called Uniformity): This is a measure of local homogeneity and
               the opposite of Entropy.  High values of ASM occur when the pixels in the moving window are  very
               similar.
               Note: The square root of the ASM is sometimes used as a texture measure, and is called Energy.

           •   Inverse  Difference  Moment (IDM, also called Homogeneity): This measure relates inversely to the
               contrast measure. It is a direct measure of the local homogeneity of a digital image. Low  values
               are associated with low homogeneity and vice versa.

           •   Contrast  (CON):  This measure analyses the image contrast (locally gray-level variations) as the
               linear dependency of grey levels of neighboring pixels (similarity).  Typically  high,  when  the
               scale of local texture is larger than the distance.

           •   Correlation  (COR):  This  measure   analyses the linear dependency of grey levels of neighboring
               pixels. Typically high, when the scale of local texture is larger than the distance.

           •   Information Measures of Correlation (MOC)

           •   Maximal Correlation Coefficient (MCC)

       The computational region should be set to the input map with g.region raster=<input map>, or  aligned  to
       the input map with g.region align=<input map> if only a subregion should be analyzed.

       Note  that the output of r.texture will always be smaller than the current region as only cells for which
       there are no null cells and for which all cells of the moving window are within the current  region  will
       contain a value. The output will thus appear cropped at the margins.

       Importantly, the input raster map cannot have more than 255 categories.

EXAMPLE

       Calculation of Angular Second Moment of B/W orthophoto (North Carolina data set):
       g.region raster=ortho_2001_t792_1m -p
       # set grey level color table 0% black 100% white
       r.colors ortho_2001_t792_1m color=grey
       # extract grey levels
       r.mapcalc "ortho_2001_t792_1m.greylevel = ortho_2001_t792_1m"
       # texture analysis
       r.texture ortho_2001_t792_1m.greylevel prefix=ortho_texture method=asm -s
       # display
       g.region n=221461 s=221094 w=638279 e=638694
       d.shade color=ortho_texture_ASM_0 shade=ortho_2001_t792_1m
       This   calculates   four   maps   (requested   texture   at   four   orientations):  ortho_texture_ASM_0,
       ortho_texture_ASM_45, ortho_texture_ASM_90, ortho_texture_ASM_135.  Reducing the number  of  gray  levels
       (equal-probability quantizing):
       g.region -p raster=ortho_2001_t792_1m
       # enter as one line or with \
       r.quantile input=ortho_2001_t792_1m quantiles=16 -r | r.recode \
                  input=ortho_2001_t792_1m output=ortho_2001_t792_1m_q16 rules=-
       The recoded raster map can then be used as input for r.texture as before.

       Second example: analysis of IDM (homogeneity) on a simple raster with North-South line pattern.
       # import raster
       r.in.ascii in=- output=lines << EOF
       north: 9
       south: 0
       east: 9
       west: 0
       rows: 9
       cols: 9
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       0 0 0 1 0 0 0 1 0
       EOF
       # adjust region to raster
       g.region raster=lines
       # calculate IDM (homogeneity) in all directions
       r.texture -s lines method=idm output=text_lines

       The  following  image  shows  the  original  map,  the  result  in  East-West direction and the result in
       North-South direction, showing how texture can depend on direction, with  texture  perfectly  homogeneous
       (value=1)  in the North-South direction, but quite heterogeneous in East-West direction, except for those
       areas where there are three columns of equal values (as size=3).  The overlaid grid highlights  that  the
       texture measures output maps are cropped at the margins.
       IDM textures according to direction

KNOWN ISSUES

       The program can run incredibly slow for large raster maps and large moving windows (size option).

REFERENCES

       The algorithm was implemented after Haralick et al., 1973 and 1979.

       The original code was taken by permission from pgmtexture, part of PBMPLUS (Copyright 1991, Jef Poskanser
       and Texas Agricultural Experiment Station, employer for hire of James Darrell McCauley). Manual  page  of
       pgmtexture.  Over the years, the source code of r.texture was further improved.

           •   Haralick, R.M., K. Shanmugam, and I. Dinstein (1973). Textural features for image classification.
               IEEE Transactions on Systems, Man, and Cybernetics, SMC-3(6):610-621.

           •   Bouman, C.  A.,  Shapiro,  M.  (1994).  A  Multiscale  Random  Field  Model  for  Bayesian  Image
               Segmentation, IEEE Trans. on Image Processing, vol. 3, no. 2.

           •   Jensen, J.R. (1996). Introductory digital image processing. Prentice Hall.  ISBN 0-13-205840-5

           •   Haralick,  R.  (May  1979).  Statistical and structural approaches to texture, Proceedings of the
               IEEE, vol. 67, No.5, pp. 786-804

           •   Hall-Beyer, M. (2007). The GLCM Tutorial  Home  Page  (Grey-Level  Co-occurrence  Matrix  texture
               measurements). University of Calgary, Canada

SEE ALSO

        i.maxlik, i.gensig, i.smap, i.gensigset, i.segment.stats, i.pca, r.neighbors, r.rescale

AUTHORS

       G. Antoniol - RCOST (Research Centre on Software Technology - Viale Traiano - 82100 Benevento)
       C. Basco -  RCOST (Research Centre on Software Technology - Viale Traiano - 82100 Benevento)
       M. Ceccarelli - Facolta di Scienze, Universita del Sannio, Benevento
       Markus Metz (correction and optimization of the initial version)
       Moritz Lennert (documentation)

SOURCE CODE

       Available at: r.texture source code (history)

       Main index | Raster index | Topics index | Keywords index | Graphical index | Full index

       © 2003-2019 GRASS Development Team, GRASS GIS 7.8.2 Reference Manual