WLab and Wpt
Every CIELAB value comes with fine print: it holds for one light and one standard viewer. Wpt (pronounced "Waypoint") describes the color of a material instead, and WLab (Waypoint Lab) reshapes Wpt so that distances read like familiar ΔE color differences. Try the demo below, then read the guide.
The short version
- A CIELAB value describes a sample under one light, as one standard viewer sees it. Change the light or the viewer and the value changes, by a different amount for each sample.
- Three things set a measured color: the object (its spectral reflectance), the light, and the observer (a standard one, a person's own eyes, or a camera's sensors). Wpt and WLab follow the object; the Waypoint Labs let you change the light and the observer and see what moves.
- That is why two samples that match in the viewing booth (a cabinet lit by one standard light, where colors are checked) can stop matching in the store. The name for it is metamerism.
- Wpt and WLab are coordinates for the material itself: for typical materials they stay nearly the same whatever the light and whoever is looking, and how far a material does move is useful information in itself. WLab differences are designed to be similar in size to familiar ΔE values.
- With them you can ask questions that a check under a viewing booth's one light cannot answer. Will this match hold under store lighting? Does this ink hold its color? Do these two viewers, or a camera and a person, agree?
- A material adjustment transform (MAT) carries measurements from one light and/or viewer to another by way of the material.
- Keep CIELAB and ΔE00 for work under one light and for contracts. Reach for Wpt and WLab when a comparison is needed that crosses lights, viewers or devices, or when the question is about the lights and viewers themselves: how alike two lights render materials, or how far an observer or a camera is from the standard ones.
Demo: two materials that match, until the light or viewer changes
The two materials below have different spectra but match exactly under one light (D65), for one viewer (the CIE 1931 standard observer). Change the light or the viewer and watch them part, and compare how far each one moves from itself in CIELAB and in WLab.
Chips show each material under the chosen light as an adapted viewer would roughly see it (CIE 1931 observer, Bradford adaptation to sRGB). Screen colors are approximate. PMCC Smurf and PMCC Unitary Blue are patches of the Preferred Memory Colour Chart (M. R. Luo, "The new preferred memory color (PMC) chart", Color Research & Application 49(6), 2024), measured by Maxim W. Derhak; each twin was made from its patch to match it exactly under D65.
Waypoint Labs
Work with the ideas on your own data, in this browser (nothing you enter is sent anywhere). Each lab takes up one question:
- Does a material keep its color across lights and observers, and do two that match here match everywhere? Objects
- How far apart are two colors measured under one light? WLab and color differences
- Does WLab hold hue constant as colors get lighter and grayer? Uniformity and hue
- How different is an observer (a person's own, or a camera's) from the standard ones, and how is it carried in an iccMAX profile? Observers
- How alike do two lights render materials, and how does that sit beside the color rendering index and TM-30? Lighting
- How do I give my sensors a Wpt, and carry colors to another light or observer with a MAT? Wpt normalization and MATs
- Over many lights and objects at once, how closely does a MAT predict what a material will measure, beside a chromatic adaptation transform? Comparing MATs and CATs
The robustness report
Paste the spectral reflectance of a standard and its samples, choose the lights that matter (including your own measured lights), and read ΔEWLab for each sample under each light, plus ΔE00 in the booth. One page that runs in your browser; nothing is sent anywhere.
For developers
Everything on this page runs on wlab, a small TypeScript implementation of Wpt, WLab and MATs with no
dependencies, tested against the reference implementation. It takes spectra for any light and observer, and display
colors in sRGB, Display P3, Adobe RGB or Rec. 2020.
import { wptNormalization, deltaEWlab, rgbToWlab } from 'wlab';
const store = wptNormalization('cie1931', 'F11'); // one normalization per light and observer
const d = deltaEWlab(store.wlabOf(standard), store.wlabOf(sample)); // spectra: 380–780 nm, 5 nm
rgbToWlab([0.2, 0.6, 0.3], 'display-p3'); // a display color, through D65
A display color is not a material: in WLab it stands for the material that would give the same numbers under D65. The guide's Technical annex (A.8) maps every equation to its function.