potresti volerlo spingere oltre: rendere un'immagine come l'occhio umano la catturerebbe o anche come l'essere umano la percepirebbe.
Esistono due modi per interpretarlo. Farò entrambe le cose.
Interpretazione 1: Rendering di un'immagine che appare percettivamente realistica.
Alla fine della giornata, l'immagine deve ancora essere visualizzata da qualche parte. Ecco la chiave: vuoi rendere la tua immagine in modo tale che quando * visualizzi * quell'immagine su un particolare dispositivo di visualizzazione, produrrà la stessa sensazione che l'immagine radiometrica originale avrebbe prodotto.
Ecco come decomprimere quell'idea.
Nel mondo reale, gli spettri radiometrici (cioè le distribuzioni di luce reali) penetrano nell'occhio e stimolano circa 1 quattro recettori di luce. Le stimolazioni dei recettori producono le sensazioni di colore che associamo alle immagini.
Nel rendering, non abbiamo un controllo arbitrario sugli spettri che produciamo. Fortunatamente, poiché (di solito) abbiamo solo tre coni, ognuno dei quali produce solo un valore scalare, la visione dei colori può essere riprodotta usando esattamente tre primari. La linea di fondo è che puoi produrre qualsiasi sensazione di colore usando solo una combinazione lineare di tre lunghezze d'onda (fino a pochi colori che potrebbero essere negativi, nel qual caso devi usare solo primarie diverse).
Non hai una scelta di primarie. Quasi tutti i dispositivi di visualizzazione a colori utilizzano lo standard sRGB, che fornisce tre elementi primari (che di solito non hanno una singola lunghezza d'onda). Va bene perché si scopre che è tutto sottratto e non devi preoccuparti.
Per chiarire il caos che è il rendering percettivamente accurato, ecco l'algoritmo:
- Rendi la tua immagine usando i calcoli radiometrici corretti. Traccia singole lunghezze d'onda di luce o secchi di lunghezze d'onda. Qualunque cosa. Alla fine, hai un'immagine che ha una rappresentazione dello spettro ricevuto in ogni punto.
- Ad ogni pixel, prendi lo spettro che hai reso e lo converti nello spazio colore CIE XYZ . Questo funziona per integrare il prodotto dello spettro con le funzioni standard dell'osservatore (vedi definizione CIE XYZ) .
- Questo produce tre valori scalari, che sono i colori CIE XYZ.
- Utilizzare una trasformazione a matrice per convertirla in RGB lineare, quindi da lì utilizzare una trasformazione lineare / di potenza per convertire RGB lineare in sRGB .
- Converti da virgola mobile a uint8 e salva, bloccando i valori fuori portata (il tuo monitor non può rappresentarli).
- Invia i pixel uint8 al framebuffer.
- Il display prende i colori sRGB, fa la trasformazione inversa per produrre tre primarie di intensità particolari. Ciascuno ridimensiona l'output di qualunque elemento dell'immagine di cui è responsabile. Gli elementi dell'immagine si illuminano, producendo uno spettro. Questo spettro sarà (si spera) un metamero per lo spettro originale che hai reso.
- Percepisci lo spettro come avresti percepito lo spettro renderizzato.
Interpretazione 2: tentativo di simulare i dati finali che l'occhio umano potrebbe ricevere a scopo di visualizzazione o compensazione per i display LDR.
Questo ha un significato meno utile, credo. In sostanza, stai cercando di produrre un'immagine che modifichi il modo in cui il cervello la percepisce per divertimento / profitto.
Ad esempio, quest'anno SIGGRAPH ha pubblicato un articolo in cui simulavano immagini residue e riduzione del colore per far apparire le immagini percettivamente diverse. Naturalmente, l'unica ragione per cui lo fanno è perché i display con cui stiamo lavorando sono tutti a bassa gamma dinamica (LDR). Il punto è simulare gli effetti che qualcuno potrebbe vedere se esposti a un display ad alta gamma dinamica (HDR) come dati immagine reali.
In pratica, questo non funziona molto bene. Per le immagini residue, ad esempio, vediamo immagini residue a causa di uno stimolo molto luminoso che esaurisce le cellule colorate. Se invece provi a stimolare l'effetto con una falsa immagine successiva, potrebbe sembrare un po 'simile - ma dal momento che è un meccanismo completamente diverso, non è molto convincente.
Questo tipo di grafica è in realtà sottoesplorata in letteratura se vuoi provarci. L'articolo citato è un esempio degli approcci più o meno all'avanguardia che abbiamo. Penso che l'attuale consenso, tuttavia, sia che non vale davvero la pena provare a simulare (almeno in questo momento), poiché nella migliore delle ipotesi avresti solo approssimato gli effetti della visione reale sostituendo quelli diversi, e che questo non è davvero opera.
1 asta + 3 * coni, il solito caso. Approssimativo perché gli esseri umani possono avere fino a zero recettori di luce funzionali fino a un massimo congestionato di sette (il più alto mai osservato è cinque).