Costruzione del colore nello sviluppo di dati fotografici Raw

Mauro Boscarol
http://www.boscarol.com

1. Introduzione
Nel processo di formazione di una immagine digitale a colori a partire da una scena catturata dal sensore di una fotocamera digitale si possono distinguere, almeno concettualmente, quattro fasi.

	1.	L'obiettivo della prima fase è la ricostruzione della scena mediante i processi di “demosaicizzazione” (o interpolazione) e di bilanciamento del bianco. Il risultato è la rappresentazione della scena nel cosiddetto “spazio colore del sensore”, che è uno spazio colore scene-referred (cioè descrittivo della scena) e device-dependent in quanto dipende dal sensore stesso: sensori diversi darebbero numeri digitali diversi per la stessa scena.
	2.	Nella seconda fase l'immagine della scena viene codificata colorimetricamente. Il risultato è la rappresentazione in uno spazio che è ancora scene-referred, ma è anche uno spazio colorimetrico cioè device-independent, uno spazio che registra accuratamente la colorimetria di ogni punto della scena, indipendentemente dalla sua riproduzione. Questa fase viene fatta sulla base della cosiddetta “caratterizzazione” della fotocamera. 
	3.	Nella terza fase l'immagine viene codificata in uno spazio colorimetrico non più scene-referred ma output-referred cioè uno spazio colorimetrico standard come Adobe RGB o Kodak ProPhoto, riferito ad un output virtuale. Questa fase è detta di resa del colore (color rendering).
	4.	Nella quarta e ultima fase l'immagine viene convertita per l’uscita su una determinata periferica (per esempio uno specifico monitor, una specifica stampante) che ha un proprio spazio colore device dependent.

In questo articolo, dopo aver esaminato le caratteristiche della scena e del sensore, esponiamo in breve i processi caratteristici di ognuna delle quattro fasi di formazione dell'immagine digitale a colori.

