r.texture - Generate images with textural features from a raster map.
raster, algebra, statistics, texture
r.texture r.texture --help r.texture [-sa] 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) -a Calculate all textural measurements --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
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).
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 rast=<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.
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 rast=ortho_2001_t792_1m r.quantile in=ortho_2001_t792_1m quantiles=16 -r | r.recode in=ortho_2001_t792_1m out=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 rast=lines # calculate IDM (homogeneity) in all directions r.texture -s lines method=idm out=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 overlayed grid highlights that the texture measures output maps are cropped at the margins. IDM textures according to direction
The program can run incredibly slow for large raster maps and large moving windows (size option).
The algorithm was implemented after Haralick et al., 1973 and 1979. The 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. * 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
i.maxlik, i.gensig, i.smap, i.gensigset, i.segment.stats, i.pca, r.neighbors, r.rescale
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) Last changed: $Date: 2016-11-27 15:59:49 +0100 (Sun, 27 Nov 2016) $
Available at: r.texture source code (history) Main index | Raster index | Topics index | Keywords index | Graphical index | Full index 2003-2016 GRASS Development Team, GRASS GIS 7.2.0 Reference Manual
Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.
Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.
Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.
Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.
The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.
Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.
Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.
Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.