CIE 170-1:2006 — Fundamental Chromaticity Diagram
CIE 170-1:2006 defines the physiologically-relevant 2° and 10° cone-fundamental-based spectral sensitivity functions (LMS), replacing the 1931/1964 colour-matching functions for colour appearance modelling.
These cone fundamentals form the basis of all LMS-domain vision simulations, including CVD modelling, scotopic/mesopic transforms, and chromatic adaptation.
ISO 8596:2017 — Visual Acuity Testing (Snellen)
ISO 8596 specifies the optotype (Landolt C) for visual acuity measurement. Snellen E-chart is a common alternative. Visual acuity is expressed as 20/x (imperial) or 6/x (metric), where x is the distance at which a 20/20 letter subtends 5 arcminutes.
The tumbling-E optotype used here follows the letter size progression: 20/200, 20/100, 20/60, 20/40, 20/30, 20/20. Each row halves the angular subtense.
CIE 191:2010 — Mesopic Photometry
CIE 191:2010 recommends the mesopic photometric system MES2, which blends scotopic V'(λ) and photopic V(λ) sensitivity using an adaptation coefficient m that transitions continuously from 0 (scotopic) to 1 (photopic).
This standard is essential for modelling night driving, street lighting design, and low-light accessibility.
WCAG 2.2 — Contrast Accessibility
WCAG 2.2 Success Criterion 1.4.3 (AA): Minimum contrast ratio 4.5:1 for normal text, 3:1 for large text.
SC 1.4.6 (AAA): Enhanced contrast ratio 7:1 for normal text, 4.5:1 for large text.
The live metrics panel computes the WCAG contrast ratio from the min and max relative luminance in the simulated output, providing instant accessibility feedback.
Brettel, Viénot & Mollon 1997 — CVD Simulation
Brettel et al. (1997) proposed a rigorous model for simulating dichromatic colour vision by projecting colours onto the reduced-dimension gamut in LMS space. For protanopia and deuteranopia, the L or M cone response is derived from the remaining two channels; for tritanopia, S is derived.
Viénot et al. (1999) simplified this to a single 3×3 matrix per deficiency type that operates in the sRGB→LMS→sRGB pipeline, which is used in this tool's WebGL2 shaders.
CIE 15:2004 — Colorimetry & Standard Illuminants
CIE 15:2004 defines the fundamental colorimetric system: CIE 1931 standard observer, illuminant spectral power distributions (A, D50, D55, D65, D75, E, fluorescent series), the XYZ colour space, CIELAB, and chromatic adaptation procedures.
The Bradford chromatic adaptation transform used in this tool adapts between the illuminants defined in CIE 15.
Mannos & Sakrison 1974 — Contrast Sensitivity Function
Mannos & Sakrison (1974) modelled the human visual system's contrast sensitivity as a function of spatial frequency f (cycles per degree):
CSF(f) = 2.6 × (0.0192 + 0.114f) × exp(−(0.114f)^1.1)
This bandpass function peaks at approximately 3–5 cpd and attenuates both low and high spatial frequencies, explaining why humans are most sensitive to mid-frequency patterns.
ISO 11664-6:2014 — CIEDE2000 Colour Difference
CIEDE2000 (ΔE₀₀) is the CIE-recommended colour-difference formula. It includes parametric corrections for lightness, chroma, and hue weighting, plus a rotation term for the blue region. Used here for batch colour analysis outputs.
LMS & CVD
HPE (Hunt-Pointer-Estevez) sRGB → LMS transform:
|L| | 0.4002 0.7076 -0.0808 | |R_lin|
|M| = |-0.2263 1.1653 0.0457 | |G_lin|
|S| | 0.0000 0.0000 0.9182 | |B_lin|
LMS to Linear sRGB (inverse):
|R_lin| | 1.8601 -1.1295 0.2199 | |L|
|G_lin| = | 0.3612 0.6388 -0.0001 | |M|
|B_lin| | 0.0000 0.0000 1.0891 | |S|
CVD Simulation Matrices (Viénot/Brettel, in LMS space):
| 0.000 1.051 -0.051 |
| 0.000 1.000 0.000 |
| 0.000 0.000 1.000 |
Deuteranopia:
| 1.000 0.000 0.000 |
| 0.951 0.000 0.049 |
| 0.000 0.000 1.000 |
Tritanopia:
| 1.000 0.000 0.000 |
| 0.000 1.000 0.000 |
|-0.867 1.867 0.000 |
Applied as: LMS_sim = M_cvd × LMS_original
Then blended: LMS_out = lerp(LMS_original, LMS_sim, severity)
Scotopic / Mesopic
Scotopic (rod-only) vision simulation:
rod = 0.10×R_lin + 0.59×G_lin + 0.31×B_lin
rod = rod^1.4 × 0.8 (compression + Purkinje shift)
Scotopic output (monochromatic blue-green):
R_out = rod × 0.3
G_out = rod × 0.7
B_out = rod × 1.0
Final = lerp(original, scotopic, severity)
Mesopic (rod+cone blend):
adaptLevel parameter: 0 = full scotopic, 1 = full photopic
CIE MES2 model maps luminance to m coefficient
Sub-threshold: <0.005 cd/m² (scotopic)
Transition: 0.005–5 cd/m² (mesopic)
Supra-threshold: >5 cd/m² (photopic)
Age & Cataracts
Crystalline lens yellowing (age-related):
Spectral transmission filter (approximate):
T_R = 1 + f × 0.05 (slight red boost)
T_G = 1 - f × 0.02 (minor green loss)
T_B = 1 - f × 0.40 (significant blue loss)
Output = lerp(original, original × T, severity)
At age 80: blue transmission drops ~40%, causing
colours to appear "warmer" and blue-discrimination
is impaired (tritanomaly-like effect).
Cataract simulation:
1. Light scatter: 5×5 weighted blur kernel
2. Contrast loss: mix(lum_mean, pixel, 1 - lvl×0.15)
3. Yellowing: R *= (1 + y×0.03), B *= (1 - y×0.25)
where y = cataract_level × 0.2
Severity parameter scales all three effects linearly.
CSF Model
Mannos-Sakrison Contrast Sensitivity Function:
where f = spatial frequency in cycles per degree (cpd)
Properties:
- Peak sensitivity at ~3-5 cpd
- Low-frequency attenuation (lateral inhibition)
- High-frequency roll-off (optical limits + neural sampling)
In WebGL2 shader:
f = distance(uv, center) × 2 × peak_cpd × 60
The CSF value modulates pixel luminance as a radial overlay
Output = pixel × lerp(1.0, csf, severity)
Bradford CAT
Bradford Chromatic Adaptation Transform:
| 0.8951 0.2664 -0.1614 |
|-0.7502 1.7135 0.0367 |
| 0.0389 -0.0685 1.0296 |
Diagonal scaling (partial adaptation):
D_i = 1 + strength × (dst_LMS_i / src_LMS_i - 1)
Full adaptation: XYZ' = M_inv × D × M × XYZ
Illuminants used:
D65: x=0.3127 y=0.3290 (6504 K)
D50: x=0.3457 y=0.3585 (5003 K)
A: x=0.4476 y=0.4074 (2856 K)
Daltonisation
Daltonisation (colour correction for CVD):
sim = CVD_matrix × LMS(original)
Step 2: Compute lost information
delta = original - sim (per channel in linear sRGB)
Step 3: Redistribute to remaining channels
R' = clamp(R + dR×0.7 + dG×0.7)
G' = clamp(G + dG×0.7 + dB×0.7)
B' = clamp(B + dB×0.7 + dR×0.3)
This shifts information from the confused channels
into channels the observer can still perceive.
WebGL2 Pipeline
WebGL2 rendering pipeline architecture:
a_pos = {-1,-1}, {1,-1}, {-1,1}, {1,1}
v_uv = a_pos * 0.5 + 0.5 (maps to [0,1])
Fragment shader pipeline per pixel:
1. Sample source texture at v_uv
2. sRGB EOTF (gamma decode) to linear
3. Apply contrast: mix(0.5, pixel, 1+contrast)
4. Apply gamma: pixel = pow(pixel, gamma)
5. Add retinal noise: pixel += rand(uv) × noise
6. Re-encode to sRGB (OETF)
7. Pass to simulation function sim(pixel, uv)
8. Split-view check: if uv.x < split, output original
Shader recompilation on mode change.
Uniforms updated per frame (no recompilation).
GPU texture upload via texImage2D (RGBA, UNSIGNED_BYTE).
Limitations
(Brettel/Viénot model, not individual-calibrated)
• Scotopic/mesopic models use simplified V'(λ) weights
rather than full spectral integration
• Age yellowing is a linear approximation of
exponential lens transmittance decay
• Cataract scatter uses a 5×5 uniform kernel (not
physically-accurate Mie scattering)
• CSF overlay is radial (not gaze-contingent)
• Macular degeneration scotoma is circular (real
scotomas are irregular perimetrically)
• sRGB gamut only (no wide-gamut Display P3 / Rec.2020)
• Single-frame simulation (no temporal adaptation)
• Not a clinical diagnostic tool
Colour Vision Deficiency
[2] Viénot, F., Brettel, H., & Mollon, J. D. (1999). Digital video colourimaps for checking the legibility of displays by dichromats. Color Research & Application, 24(4), 243–252.
[3] Machado, G. M., Oliveira, M. M., & Fernandes, L. A. F. (2009). A physiologically-based model for simulation of color vision deficiency. IEEE Transactions on Visualization and Computer Graphics, 15(6), 1291–1298.
CIE Standards & Colorimetry
[5] CIE. (2010). CIE 191:2010 Recommended System for Mesopic Photometry Based on Visual Performance. Vienna: CIE.
[14] CIE. (2004). CIE 15:2004 Colorimetry (3rd ed.). Vienna: CIE. (Fundamental colorimetric definitions, standard illuminants.)
Contrast Sensitivity & Visual Acuity
[12] W3C. (2023). Web Content Accessibility Guidelines (WCAG) 2.2. (Contrast ratio specifications for AA and AAA compliance.)
[13] ISO. (2017). ISO 8596:2017 Ophthalmic optics — Visual acuity testing — Standard and clinical optotypes and their presentation.
Chromatic Adaptation & Colour Appearance
[8] Fairchild, M. D. (2013). Color Appearance Models (3rd ed.). Wiley. (Chapters on chromatic adaptation, CIECAM02, age-related changes.)
[9] Hunt, R. W. G., & Pointer, M. R. (2011). Measuring Colour (4th ed.). Wiley. (HPE cone fundamentals, opponent-channel theory.)
Aging, Cataracts & Ocular Optics
[11] van den Berg, T. J. T. P. (1995). Analysis of intraocular straylight, especially in relation to age. Optometry and Vision Science, 72(2), 52–59. (Cataract scatter model.)
About this tool
This tool is an educational approximation by Auric Artisan. It uses simplified models for interactive exploration and is not intended as a clinical diagnostic instrument. All computation runs on-device with zero network dependency.