RGB 565 - Why 6 Bits for Green Color

To pack a colour in 2 bytes = 16 bits, you have 2 commons ways:

  • encode the RGB components in 5 bits each. This is easiest to code/decode and provide a consistent gradation, at the expense of wasting 1 bit.

  • encode 2 colours in 5 bits and one in 6 bits. That way you don't waste any precious bit but now you have to deal with the discrepancy of encoding/decoding. The green channel was chosen to be 6 bits because our eye is more sensitive to gradations of green than gradation of red or blue (we're quite poor at differentiating blue actually).

Actually, the eye is more sensitive to gradations of yellowish-green rather than just green because that's when both types of receptors in the eye (cones) are stimulated together.

Here is the gamut of observable colours, as defined by the CIE 1931 color space standard:

Colour Gamut

Even though what you are seeing is not accurate since it's represented on a computer screen which has an inferior gamut than what the human eye can see, you can still see that the amount of visible light in the various greens contains more variation than in the blue, or even red.


This is likely due to the response of the cones in the eye. Basically we are more sensitive to light in that part of the spectrum as the different cones* overlap strongly there. Whereas most light in the blue end of the spectrum, for example, is primarily picked up by only one.

It makes sense to spend the additional bit where it will do the most good.

*There are 3 types: the aptly named Red, Green, and Blue cones.

enter image description here

Tags:

Image

Rgb