4.20. Yhteenveto

Olet käynyt läpi kameran kuvannuspinon osat, jotka tulevat esiin joka kerta, kun skripti kaappaa kehyksen:

  • Sensorin edessä oleva optiikka – neulanreikä yksinkertaisimpana kuvaa muodostavana osana, sitten linssit, jotka keräävät paljon enemmän valoa silti tarkentaen, valinta-arvoinaan polttoväli, aukko, syväterävyys ja kuvakulma, joista sovellus valitsee. Todelliset linssit tuovat mukanaan vääristymää, vinjetointia ja pääsädekulmavaikutuksia, joita sensori ja ISP myöhemmin kompensoivat.

  • Sensoriruudukko – kaksiulotteinen valodiodimatriisi, joka muuntaa fotonit varaukseksi, valotusajan ja analogisen vahvistuksen vaihtaessa kirkkautta liike-epäterävyyttä ja kohinaa vastaan. Rivisuljin ja globaali suljin määräävät, miten matriisin rivit luetaan, ja pieni joukko sirunsisäisiä kalibrointeja – sarakekohtainen FPN, mustataso, vialliset pikselit, linssivarjostus – puhdistaa datan ennen kuin se lähtee sirulta. Kaksi väylää yhdistää sirun MCU:hun: hidas I2C-ohjausväylä rekistereille ja nopea rinnakkais- tai MIPI-väylä pikseleille.

  • Väri ja ISP – Bayer-värisuodatinmatriisi antaa kullekin pikselille joko punaisen, vihreän tai sinisen; debayer-prosessi interpoloi kaksi puuttuvaa kanavaa. Kuvasignaaliprosessori liittää loput putkesta yhteen – tilastojen poiminta, automaattinen valkotasapaino, debayer, värimatriisikorjaus, gamma, skaalaus, rajaus ja lopullinen pakkaus pyydettyyn pikseliformaattiin.

  • Pikseliformaatit – raaka Bayer, RGB888, RGB565, YUV422, harmaasävy, BINARY sekä pakatut JPEG / PNG -tulosteet vaihtavat muistikokoa väriuskollisuutta ja myöhempien algoritmien yhteensopivuutta vastaan. RGB565 on oletus valmiille värikuvalle, koska se sopii MCU:n sanaleveyteen ja puolittaa muistikustannuksen RGB888:aan verrattuna.

  • CSI API – viisi alustusriviä plus tilannekuvasilmukka on muoto, josta jokainen skripti lähtee liikkeelle. Kehyspuskurialtaat (yksittäinen, kaksois-, kolmois-, video-FIFO tai liipaistu) ratkaisevat, miten sovellus ja kamera jakavat kehyksiä; erillinen esikatselukanava syöttää mihin tahansa liitettyyn virheenjäljitysohjelmaan kilpailematta sovelluksen puskureista; sensorin säätimet kattavat suunnan, valotuksen, vahvistuksen, valkotasapainon, kehysnopeuden katon ja väripalkkitestikuvion.

  • Useat sensorit ja muistialtaat – kaksi sensoria sisältävät kortit luovat yhden CSI-ilmentymän sirua kohden ja ajavat kunkin omalla nopeudellaan. Alla kehyspuskuriallas, esikatselualue, MicroPython-keko ja pienemmät nopean muistin varaukset sijaitsevat eri RAM-alueilla, sijoitettuna niin, että nopeutta tarvitsevat osat saavat sitä ja kokoa tarvitsevat osat saavat sen sijaan tilaa.

Tämä riittää kehyksen ottamiseen sensorista oikealla formaatilla, kehyskoolla ja kohtaukseen sopivalla valotuksella; kehyspuskuritilan valintaan, joka vastaa sovelluksen käsittelyaikaa; reaaliaikaisen esikatselun näyttämiseen kaikelle liitetylle; ja Image-objektin lukemiseen takaisin Pythoniin valmiina käsiteltäväksi.

4.20.1. Tämän viiteaineiston käyttö myöhemmin

Kohtele kuvannusta käsitteleviä lukuja viiteaineistona, ei kertalukemisena. Palaaminen kertaamaan kehyspuskuritiloja, pikseliformaatteja tai tietyn sensorin säätimen merkitystä on tarkoitettu käyttötapa. csi.CSI-viitesivu luettelee jokaisen metodin yhdessä paikassa, kun kysymys on vain ”mikä tämän kutsun tarkka nimi olikaan”.

4.20.2. Mihin tästä eteenpäin

Kuvankäsittely on luonnollinen seuraava aihe. Kun puskuri on käsillä ja csi API ymmärretty, jäljellä on se, mitä pikseleillä tehdään: kynnysarvot, reunantunnistus, blobien etsintä, viivojen ja muotojen tunnistus, QR-koodit, AprilTagit, koneoppimispäättely. Työkalupakki siirtyy image-moduuliin ja sen Image-objektin metodien luetteloon. Kaikki tästä osiosta kulkee mukana eteenpäin; silmukan muoto, kehyspuskuritila, pikseliformaatti – kaikki se on sitä, mihin kuvankäsittelymetodit kohdistuvat.