5.34. Yhteenveto¶
image-moduuli on laajin API, jonka kamera tarjoaa, ja tämä luku käsitteli juuri sen pääpiirteet: miten kuva esitetään muistissa, miten kamera lukee ja kirjoittaa yksittäisiä pikseleitä, miten se piirtää kaapattuihin kehyksiin, miten se muuntaa niitä laskennallisesti ja geometrisesti, miten se kynnysluokittelee ja suodattaa niitä, miten se poimii niistä mittauksia ja tunnistuksia, miten se purkaa niistä painettuja symboleja, miten se vertaa yhtä kuvaa toiseen ja miten se siirtää tulokset kameralle ja sieltä pois.
Työkalupakki on tarkoituksella laaja. Klassinen konenäköputki, joka toimii pienessä sulautetussa kamerassa, tekee suurimman osan työstään ennen kuin mikään saavuttaa koneoppimismallin, mikäli sellainen on – kynnystäminen siivoaa syötteen, suodattimet poistavat kohinaa, alueet kaventavat hakua, blob- ja viivailmaisimet paikantavat ehdokkaat, samankaltaisuuspisteytys päättää, onko ehdokas kiinnostava, ja I/O-kerros luovuttaa tuloksen sille, mikä suorittaa seuraavan vaiheen. Jokainen tämän luvun sivu käsitteli yhtä näistä toiminnoista; oikea putki mihin tahansa sovellukseen on niiden sarja, joka on koottu ongelman vaatimassa järjestyksessä.
5.34.1. Putkimalli¶
Useimmat ei-triviaalit kamerasovellukset noudattavat samaa runkoa. Kaappaa kehys sensorista. Esikäsittele se: muunna muodot, tasoita histogrammi, sumenna kohina pois. Paikanna kiinnostavat alueet tai piirteet: blob-tunnistus, viivantunnistus, mallisovitus, koodinpurku. Analysoi löydetty: geometriset mittaukset, samankaltaisuuspisteytys, tilastot. Päätä, mitä tehdä analyysin perusteella: laukaise GPIO, raportoi hyötykuorma, kaappaa-ja-lokita, luovuta kehys koneoppimismallille. Tulosta päätös tai kaapattu tuotos: tallenna, koodaa, lähetä, piirrä takaisin kehykseen IDE:n esikatselua varten.
Yksikään luvun sivu ei käsitellyt jokaista vaihetta; luku käsitteli rakennuspalikat, joista putki koostuu. Sen valitseminen, mitä palikoita käytetään ja missä järjestyksessä, on sovellusskriptin tehtävä.
5.34.2. Mihin luku johtaa¶
image-moduuli käsittelee kuvia kuvina – pikseleinä, alueina, piirtämisenä, tunnistuksina. Suuri osa kaapatun datan parissa tehtävästä työstä ei sovi tähän kehykseen. Tilastojen laskeminen mielivaltaisen numeerisen taulukon yli, vektoroidun laskennan suorittaminen raakaan sensoridataan, sellaisen mukautetun matriisimuunnoksen soveltaminen, jonka takana ei ole image-moduulin menetelmää, datan valmistelu koneoppimismallille, joka haluaa tietyn tensorin asettelun – nämä kaikki ovat numeerisen taulukkokirjaston, eivät kuvankäsittelykirjaston, tehtäviä.
Seuraava luku käsittelee juuri tätä. Kameran MicroPythonin mukana toimitettu ulab.numpy -moduuli on NumPyn osajoukko, ja kaksi siltaa yhdistävät sen image-moduuliin: to_ndarray() kopioi kehyksen pikselit ndarray-olioon numeerista työtä varten, ja Image-rakentaja hyväksyy ndarray-olion rakentaakseen tuloksesta uuden kuvan, joka on valmis näytettäväksi, tallennettavaksi tai syötettäväksi takaisin kuvakirjastoon. Nämä kaksi moduulia toimivat yhdessä – kumpikin tekee sen, mitä toinen ei tee, ja yhdessä ne kattavat numeerisen ja kuvankäsittelytyön, jota sulautetun konenäön sovellus tarvitsee.