Original Post
Videos Here
These images were created with a variation on Craig Reynolds's Boids algorithm. I have occasionally taken on work from some independent film-makers, mostly working with Photoshop on image-retouching & rotoscoping which has spurred on my interest of unusual/experimental animation techniques. What the pictures above relate to is my ongoing experimentation with using AI algorithms to "creatively" recreate images, with the ultimate goal of creating an automated computer-animator that will process and rerender video files with guided recreations. My previous thread dealt with "Evolved" images, ala Roger Alsing's method. I created a parallel implementation of it that relied on tree structures (essentially genetic programming with trees and terminals, but instead of performing computations, each tree would evaluate to a series of drawing commands that would ultimately recreate the image given your specifications..number of polygons, desired tints, etc.) While this created some striking effects, getting it to animate was another story. My approach was to take a base image, and then continually mutate the frame until, based on the summed distance in colourspace between each pixel of generated and source was reduced by a certain amount per-frame. Here's some still images, using this method:
Since this method wasn't proving viable for actual animation, I decided to look at other ways of creating interesting images based on pre-existing images; algorithmically that still ahd the appearance of creativity. Obviously, these renders are still very infant; and the concept is mere prototype at this stage; but what I am doing is using a Boids agent with many more parameters and influences. The individual agents (I call them Fish, with the analogy being, as I explained to my girlfriend, that the resulting effect should in theory be like fish in an aquarium schooling together and changing colour to reproduce an image; although they look more like worms than fish, with their long trails) can be attracted to certain colours, and will change their shape and behaviour based on their 'environment' - essentially the underlying image. If you review the canonical Boids implementation you will see that the new headings and speed for each boid is calculated mathematically. What I have done instead, due to the number of parameters that must be considered, and desired behaviours that you would want to 'blend together', is that each "Fish", during any simulation step, it may consider any action that is in its 'Action List' i.e. Turn Left, Turn Right, Speed Up, Speed Down, etc. It evaluates a score for all immediately available actions, assigning scores for categories like "Colour" (how far away is this Fish from its "Home Colour") "Heading" (how aligned is this Fish with its local neighbor?) "Clustering" (how many neighbors? if it's too many, it gets a penalty. Too few gets a penalty as well), and many other factors. Once it determines the total "penalty" (there is no move without cost!) it adds a wee bit of noise (0.01%) to the score, and picks the action with the best score. We'll see if it holds up for processing video. I have many more prototypes to make before determining if it is worth the effort; but for still images, the results are all ready pretty cool. I have some ideas on how to make it work for video clips, but that's for another day.... The goal is to eventually integrate several of these ideas into an application that could be used to produce some shots for a film-project I have been involved with off-and-on. If anyone is interested, I may upload a video of what this looks like running in real-time on a still image. The effect is quite neat. Edit: Here's another Lena, with different parameters. It looks a bit more painterly than the others.
[Edited by - djz on January 26, 2010 12:00:25 AM]
These images were created with a variation on Craig Reynolds's Boids algorithm. I have occasionally taken on work from some independent film-makers, mostly working with Photoshop on image-retouching & rotoscoping which has spurred on my interest of unusual/experimental animation techniques. What the pictures above relate to is my ongoing experimentation with using AI algorithms to "creatively" recreate images, with the ultimate goal of creating an automated computer-animator that will process and rerender video files with guided recreations. My previous thread dealt with "Evolved" images, ala Roger Alsing's method. I created a parallel implementation of it that relied on tree structures (essentially genetic programming with trees and terminals, but instead of performing computations, each tree would evaluate to a series of drawing commands that would ultimately recreate the image given your specifications..number of polygons, desired tints, etc.) While this created some striking effects, getting it to animate was another story. My approach was to take a base image, and then continually mutate the frame until, based on the summed distance in colourspace between each pixel of generated and source was reduced by a certain amount per-frame. Here's some still images, using this method:
Since this method wasn't proving viable for actual animation, I decided to look at other ways of creating interesting images based on pre-existing images; algorithmically that still ahd the appearance of creativity. Obviously, these renders are still very infant; and the concept is mere prototype at this stage; but what I am doing is using a Boids agent with many more parameters and influences. The individual agents (I call them Fish, with the analogy being, as I explained to my girlfriend, that the resulting effect should in theory be like fish in an aquarium schooling together and changing colour to reproduce an image; although they look more like worms than fish, with their long trails) can be attracted to certain colours, and will change their shape and behaviour based on their 'environment' - essentially the underlying image. If you review the canonical Boids implementation you will see that the new headings and speed for each boid is calculated mathematically. What I have done instead, due to the number of parameters that must be considered, and desired behaviours that you would want to 'blend together', is that each "Fish", during any simulation step, it may consider any action that is in its 'Action List' i.e. Turn Left, Turn Right, Speed Up, Speed Down, etc. It evaluates a score for all immediately available actions, assigning scores for categories like "Colour" (how far away is this Fish from its "Home Colour") "Heading" (how aligned is this Fish with its local neighbor?) "Clustering" (how many neighbors? if it's too many, it gets a penalty. Too few gets a penalty as well), and many other factors. Once it determines the total "penalty" (there is no move without cost!) it adds a wee bit of noise (0.01%) to the score, and picks the action with the best score. We'll see if it holds up for processing video. I have many more prototypes to make before determining if it is worth the effort; but for still images, the results are all ready pretty cool. I have some ideas on how to make it work for video clips, but that's for another day.... The goal is to eventually integrate several of these ideas into an application that could be used to produce some shots for a film-project I have been involved with off-and-on. If anyone is interested, I may upload a video of what this looks like running in real-time on a still image. The effect is quite neat. Edit: Here's another Lena, with different parameters. It looks a bit more painterly than the others.
[Edited by - djz on January 26, 2010 12:00:25 AM]


