White Point, CCT and Tint

As we have seen in the previous post, knowing the characteristics of light at the scene is critical to be able to determine the color transform that will allow captured raw data to be naturally displayed from an output color space like ubiquitous sRGB.

White Point

The light source Spectral Power Distribution (SPD) corresponds to a unique White Point, namely a set of coordinates in the XYZ color space, obtained by multiplying wavelength-by-wavelength its SPD (the blue curve below) by the response of the retina of a typical viewer, otherwise known as the CIE Color Matching Functions of a Standard Observer (\hat{x},\hat{y},\hat{z} in the plot)

Figure 1.  Spectral Power Distribution of Standard Daylight Illuminant D5300 with a Correlated Color Temperature of  5300 deg. K; and CIE (2012) 2-deg XYZ “physiologically relevant” Color Matching Functions from cvrl.org.

Adding (integrating) the three resulting curves we get three values that represent the illuminant’s coordinates in the XYZ color space.  The White Point is obtained by dividing these coordinates by the Y value to normalize it to 1.

For example a Standard Daylight Illuminant with a Correlated Color Temperature of 5300 kelvins has a White Point of[1]

XYZn = [0.9593 1.0000 0.8833]

assuming CIE (2012) 2-deg XYZ “physiologically relevant” Color Matching Functions from cvrl.org.

Since under CIE conventions Y is defined by its corresponding curve \hat{y} to be equal to Luminance from the scene, the White Point is independent of the intensity of the arriving light.   It therefore can be considered the apex of the normalized parallelepiped representing the XYZ color space.  In raw conversion this apex is often normalized to maximum diffuse white reflection, with Y=1 representing L*100 in the CIELAB color space.

As a result of taking Luminance out of the equation, White Point can be expressed by just two variables, initially X and Z.  This is what two dimensional chromaticity coordinates were designed for: xy, u'v' or, better yet in this context, uv of the CIE 1960 Uniform Color Space – because as we will see below lines of equal temperature (isotherms) tend to be more perpendicular to the Planckian locus there.  Namely:

(1)   \begin{equation*} u = \frac{4X}{X+15Y+3Z}, v = \frac{6Y}{X+15Y+3Z} \end{equation*}

with Y=1 in the case of White Point.  Once in a chromaticity space it becomes intuitive to think in terms of  differences in chromaticity from the main natural light sources that hominids have become accustomed to over millions of years: things that burn and generate heat, like the sun or fire, so called blackbody radiators whose Spectral Power Distribution is well known and depends mostly on their temperature.  If the chromaticity is similar they should look similar, the thinking went.

Blackbody Radiators, CCT and the Planckian Locus

Blackbody radiators have well defined chromaticities directly related to their burning temperature in kelvins, shown below in the customary (for these purposes) CIE 1960 UCS diagram as the red curve – referred to as the Planckian locus

Figure 2.  Planckian locus (red curve) in the CIE 1960 UCS uv chromaticity space with location of Standard Incandescent Illuminant A and Daylight Shade D65.   Distance from the locus is calculated along isotherms perpendicular to it and denoted Duv.  Image courtesy of Yoishi Ohno at NIST, see the notes for a link to the relative presentation.

Once projected to the uv space, the effect of an illuminant can be intuitively characterized  in terms of the color of light of the nearest  blackbody temperature, so-called Correlated Color Temperature (CCT), see for instance Standard incandescent Illuminant A and daylight shade D65 shown as the red and blue triangles in Figure 2 above.

Duv and Tint

The nearest color temperature to the Planckian locus is determined along isotherms perpendicular to it.  The distance to the locus is denominated Delta uv or Duv for short, positive above the locus, negative below it.  Anecdotally negative values tend to be more pleasing to the average observer than positive ones.[2]

‘Tint’ is what many cameras and raw converters call some derivation of Duv.  For instance the aforementioned D5300 illuminant has a CCT of 5299.9K and a Duv of 0.003266.  Adobe calls Tint 3000 times Duv,[3] so it would show as 9.8 in the white balance section of Adobe Camera Raw or Lightroom.  Unfortunately the definition of Tint is not standardized and every manufacturer chooses to present Duv in their own way.

Tint and Duv values are representative of the spectral signature of the illuminant and should almost never be changed in-camera or in-converter.  Resulting values for Duv far removed from expectation for the relative light source are usually an indication that something did not go right in the color transform to XYZ.  For instance a Tint value above 15 for Standard Daylight Illuminant D5300 would indicate substantial deviation from the Standard.  Some color meters would throw a warning.

As you can gather, the figures for CCT and Duv are just another way of expressing the two variables in the XYZ White Point of the light source and there is one-to-one correspondence between them.   There are a number of well known polynomial fits that accurately model the conversion between them and back.  One of the better ones is by Yoshi Ohno at NIST, which you can find in the Octave/Matlab function adapted from the presentation linked in the notes.[4]

Measuring Illuminant CCT & White Point

Determining the White Point or any of its derivatives accurately in the field can be difficult because while it is easy for photographers to tell whether the image was captured under Direct Sunlight or in the Shade just by looking at the scene, the Human Visual System works against us by providing real time Chromatic Adaptation so that we cannot intuitively ‘see’ moderate SPD variations, having become surreptitiously accustomed to them.  Experience helps but otherwise we have to find some objective way of measuring it.

