Humans have a very constrained way of perceiving color. We can only see a very specific range of colors which is dependent on cells in our eyes transmitting signals to the brain.
Because of this, in scientific color theory, it is very difficult to quantify and compare the colors we see without perceived irregularities. It’s especially difficult when trying to code programs to show us differences in color or create values to represent them.
Let’s say you take two colors and want to create a gradient between the two, and want 6 different colors in between. How do you pick those colors? This is where CIE color space comes in. It is a mathematical formula that plots colors in a 2D graph based on human perception. It plots the visual color spectrum in a way that allows us to more uniformly pick the remaining 6 colors.
The problem is, there are additional constraints in human vision that alter the way we see certain colors. We have problems with colors that are reddish-green, and yellowish-blue. We also perceive colors based on how light or dark they are and how reflective they are. This is where CIE LUV and CIE LAB come in. by taking the CIE color space formula and adding additional dimensions and values, we can more easily find those 6 colors while also addressing the limitations on our vision making the choices even more uniform. We can also determine differences in colors based on whether they are a shiny object in front of us, or a computer screen with uniform lighting.
The CIE 1931 color space is a very abstract way of thinking about the range of color vision. Its goal is basically to have a coordinate for anything that a “normal” human visual system could possibly experience. It’s abstract, though, in the sense that (for example) there are no monitors or inks that can display all of it. You’d need an infinite number of primaries. It’s useful as a way of relating different color spaces together in mathematical terms. If you’re making a new color space, a good idea is to define it in terms of the CIE space, because then you can translate between it and that space, and from the CIE space to every other space that’s defined in its terms.
LUV and LAB are ways of addressing the underlying CIE color space with different coordinate systems. They’re pretty closely related; both are what’s called an opponent color space, and instead of being based primarily on the “hardware” of the eye, are based primarily on the “software” of the mind: how artists and other experts tend to organize color in practice. This means that instead of thinking of a color in terms of which eye cells it stimulates, we think of it as living in a 3D structure that’s like a color wheel plus a dark-to-bright dimension called L for luminance. (You also see the concept of lightness, but the distinction is not super important here.)
The differences between LUV and LAB are important as you get to a more advanced level of thinking about color spaces, but actually fairly small in conceptual terms. In general, LAB is more useful to more people for more purposes. There are a number of simple, pragmatic, software-oriented color spaces that use CIE LAB as a general starting point, for example YCbCr, Oklab, and Jzazbz.
This is only going to be skimming the surface but hopefully I put this together well enough to cover some of the key points of why these exist, feel free to reply if i messed anything up, or if you want to expand any points I made or missed.
RGB just measures the intensity of beams of red, green and blue light in order to create colors, which is based on the concept of the human eye having three color receptors.
CMYK is sort of an inverse of RGB used in printing, since with dyes on paper you’re absorbing light, not emitting it. Cyan absorbs red, reflecting blue and green, magenta absorbs green, reflecting red and blue, yellow absorbs blue, reflecting red and green, black absorbs all colors, to make darker tones.
CMYK is still fundamentally based on the RGB theory, except using light absorption instead of remittance.
One problem with the above is that the “RGB” system is am abstraction of what the eye is really doing. From CIE’s 1931 published standards on RGB and the derived XYZ system:
> pure spectral colors would, in any normal trichromatic additive color space, e.g., the RGB color spaces, imply negative values for at least one of the three primaries because the chromaticity would be outside the color triangle defined by the primary colors.
>
> To avoid these negative RGB values, and to have one component that describes the perceived brightness, “imaginary” primary colors and corresponding color-matching functions were formulated. The CIE 1931 color space defines the resulting tristimulus values, in which they are denoted by “X”, “Y”, and “Z”.
Some real colors required negative intensities of light in either R, G, B channels to achieve: which explains why they’ll say RGB monitors can’t display all possible colors.
XYZ was CIE’s 1931 attempt to simplify the math and avoid negative values, but you’re effectively mixing three “impossible” colors together to somehow end up with all the real colors, so it was mathematically better than RGB but the meaning of the XYZ isn’t exactly intuitive.
Another issue remains: the XYZ data is just a linear transform of the RGB data, and doesn’t match how changes in values affect changes in perception. Based on updated research, 1976’s LUV is a simple transform for the existing XYZ which improves that (i.e. small changes in values equal small changes in perception):
> In colorimetry, the CIE 1976 L, u, v* color space, commonly known by its abbreviation CIELUV, is a color space adopted by the International Commission on Illumination (CIE) in 1976, as a simple-to-compute transformation of the 1931 CIE XYZ color space, but which attempted perceptual uniformity.
1976’s LAB is also updated with new the perception research (1950s – 1970s) and takes the Opponent Model of color perception into account:
> L for perceptual lightness and a and b* for the four unique colors of human vision: red, green, blue and yellow … The CIELAB space is three-dimensional and covers the entire gamut (range) of human color perception. It is based on the opponent model of human vision, where red and green form an opponent pair and blue and yellow form an opponent pair.
It still has three dimensions, however now L = brightness, A = Redness vs Greenness, and B = Blueness vs Yellowness, and is based on the opponent model of color perception. The advantages of LAB are that like LUV, it takes perceptual uniformity into account, but the meaning of the three channels is far more intuitive.
Comments
Humans have a very constrained way of perceiving color. We can only see a very specific range of colors which is dependent on cells in our eyes transmitting signals to the brain.
Because of this, in scientific color theory, it is very difficult to quantify and compare the colors we see without perceived irregularities. It’s especially difficult when trying to code programs to show us differences in color or create values to represent them.
Let’s say you take two colors and want to create a gradient between the two, and want 6 different colors in between. How do you pick those colors? This is where CIE color space comes in. It is a mathematical formula that plots colors in a 2D graph based on human perception. It plots the visual color spectrum in a way that allows us to more uniformly pick the remaining 6 colors.
The problem is, there are additional constraints in human vision that alter the way we see certain colors. We have problems with colors that are reddish-green, and yellowish-blue. We also perceive colors based on how light or dark they are and how reflective they are. This is where CIE LUV and CIE LAB come in. by taking the CIE color space formula and adding additional dimensions and values, we can more easily find those 6 colors while also addressing the limitations on our vision making the choices even more uniform. We can also determine differences in colors based on whether they are a shiny object in front of us, or a computer screen with uniform lighting.
The CIE 1931 color space is a very abstract way of thinking about the range of color vision. Its goal is basically to have a coordinate for anything that a “normal” human visual system could possibly experience. It’s abstract, though, in the sense that (for example) there are no monitors or inks that can display all of it. You’d need an infinite number of primaries. It’s useful as a way of relating different color spaces together in mathematical terms. If you’re making a new color space, a good idea is to define it in terms of the CIE space, because then you can translate between it and that space, and from the CIE space to every other space that’s defined in its terms.
LUV and LAB are ways of addressing the underlying CIE color space with different coordinate systems. They’re pretty closely related; both are what’s called an opponent color space, and instead of being based primarily on the “hardware” of the eye, are based primarily on the “software” of the mind: how artists and other experts tend to organize color in practice. This means that instead of thinking of a color in terms of which eye cells it stimulates, we think of it as living in a 3D structure that’s like a color wheel plus a dark-to-bright dimension called L for luminance. (You also see the concept of lightness, but the distinction is not super important here.)
The differences between LUV and LAB are important as you get to a more advanced level of thinking about color spaces, but actually fairly small in conceptual terms. In general, LAB is more useful to more people for more purposes. There are a number of simple, pragmatic, software-oriented color spaces that use CIE LAB as a general starting point, for example YCbCr, Oklab, and Jzazbz.
This is only going to be skimming the surface but hopefully I put this together well enough to cover some of the key points of why these exist, feel free to reply if i messed anything up, or if you want to expand any points I made or missed.
RGB just measures the intensity of beams of red, green and blue light in order to create colors, which is based on the concept of the human eye having three color receptors.
CMYK is sort of an inverse of RGB used in printing, since with dyes on paper you’re absorbing light, not emitting it. Cyan absorbs red, reflecting blue and green, magenta absorbs green, reflecting red and blue, yellow absorbs blue, reflecting red and green, black absorbs all colors, to make darker tones.
CMYK is still fundamentally based on the RGB theory, except using light absorption instead of remittance.
One problem with the above is that the “RGB” system is am abstraction of what the eye is really doing. From CIE’s 1931 published standards on RGB and the derived XYZ system:
> pure spectral colors would, in any normal trichromatic additive color space, e.g., the RGB color spaces, imply negative values for at least one of the three primaries because the chromaticity would be outside the color triangle defined by the primary colors.
>
> To avoid these negative RGB values, and to have one component that describes the perceived brightness, “imaginary” primary colors and corresponding color-matching functions were formulated. The CIE 1931 color space defines the resulting tristimulus values, in which they are denoted by “X”, “Y”, and “Z”.
Some real colors required negative intensities of light in either R, G, B channels to achieve: which explains why they’ll say RGB monitors can’t display all possible colors.
XYZ was CIE’s 1931 attempt to simplify the math and avoid negative values, but you’re effectively mixing three “impossible” colors together to somehow end up with all the real colors, so it was mathematically better than RGB but the meaning of the XYZ isn’t exactly intuitive.
Another issue remains: the XYZ data is just a linear transform of the RGB data, and doesn’t match how changes in values affect changes in perception. Based on updated research, 1976’s LUV is a simple transform for the existing XYZ which improves that (i.e. small changes in values equal small changes in perception):
> In colorimetry, the CIE 1976 L, u, v* color space, commonly known by its abbreviation CIELUV, is a color space adopted by the International Commission on Illumination (CIE) in 1976, as a simple-to-compute transformation of the 1931 CIE XYZ color space, but which attempted perceptual uniformity.
1976’s LAB is also updated with new the perception research (1950s – 1970s) and takes the Opponent Model of color perception into account:
> L for perceptual lightness and a and b* for the four unique colors of human vision: red, green, blue and yellow … The CIELAB space is three-dimensional and covers the entire gamut (range) of human color perception. It is based on the opponent model of human vision, where red and green form an opponent pair and blue and yellow form an opponent pair.
It still has three dimensions, however now L = brightness, A = Redness vs Greenness, and B = Blueness vs Yellowness, and is based on the opponent model of color perception. The advantages of LAB are that like LUV, it takes perceptual uniformity into account, but the meaning of the three channels is far more intuitive.