4.12. ISP-putki¶
Kuvasignaaliprosessori (ISP) on laitteistoputki, joka muuntaa sensorin raa’at pikseliarvot valmiiksi värikuvaksi. Sensorin sisäiset pikselitason korjaukset ovat tuon putken ensimmäiset vaiheet. Niiden jälkeen putken loppuosa tekee värinkäsittelyn ja ulostulon muotoilun kiinteässä järjestyksessä jokaiselle kehykselle.
ISP:n värinkäsittely- ja ulostulovaiheet. Putki suorittaa kunkin vaiheen jokaiselle kehyksen pikselille ennen kuin seuraava alkaa.¶
4.12.1. Vaiheet¶
Kukin vaihe soveltaa yhtä tarkasti määriteltyä muunnosta vuorollaan. Järjestyksellä on merkitystä – myöhemmät vaiheet olettavat aikaisempien jo suoritetun, ja pari vaihetta ottaa syötteensä myös edellisen kehyksen ulostulosta.
Tilastojen poiminta mittaa aluekohtaisen keskimääräisen kirkkauden ja kanavakohtaiset summat korjatusta Bayer-kehyksestä. Luvut syötetään automaattivalotuksen, automaattivahvistuksen ja automaattisen valkotasapainon säätösilmukoihin, jotka sitten päivittävät sensorin asetukset seuraavaa kehystä varten.
Automaattisen valkotasapainon vahvistukset skaalaavat kunkin Bayer-pikselin värikohtaisella kertoimella – punaiset pikselit R-vahvistuksella, vihreät pikselit G-vahvistuksella, siniset pikselit B-vahvistuksella – työntäen näkymän valkoreferenssin kohti neutraalia harmaata, jotta tallennetut värit näyttävät siltä kuin silmä ne näki. Kertoimet tulevat edellisen kehyksen AWB-tilastoista.
Debayerointi rakentaa uudelleen kahden puuttuvan värikanavan jokaiseen pikseliin Bayer-mosaiikista, muuntaen yksi-kanava-per-pikseli-raakadatan kolmikanavaiseksi RGB:ksi. (Katso Debayerointi.) Kaikki tämän vaiheen jälkeen suoritetaan RGB-pikseleille Bayer-mosaiikin sijaan.
Värimatriisikorjaus (CCM) soveltaa 3x3-matriisikertolaskua kuhunkin RGB-pikseliin, joka kuvaa sensorin natiivin punainen-vihreä-sininen-vasteen vakiomuotoiseen väriavaruuteen. Kunkin sensorin suotimilla on oma spektrivasteensa, joka ei ole tarkalleen sitä mitä mikään standardi odottaa; matriisi on sensorikohtaisesti kalibroitu muunnos, joka muuttaa ”sensori-RGB:n” ”standardi-RGB:ksi”.
Gammakorjaus soveltaa epälineaarista käyrää kuhunkin kanavaan, joka pakkaa lineaarisen sensorisignaalin havainnointiin sovitettuun koodaukseen. Silmä huomaa erot tummien sävyjen välillä paremmin kuin erot kirkkaiden sävyjen välillä, joten koodaus, joka käyttää enemmän bittibudjetistaan tummaan päähän, tallentaa enemmän näkyvää yksityiskohtaa tietyllä bittisyvyydellä.
Kuvan skaalaus muuttaa kehyksen koon sensorin natiiviresoluutiosta tavoiteulostuloresoluutioon. Useimmat sovellukset toimivat sensorin täyttä pikselimäärää pienemmällä, ja pienennysskaalaus vähentää sekä kaistanleveyttä että muistipainetta kaikessa, mikä seuraa.
Kuvan rajaus poimii skaalatun kehyksen aliruudun ja hylkää sen ulkopuolella olevat pikselit. Käytetään kohdealueen kaappaamiseen, tietyn kuvasuhteen sovittamiseen tai sovelluksen tarpeettomaksi katsoman reunuksen poistamiseen.
Pikselien pakkaus muuntaa kanavakohtaisen sisäisen esitysmuodon (tyypillisesti 10 tai 12 bittiä kanavaa kohden) valitukseen ulostulomuotoon ja kirjoittaa tuloksen RAM-muistiin.
4.12.2. Säätösilmukan takaisinkytkentä¶
Vaiheet 1 ja 2 muodostavat säätösilmukan, joka ulottuu useiden kehysten yli. Kehyksestä N poimitut tilastot kertovat sensorille kuinka kirkas näkymä oli ja miten sen väritasapaino asettui kyseisellä kehyksellä; automaattivalotus-, automaattivahvistus- ja automaattivalkotasapainosäätimet käyttävät noita lukuja valitakseen uudet valotus-, vahvistus- ja valkotasapainorekisteriarvot kehykselle N+1. Uudet arvot tulevat voimaan seuraavan kehyksen lukuhetkellä, uuden kehyksen tilastot palautuvat, ja silmukka sulkeutuu.
Näkymässä, joka ei muutu, silmukka konvergoituu muutaman kehyksen sisällä ja pysyy vakioasetuksessa. Näkymässä, jonka kirkkaus tai värisävy muuttuu – esimerkiksi kameran kääntyessä sisätilasta auringonvaloiseen ikkunaan – silmukka seuraa muutosta usean kehyksen ajan, ja käyttäjä näkee lyhyen kirkkaus- tai värimuutoksen matkalla uuteen vakaaseen tilaan.
4.12.3. Missä ISP suoritetaan¶
Kaksi järjestelyä on yleistä.
Sensorin sisäinen ISP suorittaa koko putken sensorisirun sisällä ja tuottaa valmiin RGB-kuvan. MCU vain kerää tuloksen.
Sensorin ulkoinen ISP sijaitsee isäntä-MCU:ssa tai SoC:ssa. Sensori tuottaa raakaa Bayeria; MCU:n piiri (tai sen ajurikoodi) suorittaa putken ennen valmiin kehyksen luovuttamista käyttäjäkoodille.
Jako vaikuttaa siihen, mitä ulostulomuotoja sensori voi luovuttaa käyttäjälle suoraan. Sensori, jossa on täysi sirun sisäinen ISP, antaa käyttäjän valita minkä tahansa valmiin muodon, jota siru tukee. Sensori ilman sellaista tuottaa vain Bayeria, ja muotomuunnokset tapahtuvat MCU:n piirissä tai ohjelmistossa.