Paper · 2019-04-13 · cs.CV
Texture image analysis and texture classification methods - A review
Review of texture image analysis and classification. Sorts descriptors into statistical, structural, model-based and transform-based families and describes GLCM, LBP, Gabor, fractal and combined methods, the classifiers used and benchmark datasets. Runs no experiments of its own; its accuracy table collects author-reported numbers on different datasets and protocols.
Texture analysis and classificationLocal binary patternsGray-level co-occurrence matrixtexture-classificationsurvey
AI-compiled by claude-haiku-5-5 on 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Texture is the look and feel of a surface: the grain of wood, the bumps on a brick wall, the speckle of sand. This review explains how a computer can measure texture in a photo so that it can tell materials apart or spot a flaw. The authors sort the methods into four families. Some count how often brightness levels sit next to each other. Some compare each pixel with a ring of neighbours and write the result as a short binary code. Some turn the image into waves or stripes and study those. Some fit a model that could have made the pattern. Most methods then hand these numbers to a standard classifier.
The review also describes the common test image collections and the conditions they vary, such as rotation or lighting. It does not propose a new method and does not run its own benchmark.
TL;DR
A 2019 survey with no new experiments. It sorts texture classification descriptors into four families and describes the main ones step by step: co-occurrence statistics, local binary patterns, Gabor filters and fractal dimension. It also lists the usual benchmark datasets. Its accuracy table collects numbers from other papers that use different datasets, classifiers and protocols, so they cannot be compared directly. The paper has several formula and text inconsistencies, listed under Pitfalls.
Problem
Texture classification assigns an unseen image to one of a set of known texture classes §I.B. Rotation and noise are named as the two main challenges. Scale, viewpoint and light intensity also differ between images, and the review says accuracy can drop sharply unless a descriptor is robust to these changes §I.A, p. 3. The applications it lists are face detection, object tracking, product quality checks, medical image analysis, remote sensing and vegetation studies §I.C, p. 4.
Method
The review does not propose a method. This section gives the pipeline it describes and the descriptors it details, so an implementer can recreate them.
Pipeline. Training extracts features from labelled images and stores them in a feature database. Testing extracts the same features from a new image and assigns the label with a classifier §I.B, fig. 3. Accuracy is the share of correctly labelled test images §I.B.2, eq. 1.
Taxonomy. Table 1 places each method in one of four families, with sub-categories §II, tab. 1:
- Statistical: histogram features, co-occurrence matrix, local binary descriptors, registration-based, Laws texture energy §II.A.
- Structural: primitive measurement, edge features, skeleton representation, morphological operations, SIFT §II.B.
- Model-based: autoregressive models, fractal models, random field models, Texem model §II.C.
- Transform-based: spectral, Gabor, wavelet, curvelet transforms §II.D.
The paper gives formulas only for histogram moments, the co-occurrence matrix, LBP, the fractal dimension, the Fourier spectrum and Gabor filters. For the other families it describes the idea in words.
Histogram moments §II.A.1. For grey levels z_i with pixel counts p(z_i), the mean, variance, skewness and entropy are sums over the histogram eq. 2 to eq. 6. These describe the brightness distribution and ignore pixel positions §II.A.
Co-occurrence matrix (GLCM) §II.A.2. Count how often grey level i sits at offset d in a direction from grey level j, normalise the counts to p_ij, and compute six statistics: contrast, correlation, energy, homogeneity, entropy and maximum probability eq. 7 to eq. 12. The directions are 0, 45, 90 and 135 degrees p. 7, fig. 6. The displacement is stated as 1 pixel in the text and as 3 pixels in the figure; see Pitfalls.
# Gray-level co-occurrence matrix and six statistics [§II.A.2]
# Input: image quantised to L levels; offset d; angle a
# Output: contrast, correlation, energy, homogeneity, entropy, max_p
def glcm_features(image, levels, offset, angle):
# count pairs of grey levels (i, j) at the given offset [§II.A.2]
counts = zeros(levels, levels) # (L, L)
for each pixel pair (a, b) at offset and angle:
counts[image[a], image[b]] += 1
# normalise to probabilities p_ij [§II.A.2]
p = counts / sum(counts)
# six statistics computed from p [eq. 7] to [eq. 12]
return contrast, correlation, energy, homogeneity, entropy, max_pLocal binary pattern (LBP) §II.A.3. For each pixel, compare the centre value g_c with P neighbours g_p on a circle of radius R. A neighbour greater than the centre gives a 1 and otherwise a 0 eq. 14. The bits are weighted by 2^p and summed eq. 13. Neighbours that fall between pixel centres are obtained by interpolation §II.A.3, fig. 8.
# LBP code for one pixel, P neighbours, radius R [§II.A.3] [eq. 13] [eq. 14]
# Input: gray image, pixel (x, y), P, R
# Output: integer in [0, 2^P - 1]
def lbp_code(image, x, y, P, R):
center = image[x, y]
code = 0
for p in range(P):
# sample point on the circle, interpolated if off-grid [§II.A.3]
neighbour = sample_circle(image, x, y, R, p)
# bit is 1 when the neighbour is strictly brighter [eq. 14]
bit = 1 if neighbour > center else 0
# weight bit p by 2^p [eq. 13]
code = code + bit * 2 ** p
return codeRotation invariance §II.A.3, eq. 15. Rotate the P-bit code right by i = 0 to P-1 positions and keep the smallest value. Uniform patterns §II.A.3, eq. 16, eq. 17. Count the 0/1 transitions around the circle. If the count is at most a threshold U_T, the label is the number of ones (0 to P). All other codes share the label P+1. The paper gives U_T = P/4 as the usual value and attributes it to its reference [29]; see Hyperparameters.
# Rotation-invariant and uniform LBP labels [eq. 15] [eq. 16] [eq. 17]
# Input: P-bit code, P, threshold U_T
# Output: label in [0, P + 1]
def lbp_uniform_label(code, P, threshold):
# minimum over all circular right-shifts [eq. 15]
smallest = min(rotate_right(code, i, P) for i in range(P))
# count 0/1 transitions around the circle [eq. 16]
transitions = count_circular_transitions(smallest, P)
if transitions <= threshold:
# uniform: label is the number of ones [eq. 17]
return count_ones(smallest, P)
# every other pattern shares one label [eq. 17]
return P + 1Structural methods §II.B. Edge features come from operators such as Sobel and Prewitt §II.B.1. SIFT builds a difference-of-Gaussian pyramid, keeps extrema that are larger or smaller than all 26 neighbours in the 3×3×3 region across adjacent scales, removes low-contrast and edge points, and describes each point with a 4×4 grid of gradient histograms, each with 8 orientation bins, giving a 128-value vector §II.B.2, fig. 10 to fig. 12.
Model-based methods §II.C. The review lists autoregressive, Markov random field, Gibbs, hidden Markov and fractal models, but details only the fractal case. A self-similar set of N copies, each scaled by r, has fractal dimension D = log N / log(1/r) §II.C.1, eq. 18, fig. 13.
Fourier spectrum §II.D.1. Texture peaks in the spectrum are read in polar coordinates. The radius limit is R0 = round(min(m, n)/2) - 1 eq. 19. The spectrum is summed over the angle 1 to 180 eq. 20 and over the radius eq. 21. The paper gives these as sums without a formal definition of the index variables; see Pitfalls.
Gabor filters §II.D.2. A Gaussian envelope times a sinusoid, rotated by θ eq. 25. The real and imaginary parts are written out in eq. 22 to eq. 24. The paper gives a different form in eq. 26 that uses a centre (x0, y0) and a frequency (u0, v0). The review states that the filter bank can match orientation and frequency, but it gives no values for σ, γ, λ, ψ or θ.
G = \exp\left(-\frac{x'^2 + \gamma^2 y'^2}{2\sigma^2}\right) \left(\cos\left(2\pi\frac{x'}{\lambda} + \psi\right) + i\sin\left(2\pi\frac{x'}{\lambda} + \psi\right)\right) eq. 23 eq. 25
with x' = x cos θ + y sin θ and y' = -x sin θ + y cos θ eq. 25.
Wavelet, curvelet and ridgelet transforms §II.D are listed as transform methods with no formulas.
Combined methods §III. These are the methods the review presents in more detail:
- Pyramid GLCM §III.A, fig. 14: five image layers, GLCM in four directions, 12 statistics per matrix, 48 values in total. A second variant replaces the pyramid by Gaussian blurring.
- SEGL §III.B, fig. 15: LBP, then GLCM in 8 directions, then Sobel edges. Seven statistics per matrix, 56 values in total.
- Energy variation §III.C, eq. 27, eq. 28, fig. 16: the feature is the absolute difference between the input's energy and the energy of the LBP, GLCM and edge outputs.
- Binary Gabor pattern §III.D, eq. 29, eq. 30: eight Gabor filters give eight bits per pixel, which are weighted by powers of two and minimised over rotations.
- Local spiking pattern §III.E, fig. 17: a spiking neuron model whose binary outputs are encrypted into a feature vector. The review gives no equations for this method.
- GLCM of the image and its difference image §III.F, fig. 18.
- Colour texture from primitive pattern units §III.G, eq. 31: energy, entropy, mean and variance per colour channel, concatenated.
- SVD then DWT, with SVM and particle swarm optimisation §III.H, eq. 32 to eq. 38, fig. 19: one DWT level with four sub-bands; mean and standard deviation per sub-band; PSO selects features and SVM parameters.
Classifiers §V:
- k-nearest neighbour: majority vote of the k closest labelled samples. The review says the best k depends on the data §V.A, fig. 27.
- SVM: a binary separator, extended to many classes by one-vs-one or one-vs-rest §V.B, fig. 29.
- Gaussian naive Bayes: the class score is the class prior times the product of per-feature normal densities, and the arg-max class is returned §V.C, eq. 39 to eq. 41.
- Decision trees (ID3, C4.5) §V.D and multilayer perceptrons trained by back-propagation §V.E. LSTM networks are mentioned without a texture experiment §V.G.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| LBP neighbours P, radius R | not stated as one setting | §II.A.3 fig. 8 | Figure 8 shows circular neighbour sets for several P and R |
| LBP uniform threshold U_T | P/4 | §II.A.3 eq. 17 | "usually considered" to be P/4, citing [29]; not checked against [29] |
| Haralick displacement d | 1 pixel (text) or 3 pixels (figure) | p. 7 fig. 6 | Inconsistent; see Pitfalls |
| Haralick directions | 0, 45, 90, 135 degrees | p. 7 fig. 6 | |
| GLCM grey levels L | 2^k for a k-bit image | p. 6 | |
| SIFT descriptor | 4×4 grid, 8 orientations, 128 values | §II.B.2 fig. 12 | |
| Fourier R0 | round(min(m, n)/2) - 1 | eq. 19 | angle range 1 to 180 eq. 20 |
| Gabor σ, γ, λ, ψ, θ | not stated | §II.D.2 eq. 23 | |
| Pyramid GLCM | 5 layers, 4 directions, 12 statistics | §III.A fig. 14 | 48 values per image |
| SEGL | 8 directions, 7 statistics | §III.B fig. 15 | 56 values per image |
| SRITCSD DWT | one level, 4 sub-bands | §III.H eq. 32 | |
| SVM kernel, C, class strategy | kernel and C not stated; one-vs-one or one-vs-rest | §V.B | |
| k-NN k | not stated | §V.A | Figure 27 uses k = 3 and k = 7 as examples only |
Results
Author-reported. The review runs no experiments. It collects accuracies from the papers it cites, and each row uses its own dataset, classifier and evaluation protocol. The text does not state the protocols for most rows §VI, tab. 4.
Dataset properties, as listed by the review §VI, tab. 2:
| Dataset | Total images | Per class | Image size | Classes |
|---|---|---|---|---|
| Brodatz | 112 | 1 | 640×640 | 112 |
| VisTex | 640 | 16 | 128×128 | 40 |
| Outex (Tc-0010) | 4320 | 180 | 128×128 | 24 |
| CUReT | 5612 | 92 | 200×200 | 61 |
| UIUC | 1000 | 40 | 640×640 (text: 480×480) | 25 |
| UMD | 1000 | 40 | 960×1280 | 25 |
| KTH-TIPS | 810 | 81 | 200×200 | 10 |
| FMD | 1000 | 100 | not stated | 10 |
Selected accuracies (%) from the comparison table §VI, tab. 4. Only rows with the datasets and classifier stated in the table are shown:
| Method [ref.] | Dataset: accuracy | Classifier |
|---|---|---|
| Ahmadvand and Daliri [24] | VisTex 97.60; Outex-CT10 99.24; Brodatz 98.44 | KNN |
| Du and Yan [44] | Outex 10: 86.12; Outex 12: 66.62 | neural network |
| Suresh and Shunmuganathan [45] | Brodatz 99.04 | KNN |
| Mehta and Egiazarian [65] | Outex 10: 96.26; Outex 12: 99.19; KTH-TIPS 96.78 | K-NN |
| De Siqueira et al. [42] | UMD 95.2; UIUC 81.7; Brodatz 87.2; VisTex 96.0; Outex 89.4 | KNN |
| Fekri-Ershad [43] | Stone: naive Bayes 92; 3-NN 93.3; 5-NN 93.6; LADTree 90 | as listed |
| Guo et al. [66] | Outex 10: 89.63; Outex 12: 85.23 | KNN |
| Nguyen et al. [67] | KTH-TIPS 97.73; KTH-TIPS 2b 71.59; CUReT 98.73; UIUC 97.4; DTD 74 | KNN |
| Chang et al. [25] | VisTex 100; Sun Harvest 100; Brodatz 99.55; USC 100; Coffee beans 98.22 | SVM |
| Junior and Backes [68] | VisTex 99.83; Outex 97.59; Brodatz 99.42 | KNN |
| Hao et al. [71] | KTH-TIPS 2b 78.6; FMD 81.7; ULUC 84 | KNN |
| Fekri-Ershad and Tajeripour [18] | Outex TC13 99.83; KTH-TIPS 2a 83.57; VisTex 98.12 | not stated in table |
The review's own conclusions are qualitative: almost all methods are rotation invariant, most are sensitive to noise, LBP and the co-occurrence matrix are the most popular statistical methods, fractal models the best known model-based ones, and Gabor and wavelet the most applicable transform methods §VII.
Paper vs code
No official code. The paper and the arXiv metadata contain no code link. A GitHub repository search on the authors' names returned no results. The paper is a survey, so it has no method of its own to implement.
Pitfalls
- No experiments. Every number in the results is copied from another paper. The rows differ in dataset, classifier, split and preprocessing, so the ranking is not a fair comparison §VI, tab. 4.
- Missing table. The results text refers to "tables 2 and 3". Table 3 does not exist; the comparison table is Table 4 §VI, p. 23.
- UIUC image size. The dataset section says 480×480 §IV.F, p. 19; the dataset table says 640×640 tab. 2.
- Co-occurrence displacement. The text under the example matrix gives a displacement of 1 pixel p. 7; the direction figure and its text say 3 pixels fig. 6. Choose one and check it against the source papers.
- Contrast formula. Eq. 7 is typeset as |i − i|², which is 0 for every entry. The intended term is almost certainly |i − j|², the usual Haralick contrast. Check this against Haralick [ref. 26] before implementing.
- Skewness formula. Eq. 5 is the third central moment with no division by σ³. Implement the normalised form only if the use requires it, and say so.
- Uniform-pattern threshold. The text says U_T is "usually" P/4 and cites [ref. 29] for it. The card has not verified this against [ref. 29], so treat U_T as a parameter to set and report, not as a known constant. The review also calls the transition count "homogeneity" §II.A.3.
- Sum indices in the Fourier section. Eqs. 20 and 21 use index i in the sum but r in the range. The index variables are not defined §II.D.1.
- Gabor forms disagree. Eqs. 22 to 24 use x' and λ, ψ; eq. 26 uses a centre and a frequency pair and a different normalisation. The paper does not say which one it uses. It also gives no parameter values.
- Mean and standard deviation in SRITCSD. Eqs. 33, 34, 36 and 37 divide by (M − 1)(N − 1) and the mean is labelled with the same denominator. Check against the cited source [ref. 25] before implementing. The equation labels for the second feature set are also inconsistent (μ^{j,DWT} under eq. 36).
- Fractal method. The box-counting or any other estimator used to fit D is not stated §II.C.1.
- Duplicate section. Artificial neural networks appear twice with the same text, under V.E and V.F §V.
- Rotation claims. The statement that almost all methods are rotation invariant §VII is qualitative. The table does not record rotation tests for every row.
Lineage
- Builds on: none stated. The review cites its own sources by number. Ojala et al. for multiresolution and rotation-invariant LBP [ref. 29]; Haralick for the co-occurrence matrix [ref. 26]; Lowe for SIFT [ref. 32, ref. 33]; Gabor filters [ref. 38, ref. 40, ref. 41]. None of these has a card on this wiki yet.
- Compared against: each method in tab. 4.
- Superseded by: not stated in the paper.
Source and license
Adapted from “Texture image analysis and texture classification methods - A review” by Laleh Armi, Shervan Fekri-Ershad (arXiv:1904.06554), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.