4.8. Calibrarea pe senzor¶
Ieșirea brută a unei celule de pixel nu este încă pregătită pentru a fi utilizată. I se aplică o serie de corecții înainte ca datele să părăsească senzorul – parțial în siliciul cipului, parțial în codul driverului care programează cipul – pentru a trata imperfecțiunile pe care senzorul le introduce pe parcurs. Acestea rulează într-o ordine fixă pe fiecare cadru: mai întâi reglarea zgomotului cu tipar fix (fixed-pattern noise, FPN) pe coloane, apoi scăderea nivelului de negru, apoi corecția pixelilor defecți, apoi corecția umbririi obiectivului. A ști ce face fiecare contează, deoarece imaginea care ajunge la codul utilizatorului a trecut deja prin toate acestea.
4.8.1. Corecția FPN pe coloane¶
Fiecare coloană a senzorului are propriul amplificator și propriul ADC de coloană, iar micile variații de fabricație dintre acestea fac ca fiecare coloană să citească ușor diferit față de vecinele sale. Fără corecție, acest tipar fix apare ca dungi verticale slabe în ieșire – dungile rămân pe loc de la cadru la cadru, deoarece provin din siliciul însuși, nu din scenă. Senzorul măsoară din fabrică reglajele de offset și de amplificare per coloană, le stochează în ROM-ul său de calibrare și le aplică la fiecare citire, înainte de a rula orice altă corecție. Faptul că acest lucru se face primul permite restului lanțului de procesare să presupună că fiecare coloană se comportă la fel, inclusiv pixelii de referință de întuneric pe care îi folosește în continuare calibrarea nivelului de negru.
4.8.2. Calibrarea nivelului de negru¶
Zeroul ADC-ului – valoarea digitală care ar trebui să corespundă unei fotodiode goale – nu este perfect stabilă. Derivează cu temperatura, cu variația tensiunii de alimentare și ușor de la un pixel la altul. Fără corecție, un cadru perfect întunecat nu ar citi ca zero; fiecare pixel ar purta un mic offset de întuneric pozitiv.
Soluția standard este includerea unor rânduri sau coloane la marginea senzorului care sunt acoperite fizic cu metal, astfel încât lumina să nu ajungă niciodată la ele. Valorile lor digitale dau referința reală de întuneric la condițiile curente de funcționare. Senzorul citește acei pixeli acoperiți la fiecare cadru, le calculează media per rând sau coloană și scade media din fiecare alt pixel. Pixelii expuși la lumină ies atunci cu valoare zero pentru o fotodiodă neiluminată, indiferent de temperatură sau de derivă a alimentării.
4.8.3. Corecția pixelilor defecți¶
O mică fracțiune din pixelii oricărui senzor sunt defecți – ei citesc o valoare constantă (blocată sus sau blocată jos), indiferent de câtă lumină ajunge la ei. Unele defecte provin din variația de fabricație, iar altele se acumulează lent pe durata de viață a senzorului (loviturile razelor cosmice în perioadele lungi de funcționare sunt vinovatul obișnuit).
Senzorii moderni tratează acest lucru din mers, cu un mic filtru spațial. La fiecare cadru, fiecare pixel este comparat cu vecinii săi de aceeași culoare; orice pixel care se află suficient de departe în afara medianei locale încât să fie neplauzibil este înlocuit cu o valoare derivată din acei vecini. Filtrul prinde atât defectele de fabrică, cât și pe cele care apar mai târziu, fără a fi nevoie de o hartă a pixelilor defecți calibrată per senzor, iar defectul este invizibil în ieșire.
4.8.4. Corecția umbririi obiectivului¶
Scăderea cos⁴ combinată cu vignetarea mecanică de la carcasa obiectivului dă fiecărui cadru necorectat o întunecare vizibilă a colțurilor. Hardware-ul de corecție a umbririi obiectivului (lens-shading correction, LSC) de pe senzor compensează prin înmulțirea fiecărui pixel cu o amplificare care depinde de poziția sa în cadru – 1.0 în centru, crescând lin spre colțuri pentru a urma inversul curbei de scădere măsurate.
Senzorul furnizează hardware-ul de înmulțire, dar harta de amplificare în sine este responsabilitatea MCU-ului. Driverul scrie harta în registrele LSC ale senzorului la pornire, fie dintr-o calibrare pe care driverul o stochează, fie dintr-o măsurătoare proaspătă față de o țintă de referință plată. Unii senzori comprimă harta într-un mic set de coeficienți polinomiali, astfel încât registrele de pe cip să o poată reține.
LSC depinde de obiectiv. Schimbarea obiectivelor deplasează curba de scădere, astfel încât o hartă LSC calibrată pentru un obiectiv nu se va potrivi cu altul – o hartă aplicată greșit arată ca niște colțuri întunecate (subcorecție) sau ca pete luminoase în colțuri (supracorecție).