Android color management: Everything you need to know
There has been a lot of talk about color management here and elsewhere on the internet lately. Android Oreo provides new support for color management, the Pixel 2 XL has a reputation for doing it poorly, and these two things combined make us want to talk about it. But, what exactly does color management mean?
Let's talk about that and a bit about how and why it's used, and maybe even some more cool stuff.
What is color management?
Don't laugh, but you have to understand just what color is based on the way our eyes see it before you talk about how our gadgets try to do it right.
Color is easiest described as the result of Hue, Saturation, and Brilliance.
Light emits energy over specific bands or wavelengths, but our eyes can't see most of them. This is known as spectrum. Terms like IR (infrared, or longer wavelengths than the red end of the spectrum we can see) and UV (ultraviolet, shorter than the blue wavelengths we can see) are real and there is plenty of science about measuring their intensity but they don't have anything to do with color because color is a human thing.
In those wavelengths of light that are visible, Hue is the point where a band has the most energy, Saturation defines the bandwidth (where the emission of light begins on the spectrum and where it ends), and Brilliance is the intensity of a human-visible light wave. Hue defines what color our eyes will see, Saturation defines the purity of it, and Brilliance defines its brightness. Charts help, so here's one.
In this chart, red, green and blue all have approximately the same hue — they peak around 450 - 550 nanometers. Red has the most bandwidth (it covers more spectrum) so is less saturated than blue which has the least amount of bandwidth. All three colors have a very high brilliance where they peak, so they are equally intense. Our eyes interpret this as a muddy ugly yellow color. All colors created in red, blue, and green will have their own spectrum profile just like ugly-yellow does.
RGB stands for red, green, and blue. It's an additive model to create color, where light in each spectrum is emitted to create the color. If you have a color inkjet printer (remember those?) it creates a color using cyan, magenta, yellow and black (CMYK) as a subtractive model, where colors are applied so that the light reflected from a surface is a specific color. RGBA (the A is for Alpha and determines the level of transparency) is the model used on a display to produce a color, no matter what type of display is being used.
The color produced by a printer using the CMYK model and color produced on your phone's screen using the RGBA model have to appear the same to our eyes — red needs to look red.
This is color management in its most basic form.
Actual color management
There are a lot of different ways to "create" color. We looked at the HSB, RGB, and CMYK models above, but there are a lot of other ways to try and represent what the output of a light source looks like to our eyes. They were all designed so that pink looks pink, green looks green, orange looks orange, and so forth. We can get a good basic idea of what color is trying to be represented by any color model in any medium. But a basic idea just isn't enough.
The spectrum of colors is nearly infinite, and when you are using something capable of displaying more than a handful of them you need a way to make sure a particular shade of green looks the same to a person's eyes no matter where it's being displayed or what model is being used to create it. When you're dealing with the millions of different colors a modern electronic display can show, a good method to reproduce the correct color becomes very important.
You need a good screen
You start with the display itself. Any good high-end display needs to be able to reproduce a Wide Color Gamut. There are standards from the ITU-R (International Telecommunication Union - Radiocommunications Sector) that decides what a wide color gamut is, and they involve a lot of math and science. Thankfully, we don't need to do the math and only need to know what color spaces meet the standards. For our phones, that's usually the DCI-P3 color space.
The ill-fated Galaxy Note 7 is listed as the first phone to ship with a 100% DCI-P3 HDR display, but since we've seen DCI-P3 capable displays from plenty of companies. The iPhone 7 and newer ship with one, the OnePlus 5 and up have one, the HTC U11+ and the Pixel 2 XL and more all have 100% compliant DCI-P3 displays. This means that the screen can reproduce colors correctly and accurately to meet the ITU-R standards.
Then you calibrate it
Once you use the right hardware, calibration comes into play. Calibration is measuring the output of a display as it reproduces different colors and adjusting the hardware so that the readings meet a specific value. Because it's impossible to calibrate 16.7 million different colors, common colors spaces are used. The most common is sRGB (standard Red Green Blue).
Developed by HP and Microsoft, sRGB is the standard on monitors, printers and the internet when no specific color space is defined, and it's a very good standard. Calibrating for sRGB is fairly easy because you adjust with one channel at a non-zero value and the other two at zero and cycle through. That's why you'll see 255,255,255 expressed for a color (that one is white) or 255,0,0 (that's red). Once the chromatic of each primary channel is calibrated, every other color will be, too.
Ideally, this is what every company making a display does then it ships the display out the door.
Before Oreo, color management on Android was broken
The problem is that some companies using Wide Color Gamut displays would stretch the sRGB space and reinterpret the color values into their own unique gamut. This makes the three primary channels very oversaturated, which in turn means that every one of the 16.7 million colors the display was capable of showing was no longer calibrated to look the same on any other device.
Before Android Oreo, applications used the sRGB color space. There's a reason for this — low-end hardware. Displaying a wide color gamut takes more GPU and CPU power than the sRGB space. If Android were set up with a wide color space as the default, some of the phones people are buying would struggle to display it. Even if a phone's display wasn't even capable of showing all the colors, there's still a fairly large performance hit.
Manufacturers of high-end devices felt that "breaking" color calibration and processing color with their own values would showcase their superior displays, and if there's one thing I've learned doing this job for almost eight years is that a phone manufacturer only cares about what's best for itself.
Some apps still need to show mostly accurate color, even when a manufacturer breaks the color space, so developers had to desaturate their assets to try and compensate. A video, for example, looks best when a red stop sign is the same red you recognize it as and not a random color that a manufacturer decided it should be. Once you introduce a device with a 100% DCI-P3 display calibrated for the sRGB color space, things start to look broken. This is the crux of the issues surrounding the "muted" colors on the Pixel 2, though some experts say the calibration is not very accurate from unit to unit.
Here's how it gets fixed
This is the simple part and probably should have been done from the very beginning. A developer can detect if a device is using a Wide Color Gamut display and have an activity inside of the application use the correct color space to make the most of it. If the device is not capable of displaying wide color, the default sRGB profile is used.
Google has provided plenty of assets for developers who want to follow the new guidelines in their apps:
- Android general color space documentation for API 26
- Color spaces supported by Android
- Wide color assets and content guide
This is all well and good and should prove to be a great way to make sure that colors look the same from device to device unless it's a lower-end model incapable of displaying every color. Those would still look correct between devices because they would use the sRGB color space. The problem is getting everyone on board to do the same thing.
We're hopeful things will get better
For this to work, Samsung, OnePlus, LG and every other company that's "broken" the sRGB interpretation has to go back and correct it and developers need to rebuild their apps to support the new color space guidelines. And nobody wants to do it.
Companies won't likely change the way they do things until app developers make the apps that look good, and developers aren't going to write apps that will look broken on millions and millions of phones. Apple was able to transition to proper color management because it controls the hardware and software space, as well as set App Store guidelines. Google doesn't have that luxury.
Somewhere someone is thinking of the way to fix all of this. And shipping a broken user-selectable color space on Pixel 2 phones to compensate — well, that's not it. We know that everyone involved wants to do things the right way, and that also means not breaking anything on the phones that have already been sold. Hopefully, it gets sorted out sooner than later.
Get the Android Central Newsletter
Instant access to breaking news, the hottest reviews, great deals and helpful tips.
Jerry is an amateur woodworker and struggling shade tree mechanic. There's nothing he can't take apart, but many things he can't reassemble. You'll find him writing and speaking his loud opinion on Android Central and occasionally on Twitter.
There was nothing wrong with the colors on the Pixel 2 XL display. Only ones ******** were reviewers and people who apparently like cartoon colors. The real world must look dull to you.
That's what I liked about the U11... it seemed to strike a nice balance between natural and cartoon when in the vivid mode. The sRGB mode looks natural like the Pixel display, so I would have to agree that public perception has been altered by the cartoonish colors that have been promoted by certain manufacturers.
I guess on the up side we now have a choice between three settings. Still think the whole thing was way overblown.
I picked up a Pixel 2 XL yesterday after having a look and play with one. I turned on the new saturated colours option to have a look and soon changed it back. The natural look is so much better.
Thanks for your input, Donald Trump 😒
Man what an informative article. It must have taken you a while to research and write this up!
For some reason I can't seem to post my planned response? TL;DR Nice summary of color space, but TVs have had this problem of over-saturated color for decades even though there are well established color spaces to calibrate sets for. Manufacturers don't bother because people tend to select brighter sets with punchier colors in showrooms. I hope Android OEMs will do better, but I'm not holding my breath.
Yep. this is not just a phone thing, but it is a thing Google has to figure out how to fix
I played with a XL again yesterday and...maybe I’m just way too picky now, but I could not live with that screen. The blue color shifting is just too much.
I've seen a couple of them and some are a lot worse than others.
That's probably true. I couldn't live with my S8 red color shifting either. Once I sold it and got an Iphone 8, the difference was stunning. I've never had such issues with Oled in the past.
Why are you all spelling colour wrong?
That's the way us Yanks spell the word.
It's color not colour. Some people actually spell it like it sounds. Just think about how it's pronounced.
By that reasoning it should be spelt "cullur".
Why are you spelling Y'all wrong? :)
Great article Jerry!
So all that said, which color setting on the Pixel 2 is best for battery life?
I wouldn't expect color setting to impact battery life that much if at all. It's resolution that has the biggest impact on battery life and brightness after that.
But, if displaying wide color gamut takes more GPU/CPU than not displaying it, wouldn't choosing a model that stays away from it have less impact on battery life?
It has to have some impact. I'm guessing the hit on a device like a Pixel 2 is minuscule and probably within the margin of error that the kernel uses to report battery life.
I'm a little surprised that this article uses an unpopular term, Hue Saturation Brilliance, rather than use the industry-standard term, Hue Saturation Value. It's out of character for Jerry, I wonder what his rationale is.
I was taught all of this in college in 1986, and way back then we used HSL or HSB :)
I'm using my Pixel 2 XL with the "Boosted" color mode and I have no complaints. It's not dull at all but not unrealistically oversaturated. It very closely matches my old Nexus 5X and computer monitor. I don't know where is ends up on an accurate color test but it's pretty close.
That first chart doesn't make any sense to me. How can any red, blue or green share the same set of wavelengths? I'm thinking those three curves should all be at discrete locations on the X-axis according to their respective wavelengths, starting with blue closest to 0, then green, and finally red with the longest wavelength.