Sei sulla pagina 1di 9

Home > Tecnica > Formato RAW e sensori

Formato RAW e sensori


Una delle domande più frequenti che capita di leggere nei newsgroup e nei forum di
fotografia digitale riguarda il formato RAW; tutte le reflex digitali e buona parte delle
compatte evolute permettono il salvataggio in questo formato, insieme ai più comuni
TIFF e JPG. E le risposte invariabilmente sono sempre le stesse: evito di riassumerle
ora, perché preferisco arrivare a capire il perché il RAW, in determinati casi, sia
meglio degli altri due formati, come al contrario il RAW, in altri casi, possa costiuire
un ostacolo o un rallentamento.

Prima, però, è bene capire come funziona il sensore di una fotocamera digitale.
Tralascerò i sensori Foveon e i dettagli sui Super CCD di Fujifilm, perché non li
conosco e perchè sono meno usati dei più diffusi CCD e CMOS. Per degli esempi, mi
servirò del programma dcraw, un software a linea di comando scritto in C e quindi
con una portabilità massima, anche nel tempo: probabilmente quando Adobe Camera
Raw non potrà più essere eseguito sui PC del futuro, sarà sempre possibile compilare
il codice di dcraw.

Cos'è un sensore

CCD o CMOS si basano sulla capacità che alcuni materiali hanno di reagire
all'esposizione alla luce, in particolare alla caratteristiche che hanno alcuni
semiconduttori di far muovere cariche elettriche se colpite da fotoni. Senza
addentrarmi in dettagli di fisica e di microelettronica (gli esami dell'università sono
lontani), possiamo semplificare la cosa dicendo che un sensore fotografico non è
altro che una matrice di punti in grado di leggere la luce e restituire, per ciascun
punto, un segnale elettrico direttamente proporzionale all'intensità della luce letta:
tale relazione di proporzionalità è lineare, cosa questa molto importante per quanto
si vedrà più avanti.

Visione "felina"

Una cosa che forse non tutti sanno è che i sensori, presi a sé stanti, non sono
sensibili ai colori. La cosa può soprendere, perché giurereste che la vostra
fotocamera digitale tira fuori immagini a colori, e nella maggior parte dei casi i colori
sono anche fedeli alla realtà. Eppure è così: i fotodiodi che costituiscono la matrice
del sensore sentono solo l'arrivo dei fotoni, non la loro lunghezza d'onda, per cui il
segnale che restituiscono è pura luminosità. Un po' come gli occhi dei gatti, le cui
retine sono povere di coni, che presiediono alla percezione dei colori e dei contrasti, e
ricche di bastoncelli, che invece sono molto sensibili alle variazioni di luminosità,
anche piccole. Anche negli occhi umani i coni sono molti meno dei bastoncelli (in un
rapporto di 1 a 50), ma nell'occhio del gatto questo rapporto è molto più basso.

Nei sensori, in pratica, i coni non ci sono affatto (o meglio nei sensori CCD o CMOS; il
Foveon prende il nome proprio dalla fovea, una zona della retina priva di bastoncelli).

Ricostruzione del colore


Come si riesce a risalire alle informazioni di colori, che come sappiamo nelle
immagini digitali fanno riferimento ai tre valori R-G-B? Il sensore va ingannato; o
meglio, vanno ingannati i singoli fotodiodi. Davanti a tutti i sensori CCD e CMOS (e
anche Super CCD), c'è il cosidetto filtro di Bayer, che non è altro che una matrice di
filtri colorati che ha un ben determinato pattern spazialmente periodico; quasta
matrice ha lo stesso numero di elementi del sensore, ciascuno dei quali è
perfettamente allineato ad un fotodiodo del sensore. Un pattern di Bayer potrebbe
essere fatto così:

