semmixcolor and perception

Lightness

Lightness answers the question of how light a color looks compared to white seen in the same conditions. It is relative, so it does not change when the whole scene is brightened. It is the kind of brightness the eye judges best.

L* in CIELAB and CIELUV

The most widely used lightness measure is L* from CIELAB and CIELUV. It depends only on relative luminance Y (see luminance):

y_r = Y / Y_n (Y_n: luminance of the reference white) L* = 116 · ∛y_r - 16 if y_r > 0.008856 L* = 903.3 · y_r otherwise

The cube root approximates the eye's nonlinear response: in dark tones a small change of luminance is clearly visible, in light tones a much larger one is needed. L* = 0 is black, L* = 100 is white, and equal steps of L* look roughly equal.

Middle gray

The gray that looks halfway between black and white has L* = 50. Its luminance is not 50% but:

Y = ((50 + 16) / 116)³ = 0.184 → 18.4% of the light in sRGB: a value of about 119 (out of 255)

Hence the photographer's "18% gray card": it reflects less than a fifth of the light and still looks like middle gray. The sRGB value 128 is L* = 53.6, slightly lighter than halfway.

Munsell value

The Munsell color system (1905) also has a lightness scale, called value, from 0 (black) to 10 (white). It was set experimentally, by observers comparing samples. To a good approximation:

Munsell value ≈ L* / 10

That two independent methods give almost the same scale confirms that L* models perception well.

L in HSL is not lightness

The HSL model calls its third component lightness, but computes it as the mean of the largest and smallest RGB components. Every pure hue then has L = 50%:

ColorL (HSL)L* (CIELAB)
blue (0, 0, 255)50%32.3
red (255, 0, 0)50%53.2
magenta (255, 0, 255)50%60.3
green (0, 255, 0)50%87.7
cyan (0, 255, 255)50%91.1
yellow (255, 255, 0)50%97.1

According to HSL these colors are equally light. To the eye the gap between blue and yellow is almost two thirds of the whole scale. For our color #c85028, HSL L is 47.1% and L* is 49.7: close here, but only by coincidence.

Palettes of equal perceived lightness, for charts or maps, are built in LCh or Oklab by varying hue at constant L*. In HSL, constant L gives colors of very different lightness.