Texture Synthesis - Ryan Mazzolini

Texture synthesis is a method of computationally creating synthetic textures. It involves the creation and placement of textures through computation and procedural generation.

Problem

The current system uses a single tileable texture for each tree model generated. These textures have to be seamless and manually added for each tree being generated. This often requires textures to be sourced from image libraries, which have images that are already made to be tileable and seamless. Another option is to use an external program to make a image seamless, which can often introduce unwanted or unnatural results depending on the type program and image used. Environments requiring many different trees of the same species can also add further complications. This requires textures that are similar in structure, while not being exactly the same. For example noticeable repeating patterns can be found easily in a forest of trees, each using the same bark texture.

Research Question

Can texture synthesis add variation to generated bark textures in procedurally generated tree models?
A technique for synthesising bark textures needs to be found that can generated bark textures for each model produced. These textures need to be tillable without noticeable seams. The bark texture synthesised should also resemble a sample image or structure, while still being unique.

Three different bark species

This image shows examples of bark from three different tree species; Silver Birch bark (Left), Oak bark (Middle) and London Plane bark (Right).

Design

Discrete solver
To create bark textures an example-based texture synthesis technique is used. Example-based synthesis techniques generate textures similar to a sample image. This technique, commonly known as the discrete solver, fulfills all of the criteria for generating bark textures. The discrete solver is a hybrid between pixel and patch based texture synthesis techniques. It synthesizes a new texture at a pixel level unlike other pixel-based approaches because every pixel is considered together by optimizing a quadratic energy equation. The overall energy is determined by mismatches between input and output images. Iteratively solving this function over an image, minimises the energy over subsequent iterations for a better quality image.

Sample bark texture used in tiling A tiled bark texture with seams A tiled bark texture witout seams

This image shows examples of tilled bark textures. The sample image(Left), a tiled texture with seams (Middle) and a tiled texture without seams (Right).

Experiment and results

User testing was conducted that measured the assumption that the realism of the synthesised images were the same as the real images. It was concluded through the use of t-tests that the distributions were different, with the sample images having a higher realism than the synthesised images. It was discovered later that an error in the solvers implementation caused repeating patterns in the synthesised images. It is assumed that the realism is increased from further development. However, this cannot be proven conclusively without further testing.

Sample textures used in the synthesis process:

Sample bark texture 1 Sample bark texture 2 Sample bark texture 3 Sample bark texture 4


Examples of synthesise textures using the discreet solver:

Synthesised bark texture 1 Synthesised bark texture 2 Synthesised bark texture 3 Synthesised bark texture 4