Algorithm for a drawing and painting robot -
Hello
I want to write a piece of software that analyses an image, and then produces an image that captures what a human eye perceives in the original image, using a minimum of bezier path objects of varying color and opacity.
As an example, if the original image shows a red balloon in the top left corner, and the reproduction has something that looks like a red balloon in the top left corner then I will have achieved my goal, even if the balloon in the reproduction is not quite in the same position and not quite the same size or color.
When I say "as perceived by a human", I mean this in a very limited sense. I am not attempting to analyze the meaning of an image, I don't need to know what an image is of, I am only interested in the key visual features a human eye would notice, to the extent that this can be automated by an algorithm which has no capacity to conceptualize what it is actually observing.
Why this unusual criterion of human perception over photographic accuracy?
This software would be used to drive a drawing and painting robot, which will be collaborating with a human artist (see: video.google.com/videosearch?q=mr%20squiggle).
Rather than treating marks made by the human which are not photographically perfect as necessarily being mistakes, The algorithm should seek to incorporate what is already on the canvas into the final image.
So relative brightness, hue, saturation, size, and position are much more important than being photographically identical to the original. The maintaining the topology of the features, the block of color, gradients, the convex and concave curve will be more important the exact size shape and color of those features
Still with me?
My problem is that I suffering a little from the "when you have a hammer everything looks like a nail" syndrome. To me it seems the way to do this is using a genetic algorithm with something like the comparison of wavelet transforms (see: grail.cs.washington.edu/projects/query/) used by retriever (see: labs.systemone.at/retrievr/) to select fit solutions.
But the main reason I see this as the answer is that these are the techniques I know, there are probably much more elegant solutions using techniques I don't know anything about.
It would be especially interesting to take into account the ways the human vision system analyses an image, so perhaps special attention needs to be paid to straight lines, and angles, high contrast borders and large blocks of similar colors.
Do you have any suggestions for things I should read on vision, image algorithms, genetic algorithms or similar projects?
Thank you