I wholeheartedly agree that “HDR” is a term that is used, overused, and misused in too many different ways. For example, the up-and-coming “HDR” displays can make an image look as bright as the great outdoors on a sunny day, and this particular usage of “HDR” is market-speak for “Higher Dynamic Range than whatever outdated display you are looking at right now”.
“High Dynamic Range” requires a context, as in one “image/scene/display device/capture device” has a higher dynamic range than another “image/scene/display device/capture device”.
So to say “high dynamic range” is both misleading and ambiguous. “Display range” doesn’t mean “low dynamic range”. It just means that the RGB channel values sent to the screen (for the display profile) or modified in an image editor in an RGB working space, only go from 0.0 to 1.0 floating point. This says absolutely nothing about the actual dynamic range of the display itself.
So I absolutely agree that my choice of the term “HDR” was ill-advised. Here is revised terminology: Given a specific RGB working color space ICC profile such as the sRGB ICC profile:
“In display range”: all RGB channel values are between 0.0f and 1.0f inclusively. These colors are “in display range”: (0.5, 0.75, 0.01), (0.5, 0.0, 0.0), (0.5, 1.0, 0.0), (1.0, 1.0, 1.0), (0.0, 0.0, 0.0).
“Out of display range”: At least one RGB channel value is either greater than 1.0 or less than 0.0. So these colors are out of display range: (0.5, 0.75, -0.01), (0.5, 1.01, 0.2), (0.5, 1.01, -0.2), (1.2, 1.2, 1.2), (-1.0, -5.0, 15).
“In gamut”: All RGB channel values are >=0.0. So (0.0, 0.0, 0.0), (0.5, 0.75, 0.01), and (25.0, 50.0, 3.75) are all “in gamut” colors, but the last color is “out of display range”.
“Out of gamut”: At least one RGB channel value is less than 0.0f. One or two channel values might also be greater than 1.0, but the color is not “out of gamut” unless at least one channel value is less than 0.0. So these colors are “out of gamut”: (0.5, 0.75, -0.01), (0.5. 1.01, -0.2), (-1.0, -5.0, 15). But these colors are not “out of gamut” though they are “out of display range”: (1.2, 1.2, 1.2), (0.0, 0.0, 25.0).
“In gamut but out of display range” colors" (well, that’s a longish phrase, which is why I previously used “HDR” as shorthand for this longish phrase - suggestions for improved terminology are very welcome): At least one RGB channel values is greater than 1.0 and none of the channel values are less than 0.0. Please note that the “Y” value of an HDR color can easily be less than 1.0.
That leaves one last category of colors, which are colors that are both “out of display range” and also “out of gamut” with respect to the specified RGB working space. Such colors require having at least one RGB channel value that’s <0.0 and also at least one RGB channel value that’s >1.0. “Out of display range and also out of gamut” again is a longish phrase, and again, suggestions for improved terminology are very welcome.
From curiosity, what specifically do you mean by “an HDR capable display”?
I think you just said that RawTherapee/darktable/PhotoFlow/GIMP/etc are utterly worthless tools? Worthless tools for what purpose? This thread is not about using any of these tools for processing an image file with eg 20+ stops of RGB data encoded using channel data that extends from (0.0f, 0.0f, 0.0f) up to whatever the limits are for the file type used to hold the data.
As @ggbutcher already noted, the original topic for this thread is what to do about floating point RGB channel values that are less than 0.0 or greater than 1.0, specifically in terms of how to handle such values in the course of “display-referred” editing, which as @ggbutcher also noted, doesn’t mean you can’t edit using linear gamma RGB, and also doesn’t mean your data isn’t scene-referred .
In the context of this thread, the starting image already is a display-referred image, meaning the channel values are between 0.0f and 1.0f, or else can easily be brought into the display range by means of an exposure adjustment. The starting image is often the result of interpolating a camera raw file. And the eventual goal is usually to output an image that can be printed or displayed on a screen.
When using floating point processing, “out of display range” channel values can occur during editing in any given RGB color space, and also when converting an image from a larger RGB color space to a smaller RGB color space. These channel values need to be dealt with, one way or another.
One way to deal with these “out of gamut/out of display range” channel values is to clip them immediately, which of course throws data away. The other way is to carry them along using “unbounded” floating point ICC profile channel values, and let the user deal with them as the user sees fit, according to the user’s editing goals.
There are always data bounds. The file format used to encode an image imposes data bounds. For floating point images, the way in which floating point numbers are encoded on a particular machine imposes data bounds. The RGB color space imposes a gamut boundary of >=0.0 for all channels. Preparing a file for display whether on a screen or as a print imposes another set of data bounds. Even the result of high bit depth scene-referred editing eventually has to be output as display-referred values.
Where did you get the idea that ICC profile color management was “largely designed for graphic design work”? Hmm, backing up a bit, what do you mean by “graphic design work”?
With founding members Adobe Systems, AGFA Apple Computer, Eastman Kodak Company, Microsoft Corporation. Silicon Graphics, and Sun Microsystems; and current members including Canon, Nikon, and Sony it would be fairly much incredible to assume that photography and also color display on screens are not and were not main concerns of the ICC.
Perhaps you were a bit misled by the fact that the original discussions for forming the ICC were under the auspices of “Forschungsgesellschaft Druck e.V. (FOGRA), the German graphic arts research institute in 1993”, quoting from an earlier release of the ICC specs. People from many industries concerned with color reproduction attended these discussions. FOGRA itself is concerned centrally with printing images in general, not just “graphic design” images.
My understanding is that awhile back members of the movie/VFX industry did ask the ICC for better support for things like encoding high dynamic range images and lossless round-tripping from input device spaces such as camera spaces, to working spaces, and back to the input device spaces. The ICC wasn’t forthcoming in a timely fashion, and OCIO and ACES have filled (and more than filled) some of the gaps in ICC profile color management. Which does not mean that OCIO and ACES separately or together can fully meet the needs of people editing photographs or for print-oriented workflows, or even all the needs of the movie/VFX industry. Read through the openexr mailing list - these people do also use ICC profile color-managed editing applications, right alongside NUKE and etc. Also, with iccMAX the ICC has taken steps to recover from their unfortunate delay in responding to actual needs of people who need to manage color in contexts other than print output.
Indeed one of the GEGL/GIMP devs did independently come up with the idea that out of gamut colors could be encoded using channel values that are outside the display range, which I think is an incredibly commendable and intelligent example of “thinking outside the box”.
However, even apart from GIMP, “unbounded” indeed is a “thing”. “Unbounded” is a term from Marti Maria’s paper “Unbounded Color Engines”:
I do seem to be responsible for popularizing the term, or at least my article is the first article returned when searching the internet for the terms “unbounded icc profile”. So if you don’t like the word “unbounded”, I’m happy to take at least part of the blame:
As a historical aside, the ICC mentioned the need for such conversions that don’t clip out of gamut and out of display range channel values, back in 2006:
One of my articles refers to the above pdf, and puts it into some historical and “color science” context:
Color Science History and the ICC Profile Specifications
Overview: A lot of people assume that the ICC prohibition against negative tristimulus values is based on some kind of physical reality grounded in human perception of color. Actually, exactly the opposite is true: negative primaries are used to describe human color perception. Furthermore, an adequate characterization of many device primaries also requires negative tristimulus values.