artificial life
Chapter 7: The Genetic Images Application
7.6 Observations & Limitations
It is interesting that such complex images can be
generated from equations that are just a couple of lines long. It is
also interesting to note that even for images with an equation
merely a line long, such as
"pow(HSV_to_RGB(|(~(Log(&(TAN(X),Y))),Shift_Left(Y))),X)"
, it would be very difficult to predict how the image would look from
just inspecting the equation.
One computational concern that comes with randomly generating function trees is that a tree may become incredibly large and drop the performance of the program to unacceptable levels. The function tree generator does not prevent this from happening; however, the structure of the generator makes this highly unlikely. The program generates a tree by creating a root node and then adding random nodes as needed. For each node that is generated there is a 25% chance that it is one of the four major types: Constant, Variable, Unary or Binary. Since half of these types are terminal nodes there is a 50% chance that the tree does not grow any further past this node.
This can be observed in the initial populations of the Genetic Images program. Most of the images generated from scratch are very boring, consisting of maybe a gradient or a couple of lines. This is because the initial trees tend to be very short, thus lacking in complexity. The trees grow because complex trees tend to be more interesting, thus more likely to be rewarded by being chosen by the user. In general, the function trees do not become prohibitively large for similar reasons. As the images become more complex they tend to lose structure and appear simply as noise, thus decreasing their likelihood of being chosen.
A limitation of this application is that the images it produces are generally lines and curves and that a good deal of complexity is generated from the fractal-like patterns of the bit-wise logical operator. It is unlikely that the system could generate something recognizable as a face or dog or other “real-life objects”. Instead the user is able to explore a range of images that are very unlikely to occur in the real world, but are still very interesting.
Possible extensions of this application would be to add a time variable to the system, so that it could produce animations. It is also possible to add more functions to the set of functions already available, functions that create noise, warping or gradients could result in even more interesting and varied images.