1

Costruire un’immagine a colori

Alla luce di quanto riportato nei post precedenti, DSLR e CCD producono  una matrice di pixel. Ciascun pixel è un numero intero proporzionale al numero di fotoni che si sono depositati in quel determinato elemento fotosensibile. A questo punto, come descritto in “ADC: dal mondo analogico a quello digitale” ad ogni valore di luminosità del pixel è possibile associare un tono di grigio. Questo può essere poi visualizzato a monitor o stampato su pellicola fotografica. L’insieme di tutti i pixel costituisce così l’immagine digitale. Questa risulta però essere un’immagine in bianco e nero. Come è possibile? Abbiamo analizzato solo il caso di sensori in bianco e nero? Ed i sensori a colori?
Cominciamo subito con il dire che i sensori a colori non esistono. Tutti i sensori, siano essi CCD o CMOS sono in grado di generare immagini in bianco e nero. Allora come è possibile costruire un’immagine a colore?
Si sfrutta un particolare modello di colori di tipo additivo noto come RGB. Questo dice che “ogni” colore è descrivibile come la somma adattiva di tre colori primari. Per motivi fisiologici legati alle frequenze cui sono più sensibili i fotorecettori dell’occhio umano (coni) si è deciso di utilizzare il rosso 700 nm (R), verde 546.1 nm (G) e il blu 455.8 nm (B) da cui il nome del modello RGB.
Ma cosa comporta questo dal punto di vista pratico? Ogni colore è visto come la somma, pesata dal livello di luminosità, dei tre colori primari RGB. Se ora ho tre immagini in bianco e nero, ciascuna delle quali rappresenta la componente R, G e B dell’oggetto reale, allora posso costruire l’immagine a colori a partire da queste.
Come avrete capito il gioco è fatto. Basta riprendere con il nostro sensore in bianco e nero tre immagini: una con un filtro rosso, una con un filtro verde ed una con un filtro blu. La combinazione delle tre fornirà l’immagine a colori. Quanti colori? Se ogni immagine in bianco e nero ha 2^bit toni, l’immagine risultate sarà data da 2^bit x 2^bit x 2^bit = 2^3 x bit colori. Questa tecnica di costruzione delle immagini è quella che viene normalmente utilizzata nei sensori CCD astronomici dove per ogni oggetto celeste si effettuano tre riprese applicando rispettivamente filtri RGB.
Per le reflex però ci troviamo di fronte ad un problema di tipo tecnologico. Risulta infatti impossibile effettuare tre scatti per ciascuna ripresa a colori (considerando anche il tempo di sostituzione del filtro). Vi immaginate riprendere un’auto in corsa in queste condizioni?
Il problema è stato risolto montando di fronte ad ogni fotoelemento un opportuno filtro colorato. Può sembrare impossibile eppure la tecnologia attuale è in grado di realizzare filtri colorati con dimensioni veramente infinitesime.
La distribuzione dei filtri sulla matrice di fotoelementi (ovvero sul sensore) è nota come Matrice CFA (Color Filter Array). Ci sono molteplici possibili combinazioni. Preso un gruppo di quattro pixel allora abbiamo:

  • Matrice di Bayer RGGB: filtri rosso, verde, verde e blu (Figura 1).
  • Matrice RGBE: filtri rosso, verde, blu e smeraldo.
  • Matrice CYYM: filtri ciano, giallo e magenta.
  • Matrice CYGM: filtri ciano, giallo, verde e magenta.
  • Matrice RGBW: filtri rosso, verde, blu e trasparente.

Figura 1: le varie configurazioni della matrice di Bayer: a) RGGB, b) GRBG, c) GBRG e d) BGGR.

In questo articolo parleremo in particolare della Matrice di Bayer o RGGB (spesso riportata come RGB). Cominciamo con il notare che la scelta di due filtri verdi non è casuale. L’occhio umano è più sensibile al verde e pertanto, per avere una migliore risposta della DSLR, si è deciso di aumentare il numero di filtri di questo colore.
Ad ogni scatto quindi il 25% del sensore riprenderà un’immagine in bianco e nero filtrata rossa, un altro 25% del sensore riprenderà un’immagine in bianco e nero filtrata blu ed infine il restante 50% riprenderà un’immagine in bianco e nero filtrata verde. Ora però, se prendiamo un determinato pixel questo avrà solo un valore dei tre canali RGB. Come ottenere il colore?
È necessario creare un algoritmo in grado di “stimare” il valore che un pixel avrebbe assunto con un determinato filtro, partendo da quello realmente assunto dai pixel vicini. Tale processo è noto come demosaicizzazione o debayerizzazione. Esistono ovviamente molteplici modi per demosaicizzare un’immagine RGB tra cui ricordiamo:

  • Variable Number of Gradients (VNG): calcola i gradienti vicino al pixel di interesse e sceglie il minimo ovvero quello che si traduce nel più morbido in termini di immagine.
  • Pixel Grouping: calcola il valore di un pixel come opportuna combinazione dei vicini.
  • Adaptive Homogeinity – Directed: questo metodo seleziona la direzione di interpolazione in modo da massimizzare l’omogeneità.
  • Advanced Chroma Corrective: è una delle più accurate quanto complesse routine di demosaicizzazione.

Tutte queste tecniche (ne esistono altre non discusse in questo post) permettono così di ottenere un’immagine a colori a partire da un singolo scatto. Il prezzo da pagare è una perdita in qualità a seguito del processo di demosaicizzazione. Per quanto riguarda le DSLR Canon, il processo di demosaicizzazione è effettuato dal processore Canon DIGIC o da software dedicati nel caso in cui si decida di scattare in RAW. In Figura 2 sono riportati i canali R,G e B di un’immagine ripresa con una Canon EOS 500D.

Figura 2: scomposizione dell'immagine nei canali RGB. Si noti come il canale più luminoso sia il rosso associato alla nebulosa (riga Hα). Il canale verde invece presenta meno strutture ma con un'ottima risoluzione grazie al numero doppio di pixel dotati di filtro G. Il canale blu è spesso il peggiore sia in termini di qualità a causa sia del minor numero di pixel utilizzati durante il processo di debayerizzazione che del minor numero di dettagli presenti.