Pearla · Color Science

Pearl-Log

Pearla's native scene-referred logarithmic encoding.

Technical specification, final standard · paired with Pearla Wide Gamut primaries

1 Overview

Pearl-Log is Pearla's native log encoding for recording, delivery, and interchange. It maps scene-linear light to a compact code-value range with a logarithmic curve and a short linear toe, giving wide dynamic range with smooth, progressive highlight compression. Pearl-Log is paired with the Pearla Wide Gamut primaries (Section 4). The constants below are fixed, a stability contract: files encoded as Pearl-Log must decode identically across versions.

2 Curve characteristics

The Pearl-Log curve places 18% mid-gray at code value 0.420 and scene black at 0.112. Highlights reach maximum code (1.0) at approximately +9.7 stops above mid-gray; this figure is highlight headroom, not the total dynamic range. The logarithmic segment spans roughly 15 stops of exposure (about -5 stops below to +9.7 above mid-gray), and a short linear toe carries deeper shadow and slightly negative values, together enough to encode the full exposure range of current cinema sensors with margin. The horizontal axis is scene exposure in stops relative to mid-gray; the vertical axis is the normalized Pearl-Log code value.

0.00.20.40.60.81.0 -8-6-4-20+2+4+6+8+10 18% gray · 0.42090% · 0.557 scene exposure, stops relative to 18% mid-gray Pearl-Log code value
Figure 1. Pearl-Log transfer characteristic (code value vs. scene exposure).

Reference code values

Scene reflectionCode (normalized)10-bit12-bit
0%0.1119114458
18%0.42004301720
90%0.55745702282

Full-range integer codes: IN = round(V·(2N-1)); 10-bit ×1023, 12-bit ×4095.

3 Pearl-Log formula

3.1 Scene-linear to Pearl-Log

With scene-linear reflection as L and Pearl-Log code as V:

V = 9.56718·L + 0.11189                       (L < 0.005)
V = 0.19874·log10(9.2·L + 0.037) + 0.37454    (L ≥ 0.005)

3.2 Pearl-Log to scene-linear

L = (V - 0.11189) / 9.56718                        (V < 0.159726)
L = (10^((V - 0.37454) / 0.19874) - 0.037) / 9.2   (V ≥ 0.159726)

3.3 Integer code to scene-linear

From an N-bit integer code IN, normalize then apply Section 3.2: V = IN / 1023 (10-bit) or V = IN / 4095 (12-bit).

4 Colorimetry (gamut)

Pearl-Log encodes scene-linear values expressed in the Pearla Wide Gamut primaries (D65). For the full gamut definition, the RGB-to-XYZ matrices, and conversions to other color spaces, see the Pearla Wide Gamut specification.

Primaryxy
Red0.74250.2689
Green-0.05211.0337
Blue0.0785-0.0398
White (D65)0.31270.3290

Pearla Wide Gamut RGB → CIE XYZ (D65)

+0.897734  -0.036290  +0.089012
+0.325119  +0.720011  -0.045130
-0.013783  +0.012816  +1.090025

5 Implementation notes

Pearl-Log is a full-range encoding carried at 10-bit or 12-bit precision; the integer code at N-bit depth is IN = round(V·(2N-1)). The transfer constants in Section 3 are a stability contract and must not be altered; they define the on-disk meaning of every Pearl-Log file. A short linear toe below L = 0.005 keeps the curve well-behaved through scene black and slightly negative values.

Reference exposure. Code values across the exposure range (stops relative to 18% mid-gray).

Stops vs grayRelative LCode (norm.)10-bit
-7 0.0014 0.1253 128
-6 0.0028 0.1388 142
-5 0.0056 0.1655 169
-4 0.0112 0.2051 210
-3 0.0225 0.2528 259
-2 0.0450 0.3058 313
-1 0.0900 0.3620 370
+0 0.1800 0.4200 430
+1 0.3600 0.4789 490
+2 0.7200 0.5382 551
+3 1.4400 0.5978 612
+4 2.8800 0.6575 673
+5 5.7600 0.7173 734
+6 11.5200 0.7771 795
+7 23.0400 0.8369 856
+8 46.0800 0.8967 917
+9 92.1600 0.9565 979

Pearl-Log, technical specification. Transfer constants are a stability contract; all values verified numerically; encode and decode are exact algebraic inverses within each segment. © Pearla.