On the one hand, our eye and its complexity: it is able to see millions of subtle colors. On the other hand, our computers, so powerful nowadays. How do they speak the same language?
Key points if you are a beginner ...
Here are the key points to remember on computers and colors. The rest of this page will be dedicated to those who want to go into more details.
How computers code colors ? Computers only know 0 and 1, to work with. This is called a bit. So if colors are coded on a single bit, we only have two options : 0=off and 1=on. This does not give many nuances ! To have enough nuances - we have seen on the previous page that we need at least 200 nuances per color - so it is necessary to code the colors on at least 8 bits per color which gives 256 possibilities each time. So, colors are coded on 8 bits 3 times (for RGB). It is said that colors are coded on 24 bits.
The eye is an extremely complex organ, the result of a long and slow evolution. This one allows us to see the world in color and see millions of them. But how does he achieve that ? What is a color and how the eye can see different colors? Why and when do we talk about gamma ? How to represent it digitally speaking ? These are questions that I will try to answer now.
Colors in the digital era
How to get to code millions of subtle colors with 0 and 1, since that's all a computer can do (but it does it very very fast and repeatedly if necessary, whew!)?
Colors and computers
Researchers have succeeded in modeling digitally the complexity of colors seen by a human being. They had to start from the basic way of working of a computer, that is to say, 0 and 1 (this is called a bit) and the human eye that sees in RGB on 200 levels of colors on an average basis. For that, they had to invent models based on these 0 and 1 to display, for example, one color or another on a monitor. These mathematical models are the bit and byte (a byte is 8 bits).
Bit and Byte
A bit has two possibilities : 0 or 1. It is written 2¹. A byte is made of 8 bits, that is to say a sequence of eight 0 or 1. It represents 28 possibilites (8 choices of 0 or 1) or 2x2x2x2x2x2x2x2 = 256 combinations!
I will take a red pixel on my monitor as an example and assume that I only have these two numbers - 0 and 1 - at my disposal, because I have a very rudimentary computer! Either I send 1 (one small electrical current to my pixel) and I switch it on, or I send a 0 (no electrical signal) and it remains off. I thus have two possibilities: 0 or 1. O to tell the signal: switch it off and 1 to tell the signal: switch it on! However, I know that my monitor is capable of displaying the red pixel lighter or darker nowadays, with subtle differences, subtle differences my eye is able to perceive. The same is true for the other two colors G and B. The goal, let's not forget, is to display an infinity of colors! So I need more than a bit but then how many bits, how many figures do I need to code my signal?
With one figure - 0 or 1 - I have 2 possibilities. My signal is coded on 1 bit, written 2¹.
With two figures - 00 or 01 or 10 or 11 - I have 4 possibilities of brightness level: off, dark, light, very light. My signal is coded on 2 bits - 2².
With three figures - 000 or 001 etc ... - I have 8 possibilities. My signal is coded on 3 bits - 2³ or 2×2×2=8.
And so on... to what limit?
But after conducting tests on numerous human beings, other researchers of the CIE around 1930 found that, in the best case, 200 shades in a gradient of one color could be perceived as continuous, from the darkest to the lightest, as in the example below. There are at least 200 shades of blue in the gradient below (top one). If there were less, you would have the impression to see bands - known as tone breaks - in this same gradient, bottom one here.
And these are human beings who have an excellent acuity because after a test conducted in 1998, most people only see 2 million color shades. So on how many bits - how many digits - do I have to code my signal to have at my disposal at least 200 combinations per primary color ? The result is 28 = 256 possible values from 0 to 255. With 7 digits - 27 - I would have only 128 possible combinations by color. Incidentally, for many people it would have been sufficient! With 8 bits, I have 256×256×256 possible combinations (256 for each primary color) hence more than 16.7 million!!! Ideally, the human eye would actually need: 200×200×200=8.000.000 so it's even going to be too much... So, I have 16,7 million different RGB computer definitions to describe 8 million colors. As the 28 combination is unique, computer scientists gave it a special name: the byte. The byte is therefore based on the properties of human eye!
Note about color definitions
Needless to say that the eye can only percieve 200 shades per color in the best case, so it will perceive the same color if the monitor displays 200, 200, 200 or 200, 200, 201 or 199, 200, 200 hence three different color definitions, in this example, and I could even have gone further.
Try it: take a color and just change it from one point on one, two or even three of its RGB componenets and you'll see that the difference is extremely subtle! The eye distinguishes 100 to 200 shades per color. That's why the word used is color definition and not color when a color is described with an RGB signal.
It is said that the signal is encoded in 24 bits - 3 × 8 bits - so on three bytes as a byte = 8 bits. Each signal is a series of eight 0 or 1, three or four times for each RGB or CMYK color. An RGB signal will thus be written as 255, 112, 44, for example (the red being fully lit , green at 112 and blue at 44 hence quite dark).
Colors and numbers!
Now that we know how to represent a color digitally speaking, let's send a given RGB signal, still the same - 255, 112, 44 - to different monitors (like the walls of monitors of household appliances stores). What happens there? None of the monitors displays the same color! Indeed, the RGB filters placed in front of each pixel of a screen will be different from one screen to another but even more between screens of different models or from different brands. The RGB color model does not allow to display the same color directly on several different devices. As we have seen in the introduction, a model had to be invented, independent from human eyes, their minor differences and different devices: the L*a*b* model. The L*a*b* color space was invented in 1976 by the CIE. A L*a*b* color only matches a single color therefore a single wavelength. So for the same red pixel, displayed on each screen that was sent the same RGB signal, a one and only L*a*b* color will correspond, slightly different each time.
Very important !
To a given digital signal - so a given RGB triplet, in our example 255, 112, 44 - may thus correspond several different color feels for a person with a "normal" acuity, if it is sent to different screens for instance. Therefore, It is essential in color management and what follows to always have this notion in mind.
An RGB signal doesn't "really" represent a color - even if it is based on the model of human eye - but a digital piece of data (a color definition) which, sent to a specific device, is translated into a given color (a L*a*b* color) that depends on the components that were used to make it. The RGB model is thus convenient to use since it is based on the functioning of the eye but isn't absolute at all, unlike L*a*b*.
On the contrary, if I want to display the same color on multiple monitors, I will have to send them a different RGB signal! If I want to display a medium neutral grey (usually 100, 100, 100) on different monitors, I will have to send them different RGB signals, like x, y, z for the first one, x', y', z' for another rather than x, x, x as could be expected. As it is virtually impossible to know what value should be sent to a given monitor to display the "right color", they must be calibrated with a colorimeter and for each monitor, have a little file containing this valuable information: an ICC profile. Therefore, ICC profile is the basis of color management.
To be remembered!
Computer science is about playing with 0 and 1. The smallest unite is called a bit. A bit stands for 2 possibilities: 1 = on or 0 = off.
In order to code colors, a bit isn't sufficient: on or off because a multitude of color shades must be displayed. If a bit stands for 2 possibilities: on or off, then more bits are needed to code colors. 7 bits for instance would give 128 possibilities of shades (27 = 2x2x2x2x2x2x2 = 128 possibilities) for each primary color (RGB). Colors must thus be coded on 8 bits in order to have more than the 200 possibilities needed. It is even too much since it represents 256 possibilities with 8 bits.
"Digital" colors are coded on 8 bits (255 levels where 200 would be sufficient, but we are stuck with that, due to computer structure): as this value is strong and important, since it allows to code colors that humans see, the computer scientists gave it a name: Byte.
As colors are coded on one byte for each RGB component, it is said that colors are coded on 24 bits.
A couple of RGB values does not represent a color in itself but only a color definition: a color definition may then represent many different colors depending on the color space that we'll see later...
How represent one color perceived by a standard eye for a digital couple then, if for a given monitor, I have to send it an xyz RGB signal and not xxx, to display a neutral color? Here comes CIE again to answer this question. This is what we will see with color space and color model, in the next page. But before that, I want to clarify another important notion which is the notion of gamma of the eye or of a monitor - The gamma of the eye or a monitor
This site is entirely free of charge and yet almost free of commercial ads. Why? Well because they're ugly! So apart from this banner, you won't find any other commercial spaces. But you have to admit that advertising is pretty profitable and that it enables many websites to keep on living.
So I asked myself the question: what can I do since this website can only continue its growth generating regular incomes, like all other websites. How can I keep on giving access to all this information for free, which I've historically been doing since April 2002 (in french)?
Well thanks to affiliate programs. Meaning that every time you click links from this site towards my partners', Amazon.com, B&H, etc, they know you're referred by me and give me a small percentage on the sale. It doesn't cost you anything! Everyone wins: you, them, me. And also, feel free to contribute here: