Ogni schermo che usiamo, dal telefono al televisore, mostra milioni di colori usando soltanto tre tipi di luce: rossa, verde e blu. Non è un trucco tecnologico arbitrario, ma una conseguenza di come funziona la visione umana. Capire questo legame aiuta a interpretare correttamente i valori RGB, a non stupirsi quando lo stesso codice colore appare diverso su due dispositivi e a sapere cosa RGB non può fare.
Tre recettori, tre primari
La retina umana, in condizioni di luce normale, percepisce il colore grazie a tre tipi di coni, sensibili in modo diverso a lunghezze d'onda corte, medie e lunghe. Il cervello non riceve lo spettro completo della luce, ma solo tre segnali, uno per tipo di cono.
Ne deriva un fatto sorprendente: due luci con spettri molto diversi possono apparire identiche, se stimolano i tre coni nello stesso modo. Questo fenomeno si chiama metamerismo ed è la base di tutta la riproduzione del colore. Lo schermo non ricrea lo spettro del tramonto che avete fotografato: produce una miscela di tre luci che "inganna" i coni nello stesso modo.
La sintesi additiva
Sommare luci colorate si chiama sintesi additiva. Partendo dal buio (nessuna luce) si aggiungono i primari:
| Combinazione | Risultato percepito |
|---|---|
| rosso + verde | giallo |
| verde + blu | ciano |
| blu + rosso | magenta |
| rosso + verde + blu al massimo | bianco |
| nessuna luce | nero |
Il giallo che vedete su un monitor non contiene alcuna luce "gialla": è rosso e verde insieme. Avvicinando una lente d'ingrandimento a molti schermi si vedono i sottopixel separati, e la parte gialla dell'immagine mostra solo sottopixel rossi e verdi accesi.
Come si scrivono i valori RGB
Con 8 bit per canale ogni componente va da 0 a 255. Le notazioni più comuni sono:
- Decimale:
rgb(30, 90, 168). - Esadecimale:
#1E5AA8, dove ogni coppia di cifre è un canale (1E = 30, 5A = 90, A8 = 168). - Esadecimale abbreviato:
#F80equivale a#FF8800, perché ogni cifra viene raddoppiata. - Normalizzata: valori da 0,0 a 1,0, usata in molti software 3D e negli shader.
Leggere al volo un codice esadecimale è una piccola abilità molto utile. Se il primo byte è alto e gli altri bassi, il colore tende al rosso; se tutti e tre sono uguali, è un grigio; se sono tutti vicini a FF, è un colore chiaro e poco saturo.
Il problema: quale rosso?
Un valore RGB, da solo, non identifica un colore preciso. rgb(255, 0, 0) significa «il rosso più intenso che questo dispositivo può produrre». Ma il rosso di un pannello economico e quello di uno schermo professionale sono fisicamente diversi.
Per dare un significato assoluto ai numeri bisogna specificare:
- Le coordinate dei tre primari, cioè quale rosso, quale verde e quale blu.
- Il punto di bianco, cioè quale bianco si ottiene con i tre canali al massimo (per esempio D65, uno standard che approssima la luce diurna media).
- La curva di trasferimento, cioè come i numeri si traducono in intensità luminosa.
Queste tre informazioni insieme definiscono uno spazio colore, come sRGB o Display P3. Un file senza indicazione dello spazio colore viene di norma interpretato come sRGB, che è lo standard di riferimento per il web e per la maggior parte dei dispositivi di consumo.
I numeri non sono proporzionali alla luce
Un errore molto comune è pensare che rgb(128, 128, 128) emetta metà della luce di rgb(255, 255, 255). Non è così: in sRGB i valori sono codificati con una curva non lineare (la gamma), pensata per distribuire meglio i livelli disponibili secondo la sensibilità dell'occhio. Il grigio 128 emette circa un quinto della luce del bianco, ma appare a metà strada.
Questa non linearità ha conseguenze pratiche: mescolare o sfumare colori facendo la media aritmetica dei valori sRGB produce transizioni più scure del previsto. Il problema è trattato in dettaglio quando si parla di correzione gamma.
Cosa RGB non riesce a mostrare
Il triangolo formato dai tre primari, rappresentato su un diagramma di cromaticità, racchiude tutti i colori che lo schermo può produrre: è il suo gamut. Alcuni colori reali cadono fuori:
- certi verdi e ciani molto saturi, come quelli di alcune lagune o di alcuni laser;
- i viola spettrali più profondi;
- alcuni colori fluorescenti di vernici e tessuti.
Nessuna combinazione di valori positivi dei tre primari può riprodurli. Gli spazi a gamut ampio spostano più lontano i vertici del triangolo e ne includono una parte maggiore, ma nessuno schermo a tre primari copre tutti i colori visibili.
Consigli pratici
- Quando qualcuno vi fornisce un colore come codice RGB, chiedete in quale spazio colore è definito.
- Per confronti visivi critici usate uno schermo calibrato e ambienti con luce costante.
- Non usate valori RGB "puri" (255, 0, 0) come colori di interfaccia: risultano aggressivi e cambiano molto da schermo a schermo.
- Per le sfumature calcolate da codice, lavorate in uno spazio lineare o percettivo e convertite alla fine.
In sintesi
- Lo schermo sfrutta i tre tipi di coni della retina: tre luci bastano grazie al metamerismo.
- La sintesi additiva parte dal nero e somma luce: rosso e verde danno giallo, tutti e tre danno bianco.
- Un valore RGB ha significato preciso solo dentro uno spazio colore (primari, bianco, curva).
- I valori sRGB non sono proporzionali alla luce emessa.
- Ogni schermo ha un gamut limitato: alcuni colori reali restano fuori.