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.