2. La scena: intervallo dinamico
I due attori principali di una fotografia digitale sono la scena e la fotocamera. La scena è composta da uno o più sorgenti luminose e da uno o più oggetti che assorbono, riflettono e trasmettono la radiazione che li illumina. Qui consideriamo solo la radiazione che viene riflessa verso l’obiettivo della fotocamera e incide sul sensore.
L’illuminante, che supponiamo illumini diffusamente, si descrive, in ogni punto e in ogni direzione con una distribuzione spettrale di radianza (o di luminanza se si tiene conto della curva di sensibilità dell'osservatore). La radianza (o luminanza) dell’illuminante produce una irradianza (o illuminamento) sulla superficie degli oggetti della scena. Ogni punto della superficie di un oggetto è descritto dalla sua distribuzione spettrale del fattore di riflessione e qui supponiamo che gli oggetti riflettano uniformemente in tutte le direzioni, cioè abbiano una superficie lambertiana. La radiazione riflessa è descritta da una distribuzione spettrale di radianza (o luminanza). 
L'intervallo dinamico (dynamic range) di una scena è il rapporto tra la massima e la minima luminanza della scena stessa. L’intervallo dinamico di una scena all’aperto può raggiungere 1:100 milioni e se si tiene conto che l’intervallo dinamico di un sensore a 12 bit è 1:4096, di un monitor LCD è circa 1:1000, di una stampa è circa 1:200 si capisce come tipicamente non sia possibile catturare l'intero intervallo con un sensore né riprodurre la scena catturata (in stampa o a monitor) esattamente con la stessa colorimetria.

3. Il sensore digitale
La parte di radiazione che dopo il passaggio attraverso l'obiettivo, arriva al sensore è descritta da una distribuzione spettrale di irradianza (o illuminamento) ad ogni photosite del sensore. Per oggetti distanti e sull'asse ottico di una fotocamera l'illuminamento E è collegato alla luminanza della scena L in modo approssimato dall'equazione [1, pag. 59]

E = π L / 4 F2

dove F è l'apertura relativa dell'obiettivo (anche detta “numero f”). 

3.1 Differenze tra pellicola e sensore digitale
La principale differenza tra il sensore digitale e la pellicola sta nel fatto che il sensore digitale cattura la luminanza (luminance) della scena mentre la pellicola cattura la chiarezza (lightness).
Ciò ha una serie di conseguenze, la prima delle quali è che un sensore cattura molti più dettagli chiari di quanto noi possiamo vedere. Per esempio i valori di luminanza che stanno tra 0.8 e 0.9 sono il 20% dei valori digitali catturati dalla fotocamera. Questo intervallo corrisponde per l’occhio e per la pellicola ai valori di chiarezza da 92 a 100, che sono solo l’8% di tutte le chiarezze. Analogamente  un sensore digitale cattura meno dettagli scuri di quanti noi possiamo vedere. Quindi, tra i dati catturati dal sensore ci sono molti dati per le tonalità chiare (con luminanza < 0.18 che corrisponde a chiarezza < 50) e pochi dati per le tonalità scure (con luminanza > 0.18).
Nel linguaggio della computer grafica ciò si esprime dicendo che, nel passaggio da luminanza a chiarezza, le luci (cioè le zone ad alta luminanza) sono compresse e le ombre (cioè le zone a bassa luminanza) sono espanse. 
La seconda conseguenza è che il dimezzamento della massima luminanza (che i fotografi chiamano chiusura dello stop più luminoso) diminuisce la chiarezza di circa il 24%. Il secondo stop riduce la luminanza di un’altra metà e la chiarezza di un altro 19% circa. Il terzo stop riduce la luminanza di un’altra metà e la chiarezza di un altro 15% circa. In altre parole in fotografia digitale gli stop agiscono in progressione geometrica, mentre in fotografia analogica agiscono in progressione circa aritmetica. La conseguenza di tutto ciò, in fotografia digitale, è che se la scena ha un intervallo dinamico contenuto nell'intervallo dinamico del sensore, l’istogramma dell'immagine (se è rappresentativo) è opportuno che sia appoggiato a destra senza superare il valore massimo. In inglese questa tecnica è detta expose to the right, abbreviato in ETTR.

4. Esposizione e risposta del sensore
Il sensore (la versione digitale della pellicola) “vede” la scena attraverso un obiettivo. Tecnicamente il sensore è una matrice rettangolare di milioni di photosite, per esempio 3000 photosite di base per 2000 photosite di altezza, per un totale di 6 milioni di photoshite. Le tecnologie di costruzione dei sensori oggi sono sostanzialmente due: CCD e CMOS. 

4.1 Esposizione
Ogni photosite è sensibile alla irradianza (o illuminamento) che lo colpisce. L’esposizione H su un photosite è il prodotto dell’illuminamento (lux) per il tempo (secondi) durante il quale la radiazione persiste

H = E ∆t

L’esposizione quantifica il fenomeno fisico che provoca la risposta del sensore.

4.2 Risposta del sensore
Ogni photosite del sensore risponde generando elettroni secondo l’esposizione ricevuta o, in modo equivalente, secondo il numero di fotoni che lo raggiungono. In altre parole ogni photosite misura l’energia radiante di un punto della scena, non il colore.
Ogni photosite non ha capacità infinita di assorbimento dell’irradianza (o illuminamento), cioè dei fotoni, che riceve. Durante il tempo di esposizione il photosite assorbe fotoni fino ad un livello di saturazione oltre il quale i fotoni non vengono più assorbiti. In funzione dei fotoni assorbiti, ogni photosite risponde con l’accumulo di elettroni, un elettrone per ogni fotone catturato. Dopo l’esposizione, gli elettroni accumulati sono convertiti in un segnale elettrico in proporzione al loro numero.
La risposta del photosite è lineare rispetto ai fotoni assorbiti (cioè il numero di elettroni emessi è proporzionale al numero di fotoni assorbiti) fino a circa 80% della sua saturazione. La charge capacity è il massimo livello di carica in cui la risposta del sensore è ancora lineare. D’altra parte il photosite è sensibile non solo alla radiazione visibile ma anche a radiazione extra e dunque emette un debole segnale anche quando non assorbe nessun fotone. Questo segnale è detto dark current.
Il rapporto tra il massimo e il minimo segnale emesso dal photosite è il suo intervallo dinamico. Nelle moderne fotocamere digitali reflex (DSLR) l'intervallo dinamico del sensore è di circa 1:8000 equivalente a circa 12 stop (213 = 8192).
Può darsi che l’intervallo dinamico della scena da catturare sia inferiore a quello del sensore, e allora c’è solo il problema di calcolare l’esatta esposizione. Se invece l’intervallo dinamico della scena è superiore a quello della fotocamera, c’è anche il problema di decidere quale parte o “finestra” dell’intervallo dinamico della scena catturare.
Per determinare il colore, quasi tutti i sensori oggi in commercio sono ricoperti da una matrice di filtri colorati (CFA, color filter array) disposti sui photosite. Tipicamente i filtri sono di colore rosso (R), verde (G) e blu (B) e possono variare in disposizione. 

Il segnale elettrico emesso da ogni photosite viene convertito in un valore digitale con queste operazioni:
	1.	gli elettroni vengono trasferiti ad un “amplificatore” (in realtà un condensatore) nel chip stesso; segnale elettrico è amplificato di una quantità proporzionale al guadagno ISO impostato in fotocamera; unità di misura è il Coulomb; è in questa operazione che viene introdotto il readout noise;
	2.	viene misurata la differenza di potenziale indotta da queste cariche, unità di misura è il Volt;
	3.	la differenza di potenziale viene convertita da un convertitore ADC (analog to digital converter) in una differenza di potenziale a livelli discreti; in questa operazione interviene una funzione di conversione optoelettronica (OECF, opto-electronic conversion function) che introduce una non linearità;
	4.	la differenza di potenziale viene convertita  in un numero digitale che l’hardware passa al software e che viene registrato come valore fornito dal photosite.

4.3 Dati Raw
I numeri digitali risultanti sono i dati Raw, un numero per ogni photosite. Il minimo e massimo valore che ogni numero Raw può assumere dipende dal numero di bit assegnati ad ogni photosite (profondità in bit, o profondità di colore). Per esempio se il numero di bit è 12 i valori digitali possono andare da 0 a 212 – 1 = 4095.

I dati Raw hanno queste caratteristiche:
	•	sono dati a 10, 12, 14 bit (mentre tipicamente i dati di una immagine JPEG o TIFF finale sono a 8 bit);
	•	sono dati proporzionali alla luminanza della scena (cioè, come si dice, lineari mentre i dati di un JPEG o TIFF finale non sono lineari rispetto alla luminanza);
	•	essendo dati lineari consentono di correggere l’esposizione e di bilanciare il bianco in uno spazio adeguato, con matematica lineare, senza introdurre degradazione dell’immagine;
	•	non sono ancora convertiti in uno spazio RGB di output, in particolare non sono clipped.
sono dati device dependent, cioè dipendono dal sensore, è la codifica della scena fatta da quel sensore; un sensore diverso potrebbe generare dati Raw diversi per la stessa scena e per lo stesso illuminante. 
I dati Raw, oltre che dal sensore e dai suoi filtri, dipendono unicamente dall'esposizione, cioè da illuminamento della scena e tempo di esposizione, e da sensibilità ISO impostata in fotocamera
I dati Raw non costituiscono ancora un’immagine “visibile”, per molti motivi, il principale die quali è che pur trattandosi di una immagine con pixel a tre canali (R, G e B), in ogni pixel due canali hanno valore uguale a zero (e solo un canale può avere valore diverso da 0). Se si dovesse vedere l’immagine (a colori) a questo punto, apparirebbe in una caratteristica configurazione “a mosaico”. Per questo motivo si dice che i dati Raw sono “mosaicizzati”, e una delle prime operazione di elaborazione dei dati Raw è proprio la cosiddetta “demosaicizzazione”.

5. Ricostruzione della scena
I dati Raw generati dal sensore e salvati nella memoria della fotocamera, possono essere elaborati all’interno della fotocamera stessa, oppure possono essere trasferiti ad un computer dove vengono elaborati da un Raw converter, cioè una applicazione specializzata per l’elaborazione dei dati Raw delle fotocamere digitali. Qui ci riferimao in particolare ad un Raw converter esterno.
La prima fase di elaborazione del Raw converter è la ricostruzione della scena che comprende le seguenti operazioni, che agiscono sui dati Raw forniti dal sensore:
	1.	decodificare il formato grafico con cui i dati sono stati salvati, trovare le dimensioni dell’immagine, decomprimere e/o decrittare i dati Raw;
	2.	linearizzare i dati Raw;
	3.	rimuovere il rumore read-out e fixed pattern se non è già stato fatto dall’hardware della macchina; sottrarre il rumore dark current e shot noise; compensare il flare ottico;
	4.	bilanciare il bianco;
	5.	demosaicizzare i dati Raw per ottenere dati RGB device-dependent.

5.1 Linearizzazione
Per quanto riguarda la linearizzazione, i dati del sensore sono proporzionali al numero di fotoni catturati da ogni photosite e quindi alla sua esposizione. Questo si esprime dicendo che i dati del sensore sono lineari rispetto alla luminanza emessa dalla scena. Tuttavia nella conversione da segnale analogico a segnale digitale può essere introdotta una curva di quantizzazione (che agisce come compressione dei dati) che va rimossa. Tipicamente la quantizzazione comporta una perdita delle informazioni disponibili sul sensore, ma questa perdita è controllata in modo che gli effetti non siano percepibili ad occhio nudo.
In generale la relazione tra segnale analogico e segnale digitale è descritta da una funzione di conversione opto-elettronica (OECF, opto-electronic conversion function) che può essere misurata. La norma ISO 14524:1999 specifica le modalità di misurazione, che consistono nel fotografare un target di cui si conoscono i fattori di luminanza, che si possono mettere in relazione con i valori digitali forniti dal sensore. I dati vengono forniti al Raw converter per la linearizzazione.

Demosaicizzazione
La demosaicizzazione (o interpolazione) è il procedimento che consente di calcolare, per ogni pixel, i valori dei canali che sono a zero. Per questo si utilizzano tecniche di interpolazione. Il processo di demosaicizzazione non è necessario per i sensori che possono catturare tutti e tre i canali RGB contemporaneamente, come il Foveon.
La più semplice tecnica di interpolazione è quella detta nearest neighbor, che ripete il valore del pixel più vicino.
Una seconda tecnica è l’interpolazione bilineare, in cui per esempio il valori di R nei pixel in cui manca si calcola come media dei pixel adiacenti in cui è presente.

Bilanciamento del bianco
Se l’illuminante non è noto, oppure è misto, deve essere stimato il cosiddetto adopted white. Due tecniche comuni sono quella cosiddetta del mondo grigio (gray world) e quella del massimo RGB. 

A questo punto l’immagine digitale è codificata in modo device-dependent (come si dice, nello spazio del sensore) e i dati si riferiscono alla scena (scene-referred) e sono lineari con i dati della scena. La prossima fase ha come obiettivo la codifica device-independent, sempre scene-referred.

6. Codifica colorimetrica della scena 
Scopo di questa fase è costruire una rappresentazione colorimetrica della scena, cioè descrivere la scena mediante coordinate colorimetriche. I dati rimangono sempre dati di luminanza riferiti alla scena, ma questa volta device-independent. La conversione tra dati nello spazio del sensore ha come destinazione uno spazio colorimetrico, per esempio XYZ o Lab, oppure uno spazio RGB lineare e specificato colorimetricamente, per esempio Kodak RIMM. Per conoscere lo spazio colore di origine, il sensore va caratterizzato.

6.1 Caratterizzazione colorimetrica del sensore
Caratterizzare un sensore significa trovare la corrispondenza tra valori RGB del sensore e valori colorimetrici CIE XYZ 1931. I metodi di caratterizzazione del sensore possono raggrupparsi in due principali categorie: quelli basati sulla misura delle sensibilità spettrali e quelli basati sulla misura e cattura di un target di colore (per esempio X-Rite ColorChecker). 
Se le sensibilità spettrali del sensore sono combinazioni lineari delle funzioni colorimetriche dell'osservatore standard CIE 1931 (questa condizione viene detta di Luther-Ives), gli spazi colore del sensore e dell'osservatore standard sono isomorfi, e dunque sensore e osservatore standard “vedono” il colore alla stesso modo. In tal caso il sensore può essere caratterizzato colorimetricamente in modo accurato da una matrice 3 x 3 che trasforma i valori RGB del sensore nei valori di tristimolo XYZ 1931.
Tuttavia in pratica le sensibilità spettrali del sensore non sono quasi mai combinazioni lineari delle funzioni colorimetriche dell'osservatore standard, dunque gli spazi colore sono diversi e anche il metamerismo del sensore è diverso da quello dell'osservatore standard: è possibile che due stimoli diversi per l'osservatore standard siano uguali per il sensore e viceversa.
In questo caso la caratterizzazione del sensore non può essere accuratamente descritta con una matrice e ci sono due possibilità: (a) caratterizzare il sensore in modo approssimato con una matrice e (b) caratterizzare il sensore con una LUT (lookup table). In molti casi pratici la prima possibilità può rappresentare un buon compromesso, tenendo conto che una matrice è più semplice da implementare e consente calcoli molto più veloci di una LUT.
Si può per esempio trovare una matrice di caratterizzazione approssimata fotografando, sotto un determinato illuminante, un target con m tacche di colore e assumendo

S(m x 3) ≈ P(m x 3) T(3 x 3)

dove S è la matrice dei valori di tristimolo del target, misurati sotto un dato illuminante, P è la matrice dei valori RGB della fotografia del target e T è la matrice di caratterizzazione da determinare. Poiché P non è invertibile si può usare la sua pseudoinversa e scrivere

T = (PT P)–1 PT S

che minimizza i quadrati di S – P T [5, pag. 219]. 
La matrice di caratterizzazione così determinata non può essere perfetta per tutti gli stimoli di colore per cui è importante che gli errori siano “distribuiti” sui colori meno critici.

6.2 Adattamento cromatico
Alcune codifiche scene-referred specificano un osservatore adattato ad un determinato punto bianco, tipicamente D50. In tal caso, se il bianco di adattamento della scena è diverso, andrà applicata una trasformazione di adattamento cromatico. Attualmente la trasformazione preferita nei Raw converter è quella di Bradford, nella sua parte lineare [3, pag. 395].

A questo punto l’immagine digitale è codificata in modo device-independent e i dati si riferiscono alla scena (scene-referred) e sono lineari con la luminanza della scena. Brevemente, l'immagine è una stima colorimetrica della scena. La prossima fase ha come obiettivo la codifica output-referred, con la quale l'immagine diventa una stima colorimetrica di una riproduzione della scena.

7. Resa del colore
La resa del colore (color rendering) di una immagine è la fase in cui la codifica scene-referred che contiene la descrizione colorimetrica della scena, viene convertita in una codifica output-referred cioè in una descrizione colorimetrica più adatta alla riproduzione su una periferica virtuale.
I dati riferiti ad scena, tipicamente non sono esattamente riproducibili in stampa o a monitor per motivi che riguardano l’intervallo dinamico (dynamic range), il gamut di colore (color gamut), l’accuratezza del colore (color accuracy). In corrispondenza la resa del colore avviene tipicamente in tre passi: mappatura delle tonalità (tone mapping), mappatura del gamut (gamut mapping), color preference.
L'algoritmo di resa del colore varia da produttore a produttore ed è ciò che li contraddistingue. Inoltre l'utente stesso può “manipolare” l'immagine modificando il colore, la croma, il contrasto, ecc.

7.1 Riproduzione delle tonalità
Il passo più importante per una buona qualità della riproduzione è la riproduzione delle tonalità cioè delle luminanze (o dei fattori di luminanza) della immagine catturata dal sensore.
Se la scena avesse un intervallo dinamico e un livello di luminanza simili a quelli del monitor o della stampa, non ci sarebbe bisogno di riprodurre le tonalità, cioè si potrebbe usare una curva “lineare” che non fa nulla (ma magari se ne applicherebbe lo stesso una non lineare per dare un qualche effetto "artistico").
Tuttavia l’intervallo dinamico catturato dal sensore potrebbe essere, per esempio, di 1:8000. L’intervallo dinamico di un monitor tipicamente è di 1:1000. L'intervallo dinamico della carta può variare da 1:250 per la carta fotografica a 1:40 per la carta da quotidiano. È dunque quasi sempre necessario comprimere l’intervallo dinamico dell’immagine riferita alla scena nell’intervallo dinamico del mezzo di output con una curva di tone mapping (mappatura delle tonalità).
La riproduzione delle tonalità può essere globale (cioè applicata a tutti i pixel) oppure locale (applicata solo in alcune zone dell'immagine, per esempio all'incarnato) e sono disponibili diversi algoritmi [6]. Tipicamente nei Raw converter moderni per la riproduzione globale delle tonalità viene applicata una curva ad S.
Nella fase di riproduzione delle tonalità è compresa anche l'applicazione di una curva cosiddetta “gamma” che converte i dati lineari in dati RGB non lineari che consentono di minimizzare la profondità di bit della codifica digitale. Per esempio l'applicazione della curva L* codifica il fattore di luminanza della scena originale in termini di chiarezza (lightness).

7.2 Gamut di colore
Esistono diverse codifiche di colore che sono degli standard per lo meno de facto. sRGB è una codifica standard per la fotografia digitale di tipo consumer, basata sulla colorimetria di un tipico monitor CRT. Kodak ROMM, Adobe RGB, e-sRGB sono altri spazi RGB standard. La codifica in uno di questi spazi colore può essere fatta in modo da conservare la colorimetria (ad alcuni canali di alcuni pixel può essere applicato il clipping) oppure con un “intento di rendering” che dipende dall'immagine.

A questo punto l’immagine digitale è codificata in modo device-independent e i dati si riferiscono ad un output virtuale e non sono lineari con la luminanza. Questo rende impossibili certe operazioni, come il bilanciamento del bianco. Inoltre le trasformazioni applicate sono tipicamente irreversibili, perché alcuni dati della codifica originale sono stati persi. Se la codifica è a 8 bit per canale, risultano difficili anche le operazioni di correzioni tonali e cromatiche per il possibile insorgere di artefatti.

8. Conversione di uscita
La trasformazione da una codifica virtuale alle coordinate di una specifica periferica (uno specifico monitor, una specifica periferica di stampa) dipende dalle caratteristiche di quest'ultima. Tipicamente questa trasformazione viene effettuata mediante i profili ICC dello spazio di origine e della periferica di destinazione. In questo caso c'è l'inconveniente che i profili ICC, nella versione attuale, non tengono conto delle caratteristiche dell'immagine e dunque se le differenze tra il gamut, l'intervallo dinamico, le condizioni di vista dell'output virtuale rispetto all'output effettivo sono grandi è forse più vantaggioso usare tecniche diverse, che tengono conto delle caratteristiche dell'immagine.

Bibliografia
[1] Hsien-Che Lee, Introduction to Color Imaging Science, Cambridge University Press, 2005
[2] Jack Holm, Ingeborg Tastl, Larry Hanlon, Paul Hubel, “Color processing for digital photography”, in Colour Engineering, Wiley, 2002, pag. 179-220
[3] Sabine Süsstrunk, “Managing color in digital libraries”, in Colour Engineering, Wiley, 2002, pag. 385-419
[4] Claudio Oleari, a cura di, Misurare il colore, 2ª edizione, Hoepli, 2008
[5] Roy S. Berns, Principles of Color Technology, 3ª edizione, Wiley,1988
[6] Kate Devlin, “A review of tone reproduction techniques” University of Bristol, 2002
[7] Ken Parulski, Kevin Spaulding “Color image processing for digital cameras” in Digital Color Imaging Handbook, a cura di G. Sharma, CRC Press, 2003