[Gimp-developer] Black point compensation for display and soft proofing profiles

Hi All,

The current Gimp Preferences/Color Management doesn't allow the user to choose whether or not to use black point compensation for the display monitor or for proofing. Instead:

* If the user chooses the relative colorimetric intent, they automatically get black point compensation.

* If the user chooses perceptual intent, they automatically do not get black point compensation.

I made a patch (attached) that adds the user option to choose whether to use black point compensation for the display and also for soft proofing. Also I revised a few of the "on hover" tool-tips and modified a couple of the default settings.

I've tested pretty carefully and everything seems to act like it should. But there are a lot of moving parts in the relevant code (well, to me, a patch involving four files seems like a lot of moving parts), so it wouldn't surprise me to find out I made mistakes.

Would anyone be willing to give the patch a try and see if they like it, have suggestions for rewording the blurbs, changing defaults, etc, and especially confirm whether or not the code looks right and everything works as expected?

To test the patch, you need some LUT RGB profiles and some test images:

* The color.org website has some interesting non-floss LUT profiles for experimenting with.

* Non-floss Chromira and Frontier RGB LUT printer profiles for experimenting with can be downloaded from here (pick a state from the left-hand column): http://www.drycreekphoto.com/icc/

* This page has many excellent (non-floss) black and white and color test images: http://www.northlight-images.co.uk/article_pages/test_images.html

Some relevant color management background:

* Most people's monitor profiles are matrix profiles. The current Gimp default perceptual intent requires that the profile actually have a perceptual intent lookup table. So for most people, when they select perceptual intent for their display profile, what they really get with the present Gimp Color Management options is relative colorimetric without black point compensation.

* Gimp users who use a custom matrix monitor profile with a non-zero black point, and also use Gimp's current default perceptual intent, do see crushed shadows (falsely crushed on the screen, which they probably compensate for while image editing, producing an image with lighter shadows than they intended).

Related to the defaults:

* Real LCD monitors never have a zero black point (they always emit some light even when displaying solid black), but if the monitor TRC curves rapidly enough away from zero it doesn't matter too much. Unfortunately sRGB as an LCD monitor profile does crush the shadows.

* For people who use custom monitor profiles with non-zero black points, black point compensation as an option with relative colorimetric intent is pretty important because sometimes you really do want the option to disable black point compensation.

* The oft-repeated claim that perceptual intent is the "photographic" intent and/or the "safe" intent is at best misleading:

* Perceptual intent only makes sense for destination profiles that actually support perceptual intent (eg when using a LUT monitor profile or when soft proofing to a LUT printer profile), and even when supported, perceptual intent doesn't necessarily give the best results. The best thing to do when soft proofing to a printer or other output profile is experiment with all the (supported) intents on an image by image basis.

* The advice to use perceptual intent because it "preserves all the colors" gives people the false security that they really can "preserve all the colors" even when the destination profile is a matrix profile like sRGB. What really happens when they ask for perceptual intent from a matrix destination profile is they get relative colorimetric, and out of gamut colors are clipped.

* Not every profile accomodates every intent. For example, matrix profiles only (and always) have relative and absolute colorimetric. LUT profiles may or may not have a table for every possible LUT profile intent, those being relative, absolute, perceptual, and saturation. For example, some LUT profiles only have a perceptual table.

* Not every intent accomodates black point compensation. Absolute never does. Relative always does (so you can use bpc or not, your choice, if your software allows you to make the choice). Apparently perceptual isn't supposed to, but some LUT profiles do accomodate black point compensation for perceptual intent. If you ask LCMS for black point compensation for an intent+profile that doesn't support it, that flag is just ignored.

* If you ask for an intent that the profile doesn't have, according to the LCMS documentation it uses perceptual intent. Unfortunately the LCMS documentation doesn't specify what happens if you ask for perceptual intent and the profile doesn't support it. But pretty much every image editor I've ever used (including Gimp) defaults to relative colorimetric if you ask for perceptual intent for a matrix profile.

As an aside, the user option to choose an "out of gamut" color doesn't work anymore (not related to this patch). It also doesn't work in Gimp 2.8.10 installed from Gentoo portage, at least not on my computer. Whatever color I choose in "Preferences/Color Management/Mark out of gamut colors", the out of gamut color is black.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]