4.11. Debayering¶
Il frame Bayer grezzo trasporta un solo canale di colore per pixel. Trasformarlo in una normale immagine RGB a tre canali significa riempire i due canali mancanti in ogni pixel interpolando dai pixel vicini del colore giusto. Questa interpolazione è il debayering (chiamato anche demosaicing). Dominano poche famiglie di algoritmi.
4.11.1. Super-pixel¶
L’approccio più economico riduce ogni tile Bayer 2x2 – una cella rossa, una cella blu e due celle verdi – in un singolo pixel di output:
il canale rosso è il valore della cella rossa;
il canale blu è il valore della cella blu;
il canale verde è la media delle due celle verdi.
Ogni tile di input 2x2 diventa un pixel di output, quindi l’immagine finita ha metà larghezza e metà altezza del sensore, con un quarto del numero di pixel. Il metodo super-pixel è veloce e privo di artefatti da interpolazione, ma il costo in termini di risoluzione lo rende un’ultima risorsa – viene usato raramente.
4.11.2. Bilineare¶
L’interpolazione bilineare fa la media dei pixel più vicini del colore giusto, invece di copiarli o riassumerli. La media esatta dipende da quale colore registra il pixel centrale, perché i quattro casi distribuiscono i canali mancanti attorno al vicinato 3x3 in modo diverso.
Pixel verde in una riga rosso-verde. Il valore rosso mancante è la media dei due vicini rossi a sinistra e a destra; il blu mancante è la media dei due vicini blu sopra e sotto.
Il rosso mancante proviene dai vicini rossi orizzontali; il blu mancante dai vicini blu verticali.¶
Pixel verde in una riga verde-blu. Stessa forma con rosso e blu scambiati. Il valore rosso mancante è la media dei due vicini rossi sopra e sotto; il blu mancante è la media dei due vicini blu a sinistra e a destra.
Il rosso mancante proviene dai vicini rossi verticali; il blu mancante dai vicini blu orizzontali.¶
Pixel rosso. Il valore verde mancante è la media dei quattro vicini verdi cardinali (sopra, sotto, sinistra, destra). Il blu mancante è la media dei quattro vicini blu diagonali.
Il verde mancante proviene dai quattro vicini verdi cardinali; il blu mancante dai quattro vicini blu diagonali.¶
Pixel blu. Speculare al caso del rosso. Il verde mancante è la media dei quattro vicini verdi cardinali, e il rosso mancante è la media dei quattro vicini rossi diagonali.
Il verde mancante proviene dai quattro vicini verdi cardinali; il rosso mancante dai quattro vicini rossi diagonali.¶
Il metodo bilineare mantiene la piena risoluzione del sensore ed è abbastanza fluido per la maggior parte degli usi, ma mostra ancora artefatti ai bordi. Una transizione netta tra due colori attraversa la griglia dei pixel con un orientamento particolare, e la media attraverso il bordo lo ammorbidisce leggermente. Dove i bordi di colore e luminanza non si allineano esattamente, compaiono nell’output deboli frange colorate.
4.11.3. Oltre il bilineare¶
Esiste una gamma di algoritmi di debayer migliori. Alcuni usano vicinati più grandi rispetto alla piccola croce di vicini dello stesso colore del bilineare e pesano i campioni con coefficienti scelti più accuratamente; altri rilevano la direzione dei bordi locali e orientano l’interpolazione lungo quella direzione, così che un bordo che attraversa la griglia dei pixel rimanga nitido invece di ammorbidirsi. Entrambi gli approcci riducono le frange di colore e l’ammorbidimento dei bordi che il bilineare lascia dietro di sé, al costo di più calcoli per pixel e più silicio (o più calcolo sul lato MCU).
La qualità del debayer disponibile su una data OpenMV Cam è specifica della piattaforma – dipende da ciò che il sensore e l’MCU di quella camera forniscono.
4.11.4. Dove viene eseguito il debayering¶
L”image signal processor (ISP) – sul chip del sensore stesso o sul lato MCU – esegue nella maggior parte dei casi il debayering di ogni frame prima che lasci la pipeline di imaging. Il codice utente riceve un’immagine RGB a tre canali finita senza mai toccare il mosaico grezzo.
All’ISP si può anche dire di lasciar passare il frame Bayer grezzo senza modifiche. Il Bayer grezzo occupa meno memoria dell’immagine sottoposta a debayering – un byte per pixel contro tre – il che lo rende utile quando l’archiviazione dei frame è il collo di bottiglia, quando si acquisisce per un’elaborazione off-line, o quando il progetto vuole applicare via software un algoritmo di debayer personalizzato.