Concept · 1 paper · updated 2026-10-19
Texture analysis and classification
Describes an image region by its texture so that a classifier can tell texture classes apart. Descriptor families are statistical, structural, model-based and transform-based, and combined methods stack them. The one cited source is a 2019 survey with no experiments of its own, so its accuracy numbers come from other papers and cannot be ranked.
computer-visiontexturefeature-extraction
Markdown6 min read
AI-compiled overview, updated 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
Overview
Texture classification assigns an unseen image to one of a set of known texture classes. The usual pipeline extracts a descriptor from labelled training images, stores the features, and labels a new image with a classifier fed by the same descriptor 1904.06554 §I.B, fig. 3. Accuracy is the share of test images labelled correctly [arxiv:1904.06554 §I.B.2, eq. 1].
The hard part is that the same texture can look different. The review names rotation and noise as the two main challenges. Scale, viewpoint and light intensity also vary, and it says accuracy can drop sharply unless the descriptor is robust to these changes 1904.06554 §I.A, p. 3. Typical applications include face detection, object tracking, product quality checks, medical image analysis, remote sensing and vegetation studies 1904.06554 §I.C, p. 4.
The review does not propose a method. It sorts the existing descriptors into four families, then describes some of them in detail 1904.06554 §II, tab. 1. Each family has its own page below.
Variants
Statistical descriptors
These count grey-level values or their arrangement. Histogram moments (mean, variance, skewness, entropy) describe the brightness distribution and ignore pixel positions 1904.06554 §II.A, eq. 2 to 1904.06554 eq. 6. The co-occurrence matrix counts how often two grey levels sit at a fixed offset 1904.06554 §II.A.2. See Gray-level co-occurrence matrix. Local binary patterns encode each pixel by comparing it with its neighbours on a circle 1904.06554 §II.A.3. See Local binary patterns. The review also lists registration-based methods and Laws texture energy, without formulas 1904.06554 §II.A.
Structural descriptors
These describe texture as repeated primitives and their placement. The review lists primitive measurement, edge features, skeletons and morphological operations 1904.06554 §II.B. Edge features come from operators such as Sobel and Prewitt 1904.06554 §II.B.1. SIFT is described in detail: a difference-of-Gaussian search for keypoints, then a 128-value vector from a 4×4 grid of histograms with 8 orientation bins each 1904.06554 §II.B.2, fig. 10 to 1904.06554 fig. 12.
Model-based descriptors
These fit a generative model of the texture. The review lists autoregressive, Markov random field, Gibbs, hidden Markov, fractal and Texem models, but details only the fractal case 1904.06554 §II.C. A self-similar set of N copies, each scaled by r, has fractal dimension D = log N / log(1/r) 1904.06554 §II.C.1, eq. 18. The review does not say how D is estimated from an image.
Transform-based descriptors
These measure energy in a transformed domain. Spectral methods read peaks in the Fourier spectrum in polar coordinates. The radius limit is R0 = round(min(m, n)/2) - 1, and the spectrum is summed over angle and radius 1904.06554 §II.D.1, eq. 19 to 1904.06554 eq. 21. Gabor filters are a Gaussian envelope times a sinusoid, rotated by an angle θ 1904.06554 §II.D.2, eq. 25. The review says a Gabor filter bank can match orientation and frequency, but gives no values for its parameters 1904.06554 §II.D.2. Wavelet, curvelet and ridgelet transforms are listed without formulas 1904.06554 §II.D. See Wavelet transform for the general idea.
Combined methods
The review presents several methods that stack descriptors from the families above 1904.06554 §III:
- Pyramid GLCM: five image layers, a GLCM in four directions and 12 statistics per matrix, giving 48 values. A variant replaces the pyramid by Gaussian blurring 1904.06554 §III.A, fig. 14.
- SEGL: LBP, then a GLCM in 8 directions, then Sobel edges. Seven statistics per matrix, 56 values in total 1904.06554 §III.B, fig. 15.
- Energy variation: the absolute difference between the input's energy and the energy of the LBP, GLCM and edge outputs [arxiv:1904.06554 §III.C, eq. 27, eq. 28].
- Binary Gabor pattern: eight Gabor filters give eight bits per pixel, weighted by powers of two and minimised over rotations [arxiv:1904.06554 §III.D, eq. 29, eq. 30].
- Local spiking pattern: binary outputs of a spiking neuron model encoded as a feature vector. The review gives no equations [arxiv:1904.06554 §III.E, fig. 17].
- Colour texture from primitive pattern units: energy, entropy, mean and variance per colour channel, concatenated 1904.06554 §III.G, eq. 31.
- SVD and DWT with SVM and particle swarm optimisation: one DWT level with four sub-bands, mean and standard deviation per sub-band, and PSO to select features and SVM parameters 1904.06554 §III.H, eq. 32 to 1904.06554 eq. 38.
When to use which
The review gives no controlled comparison. Its accuracy table collects numbers from different papers, with different datasets, classifiers and protocols, and the text does not state the protocol for most rows [arxiv:1904.06554 §VI, tab. 4]. So the choice below rests on what each descriptor computes, and the constraints you have. Test the shortlist on your own data.
| Situation | Use | Why |
|---|---|---|
| Orientation of the texture varies | Rotation-invariant LBP 1904.06554 eq. 15 | The minimum over circular shifts removes orientation from each code |
| Several scales of the same texture | Pyramid GLCM 1904.06554 §III.A | Five layers, 48 values; the review does not say how layers are combined |
| Orientation and frequency selectivity needed | Gabor filter bank 1904.06554 §II.D.2 | The review says the bank matches orientation and frequency; you must set σ, γ, λ, ψ and θ yourself |
| Few values, position ignored is acceptable | Histogram moments 1904.06554 eq. 2 to 1904.06554 eq. 6 | Brightness statistics only, no spatial layout |
| Edge and local pattern cues together | SEGL 1904.06554 §III.B | Combines LBP, GLCM and edges; 56 values per image |
| Keypoint-based local descriptor | SIFT 1904.06554 §II.B.2 | Described step by step; the review gives no texture accuracy for it |
| Need a reliable accuracy ranking | Run your own benchmark | The review's numbers are not comparable across rows 1904.06554 §VI, tab. 4 |
Rotation: the review calls almost all methods rotation invariant. This is a qualitative claim, and the comparison table does not record rotation tests for every row 1904.06554 §VII. Check rotation with rotated copies of your own data.
Datasets: the review lists the usual benchmarks, with image counts, classes and sizes 1904.06554 §VI, tab. 2. These are Brodatz, VisTex, Outex, CUReT, UIUC, UMD, KTH-TIPS and FMD. Pick a dataset whose conditions match yours, since the review's results depend on it.
Classifier: the review compares k-nearest neighbour, SVM, Gaussian naive Bayes, decision trees and multilayer perceptrons 1904.06554 §V. It states that the best k for k-NN depends on the data [arxiv:1904.06554 §V.A, fig. 27].
Implementation sketch
Every method in the review plugs into the same loop: a descriptor turns an image into a feature vector, and a classifier learns from those vectors. The descriptor is the only part that changes between variants. The LBP and GLCM pages give descriptor code.
# Texture classification loop [arxiv:1904.06554 §I.B, fig. 3]
# Input: labelled training images, a test image, a descriptor function,
# a classifier with fit and predict methods
# Output: predicted texture class for the test image
def classify_texture(train_images, train_labels, test_image,
describe, classifier):
# training: same descriptor for every labelled image [§I.B]
train_features = [describe(img) for img in train_images]
model = classifier.fit(train_features, train_labels)
# testing: the same descriptor on the new image [§I.B]
return model.predict(describe(test_image))Where variants differ: describe is the only part that changes. It can be a
histogram of LBP labels, six GLCM statistics, a Gabor filter-bank response, or
a stack of such outputs as in the combined methods. The review does not give
one normalisation or preprocessing step that applies to all descriptors.
Contradictions
There is one source on this page, so no conflicts between papers. The review itself has internal inconsistencies, listed here so that an implementer checks them against the original papers:
- Displacement of the co-occurrence matrix. 1 pixel in the text, 3 pixels in the figure 1904.06554 §II.A.2, fig. 6. See the GLCM page.
- Gabor forms. Eqs. 22 to 24 and eq. 25 use x' and λ, ψ; eq. 26 uses a centre and a frequency pair with a different normalisation. The review does not say which one it uses 1904.06554 §II.D.2.
- UIUC image size. 480×480 in the dataset text [arxiv:1904.06554 §IV.F, p. 19], 640×640 in the dataset table 1904.06554 tab. 2.
- Uniform-pattern threshold. The review calls U_T = P/4 "usual" and cites Ojala et al., but the card has not checked that citation 1904.06554 §II.A.3. See the LBP page.
Papers
- Texture image analysis and texture classification methods - A review: 2019 survey of texture descriptors and classifiers. Sorts them into four families, details GLCM, LBP, Gabor, fractal and combined methods, and lists the benchmark datasets. It runs no experiments of its own.
Source and license
Compiled from the papers listed on this page, all published under CC BY, CC BY-SA or CC0, with citations. See each paper's page for its authors and license.