|
I applied an algorithm used for topology mapping of a set of points to the color space of an image (left). I limited the algorithm to a maximum of 256 nodes, so there would be one node per output color. These nodes 'communicate' with each other, spreading across the color space so as to accumulate the least amount of error in their total approximation. Once the summed error of the network falls below a certain point, the nodes' coordinates are dumped as colors to an Adobe Color Table (.ACT) file, which is then loaded as a custom color table for indexed color conversion. The algorithm is very sensitive to the density of colors in the color space. At first, I thought this might be bad, so I wrote some code to even the density out. Then, I realized this caused the algorithm to allocate more nodes to colors which are more common in the image. This really balanced the color usage out in a very nice way. None of these images use any sort of dithering. There is a luminance histogram at the bottom of each image, and error statistics showing the total error between the pixels of that image and the original 24-bit version. These stats are NOT related to the histogram. Update: I have removed Photoshop's "Local Adaptive" and "Local Selective" comparison images, because they are both nearly identical to Photoshop's "Local Perceptual" output. The extra images were just wasting space for the sake of being thorough. First test: twilight snow in Owatonna, MN (with some tail lights . . .)
Second test: downtown Squirrel Hill / Pittsburgh night shot.
|