The easiest way to estimate the illuminant’s XYZ White Point is to sample its Spectral Power Distribution at the time of capture with a portable color meter:  there are several good ones made by companies like Sekonic and Minolta, which conveniently can produce figures for White Point and CCT.

Figure 3. XYZ White Point and Correlated Color Temperature of a warm-white LED light bulb measured by home brew color meter.

However such gadgets are expensive and there is a learning curve associated with using them properly in the field.  Absent such knowledge, cameras and raw converters try instead to estimate illuminant White Point (and/or equivalently CCT and Duv) by analyzing chromaticities in the captured image.

Estimating White Point, CCT and Duv

When raw data represents radiance from a neutral diffuse reflector, the intensity produced in XYZ after normalizing Y to 1 effectively yields the White Point – assuming that the correct white balance multipliers K_{rgb} and transform M have been selected for the scene type and illuminant.  From Steps 1 and 2 in the previous article:

(2)   \begin{equation*} XYZ \approx M * diag(K_{rgb}) * rgb \end{equation*}

with rgb demosaiced raw data in 3xN format as described there.  Together K_{rgb} and M form a transform from camera raw to the XYZ color space.

For instance, with the Nikon D5100 and Natural Light illuminant D5300 used in this series of articles, mid-gray radiance from a neutral portion of the subject could produce demosaiced raw data of mean

rgb = [1802, 2790, 2113]^T  DN

After multiplication by the appropriate white balance multipliers from the last article

we get [2790, 2790, 2790] DN, a neutral tone as expected.  Applying the relative generic CC24+D5300 compromise color matrix M, also from there

results in XYZ trichromatic triplet [2676, 2790, 2465], which after normalizing Y to 1 is exactly equal to the D5300 White Point up top

XYZn = [0.9593, 1.0000, 0.8833]

as you can follow in the Octave / Matlab script linked to in the notes[5]

Off the Beaten Path

This of course is no surprise: we had the precise white balance multipliers and compromise matrix for the given scene and illuminant, which were designed together to preserve the White Point.

However, it makes intuitive sense that we could use the same transform for daylight illuminants with Correlated Color Temperatures not too far from the 5300K it was designed for, letting measured changing  white balance multipliers vary with the light’s SPD while matrix M is held constant.  This is the resulting difference from expectation then:

Figure 4.  Using a ballpark constant forward matrix M with varying accurately measured White Balance multipliers to estimate illuminant White Point at the scene.  The error appears acceptable within +/-10% of the Correlated Color Temperature used to derive M, 5300K.  dE00 is the CIEDE 2000 difference formula, while mDuv is Duv times 1000.

As you can see in the Figure above, using a D5300-based matrix provides a pretty good estimate of the White Point for daylight illuminants with a wide range of correlated color temperatures.  The x-axis represents Standard CIE ‘D’ daylight illuminants.  The black dots, read off the left axis, are the estimated CCT obtained after application of white balance multipliers from a virtual gray card but with fixed compromise matrix M;  the corresponding Duv is the dashed orange line, read off the right axis (m indicating 1/1000th); the solid orange line is the CIEDE2000 color difference from the correct XYZn White Point coordinates, also read off the right axis, a value of 1 is supposed to represent a just noticeable difference.

Of course the error is zero and Duv is correct at the CCT that the transform was computed for, 5300K.   It looks like this method of estimating White Point would be quite workable within 10% of M‘s intrinsic CCT.  This is also true with lower temperature blackbody radiators as can be seen below for an ideal incandescent bulb at 3000K

Figure 5. Using a ballpark constant forward matrix M with varying accurately measured White Balance multipliers to estimate illuminant White Point at the scene.  The error appears acceptable within +/-10% of the Correlated Color Temperature used to derive M, 3000K.  dE00 is the CIEDE 2000 difference formula, while mDuv is Duv times 1000.

So if we roughly know the scene (Landscape, Portrait, etc.) and illuminant type (Sunny, Shade, Incandescent etc.) – and we have access to the appropriate transforms for the combination – the natural-color-existential problem of determining the illuminant’s White Point or CCT reduces to getting the white balance multipliers right in-camera or in-converter.  That’s when having a capture of the light illuminating the main subject at the scene reflected off an object that is known to be neutral, like a gray card, is exceedingly helpful in obtaining more natural tones.

Of course the curious photographer always knew that – and now hopefully better understands why.  How to help the camera and raw converter make the right choices, next.

 

Notes and References


1. Calculations on this page are referenced to the 380-730nm wavelength range only because that’s how BabelColor30 reflectances come.
2. Vision Experiment on White Light Chromaticity for Lighting – Duv levels Perceived Most Natural, Yoshi Ohno and Mira Fein, National Institute of Standards and Technology, Oberlin College, Oberlin, Ohio, 2013.
3. Adobe specifies Tint in its raw converters as 3000 times Duv, as seen in this helpful post by Iliah Borg referencing the DNG SDK.
4. Calculation of CCT and Duv and Practical Conversion Formulae, Yoshi Ohno, CORM 2011.  The Matlab code below is based on Slide 21, which has several typos, I hope I caught them all, let me know if you spot any others.
5. The Octave/Matlab scripts used for the plots and calculations in this article can be downloaded by clicking here.

2 thoughts on “White Point, CCT and Tint”

  1. Really interesting article.
    What do you think about shooting in uniwb (thanks to magic lantern) and then selecting the white balance in the raw editor?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.