Layered Surfaces: Optimal Texturing
Displaying layered surfaces is a common visualization problem in areas like medical imaging, oceanography, visualization of clouds or sediment layers. The problem was reduced to finding optimal textures for the case of two layered surfaces.
Experiment
The possible texture space was parameterized in 122 parameters. Examples
are hue, opacity, roundness, rotation angle, filter, randomness. A
human-in-the-loop genetic algorithm was run to rate pairs of top and
bottom textures. The result is a
large database of texture pairs rated by quality.
Data Analysis
I am working on various methods of data analysis to make sense of this database.
Clustering: Finds groups of datapoints close together in the parameter space.
Principle Component Analysis: Given a group of highly rated textures, find the
eigenvectors of the distribution. In principle, since the group is all rated as
"good textures", varying along the maximum eigenvectors will maintain the
visualization quality. Unfortunately, given 122 parameters, the meaning of the
eigenvectors (in terms of real-life concepts) is not clear. An analysis was run
to find which parameters commonly had large values in many of the largest eigenvectors,
which yielded results that intuitively make sense.
Neural Networks: A two-layer back-propogation neural network was able to learn
to correctly rate textures given the parameter values within a reasonable tolerance.
However, again, the meaning of the network weights is not clear.
Trepan: Developed by Craven and Shavlik, it is a method to generate a decision tree
based off the output of a neural network. This will generate a series of logical
expressions for generating either good or bad textures.
Follow-up Experiment
A simpler parameter space with a total of 24 parameters has been created for another
experiment. However, in addition to the genetic algorithm, the user will be able to
directly vary individual parameters. Hopefully this should make generation of good
textures much faster.