In pratica ogni diodo legge la luminosità che passa attraverso un filtro colorato, del
colore assegnato dalla posizione del pattern di Bayer; poiché i tre colori primari
hanno lunghezze d'onda ben distinte, sono facilmente filtrabili (il rosso filtra molto
bene blu e verde, ecc...), in pratica ogni fotodiodo legge il valore di luminosità di un
solo colore.
In pratica, il primo elemento ha solo informazioni sul rosso, il secondo solo sul verde,
il terzo solo sul blu, il quarto solo sul verde, ecc... Come si può ben vedere il numero
di elementi associati al verde è molto più alto (il doppio, praticamente) di quelli
associati al blu o al rosso. Questo perché l'occhio umano è particolararmente
sensibile alla lunghezza d'onda del verde. Di conseguenza il canale migliore di
un'immagine proveniente da un sensore è il verde, avendo meno punti in cui tale
colore deve essere interpolato.

La ricostruzione dei colori mancanti da associare in ciascun elemento sensibile (o


meglio, dei livelli di riferimento per i tre componenti R-G_B) viene fatta per
interpolazione coi valori dello stesso colore adiacenti, letti da altri elementi sensibili;
esistono molti algoritmi di interpolazione dei colori, se proprio vi interessano qui ne
trovate un certo numero, anche se in trattazione molto accademica. Questa
operazione prende il nome di demosaicizzazione.
Alla fine dei calcoli, ciascuno elemento della matrice corrispondende al sensore potrà
essere caratterizzato dai tre valori R-G-B, solo uno dei quali, però, sarà stato letto
dall'elemento sensibile di quella posizione; gli altri saranno ottenuti mediante
interpolazione. Se non si effettuasse la demosaicizzazione, l'immagine risultante, in
toni di grigio, sarebbe qualcosa simile a questa:
Questa è l'uscita del programma dcraw con lo switch -d, che dà in output
esattamente i valori letti dal sensore, senza l'operazione di demosaicizzazione:
l'ingrandimento del ritaglio è di 4 volte rispetto alle dimensioni originali, per cui sono
molto ben visibili i pixel ed il loro diverso livello di grigio dovuto al diverso filtraggio
della matrice Bayer.

Occhi analogici e occhi digitali

C'è un altro problema: i nostri occhi, come le pellicole, hanno una sensibilità che
varia con l'intensità della luce: in pratica sono tanto più sensibili a differenze di
luminosità quanto più le scene osservate sono poco illuminate, mentre tendono ad
non rilevare diffeenze anche notevoli quando la scena osservata è molto luminosa:
questo è un comportamento tipicamente logaritmico. Questa risposta non lineare dei
fotorecettori della retina permette la percezione di un vastissimo spettro di livelli di
segnale. I sensori, invece, percepiscono i livelli di luminosità in maniera
proporzionale all'energia che ricevono: tanto più è forte la luce che ricevono, tanto
più forte sarà il segnale: in pratica, il sensore ha un comportamente lineare: ancora
più in dettaglio, i sensori praticamente contano i fotoni che arrivano suoi fotoricettori
e danno un segnale elettrico in uscita proporzionale a questo numero; il segnale
d'uscita quindi è proporzionale all'esposizione.

Ciò significa che se questo segnale elettrico, a valle dei convertitori A/D, venisse
codificato con 12 bit per rappresentare 4096 livelli, il livello 2048 rappresenterebbe la
metà dei fotoni raccolti dal livello 4096. Il problema, però, è che gli occhi non
percepiscono la differenza tra il livello 2048 e il livello 4096 come il doppio.

Guardando l'istogramma dei segnali catturati dal sensore dopo la codifica in 12 bit,
troveremmo che il grafico è fortemente concentrato sulla sinistra, cioè sui livelli più
bassi, mentre sui livelli più alti, essendo i livelli molto distribuiti, l'istogramma
risulterà molto basso. Questo problema viene solitamente risolto applicando una
curva correttiva, solitamente di tipo esponenziale, di questa forma:

Livello dei pixel=esposizione^(1/gamma)

gamma ha un valore pari a 2.2 per lo spazio colore sRGB ed in pratica è la variabile
che lega la luminanza dei pixel.

Questo fatto ha una implicazione non esattamente trascurabile, per eventuali


