4.12. Az ISP-folyamat

A képjelfeldolgozó (ISP) az a hardveres folyamat, amely az érzékelő nyers képpontértékeit kész színes képpé alakítja. Az érzékelőn végzett képpontszintű korrekciók ennek a folyamatnak az első szakaszai. Miután ezek lefutnak, a folyamat többi része minden képkockán rögzített sorrendben végzi el a színfeldolgozást és a kimenet formázását.

A vertical pipeline diagram with eight labelled boxes, top to bottom: statistics extraction, auto white balance, debayering, colour matrix correction, gamma correction, image scaling, image cropping, and pixel packing. An arrow at the top is labelled "corrected Bayer pixels" and an arrow at the bottom is labelled "finished frame".

Az ISP színfeldolgozó és kimeneti szakaszai. A folyamat minden szakaszt végigfuttat a képkocka minden képpontján, mielőtt a következő elindulna.

4.12.1. A szakaszok

Minden szakasz egy jól meghatározott átalakítást végez sorban. A sorrend számít – a későbbi szakaszok feltételezik, hogy a korábbiak már lefutottak, és néhány szakasz az előző képkocka kimenetéből is vesz bemeneteket.

  1. A statisztikakinyerés régiónkénti átlagfényerőt és csatornánkénti összegeket mér a korrigált Bayer-képkockából. A számok az automatikus expozíció, automatikus erősítés és automatikus fehéregyensúly szabályozóhurkait táplálják, amelyek aztán a következő képkockához frissítik az érzékelő beállításait.

  2. Az automatikus fehéregyensúly-erősítések minden Bayer-képpontot egy színenkénti szorzóval skáláznak – a piros képpontokat egy R-erősítéssel, a zöldeket egy G-erősítéssel, a kékeket egy B-erősítéssel – a jelenet fehér referenciáját a semleges szürke felé tolva, hogy a rögzített színek úgy nézzenek ki, ahogy a szem látta őket. A szorzók az előző képkocka AWB-statisztikáiból származnak.

  3. A debayer-eljárás minden képpontnál rekonstruálja a hiányzó két színcsatornát a Bayer-mozaikból, a képpontonként egycsatornás nyers adatot háromcsatornás RGB-vé alakítva. (Lásd: Debayer-eljárás.) Minden, ami e szakasz után következik, RGB képpontokon fut, nem a Bayer-mozaikon.

  4. A színmátrix-korrekció (CCM) egy 3x3-as mátrixszorzást alkalmaz minden RGB képpontra, amely az érzékelő natív piros-zöld-kék válaszát egy szabványos színtérbe képezi le. Minden érzékelő szűrőinek megvan a maguk spektrális válasza, ami nem pontosan az, amit bármely szabvány elvár; a mátrix egy érzékelőnként kalibrált transzformáció, amely az „érzékelő RGB”-t „szabványos RGB”-vé alakítja.

  5. A gammakorrekció egy nemlineáris görbét alkalmaz minden csatornára, amely a lineáris érzékelőjelet egy észleléshez illesztett kódolássá tömöríti. A szem inkább veszi észre a sötét tónusok közötti különbségeket, mint a világos tónusok közöttieket, így egy olyan kódolás, amely a bitkeretéből többet a sötét végre fordít, adott bitmélységnél több látható részletet rögzít.

  6. A képskálázás az érzékelő natív felbontásáról a kívánt kimeneti felbontásra méretezi át a képkockát. A legtöbb alkalmazás az érzékelő teljes képpontszámánál kevesebbel fut, és a lefelé skálázás csökkenti mind a sávszélességet, mind a memóriaterhelést mindenen, ami ezután következik.

  7. A képkivágás a skálázott képkocka egy alrészletét vonja ki, és eldobja a rajta kívüli képpontokat. Érdeklődési terület rögzítésére, adott képarány eléréséhez vagy az alkalmazásnak nem szükséges szegély elhagyására használják.

  8. A képpontcsomagolás a csatornánkénti belső reprezentációt (jellemzően csatornánként 10 vagy 12 bit) a választott kimeneti formátumra alakítja, és az eredményt a RAM-ba írja.

4.12.2. A szabályozóhurok visszacsatolása

Az 1. és 2. szakasz egy több képkockán átívelő szabályozóhurkot alkot. Az N. képkockából kinyert statisztikák megmondják az érzékelőnek, milyen fényes volt a jelenet, és hogyan állt a színegyensúlya abban a képkockában; az automatikus expozíció, automatikus erősítés és automatikus fehéregyensúly szabályozói ezeket a számokat használják az N+1. képkocka új expozíció-, erősítés- és fehéregyensúly-regiszterértékeinek kiválasztásához. Az új értékek a következő képkocka kiolvasásakor lépnek életbe, az új képkocka statisztikái visszatérnek, és a hurok bezárul.

Egy nem változó jelenet esetén a hurok néhány képkockán belül konvergál, és állandó beállításon marad. Egy olyan jelenet esetén, amelynek fényereje vagy színárnyalata változik – például amikor a kamera beltérből egy napsütötte ablakra pásztáz – a hurok több képkockán keresztül követi a változást, és a felhasználó rövid fényerő- vagy színeltolódást lát az új állandósult állapot felé vezető úton.

4.12.3. Hol fut az ISP

Két elrendezés gyakori.

  • Egy érzékelőn lévő ISP az érzékelő chipen belül futtatja a teljes folyamatot, és kész RGB képet ad ki. Az MCU csak begyűjti az eredményt.

  • Egy érzékelőn kívüli ISP a gazda MCU-ban vagy SoC-ban él. Az érzékelő nyers Bayert ad ki; az MCU szilíciuma (vagy a meghajtókódja) lefuttatja a folyamatot, mielőtt a kész képkockát átadná a felhasználói kódnak.

A felosztás befolyásolja, hogy az érzékelő milyen kimeneti formátumokat tud közvetlenül átadni a felhasználónak. Egy teljes chipen lévő ISP-vel rendelkező érzékelő lehetővé teszi a felhasználó számára, hogy a chip által támogatott bármely kész formátum közül válasszon. Egy ilyen nélküli érzékelő csak Bayert ad ki, és a formátumkonverziók az MCU szilíciumában vagy szoftverében történnek.