Making One Image From the Pixels of Another


My idea was to take the pixels of one famous painting and rearrange them to try to form the image of another famous painting.  The pixels cannot be altered in any way, and each pixel has to be used exactly once.  The concept notwithstanding, the results were not as interesting as I'd hoped.  They mostly look like strange colorizations of the target image.


Source Pixels Target Image Resulting Rearrangment

Van Gogh's Starry Night

Leonardo da Vinci's Mona Lisa

Edvard Munch's The Scream

Leonardo da Vinci's Mona Lisa

Picasso's Three Musicians

Monet's Woman, Umbrella Turned to the Left

Picasso's Three Musicians

Tommie Smith and John Carlos
at the 1968 Summer Olympics

Richard Diebenkorn's Cityscape I

Gustave Caillebotte's Paris: A Rainy Day

How To Make Them

The process of making these is pretty much the same as making a photomosaic except that the source images are all 1x1 pixel.  At first I thought I'd need to split each soure image into n 1x1 images and then use a photomosaic tool, but as it turns out metapixel already supports this:
metapixel --metapixel target_image.jpg output_image.png -x source_image.jpg -w 1 -h 1 --search global
Of course, the source and target images must have the exact same number of pixels for this to work.  That was accomplished easily enough with netpbm:
djpeg full_size_image.jpg | pamscale -xsize 63 -ysize 84 | cjpeg > small_image.jpg
The hard part was finding a set of dimensions for the source and target that gave the same number of pixels.  Most of the source images need some distortion to accomplish this.

The problem with metapixel is that it uses a lot of memory when called with --search global -w 1 -h 1.  The tiny examples above consumed 500MB of memory on each run!
Chez Zeus:Rearrangements

Anti-©2006 Dr. Zeus. 
Last Modified: