Profiling Your Monitor — Popular Confusions, Hopefully Cleared
Profiling and calibrating, loading 'vcgt' information, installing a system monitor profile
Hopefully this article can clear up some popular confusions about monitor profiles:
- Some people (sadly, even some software programmers) don't know the difference between calibrating and profiling a monitor.
- Some people think (wrongly) that if you set a system monitor profile, there is no reason to ever use a different monitor profile.
- Some people (also wrongly) think that if you did use a different monitor profile, you'd get incorrect results because of LUT information loaded into your video card.
Written February 2010. Updated February 2015.
Most of the information in this article applies whether you are using X or Wayland. However, I don't know how much freedom Wayland will provide the user in terms of using or not using the system monitor and the ability to easily switch monitor profiles.
In the quest to implement full desktop color management and to make things as easy as possible for color management newbies, I sincerely hope that advanced capabilities (that Windows users don't currently enjoy) aren't removed from Linux color management. For details, see Section E below, Closing thoughts: choice is good.
Calibrating your monitor
"Calibrating your monitor" means putting your monitor into a known, "target" state by altering how your monitor displays colors, or, in more technical terms, "altering your monitor's display characteristics".
- Alter the monitor itself (not every monitor has a mechanism for altering the monitor itself)
- Alter your video card's LookUp Tables (LUTs)
Altering the video card LUTs doesn't do anything at all to the monitor itself. Rather altering the video card LUTs changes the signal that the video card sends to the monitor. And likewise, altering the monitor itself doesn't do anything to the video card LUTs.
Typically, but not necessarily, a monitor calibration uses both ways to alter how the monitor displays color.
To summarize, the bare phrase "calibrating a monitor" is a bit ambiguous because:
When calibrating your monitor, you can:
- alter the monitor itself, OR
- alter the video card LUTs, OR
- alter the monitor itself AND alter the video card LUTs.
Profiling your monitor
"Profiling your monitor" means "describe your monitor's display characteristics", that is, create an ICC monitor profile that characterizes (describes) how your monitor displays colors.
This article is not a "how to" profile your monitor. But profiling your monitor requires the use of a color measuring instrument, one of those puck-type things that hangs in front of your monitor screen.
That color measuring instrument is used in conjunction with profiling software to measure how your monitor responds to signals from your video card. That is, the software displays a whole bunch of different color patches with known RGB values to your screen. Then the puck measures the color that actually get displayed and sends that information back to the profiling software.
This back-and-forth process of sending a color patch of known RGB values to the screen, then measuring the color that gets displayed on the screen, is what "describing your monitor's display characteristics" really involves. The end result is that the profiling software creates a monitor profile that describes your monitor's display characteristics.
Obviously, if you intend to calibrate AND profile your monitor, first you calibrate, then you profile. Otherwise you'd be profiling your monitor in its uncalibrated state, and then you'd be changing its display characteristics, so the profile would no longer be any good.
Not so obviously to many people, there is absolutely no set-in-stone requirement that you calibrate your monitor at all. Depending on your particular wants and needs, you may in fact be better served by profiling your monitor display characteristics when the monitor is in its "native", uncalibrated condition.
The advantage of profiling a decent LCD monitor in its native state (completely uncalibrated, no alterations to the monitor itself, no use of any presets (except a preset that indicates "this is the native state"), and no alterations to be loaded into the video card LUTs) is a potentially larger color gamut and smoother tonal transitions from light to dark.
One advantage (there might be others, but I don't know about them) of first calibrating and then profiling your monitor, is that your NON-color-managed applications benefit from your having "partially calibrated" your monitor to something approaching sRGB.
Personally, I don't care what images look like in non-color-managed imaging softwares, but I do care about color gamut and smooth tonal transitions. So I don't calibrate my monitor before profiling it; rather, I profile it in its native state.
- Calibrating doesn't require profiling. You can calibrate your monitor without profiling it. Some people prefer to calibrate their monitor as closely as possible to sRGB and then use sRGB as their monitor profile.
- Profiling doesn't require calibrating. You can profile your monitor without calibrating it.
- Your own personal preferences should be the deciding factor when deciding how to, and whether you should calibrate your monitor, profile your monitor, or both.
Two ways to invalidate your monitor profile if you calibrated your monitor before you profiled it
If you choose to calibrate your monitor before you profile it, then there are two pitfalls to be concerned about:
- If you calibrate your monitor by altering the monitor itself (and maybe also the video card LUTs), and then you profile the altered monitor, if you then alter the monitor itself again, your monitor profile isn't any good any more. You need to make another profile.
- If you calibrate your monitor by altering the video card LUTs (and maybe also the monitor itself), and then you profile your monitor, your monitor profile isn't any good unless and until the video card alterations are "loaded" into the video card.
Some people are confused about this point. But loading the altered video card LUTs into your video card and installing a monitor profile in your operating system are two separate, distinct, and totally independent operations. Consider the following four scenarios:
Install a system monitor profile without loading alterations to the video card
If you profiled your monitor without first altering the video card LUTs, and now you want to install your monitor profile as the system monitor profile, then you have no reason to load alterations to the video card. A valid monitor profile doesn't necessarily have a "vcgt tag" containing information about alterations that might, or might not, have been made to the video card LUTs prior to profiling the monitor.
Load alterations to the video card without installing a system monitor profile
But you might not have profiled your monitor at all. Perhaps instead you only calibrated it to more closely match sRGB. You can load alterations to the video card LUTs without also installing a system monitor profile. You can load the video card alterations using a ".cal" file which only contains the video card LUTs information (and no monitor profile information at all).
Install a system monitor profile and load the alterations to the video card as a separate step
If you calibrate your monitor to match sRGB, perhaps you might want to install sRGB as your system monitor profile. The sRGB profile doesn't contain any calibration information for your particular monitor. So you need to use a ".cal" file to load the appropriate video card alterations (if any were made during calibration).
Install a system monitor profile and load alterations to the video card (if any were made during calibration) in one step
Let's say you calibrated your monitor and that as part of your calibration you made alterations to the video card, and then you profiled your calibrated monitor. You can install your monitor profile and load the alterations to the video card in one step, if your monitor profile happens to contain the right "vcgt" tag. Vcgt tags are used to store alterations to the video card, if any (some monitor profile vcgt tags simply restore the video card to its unaltered state).
For example, two separate and distinct things happen when you install a system monitor profile using:
dispwin -I profile.icc
- First the profile vcgt tag is read (if there is one) and the appropriate alterations (if any — depending on the monitor profile, a vcgt tag might actually restore the video card to its linear state) are loaded into the video card LUTs.
- Then the monitor profile itself is installed as your system monitor profile. Your color-managed applications like digiKam and showFoto don't care about the vcgt tag. They ignore it.
The fact that both operations can happen with the same command is because Graeme Gill, the creator of ArgyllCMS, conveniently arranged it that way, knowing that often both operations need to be done (but not always, which is why dispwin has a lot of other command line options).
For more information about calibrating and/or profiling a monitor, and installing a monitor profile vs. loading a vcgt tag, please consult the ArgyllCMS documentation, in particular, see:
Installing a system monitor profile: please don't program open-source software to take away user choices
Should you always install a system monitor profile? And if a system monitor profile is installed, is it necessary that all your color-managed software always use the installed system monitor profile? I wouldn't even raise these questions, except that a lot of people seem confused about the answers. So here goes:
What is "installing a system monitor profile"?
A monitor profile is "installed as your system monitor profile" when you use any of a number of different software utilities to tell something called the X11 "_ICC_PROFILE property" that a particular monitor profile is "the" monitor profile. As usual, ArgyllCMS documentation, this time regarding installing display profiles is the best place to start for all things related to making and using monitor (and camera, scanner, and printer) profiles.
For the Linux operating system, installing a system monitor profile is optional at this point. It's not optional for Windows, which creates major headaches if you use more than one monitor profile in your digital darkroom. I'd hate to see Linux walk down the Windows path on this point.
Installing a system monitor profile is (or should be, IMHO) mostly a matter of user convenience. Let's say you have a particular monitor profile that you really, really like. If you install this monitor profile as your system monitor profile, then any color-managed software that is written to be aware of the _ICC_PROFILE property can use the system monitor profile as its default system monitor profile.
After you install a system monitor profile, should you have the choice to use a different monitor profile?
Installing a system monitor profile does nothing at all unless and until you use a particular color-managed software that has been written so that it actually checks to see if the _ICC_PROFILE property has been set. Non-color-managed softwares don't use monitor profiles, installed or otherwise.
If you do install your favorite monitor profile as your system monitor profile, speaking practically, what happens? Any color-managed software that is already set up to look for a system monitor profile, will automatically find the system monitor profile.
Whether these system-monitor-profile-aware color-managed softwares will actually use the system monitor profile depends (i) on the software itself and (ii) on the color management choices you've made for that particular software. For example:
- Gimp 2.8, UFRaw 0.18, and the upcoming Krita 2.6 (not yet released as of June, 2012) allow you the option of automatically using the installed monitor profile if you so choose.
But these editing programs do not insist that you use the system-installed monitor profile. And you can change your mind any time you want, switching back and forth between the system monitor profile and any other monitor profile.
- On the other hand, digiKam/showFoto doesn't give you a choice.
digiKam is set up so that IF a system monitor profile has been installed, then you MUST and WILL use that system-installed monitor profile (and no other monitor profile). So if you do want to use a different monitor profile, you have to close the software, uninstall the system monitor profile, and then restart the software, which restores your digiKam monitor profile choices.
Why make and use more than one monitor profile?
Why would you want to switch between a system monitor profile and another monitor profile? Because you can have two (or more) completely different, but equally valid and useful monitor profiles.
For example, you might use one monitor purpose for general editing and a different monitor profile (tailored to your printer-paper-lighting combination) for soft-proofing prints. I myself have a shaper-matrix profile that I use for general editing, and a lut-style monitor profile that I find useful for inspecting details that might be lost upon conversion from raw color to a standard working space and for inspecting details in an image with colors that exceed the color gamut of my monitor. And I'm thinking about making a monitor profile that is just for editing black and white image, totally sacrificing color accuracy for the sake of better tonal accuracy (don't know how it will work out, but that's the plan).
Is it possible to switch from one monitor profile to another? What about those vcgt tags and video card lookup tables?
Consider two scenarios. In the first scenario, no calibration is done prior to profiling the monitor (specifically, no alterations areloaded into the video card LUTs). In the second scenario, as part of monitor calibration before profiling, alterations are loaded into the video card LUTs.
Scenario 1: Monitor profiles that don't alter the video card LUTs:
For our first scenario, let's assume that NativeShaperProfile.icc is a matrix-type profile of your monitor in its native, uncalibrated state, with no alterations made to the monitor or the video card LUTs. Let's assume you have a second profile of your monitor, still profiled in its native state, but instead of being a matrix profile, it's a lut-based profile, named NativeLutProfile.icc (not to be confused with your video card lookup tables!):
There are two basic choices of profile type for a ["monitor"] display, a shaper/matrix profile, or a LUT based profile. They have different tradeoffs. A shaper/matrix profile will work well on a well behaved display, that is one that behaves in an additive color manner, will give very smooth looking results, and needs fewer test points to create. A LUT based profile on the other hand, will model any display behaviour more accurately, and can accommodate gamut mapping and different intent tables. [From "ArgyllCMS Documentation: Profiling in several steps: Creating a display profile"]
Let's assume that most of the time you want to use NativeShaperProfile.icc as your monitor profile, which you've installed for your own convenience as the system monitor profile. But sometimes you want to use NativeLutProfile.icc (perhaps you'd like the option of using perceptual intent in order to inspect details that are not visible, because of mismatched color gamuts, when using relative colorimetric intent).
With Gimp, UFRaw and the upcoming Krita 2.6, if you want to use a monitor profile that isn't the system-installed monitor profile, you just go into the color management settings and make the appropriate change. With digiKam, if you installed NativeShaperProfile.icc as your system monitor profile, then you have to UNinstall NativeShaperProfile.icc before you can use NativeLutProfile.icc as your monitor profile.
Scenario 2: Monitor profiles that DO alter the video card LUTs:
For our second scenario, let's assume you profiled your monitor after calibrating it and that part of the calibration process was altering the video card LUTs. Assume you then install that monitor profile as your system monitor profile and (of course) load the appropriate video card LUTs alterations into your video card. Can you still use another monitor profiles? Yes, as long as that other monitor profile uses the exact same video card LUTs alterations.)
Some people confuse profiling a monitor with calibrating a monitor, and they don't realize that calibrating a monitor might not involve altering the video card LUTs.
These people conclude that if you installed a system monitor profile, then you also loaded system calibration information into your video card LUTS, and so you simply can't expect to use any monitor profile except the installed monitor profile. But this conclusion is wrong in so many ways:
As we have already seen, profiling doesn't require calibrating. Calibrating might, or might not, involve altering the video card LUTS. And color-managed software is totally unaware of video card alterations that might, or might not, be loaded into the video card LUTS. To quote from the ArgyllCMS documentation:
[O]ften the calibration information is stored in the profile . . . . in a tag called the 'vcgt' tag. Although it is stored in the profile, none of the normal ICC based tools or applications are aware of it, or do anything with it . . . . Calibration vs. Characterization
But let's assume you really did alter your video card LUTs as part of calibrating your monitor before profiling it. Does this mean you can only use one monitor profile? The answer is a resounding "NO":
As noted above, if you calibrate your monitor before profiling it, and if part of calibrating your monitor was in fact altering your video card LUTs, then of course you should load the calibration information contained in the "vcgt" tag (or in a ".cal" file) before you use the resulting monitor profile.
But you still might make and use two (or more) different monitor profiles, both using the same calibration information: you might make "CalibratedShaperProfile.icc" and "CalibratedLutProfile.icc". And most of the time you might want to use one profile, and occasionally you might want to use the other profile, regardless of whether the one you like to use most of the time is installed as your system monitor or not.
The topics covered in this article can be very confusing. But if you spend a lot of time in your digital darkroom, and you don't properly calibrate and/or profile your monitor, then you can't trust the colors that you see on your monitor screen. Equally important, you have no way of understanding color-management choices made in and by your open source imaging softwares.
Easy switching of monitor profiles is a small but truly appreciated perk (well, I've always appreciated it) of using open-source imaging software. I'd hate to have to start jumping through Windows-type hoops because my open source software wants to make it "so convenient" for me that I can't use more than one monitor profile without shutting down the software in question, dropping to the command line and uninstalling/reinstalling my system monitor profile.
Alas, digiKam has already made it so that if you install a system monitor profile, you no longer have a choice of which monitor profile you want to use for editing until you UNinstall the system monitor profile.
I'm not sure what the Gnome color-managed desktop does, because I've never installed a full Gnome desktop. I don't use a full KDE desktop, either. But I'm hoping nobody makes KDE applications start automatically installing a system monitor profile. Right now you can get around the inability to change monitor profiles in digiKam if a system monitor profile has been installed, by simply refraining from installing a system monitor profile.
Addendum, June, 2012: The Oyranos software that I had installed on my system actually extracted a profile from my monitor (hard to believe but confirmed by the person who wrote the software) and installed it as my system monitor without notifying me of what had been done. The only reason I knew "something" had gone awry was suddenly the colors on my screen were wrong. So I uninstalled Oyranos.
If an installed system monitor profile ever becomes mandatory for KDE or Gnome applications, your freedom and ability to easily choose and change your monitor profile based on your editing goals for the image at hand will be severely compromised. To change which monitor profile you want to use, you'll have to exit your editing program, change the system monitor profile, and restart the editing program. Rinse, wash, repeat to return to your usual system monitor profile.
In 2000 Bruce Fraser wrote a very interesting article, Out of Gamut: Exploring Wide, Open (Color) Spaces (scroll down to "Working in the Dark"), in which he laments the fact that no commercial profiling programs allow the option of creating monitor profiles with perceptual intent tables. A monitor profile with a perceptual intent table allows one to view image details in images that are in very large gamut color spaces like ProPhotoRGB, when the image colors fall outside your monitor's relatively small color gamut.
With the open source Argyllcms, you can do just that, make a monitor with a perceptual intent table. And I have indeed made myself a monitor profile with a perceptual intent table. And I do indeed find it very useful for keeping track of what's going on when editing an image in ProPhotoRGB on a monitor with a color gamut that barely exceeds sRGB.
This type of monitor profile with a perceptual intent table is a LUT-style profile. For my monitor (and probably for most monitors), a shaper-matrix profile makes a better all-purpose monitor profile. So I routinely use two different, equally valid monitor profiles in the course of image editing.
Dear digiKam and other software developers — your imaging and color management softwares are equal to or better than commercial programs in so many ways. Why not take this opportunity to add to the things that open source softwares can do, that commercial programs don't do? It can't be that difficult to retain/restore the user's choice.
Update, June, 2012: Versions of Krita before 2.6 automatically use the system profile. So before version 2.6, to use a different monitor profile, you need to install a different monitor profile. However, Krita 2.6 allows the user to choose between the system-installed monitor profile and any other monitor profile. Here is a great big Thank You! to the Krita developers.