4.12. Canalul de procesare ISP¶
Procesorul de semnal de imagine (ISP) este canalul hardware care transformă valorile brute ale pixelilor de la senzor într-o imagine color finalizată. Corecțiile la nivel de pixel de pe senzor reprezintă primele etape ale acestui canal. După ce acestea rulează, restul canalului realizează procesarea culorii și formatarea ieșirii într-o ordine fixă, pentru fiecare cadru.
Etapele de procesare a culorii și de ieșire ale ISP-ului. Canalul rulează fiecare etapă peste fiecare pixel din cadru înainte ca următoarea să înceapă.¶
4.12.1. Etapele¶
Fiecare etapă aplică pe rând o transformare bine definită. Ordinea contează – etapele ulterioare presupun că cele anterioare au rulat deja, iar câteva etape preiau intrări și de la ieșirea cadrului anterior.
Extragerea statisticilor măsoară luminozitatea medie per regiune și sumele per canal din cadrul Bayer corectat. Aceste valori alimentează buclele de control pentru auto-expunere, auto-amplificare și auto-balans de alb, care apoi actualizează setările senzorului pentru cadrul următor.
Amplificările pentru balansul automat de alb scalează fiecare pixel Bayer printr-un multiplicator per culoare – pixelii roșii printr-o amplificare R, pixelii verzi printr-o amplificare G, pixelii albaștri printr-o amplificare B – împingând referința de alb a scenei spre un gri neutru, astfel încât culorile înregistrate să arate așa cum le-a văzut ochiul. Multiplicatorii provin din statisticile AWB ale cadrului anterior.
Debayering reconstruiește cele două canale de culoare lipsă la fiecare pixel din mozaicul Bayer, transformând datele brute cu un singur canal per pixel în RGB cu trei canale. (Vezi Debayering.) Tot ce urmează după această etapă rulează pe pixeli RGB, nu pe mozaicul Bayer.
Corecția matricei de culoare (CCM) aplică o înmulțire cu o matrice 3x3 fiecărui pixel RGB, care mapează răspunsul nativ roșu-verde-albastru al senzorului într-un spațiu de culoare standard. Filtrele fiecărui senzor au propriul lor răspuns spectral, care nu este exact cel pe care îl așteaptă vreun standard; matricea este o transformare calibrată per senzor care transformă „RGB-ul senzorului” în „RGB standard”.
Corecția gamma aplică fiecărui canal o curbă neliniară care comprimă semnalul liniar al senzorului într-o codificare adaptată percepției. Ochiul observă diferențele dintre tonurile întunecate mai mult decât diferențele dintre tonurile luminoase, astfel încât o codificare ce alocă o parte mai mare din bugetul ei de biți zonei întunecate surprinde mai multe detalii vizibile la o anumită adâncime de biți.
Scalarea imaginii redimensionează cadrul de la rezoluția nativă a senzorului la rezoluția de ieșire țintă. Majoritatea aplicațiilor rulează la mai puțin decât numărul total de pixeli al senzorului, iar reducerea prin scalare scade atât lățimea de bandă, cât și presiunea asupra memoriei pentru tot ceea ce urmează.
Decuparea imaginii extrage un sub-dreptunghi al cadrului scalat și elimină pixelii din afara lui. Folosită pentru a captura o regiune de interes, pentru a se potrivi cu un raport de aspect specific, sau pentru a renunța la o margine de care aplicația nu are nevoie.
Împachetarea pixelilor convertește reprezentarea internă per canal (de obicei 10 sau 12 biți per canal) în formatul de ieșire ales și scrie rezultatul în RAM.
4.12.2. Reacția buclei de control¶
Etapele 1 și 2 formează o buclă de control care se întinde pe mai multe cadre. Statisticile extrase din cadrul N îi spun senzorului cât de luminoasă a fost scena și cum a fost echilibrul ei de culoare în acel cadru; controlerele de auto-expunere, auto-amplificare și auto-balans de alb folosesc aceste valori pentru a alege noi valori ale registrelor de expunere, amplificare și balans de alb pentru cadrul N+1. Noile valori intră în vigoare la citirea cadrului următor, statisticile noului cadru revin, iar bucla se închide.
Pentru o scenă care nu se schimbă, bucla converge în câteva cadre și rămâne la o setare constantă. Pentru o scenă a cărei luminozitate sau nuanță de culoare se schimbă – de exemplu, camera panoramând dinspre interior spre o fereastră luminată de soare – bucla urmărește schimbarea de-a lungul mai multor cadre, iar utilizatorul observă o scurtă deviere a luminozității sau a culorii pe drumul către noua stare de echilibru.
4.12.3. Unde rulează ISP-ul¶
Sunt frecvente două configurații.
Un ISP pe senzor rulează întregul canal de procesare în interiorul cipului senzorului și produce o imagine RGB finalizată. MCU-ul doar colectează rezultatul.
Un ISP în afara senzorului se află în MCU-ul sau SoC-ul gazdă. Senzorul produce Bayer brut; siliciul MCU-ului (sau codul driverului său) rulează canalul de procesare înainte de a preda cadrul finalizat codului utilizatorului.
Această împărțire afectează formatele de ieșire pe care senzorul le poate preda direct utilizatorului. Un senzor cu un ISP complet pe cip permite utilizatorului să aleagă dintre orice format finalizat pe care îl suportă cipul. Un senzor fără un astfel de ISP produce doar Bayer, iar conversiile de format au loc în siliciul MCU-ului sau în software.