elaborazioni fotografiche: questa distribuzione di luci e ombre, così come viene letta
dal sensore, fa sì che dei 4096 livelli disponibili con 12 bit (ad esempio), la metà di
essi serve a rappresentare i toni che "accendono" il solo 12 bit, quindi le alte luci, per
un totale di 2048 livelli; i rimanenti 2048 vengono "spartiti" per tutti gli altri livelli;
ciò significa che per un numero di fotoni pari alla metà, saranno disponibili un
numero di livelli pari alla metà. Questo implica un maggiore errore di quantizzazione
nelle ombre, ed è questo che rende le ombre "rumorose" se si cerca di "aprirle", in
senso fotografico. Peraltro, è a tutti noto che le esposizioni sulle fotocamere digitali è
bene prenderle sulle alte luci; così facendo, si raccolgono tutte le informazioni sulle
luci, certo, ma si comprimono nei pochi livelli riservati a loro, le ombre. Le
implicazioni non finiscono qui, ma preferisco fermarmi per non complicare le cose...

Ancora una volta, dcraw ci viene incontro per degli esempi: con lo switch -4, dcraw
permette di salvare i file raw come "linear PPM" o "linear PSD", cioè senza la
correzione della curva che approssima la funzione esponenziale, che solitamente
viene messa nell'intestazione del file raw, in maniera tale che il software di
conversione possa aggiustare i toni: questo è l'esempio dell'output di dcraw, con e
senza switch -4.

Immagine corretta con la curva (dcraw -w)


Immagine non corretta con la curva (livelli come letti e demosaicizzati dalla
macchina, dcraw -w -4)

Come è evidente, l'istogramma è tutto spostato verso le ombre, nel secondo caso.
Ovviamente tutto si può correggere, e la curva necessaria per correggere la
"linearità" del sensore è illustrata nella figura che segue. Forse è anche meglio che
non l'output di dcraw, che invece applica la curva della macchina, in quanto le luci e
le ombre sono regolate da chi ha scattato la foto, e non da uno stupido software. La
curva è una approssimazione di una curva del tipo Y=K*x^(1/gamma) con
gamma>1.
E poi?

E poi, dopo demosaicizzazione e adattamento ai mezzi analogici (monitor, stampanti


ed occhi), un file raw andrebbe adattato ai parametri di scatto, in termini di
bilanciamento del bianco, nitidezza, saturazione dei colori, e quant'altro una
fotocamera può contenere.

La differenza tra un file raw e un file jpg generato da una fotocamera digitale sta
proprio qui: un file raw è esattamente quanto il sensore ha letto, con l'aggiunta di
una ricca intestazione che memorizza la curva di correzione e altri parametri utili alla
ricostruzione del file, demandando queste complesse operazioni ad un pc con
l'adeguato software di conversione; per il jpg, tutte queste impostazioni devono
essere utilizzate, al momento dello scatto, per generare immagini demosaicizzate,
corrette in termini di gamma, correttamente rese nitide da algoritmi di maschere di
contrasto, applicato il giusto profilo colore e applicata la giusta saturazione,
convertita a 8 bit/colore (downsampling), compressa con l'algoritmo DTC e...

Insomma, il firmware della fotocamere dovrebbe fare un bel po' di cose, tutte
insieme e possibilmente velocemente. Per quanto buoni siano i moderni processori di
immagini (ad esempio il DIGIC II di Canon), non saranno mai flessibili come il
software che gira un processore di un PC.

Oltre al fatto che ciò che produce le immagini JPG (al di là della compressione) sarà
sicuramente meno flessibile, sulle immagini jpg, meno ricche di informazioni, non si
potranno più apportare modifiche senza danneggiare ulteriormente le immagini; col
file raw, invece, tali modifiche potranno essere applicate semplicemente come si
farebbe sulla fotocamere prima dello scatto, solo che comodamente seduti davanti ad
un pc e dopo aver scattato.

© Maurizio Firmani 2004-05 - Hosting Computerville di Mario Benvenuti

Potrebbero piacerti anche