|
|
There is a long history of research in the study of visual texture, but the definition is rather imprecise. Most researchers agree that an image of visual texture should be spatially homogeneous, and typically contains repeated structures, often with some random variation (e.g., random positions, orientations or colors). This loose definition suggests that textures might best be synthesized by laying down texture elements at periodic or random locations within an image. But this approach does not lend itself well to the analysis of texture images.
Crudely stated, our goal is to establish a minimal set of statistical measurements such that two textures are identical in appearance if and only if they agree on these measurements. We first decompose an example texture image using a multi-scale oriented linear basis (specifically, a Steerable Pyramid). The resulting coefficients are complex-valued: the real and imaginary parts correspond to even and odd-symmetric (quadrature pair) basis functions. For each pair of coefficients at nearby positions, orientations and scales, we then measure the average value of their product, the product of their magnitudes, and their relative phase. We also measure a few statistical moments of the pixel distribution (sample mean, variance, skew, kurtosis, range). The number of parameters depends on the number of subbands, and the size of spatial neighborhoods used. For the examples given below, we used a total of 710 parameters. This is a maximal set: For each individual texture, one can usually get good results with a small subset of these parameters (with different textures requiring different subsets).
Texture synthesis provides a stringent test of the quality of a texture representation (much more so than commonly-used classification tasks). We've developed a method of synthesizing a random texture that matches the statistics of any given reference image. Starting with an image of Gaussian white noise, we alternate between 1) constructing the steerable pyramid and forcing the sample statistics of each subband to match those of a reference texture image, 2) reconstructing an image from the pyramid, and forcing the sample statistics of the resulting pixels to match those of the reference image. We enforce the statistical constraints by moving in the direction of the gradient of the constraint function until the constraint is satisfied. Note that apart from the choice of initial image, the algorithm is deterministic. Typical run time is about 10 minutes for 50 iterations to synthesize a 256x256 image. Details may be found in the references given below.
Click on any thumbnail to pop up a window filled with synthesized texture. The reference texture (256x256) is shown inside of a yellow box (Note: no attempt is made to align the contents with the surrounding texture). Labels on photographic textures refer to the following sources:
- VisTex - Online collection, MIT Media Laboratory.
- Brodatz - Online collection scanned from Textures: A Photographic Album for Artists and Designers, by Phil Brodatz. Dover, New York, 1966.
- Simoncelli - personal photographs, scanned from negatives to photoCD, or shot with Canon D30 digital camera
- Portilla - scanned images
| Artificial/periodic: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
|---|---|---|---|---|---|
| Artificial/non-periodic: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
| Photographic/pseudo-periodic: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
| Photographic/random: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
| Photographic/structured: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
| Inhomogeneous (non-textures): |
![]() |
![]() |
![]() |
![]() |
More Examples... |
| Color: |
![]() |
![]() |
![]() |
![]() |
More Examples... |
The algorithm can be modified (see refs below) to extrapolate a texture image beyond its boundaries, or to fill in holes (often called "texture inpainting"). Some examples are provided on a separate page.
A Matlab implementation of our texture synthesis algorithm is available.
Further information: README | Contents | ChangeLog | Source code (UNIX/PC, gzip'ed tar file)
A number of recent algorithms create synthetic texture images by clever resampling from the original texture image. Although these do not provide an explicit model for texture, the results are visually stunning! If you're looking for a good texture synthesizer for graphics applications, we suggest you look at these examples (listed in reverse chronological order): Xu etal, Bar-Joseph etal, Wei, Efros & Leung, DeBonet & ViolaAnother related idea appears in the fractal image compression literature, in which blocks of coefficients at one scale are copied into a finer scale (with suitable translation, rotation, or other parameteric distortion), see "Fractal Image Coding: A Review", A. Jacquin, Proc. IEEE, Oct 1993.
This material is based upon work partially supported by the National Science Foundation under CAREER Grant No. 9796040. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
|
|
|
Revised: 24 April 2001 Created: August 1999 |
Laboratory for Computational Vision | Top of page |