Tuesday, 24 April 2012

Color Histograms - Charts and Clouds


Color Cloud
How hard can it be to produce distributions of various colors in an image, like the set above? Well, I realized after some tinkering with the Aggregate Posters I had created is that it isn't a linear leap from one-dimensional histograms.
There seem to be two confounds. One is the obvious one of showing a three-dimensional distribution in two-dimensions. And the other is the perceptual confound of showing actual colors without contextual interactions (Here's the link to the abstract if you are blocked by a paywall). The usual method of plotting histograms separately for each of the three primary color bands is hardly optimal. There's no reason to believe that the peaks of the individual bands correspond to the same triplet of color, and the even the fundamental idea of showing spectral densities with graphs that could just as well be used for any universal triplet is dicey. Why not have the graphs speak to you in the visual language of color when they are supposed to be describing color?
As a starting point I decided to bin the color triplets into bands of 25 gray-scale values in each of the RGB band. That is, each (r,g,b) triplet is truncated as (r*,g*,b*) where each value can only be a multiple of 25 up to a maximum of 255. That gives you a resolution of 11^3 voxels in the entire color space covered by a 24-bit representation. The next step is deciding how to order the bins. Our perception of color difference varies quite a bit from the euclidean distance between two color triplets. It seemed prudent to take brightness out of the mix by normalizing all triplets by the sum of their values, making them (r/(r+g+b), g/(r+g+b), b/(r+g+b)) and then ordering them with (1,0,0) (primary red) as the leftmost point.
We can do better. There's no reason to stick to a one-dimensional representation when we are so adept at analyzing spatial arrangments of colors. Why not try using this ability to our advantage?
Aside: Chernoff Faces are a lovely example of using our immense computing prowess in creative ways.
The color cloud depicted above is one attempt at obtaining two-dimensional representations. Color densities are converted into scattered random dots around the spatial position assigned to the color triplet, with the extent of the spatial position determined by the frequency with which that triplet appears in the image. So, more frequent a color, larger the pointillistic blot of that color. After multiple attempt at achieving a good separation of the three colors, I decided on the following x and y transformations for the triplet (r,g,b):


x= Sigmoid((g-r+1)/2)


Check Out: http://cns.bu.edu/~gsc/ColorHistograms.html


No comments: