Original proposal: Halftoning with strange image primitives.


Here was one of various ideas. In NMM I said: it looks like it's almost the case -- but perhaps not quite -- that stuff from every single chapter of _NMM_ has been applied to halftoning -- maybe there's some leftover one that hasn't.

And Neil says: Oh, you make any progress and the image looks a tiny bit better. Why don't you do something weird, like halftone with strange primitives, like images? Etc.

So the aggregate suggestion was: halftone as well as possible given some odd set of component images, e.g. not many, and not all rectangles with the same aspect ratio, and above all not on a grid.


And I thought-- well, how about matching texture/shape a little as well as average tile HSV? Photomosaic, huh, I didn't realize it did some of that. Some wackier algorthim run on jpeg files to extract that, or wavelet-encode the images to find features? Oops, Finkelstein & Range, 1998 and before.

Well, how about you take a target image and a text file and a procedural font, and scale letter weight to match pixel value? Ack, Rudaz, Hersch, & Ostromoukhov, 1998.

But F&R decided to use tile H&S and target V, and all square images. And no one seems to have done a text version where the letter stress changes to reflect high-frequency information in the target image.


So here are some other ideas--

Use images of various sizes and get rid of the grid. Maybe institute some sort of force laws and let images float to where they should be, or pick feature sites to color especially well, construct Dirichlet domains around them, splot in image information, check the match, add image sites where the match is worst.

(_Really_ get rid of the grid by doing it all on the surface of a 3D object?)

could tile an image with pieces of itself taken from some minimum distance away, with, probably, repeats; maybe rescalings & rots.

Use source/tile images of various shapes-- maybe not even rectangles. Maybe crop or Magic Wand usefuly-colored regions out of them, with whatever tolerances. Use images for their interesting textures more than their _meaningful content; ignore the face or airplane in the picture and grab some blue sky if that's what's needed; let just the suggestion of a chromey bit of car show through over here. If I'm restricted to some odd small set of given/found objects, I'll take them apart and use what parts of them I want.

--such as their low-frequency components. Maybe "underpaint" with the (DC + a few terms) of larger images. Then dribble in small selections to gravitate toward features. In fact, you could animate sprinkling them on and having them relax or gravitate to where they should be.

At which point, you could begin to do video, or at least some small class of animations. If a tile/chunk/splat source is attracted to the regions of the target that it's a good match for, from one frame to another they'll just travel together, perhaps oscillating a little. If there's rotating/occlusion kind of things going on or something goes completely offscreen, you call some kind of Badness 10000, and dump those sources and add some new ones.

Mathwise, this could be a simulated annealing problem wrapped in a genetic algorithm (within an enigma?). You let the images settle to where they'd like to be based on some cost functions (cost to repeat a tile, quality of the match, etc.) and decide what the relative costs should be based on a surrounding GA with some human's taste for the fitness function.