Minimum Conformity Improvement - akilmarshall/procedural-image-generation GitHub Wiki

I propose a procedure to move between an input image and an improved image "quickly".

  1. begin with an input image $\text{I}\in\mathbb{M}_{n\times m}(\mathbb{T})$
  2. select the tile with minimum conformity or halt (all conforming)
  3. force conformity on the tile's neighborhood
  4. goto 2.

See here for a description of the conformity function.

Ideally this algorithm will improve an image into "finished" quality or provide useful input into another algorithm.

The following are the fitness of some images as they are evolved over time, these are examples of the best observered growth curves, note the number of time steps required to reach the ceiling.

Notably the images are not approaching the maximum score but the growth exhibited seems promising. Additionally once again theses runs are the best among many that failed to improve. Figure 1 is an example of a typical run often with a lower asymptote, quick if any growth and then no change.

I defined the maximum timesteps allowed to 50 yet figures (3, 4, 5) do not appear to have grown to their maximum fitness. This seems to imply that this process may be suitable to be used in the context of many individuals that are "evolved" to completion and then used as final products or as input to another algorithm.

  1. Initialize a population randomly
  2. evolve each individual via minimum conformity to termination
  3. plot fitness evolution

Termination

What does it mean for evolution to terminate under the minimum conformity process?

  • Stagnation, the fitness values approach an asymptote and no longer change
  • Cycle, the fitness values begin to cycle between a small set of values at the asymptote

How to detect?

Stagnation can be detected by looking at a window of the last $n$ fitness values and measuring the variance, when it goes to $0$ the process should be halted.

Cycles can be detected by looking at a the last m variance measurements, when this goes to zero (constant variance of a cycle) the process should be halted.

TODO

  • In the forced conformity step the corners should also be selected if possible.

This is inspired by the CENTER algorithm since the neighbors are first selected. Could the fragment algorithms be used to complete random tiles in an image?