Textures

 

Textures

Image Edges ≠ Perceived Boundaries

Perceived Boundaries rely on texture

Objects vs Texture

The same thing can be an object or a texture, depending on the scale of consideration

Why Analyze Texture?

For visual perception:

  • Indicative of material properties
  • Important appearance cue, especially if shape is similar across objects
  • Aim to distinguish between shape, boundaries, and texture

For computer vision:

  • Representation-wise, we want a feature one step above basic building block of simple filters, edges.

Texture Representation

Example

Use 2 filters to compute x- and y-derivatives as a 2-dimensional feature

Draw (dx, dy) in the graph, the clusters represent different textures.

Window Scale

Possible to perform scale selection by looking for window scale where texture description not changing.

Filter Banks

Use multiple(d) filters to generate d-dimensional feature

$D(a,b)=\sqrt{(a_1-b_1)^2+(a_2-b_2)^2}$

A combination of scales and orientations, different types of patterns.

Filter banks can measure redundant variety of structures in local neighborhood and result in multi-dimensional feature spaces

When $a_1 \gg a_2$, $a_1$ dominates the distance D, and $a_2$ become meaningless. This is problematic if we need both features to separate our clusters. Normalizing the features fixes this.

How many different filters? Implications?
  • Filters should “span” the range of textures we want to detect
  • This can be very compact set of orthogonal filters (e.g. x- & y-derivatives alone are sufficient), or it can be overcomplete and cover a whole range of orientations, patterns, etc.
  • The more similar the filters are, the more fine-tuned they are to respond to a specific orientation / pattern. This can be more discriminative for the application at hand (e.g. distinguishing v. similar textures)
  • More filters are not always better, since it
    • comes at the cost of a bigger vector, bigger computational effort and
    • may actual obfuscate the underlying pattern (think scenarios in which we want dimensionality reduction)
  • Limitation by filter size (i.e. 5x5 has more resolution than 3x3)

Textures are Repeated Local Patterns

Find the patterns
  • Use filters that look like patterns (spots, bars, raw patches…)
  • Consider magnitude of response
Describe their statistics within each local window
  • Mean, standard deviation
  • Histogram
  • Histogram of “prototypical” feature occurrences
Comparing Texton Histograms

Naïve Choice: L2 / Euclidean

  • Euclidean distance is not ideal because it computes an arithmetic difference whereas the information reflected in histograms lies in relative values of their coordinates.

  • Better choices are:

    • χ2 (chi-square distance). Note that it is not symmetric, i.e. $d(h_1, h_2) ≠ d(h_2, h_1)$

      $d(H_1, H_2) = \sum_I {(H_1(I) - H_2(I))^2 \over H_1(I)}$

    • Bhattacharyya distance is a symmetric alternative to chi-square

      $d(H_1, H_2) = \sqrt {1-{1\over \sqrt {\bar H_1 \bar H_2 N^2}}\sum_I \sqrt{H_1(I) \cdot H_2(I)}}$

    • Histogram intersection

      $d(H_1, H_2) = \sum_Imin(H_1(I), H_2(I))$

Textons

An attempt to characterize texture

Replace each pixel with integer representing the texture ‘type’

Computing Textons

Take a bank of filters and apply to lots of images

For new pixel, filter surrounding region with same bank, and assign to nearest cluster; pixel now represented with the cluster id. The cluster id is the texton id.

Histogram of Textons

  • Each material is now represented as a spatial arrangement of symbols from the texton vocabulary
  • Texture is defined by first order statistics of texton distribution, i.e., average density
  • For a given region, compute a histogram of textons as the representation: vector storing number of occurrences of each texton

The smaller the difference between two histograms, the more similar they are.

Texture representations via filter bank response “summarize” repeating patterns of local structure

Histogram Models for Recognition
  • Every single count here comes from the response of a single pixel.
  • For each pixel for which we apply the entire filter bank, and derive a feature vector from the filter responses.
  • We check for the cluster to which it belongs and find the associated texton ID.
  • Sweep over all pixels to get the histogram which characterizes that region.

Using Textons to Identify Boundaries

Segmentation with texture features

Find ‘textons’ by clustering vectors of filter bank outputs

Describe texture in a window based on texton histogram

What are Textures Good For?

  • Shape-from-texture
  • Classification
  • Retrieval
  • Segmentation
    • Analyze, represent texture
    • Group image regions with consistent texture
  • Synthesis
    • Generate new texture patches/images given some examples

We can estimate surface’s 3D shape from deformation of texture from point to point