In these experiments, the texture synthesis goal is described in terms
of properties of the desired image. These properties include those that
can be measured by looking at individual color pixels such as
brightness, saturation and hue. We might look for maximum, minimum,
average or median values of these properties. We might construct
histograms of their distributions and look for certain properties of
those. We may also analyze regions of the image larger than single
pixels to measure spatial frequencies and orientations. We could look
for the distributions of (for example) hue to see how they vary from
one neighborhood to another.
A procedural description of the desired type of texture can serve as
the fitness function to be used with evolutionary texture synthesis to
generate a “random” texture that meets the description. This process
can be repeated many times to generate a catalog of images from which
an artist/designer can select suitable interesting textures.
Evolving Textures from High Level
Descriptions: Harmonious Colors
Evolving Textures from High Level
Descriptions: High frequency top,
low frequency bottom (“hftlfb”)
Evolving Textures from High Level
Descriptions: Gray with an Accent
Color
Testing evolutionary texture
synthesis
My first version of “evolving textures from high level descriptions”
was written to debug the evolutionary texture synthesis component of
the
camouflage project. I wanted to test the
interface between my
texture synthesis
library and the evolutionary computation performed by
Open BEAGLE. It didn't matter
much what the fitness function was, as long as it drove evolution
sufficiently to stress test the whole system. I tried some simple
criteria but evolutionary computation is extremely good at finding
simple solutions for simple criteria. The fitness function that
resulted after several experiments combined four criteria or metrics:
- how close to midrange is the average intensity?
- how rare are regions of flat, unchanging color?
- are lights and darks well represented in the brightness histogram?
- is the average saturation above a certain threshold?
These are very broad criteria. Most well-exposed color photographs
would score very high on these metrics. Other than these goals, the
fitness function was fairly agnostic about other aspects of texture
analysis. As a result the fitness space was fairly “flat” allowing a
large variety of texture types (below). For more description and other
examples, see the
Texture
Synthesis
Diary.
Using goal oriented texture synthesis
to evolve camouflage patterns with a human observer as predator,
described in this paper:
Craig Reynolds. 2010. Interactive Evolution of Camouflage. In the
proceedings of the
12th
International Conference on the Synthesis and Simulation of Living
Systems (ALife XII), August 2010. URL:
http://www.red3d.com/cwr/iec/
(A revised version of this paper will appear in the journal
Artificial Life 17(2) around
April 2011.)
Abstract: This paper presents
an abstract computation model of the evolution of
camouflage in nature. The 2d model uses evolved textures for
prey, a
background texture representing the
environment
and a visual
predator.
In these experiments, the predator’s role is played by a human
observer. They are shown a
cohort
of ten evolved textures overlaid on
the background texture. They click on the five most conspicuous prey to
remove (“eat”) them. These lower fitness textures are removed from the
population and replaced with newly bred textures. Biological
morphogenesis is represented in this model by
procedural texture
synthesis. Nested expressions of generators and operators form a
texture description language. Natural evolution is represented by
genetic programming, a variant
of the
genetic algorithm. GP
searches
the space of texture description programs for those which appear least
conspicuous to the predator.
Below: camouflaged circular
“prey” overlaid on the background image for
which
they were evolved: polished serpentine stone, yellow lichen, lantana
flowers and
leaves, green hedge, twisty wire against sky, tree bark, orange
lentils,
Yosemite granite:
Interactive Evolution of
Camouflage—simulating the evolution of camouflage in nature. Uses
goal-oriented texture synthesis.
Texture Synthesis
Diary—blog about the design and implementation of the evolutionary
texture synthesis underlying this work.
Open BEAGLE—a general
purpose engine for evolutionary computation. Its genetic programming
facility is used to implement the evolutionary texture synthesis used
here.