THE IMPORTANCE OF TERMINOLOGY AND SRGB UNCERTAINTY
Author: Christophe Brejone
We were meant to write that entry since a while, and a great post by Tom Forsyth from Oculus VR triggered us in doing so.
As I was quickly reading his article, I tweeted back about the missing description of sRGB as being an RGB colourspace: a set of primaries, whitepoint and transfer functions components.
While this depiction of sRGB colourspace Electro-Optical Transfer Function (EOTF) is exact, it may be confusing for non experts by omitting an explicit emphasis of the components of an RGB colourspace.
For people experienced with colour theory and science, the post title and the mention of Gamma indicates that the article will likely only involves the sRGB colourspace EOTF and its inverse.
What is sRGB?
Terminology in a given scientific domain is key to its understanding, and this is especially true in colour science. Everybody knows what colour is but yet only a few can define it correctly, in this regard, we often cite Mark D. Fairchild:
Why should it be particularly difficult to agree upon consistent terminology in the field of color appearance? Perhaps the answer lies in the very nature of the subject. Almost everyone knows what color is. After all, they have had firsthand experience of it since shortly after birth. However, very few can precisely describe their color experiences or even precisely define color. The Importance of Terminology and sRGB Uncertainty#Bibliography-
sRGB is not a bunch of transfer functions, it is an actual RGB colourspace, specified by the IEC 61966-2-1:1999 Standard. As per ISO 22028-1 Standard, an RGB colourspace is defined by those mandatory 3 components:
The ISO 22028-1 Standard definition of an additive RGB colourspace is quoted in its entirety for reference:
additive RGB colour space
colorimetric colour space having three colour primaries (generally red, green and blue) such that CIE 1931 XYZ tristimulus values can be determined from the RGB colour space values by forming a weighted combination of the CIE XYZ tristimulus values for the individual colour primaries, where the weights are proportional to the radio-metrically linear colour space values for the corresponding colour primaries
Note 1 to entry: A simple linear 3 × 3 matrix transformation can be used to transform between CIE XYZ tristimulus values and the radio-metrically linear colour space values for an additive RGB colour space.
Note 2 to entry: Additive RGB colour spaces are defined by specifying the CIE chromaticity values for a set of additive RGB primaries and a colour space White point, together with a colour component transfer function.
The primaries chromaticity coordinates define the gamut (the triangle of colours) that can be encoded by a given RGB colourspace.
When performing computations allowing for negative values and with enough precision, a given RGB colorspace can virtually encode any colours. Colours exceeding its gamut are simply represented with negative values.
It is important to understand that while commonly represented as triangles on a Chromaticity Diagram (such as the CIE 1931 Chromaticity Diagram), RGB colourspace gamuts define the boundaries of an actual 3D volume within the CIE xyY colourspace: The Chromaticity Diagram is a 2D projection of the CIE xyY colourspace volume along its Y Luminance axis.
Various RGB colourspace gamuts compared in the CIE 1931 Chromaticity Diagram.
The CIE 1931 Chromaticity Diagram in the bottom right view is a 2D projection of the CIE xyY colourspace in the left view. (Colour - Analysis)
The White point is defined by the CIE as:
Achromatic reference stimulus in a chromaticity diagram that corresponds to the stimulus that produces an image area that has the perception of white.
Any set of colours lying on the neutral axis passing through the whitepoint, no matter their Luminance, will be neutral to that RGB colourspace.
CIE Standard Illuminant D65 is located at the apex of sRGB colourspace volume. (Colour - Analysis)
An RGB colourspace can have different whitepoints depending its context usage, sRGB colourspace IEC 61966-2-1:1999 Standard adopts CIE Standard Illuminant D65 as whitepoint but an ICC sRGB colourspace profile would likely have been chromatically adapted to CIE Standard Illuminant D50.
Various CIE Illuminants D Series illuminants in the CIE 1960 UCS Chromaticity Diagram.
The transfer functions perform the mapping between the linear light components (tristimulus values) and a non-linear R'G'B' video signal (most of the time for coding optimisation and bandwidth performance). The Importance of Terminology and sRGB Uncertainty#Bibliography-
The two common types and their inverses are defined as follows:
The Opto-Electronic Transfer Function (OETF) maps estimated tristimulus values in a scene to a non-linear R'G'B' video component signal value. Typical OETFs are expressed by a power function with an exponent between 0.4 and 0.5. They can also be defined as piece-wise functions, SMPTE 240M or BT.709 OETFs are such examples.
Various Opto-Electronic Transfer Functions.
The Electro-Optical Transfer Function (EOTF) maps a non-linear R'G'B' video component signal to a tristimulus value at the display. Typical EOTFs are expressed by a power function with an exponent between 2.2 and 2.6 or a piece-wise function.
Various Electro-Optical Transfer Functions.
Jack Holm, technical secretary for IEC/TC 100/TA 2 which developed the IEC 61966-2-1:1999 Standard is unambiguous about the sRGB EOTF being piece-wise, i.e. not a Gamma 2.2 approximation and that the IEC 61966-2-1:1999 Standard does not define an OETF.
The Importance of Terminology
With the RGB colourspace specification components outlined, it should now make more sense why not being specific and using a clear terminology can lead to confusion and uncertainty: colour science vocabulary is complex.
I often encounter people that don’t have a clear understanding on what composes an RGB colourspace, as a result they don't properly differentiate gamut and transfer functions. The cursory terminology recurrently used online is probably the root cause for that.
When one talks about sRGB, is he describing the colourspace primaries or its transfer functions? Discussing about sRGB to linear transformation without emphasis on the EOTF component is unsettling: a rendering engine using linear sRGB colourspace input colours and textures, renders with the sRGB colourspace primaries and whitepoint (assuming no colour transformations are occurring internally), thus its output is within sRGB colourspace.
When Rendering using BT.709 colourspace for HDTV, one is actually adopting sRGB colourspace primaries and whitepoint with different specific transfer functions.
Movie cameras such as those from Canon (Canon EOS 1DC, Canon CX00) use BT.709 primaries and whitepoint but encode their scene linear values with a custom log curve designated C-Log.
Most camera makers implement their own log curves (ALEXA Log C for ARRI Alexa cameras, RED Log Film for RED cameras, etc...) and proprietary RGB colourspaces specifications (ALEXA Wide Gamut RGB for ARRI Alexa cameras, REDcolor or DragonColor for RED cameras, etc...).
Likewise, it is perfectly valid to use the sRGB colourspace transfer functions with another set of primaries and whitepoint. When working within Adobe Photoshop or The Foundry Mari, some VFX studios use a proprietary colourspace specification along sRGB colourspace transfer functions: those transfer functions being commonly implemented in various DCC packages, the various colour transformation operations between those packages are simplified.
When one talks about sRGB alone, it should be safe to assume that he is referring to the sRGB colourspace as per IEC 61966-2-1:1999 Standard, not just cherry picked components. Unfortunately it is not the case thus in order to lessen the uncertainty and improve the terminology used, we suggest that:
One remembers that a given RGB colourspace is defined by the following essential three components:
When writing on the RGB colourspace topic, one should ideally mention the previous point, it will help people getting the grasp on the theory.
When discussing about a given RGB colourspace component, one should make a point of describing which specification's component he is referring to:
sRGB is a slight tweaking of the simple gamma 2.2 curve.
would be better written as follows:
The sRGB transfer function is a slight tweaking of the simple gamma 2.2 curve.
or for completeness:
The sRGB Electro-Optical Transfer Function (EOTF) is a slight tweaking of the simple Gamma 2.2 function.
When describing an RGB colourspace not supported by an official specification or standard, one should probably use a name that explicitly defines the complete specification:
sRGB-D60-Linear: an RGB colourspace using sRGB primaries chromatically adapted to CIE Standard Illuminant D60 whitepoint and linear transfer functions.
Adobe 1998 RGB-D65-Gamma1.8: an RGB colourspace using Adobe 1998 RGB primaries, CIE Standard Illuminant D65 whitepoint and Gamma 1.8 transfer functions.
In the near future it will likely become even more critical and relevant as new RGB colourspaces such as BT.2020 or the ACES encodings become mainstream.
1. Fairchild, M. D. (2013). Color Appearance Models (3rd ed., pp. 1–10831). Wiley. ISBN:B00DAYO8E2
2. Poynton, C. (2012). Digital Video and HDTV - Algorithms and Interfaces - Second Edition (2nd ed.). Morgan Kaufmann. ISBN:9780123919267