What an excellent article. I can't think of anything (except the very esoteric) that it did not cover.
If I had to criticize, I wish it had talked a bit more about printer color profiles (although in this paperless, web-world we live in, perhaps printing is in fact esoteric).
Unlike displays, a printer can't be simply defined with three primaries and a white point. Printer profiles can be quite large as they rely on someone having printed out a copious number of swatches on a given paper type and then measured (with some kind of colorimeter) device independent color values for each swatch. Those are used to build a large table for mapping from device independent color spaces to the printer's gamut.
Those large tables make the profile so large. And then of course interpolation is still required when mapping from a device independent color space to the printer profile. (Now imagine too that you need a different profile for each type of paper you might want to print to since each can represent color differently — plain paper unable to get the levels of saturation that a coated paper can.)
What was shocking to me was just how small the gamut of a printer typically is when seen alongside that of a decent display.
Consider that, in print, you'll never see an image as vivid as you can display on a nice, modern display. (And then consider that there are colors in nature so vivid that even a modern display cannot represent them. Just look at how much color is outside the triangle on the CIE "shark fin" color representation.)
Also not touched on (did I miss it?), all the math presented to map from one color space to another, also allows for "soft proofing" — where in fact you might match to a printer ICC profile but then take the result and match again to the user's display to give you a "preview" of what will be lost when going to said printer.
I suspect that the biggest limitation in printing vs. emissive displays is the simple fact that your contrast ratio and color reproduction is severely limited in printing, because the dye is modifying ambient illumination.
This affects brightness and contrast: For emissive displays, you can have emissive values that are several to many orders of magnitude brighter than the 'black point', and more importantly, the primaries are defined by the display, not by ambient illumination.
Part of the magic of HDR displays is manipulating local masking (a human perceptual quirk) to drive bright regions on a display much brighter than the darker regions, so you can achieve even higher contrast ratios than the base technology could achieve (LED back-illuminated LCD panels, for many consumer TVs). Basically, a bright pixel will cause other nearby pixels to be brighter, because you can't see the dark details near a bright region anyway — but other regions could be darker, where you can perceive more detail in the blacks. This is achieved by illuminating sections of the display at significantly higher or lower levels, based on what your eyes/brain can actually perceive. That leads to significantly higher contrast ratios.
(As a heuristic: photographers generally say you can only get ~5 stops of contrast out of a print. (That is, bright areas are 2^5 times brighter than the darkest regions.) Modern HDR displays can do 2^10 or better. YMMV.)
But this also affects color... much of the complexity in getting printers to match derives from the interaction between the imperfect gamut caused by differing primaries, as filtered through human perception (and/or perceptual models). But you can't control the ambient illumination, so you're at the mercy of whatever the spectrum of your illumination is, plus whatever adaptation the viewer has. This feels fundamentally impossible to do "correctly" under all circumstances.
Which is to say, the original sin of color theory is the dimensional collapse from a continuous spectrum to a 3-dimensional, discretized representation. It's a miracle we can see color at all...!
> the primaries are defined by the display, not by ambient illumination
In itself that is correct, but as you've noted, our own vision system isn't operating like that. The same display brightness and colors will be perceived very differently depending on the ambient light's brightness and color, and can also mean a severe breakdown in the dynamic range that can be made visible via a display.
And this ambient light also clearly impacts how prints are seen.
There's a lot to cover. HDR is coming to the web (and already exists on native) and there's certainly lots of issues doing it correctly, and, learning all of the various parts and how to deal with them. (HDR input data, HDR processing, HDR output, the display itself which may or may not be HDR and even if it is HDR might only have so much "headroom", etc..., and there are tradeoffs at each step.
Maybe not appropriate for that particular article but definitely appropriate for the site
Even native still has tons of issues, like the fact that AFAICT, no OS does HDR screen capture. You're viewing an HDR image, you ask the OS to capture the screen. It gives you an SDR capture :( On Mac and iOS that's certainly true. On Windows, the XBox Game Bar thingy will actually capture HDR but the OS level PrintScreen method will not, and the popular ShareX will not either.
With a few hacks, you can already get web content rendered with HDR: https://fff.kidi.ng/.
That reminded me of a time when a printer manufacturer approached my old team with this problem. They needed a custom driver for a certain region of the world. In this region in a certain industry they liked the highly saturated 'bad' colours from a competitor, and wanted theirs to match. Much paper and ink was spent on this.
Not all people see colors the same. The section on "What is color?" could probably mention color blindness.
This app is one that I rely on for my testing: https://michelf.ca/projects/sim-daltonism/
Add to that the idea that some cultures have fewer color terms than others. This actually impacts upon their perception of color.
Check out "Basic Color Terms: Their Universality and Evolution" by Brent Berlin and Paul Kay.
It does not affect perception. This is one of those early anthro/cogsci results that said more about the authors' cultural bias than it did about the people being studied, up there with "Eskimos have a thousand words for snow".
It affects communication. People can still discern the difference between colors, they just don't have an easy way to communicate this difference to others.
The Japanese language until relatively recently didn't have a clear verbal distinction between what we call green and blue in English. That doesn't mean Japanese people can't tell the difference between green and blue. It just means that there is a kind of "blue" that is the sky and a kind of "blue" that is for traffic control lights, and in context nobody is confused.
The same issue can occur within a language between people with differing levels of study of color. A graphic designer might say a particular shade of green is "chartreuse" that his boss instead might call "yellowish green".
> up there with "Eskimos have a thousand words for snow".
Bad example. It seems that there is still a lot of disagreement on this matter, much of it rooted in what constitutes a word.
A well-balanced article on the subject here:
https://linguisticdiscovery.com/posts/inuit-words-for-snow/
Edit…
Also, from that article, a fascinating study: ‘Russian blues reveal effects of language on color discrimination’
Wonder how this applies to animals since their color discrimination would not be impacted by language. Did humans evolve linguistic abilities that alter sensory processing? Seems odd that animals would be able to discriminate colors their eyes can see just fine, but humans would need words to do so.
Good question. I'm no expert, but I guess that the key issue is one of categorization. Without language, it is impossible to effectively categorize our perceptual domain.
It is also true that among mammals, chromatic vision is pretty much restricted to primates. The ability to perceive difference of light is a must if you don't want to become someone else's food. In contrast, chromatic vision is an 'extra' that in many ways serves as a (literally) florid extension to our lives. To me it is no surprise that range of emotion and range of hue are so often associated with each other. Interestingly enough, they are similarly mapped: as a set of differences, rather than as a degree of intensity.
> perhaps printing is in fact esoteric
You'd be surprised. It may be heading that way, to arrive in a couple more decades, but not yet. It's still quite the industry (that I'm in).
> What was shocking to me was just how small the gamut of a printer typically is when seen alongside that of a decent display.
What was a nightmare for me when I worked in prepress was how hard it is to get a convincing purple out of a $20K printer. I used tricks which basically produced nothing like purple in a way that gave customers a good purple impression because the things with a closer actual resemblance to purple always looked awful.
Purple and orange were/are common spot colours for that reason.
My father used to work on all sorts of R&D involving things like how much K to use in substitution of CMY without getting desaturated etc. It's a real rabbit hole, especially if you want to reduce the amount of ink used to prevent soaking the paper.
One of the tricks we used in situations that allowed it was to get paper that matched the most important color, this has other downsides but they are more manageable. They were always the last run before everything was taken apart and cleaned for maitenance.
The article skipped a bit on explaining the CIE-XYZ space. Although it is quite simple.
There is one axis Grayscale - that gives you the Brightess value. You can use that for black/white TV.
Now for colour you have 2 dimensions left. For these you pick one axis, where the eye is most sensitive - and perpendicular to that you have one axis, where the eye is least sensitive.
This colour space is the oldest and all axis there make sense. You can easily compare brightness, and you e.g. can assign more bandwidth to the sensitive colour axis if you want.
Recently saw this useful video on colors https://aeon.co/videos/after-centuries-of-trying-weve-yet-to...
Great read and excellent website. Is there a specific name for this web design style? I would have liked to see more websites like this or similar ones for inspiration.
Really great introductory article on color space in general, I really appreciate that they touched on perceptual uniformity and how we all perceive colors differently. It’s great to find out that applications like Oklab came out recently to fix this by manipulating the distances between colors to try compensate for human perception while also being more straightforward to calculate so that it can be used in real-time applications. Also the UI of this blog post was so aesthetically pleasing, that it was worth burning my retinas with the light mode
Nice article, I came across very cool Python library recently too re. colour science - https://www.colour-science.org/
Just started playing with it with my spectrometer based on one of the examples they have, to convert spectral data to a single RGB value.
This is a great primer. I used to work in this field, but not as a colour scientist.
> So why do we have so many different color spaces?
I think there was a missing piece here. Different representations of colour are useful for different things. I'm not going to give any secrets away but...if your trade involves finding out how close one colour is to another, then something that represents colours as points in space could make the maths easier. Then if you wanted to know if one colour was brighter than another, then something that represents a colour with a separate 'brightness factor' would make that trivial.
as post production guy living outside US/EU, a decade or so ago i was surprised that colorimeter was supposed to be regularly calibrated by another, more expensive, device.
We were big fans of Marti’s LCMS.
There's a nice YouTube video that covers a bit of the history of colour spaces to I was watching yesterday https://youtu.be/7KYwi2F5Ce4?si=DUxIWDe_SEjwhdeI
A very clear article, written in very accessible language. One potentially relevant thing not covered is the existence of super blacks and super whites, values which (as a budding vfx artist) I often need to consider. These are values which exist in the abstract sence, but not in the perceptual sence. Specifically, values darker than black and lighter than white.
They are as good a demonstration as any of the notional nature of color spaces.
That's a terrific article!
I spent the majority of my career at an optical equipment manufacturer, and we wrote a color management system to handle 48-bit color, before any OS manufacturers had it.
Non-trivial stuff, but powerful.
I know of at least one technology that works by converting to an esoteric color space, messing with image data there, then converting back.
Indeed... and it was always a huge amount of fun to find that converting from one space to another was not always reversible without distortion!
I love that this opens with a matter-of-fact statement that colors aren't real, just a phenomenon of perception. This has come up randomly in my life a few times and people always look at me like I'm stoned outta my mind.
And what is not just a phenomenon of perception?
The light hitting our eyes is not a phenomenon of perception. Each photon hitting our eyes has a certain wavelength, but the resulting color we see is a perception.
A related concept is sound vs psychoacoustics[1]. Sound is just pressure waves, but what we hear is a perception and has all sorts of aspects like masking[2]. The pressure waves contains two different signals but thanks to masking we might only perceive one.
Personally I think color constancy[3] really drives home that color is a perception and not something fundamental like the wavelength of photons.
[1]: https://en.wikipedia.org/wiki/Psychoacoustics
The association of specific wavelengths to hue exists only in our perception, nowhere else.
On the other hand, we perceive temperature yet its impact on the physical world is universal.
Mathematical proofs based upon axioms?
Fun fact: just like people have different heights, they have different perceptions of color!
Such an amazing article. Hope the author continues with the rest of the content in the same manner.
One crazy thing you can do with color spaces is dramatically improve detection algorithms and store massive data.
https://austingwalters.com/chromatags/
Think of it this way, a QR code is binary. If you modify color spaces correctly you can get 6 bits (or more) per pixel. In addition, you can improve the detection at distance, localization for robots, and speed (120 fps).
Done this to great effect previously and you can do a lot of awesome things with it. Pretty much the easiest hack in computer vision.
Such a great read
This is a great article about the topic! It covers everything.
But can someone explain this to me?
>Light is technically something called electromagnetic radiation and it has a frequency and wavelength. That wavelength can vary, depending on the energy of the wave. High energy waves have a higher frequency and shorter wavelength, and low energy waves have a lower frequency and longer wavelength.
>This means that the same amount of energy at different wavelengths will not be perceived as the same brightness. For example, a light with a wavelength of 555 nm (green) will appear brighter than a light with a wavelength of 450 nm (blue) even if they have the same energy.
The article asserts that the wavelength (thus color) changes with the amount of energy, but then it says that you can have light of different wavelengths (color) with "the same energy."
He confuses two different places there is energy. Light is made (this is a little bit of a cheat) of photons. Each photon has a wavelength λ, and a per photon energy E where E = hc/λ, h is Plank's constant and c is the speed of light constant. So energy and wavelength per photon completely determines each other (and the color of the light of that single photon).
These energies are very small. You can add a lot of photons per second, increasing the brightness of that color, and this now has the energy per second of all those photons. So you can have a lot of red photons which sum to some energy, or a different number of blue photons that sums to (very, very close) the total red energy.
These are the two energies he confuses in those two places.
The amount of energy in a wave depends on both its wavelength and amplitude.
So a "blue wave" has more energy than a "red wave" if both have the same amplitude (blue has a shorter wavelength, and energy is inversely proportional to wavelength). But you can have a "blue wave" with the same energy as a "red wave" if you increase the amplitude of the "red wave" to compensate for its longer wavelength.
Oh, that makes sense! Thanks.
So that means blue has more energy because it pulsates faster, and in spite of this we're less sensitive to it than we are to red, which pulsates slower. It's like our light sensitivity forms some sort of bell curve.