What is black an what is white in a floating point HDR, i.e. can we attach a color profile to a HDR image?

So far I have two open issues I do not even know where to start for addressing them: Saved HDR TIFF files lack an ICC profile and Range Limiting OpenEXR

I’m opening this discussion in the hope some knowledgeable people could chip in and help clarify all this matter.
For me the two are related issues in that fixing one of them could possibly fix the other. What are your thoughts?

1 Like

In an HDR context, black and white are IMHO two very distinct concepts.

If the HDR data are providing a scene-referred representation (i.e. the pixel values are directly proportional to the intensity of light reflected or diffused in the scene, @Elle can correct me here if the definition is not precise…), then black has a very precise meaning of “zero emitted light” or “perfectly black” surface (which does not exist, by the way). Negative values are unphysical, and zero is the hard lower limit of what can be recorded.

In the other hand, white does not exist, for two reasons:

  • there is no theoretical limit in the amount of light that can be emitted by a source and therefore reflected/diffused by a surface. You might think that white is the brightness of the sun at noon in a bright summer day… however, if you live on Venus (which is closer to the Sun than Earth) than the Sun will be much brighter… the advantage of floating-point HDR files is that they can represent “brightness” without hard limits.
  • all light sources have a color, and you need to specify a white point in order to assign white to a given light source

Coming to the issue of ICC profiles for HDR images, this is in fact a non-issue: as long as the HDR data is encoded in linear gamma and you use matrix-based profiles, the range of the pixel data does not pose any problems. In other words, linear matrix profiles can perfectly represent the color of objects whose brightness is above 1.0, and the brightness can always be scaled down by applying the same linear transformation to the three RGB components.

To conclude:

  • it is perfectly OK to assign a linear matrix profile to a floating-point HDR TIFF image. On the other hand, it is not a good idea to gamma-encode the HDR data (it can in principle be done with a pure gamma curve, but there is no advantage in terms of color accuracy when using floating-point precision)
  • range-limiting an OpenEXR makes no sense, because the pixel values can always be linearly scaled up or down in order to bring whatever element in the scene to RGB=1,1,1.
3 Likes

I think that the “range limiting” issue is about providing a method to set the diffuse white level, not to actually limit the range.