4.12. La pipeline ISP¶
L”image signal processor (ISP) è la pipeline hardware che trasforma i valori grezzi dei pixel provenienti dal sensore in un’immagine a colori finita. Le correzioni a livello di pixel sul sensore sono i primi stadi di quella pipeline. Dopo la loro esecuzione, il resto della pipeline esegue l’elaborazione del colore e la formattazione dell’output in un ordine fisso su ogni frame.
Gli stadi di elaborazione del colore e di output dell’ISP. La pipeline esegue ogni stadio su ogni pixel del frame prima che inizi il successivo.¶
4.12.1. Gli stadi¶
Ogni stadio applica a turno una trasformazione ben definita. L’ordine è importante – gli stadi successivi presuppongono che quelli precedenti siano già stati eseguiti, e un paio di stadi prendono input anche dall’output del frame precedente.
L’estrazione delle statistiche misura la luminosità media per regione e le somme per canale dal frame Bayer corretto. I numeri alimentano i loop di controllo dell’auto-esposizione, dell’auto-guadagno e del bilanciamento automatico del bianco, che poi aggiornano le impostazioni del sensore per il frame successivo.
I guadagni del bilanciamento automatico del bianco scalano ogni pixel Bayer per un moltiplicatore specifico del colore – i pixel rossi per un guadagno R, i pixel verdi per un guadagno G, i pixel blu per un guadagno B – spingendo il riferimento di bianco della scena verso il grigio neutro, così che i colori registrati appaiano come li ha visti l’occhio. I moltiplicatori provengono dalle statistiche AWB del frame precedente.
Il debayering ricostruisce i due canali di colore mancanti in ogni pixel dal mosaico Bayer, trasformando i dati grezzi a un canale per pixel in RGB a tre canali. (Vedi Debayering.) Tutto ciò che segue questo stadio viene eseguito sui pixel RGB anziché sul mosaico Bayer.
La correzione della matrice di colore (CCM) applica una moltiplicazione per una matrice 3x3 a ogni pixel RGB, che mappa la risposta rosso-verde-blu nativa del sensore in uno spazio colore standard. I filtri di ciascun sensore hanno la propria risposta spettrale, che non corrisponde esattamente a ciò che si aspetta uno standard qualsiasi; la matrice è una trasformazione calibrata per ciascun sensore che converte l“«RGB del sensore» in «RGB standard».
La correzione gamma applica a ciascun canale una curva non lineare che comprime il segnale lineare del sensore in una codifica adattata alla percezione. L’occhio nota le differenze tra i toni scuri più di quelle tra i toni chiari, quindi una codifica che dedica una porzione maggiore del proprio budget di bit all’estremità scura cattura più dettaglio visibile a una data profondità di bit.
La scalatura dell’immagine ridimensiona il frame dalla risoluzione nativa del sensore alla risoluzione di output desiderata. La maggior parte delle applicazioni opera a meno del numero totale di pixel del sensore, e ridurre la scala diminuisce sia la larghezza di banda sia la pressione sulla memoria per tutto ciò che segue.
Il ritaglio dell’immagine estrae un sotto-rettangolo del frame scalato e scarta i pixel al suo esterno. Viene usato per acquisire una regione di interesse, ottenere uno specifico rapporto d’aspetto, o eliminare un bordo di cui l’applicazione non ha bisogno.
L’impacchettamento dei pixel converte la rappresentazione interna per canale (tipicamente 10 o 12 bit per canale) nel formato di output scelto e scrive il risultato in RAM.
4.12.2. Il feedback del loop di controllo¶
Gli stadi 1 e 2 formano un loop di controllo che si estende su più frame. Le statistiche estratte dal frame N indicano al sensore quanto era luminosa la scena e come si presentava il suo bilanciamento del colore in quel frame; i controllori di auto-esposizione, auto-guadagno e bilanciamento automatico del bianco usano quei numeri per scegliere nuovi valori dei registri di esposizione, guadagno e bilanciamento del bianco per il frame N+1. I nuovi valori entrano in vigore alla lettura del frame successivo, le statistiche del nuovo frame tornano indietro e il loop si chiude.
Per una scena che non cambia, il loop converge entro pochi frame e rimane a un’impostazione costante. Per una scena la cui luminosità o dominante di colore cambia – per esempio la camera che si sposta dall’interno a una finestra illuminata dal sole – il loop segue il cambiamento nell’arco di diversi frame, e l’utente vede una breve deriva di luminosità o di colore durante il percorso verso il nuovo stato stazionario.
4.12.3. Dove viene eseguito l’ISP¶
Sono comuni due configurazioni.
Un ISP sul sensore esegue l’intera pipeline all’interno del chip del sensore e produce in output un’immagine RGB finita. L’MCU si limita a raccogliere il risultato.
Un ISP esterno al sensore risiede nell’MCU o nel SoC host. Il sensore produce in output il Bayer grezzo; il silicio dell’MCU (o il suo codice driver) esegue la pipeline prima di consegnare il frame finito al codice utente.
Questa suddivisione influisce sui formati di output che il sensore può consegnare direttamente all’utente. Un sensore con un ISP completo sul chip consente all’utente di scegliere tra qualsiasi formato finito supportato dal chip. Un sensore senza ISP produce in output solo Bayer, e le conversioni di formato avvengono nel silicio dell’MCU o via software.