ICC Basics

icor1031

[H]ard|Gawd
Joined
May 29, 2010
Messages
1,295
How do they work, what information do they hold? For example:

Do they change saturation, RGB gamma / contrast / brightness, like we can already do in our control panels and OSDs, and it's just that we're less accurate?

Or, are they more detailed? Changing #CCCCCC's result to a slightly different hue, or changing a color's contrast but only at a specific shade or shade range? etc.

Thanks!
 
Last edited:
as far as most people are concerned (i.e. those who aren't using color aware applications that have color management modules), the only information in an icc that is of any relevance is the VCGT tag, which is the "video card graphics table".

The VCGT, as far as I understand, is simply a 1 dimensional LUT (lookup table) for each of the three RGB channels that can adjust the grayscale balance and gamma.

If you're curious, with the exception of the VCGT tag, an ICC actually doesn't contain instructions on adjusting a display - it is meant to be a repository of information about a particular display's characteristics, or profile. So if I am working on a display, I can profile it with a colorimeter or spectroradiometer, and create an ICC profile. If someone else is also working on another display, and has characterized their display with an instrument, there is now a basis for communication between those displays, and color aware software can render material such that it appears the same on both displays.

This concept extends to communication between different sorts of devices, such as scanners, displays, an printers.

You can think of an ICC like this:

Suppose there is a really cool futuristic sports field that can change its spatial dimensions and field lines at the press of a button. Now for each sport there exists a predefined standard for these parameters. Also suppose that you want to switch between sports on a regular basis, and you want to ensure that each time you change the field, it reaches its targets accurately. One way to do it would be to physically measure the field each and every time you change it, and then adjust the controls gradually back and forth until you reach your target. That's pretty tedious stuff. A better way is to measure it once, in a default state, and then use advanced software to transform the field depending on the particular sport. So say the football field is 3 x the width of the default field. Since you've already measured your default field, then all you have to do is instruct the field to triple in width.

Same thing with ICCs - ICCs are the initial measurement taken in a default state, and different color gamuts and/or gammas are your target states. Color management modules then take this information and instruct the device on how to transform its ouput. At least, this is my understanding.

But, like I said, as far as most are concerned, you're really only interested in the 1D LUT aspect.

LUTs are generally made to achieve a specific goal - say a gamma of 2.4 or whatever. In order to achieve this, your display has to be measured at a number of luminances, and then a LUT can be generated that is specifically tailored to those luminances. The LUT is then applied to that display and the end goal is hopefully achieved,

So you can see that using a random LUT you found online isn't going to achieve much. If, however, someone creates a LUT to make their display look better (say achieve a more perceptually uniform gamma, and a better D65 white balance), and they send that LUT to someone whose display is very similar to their own, and is in the same hardware state, then there may be some value.

Keep in mind that there are many ways to exchange 1d LUTs, not just by using ICC profiles.

As for OSD, you can generally do more with an OSD (you can't increase peak white or decrease black level with a LUT of any sort), and you can't increase the saturation of the primaries with a LUT (that is, the colors of the display when a pure red or green or blue signal is sent). But a LUT (even a 1D LUT) can certainly change adjust hue and saturation, though they're not typically generated with that specific goal in mind - rather, the end goal is usually a particular gamma and white balance, and that may end up changing hue and saturation as a by product.

A LUT also typically has finer control than an OSD. So an OSD may allow you to change preset gammas, or to adjust the RGB values at a few different points along the display LUT, but a LUT will allow you to change those values at each of the 256 steps (or 1024 steps if you're working in 10 bit).
 
Last edited:
No wonder my Q270's reds always look so bad. It seems impossible to get decent reds, without completely destroying everything else.

My Q270 doesn't have an OSD.

It sounds like a calibrator might be more useful not for creating an ICC, but for making sure I get the OSD settings right? ;)


Thanks, Space.
 
by calibrator I assume you mean a spectro/colorimeter. A calibrator is someone who calibrates things :)

You typically calibrate by using the OSD first, and then creating a LUT to "fill in the gaps".
 
by calibrator I assume you mean a spectro/colorimeter. A calibrator is someone who calibrates things :)

You typically calibrate by using the OSD first, and then creating a LUT to "fill in the gaps".

Yeah, that's what I meant. I keep forgetting :cool:.

Thanks.
 
Pretty much no game supports color profiles. Is this because of developer laziness, performance issues or some software issue?
 
Back
Top