5.34. Összefoglalás¶
Az image modul a legnagyobb API, amelyet a kamera elérhetővé tesz, és ez a fejezet épp csak a vázlatát mutatta be: hogyan ábrázolódik egy kép a memóriában, hogyan olvas és ír a kamera egyes képpontokat, hogyan rajzol a rögzített képkockákba, hogyan transzformálja azokat aritmetikailag és geometriailag, hogyan végez küszöbölés szerinti osztályozást és szűrést rajtuk, hogyan nyer ki belőlük méréseket és észleléseket, hogyan dekódol belőlük nyomtatott szimbólumokat, hogyan hasonlít össze egy képet egy másikkal, és hogyan juttatja el az eredményeket a kamerára és onnan le.
Az eszköztár szándékosan széles. Egy klasszikus gépi látás folyamat, amely egy kis beágyazott kamerán fut, munkájának nagy részét azelőtt végzi, hogy bármi eljutna egy gépi tanulási modellhez, ha van ilyen – a küszöbölés megtisztítja a bemenetet, a szűrők zajt szűrnek, a régiók szűkítik a keresést, a folt- és vonaldetektorok lokalizálják a jelölteket, a hasonlósági pontozás eldönti, hogy a jelölt érdekes-e, az I/O réteg pedig átadja az eredményt annak, ami a következő szakaszt futtatja. E fejezet minden oldala e műveletek egyikét tárgyalta; a megfelelő folyamat bármely adott alkalmazáshoz ezek olyan sorozata, amely a probléma által megkövetelt sorrendben van összeállítva.
5.34.1. A folyamatminta¶
A legtöbb nem triviális kameraalkalmazás ugyanazt a vázlatot követi. Rögzíts egy képkockát az érzékelőről. Előfeldolgozd azt: formátumok konvertálása, hisztogram kiegyenlítése, zaj kiszűrése. Lokalizáld az érdekes régiókat vagy jellemzőket: foltdetektálás, vonaldetektálás, sablonillesztés, kóddekódolás. Elemezd, amit találtál: geometriai mérések, hasonlósági pontozás, statisztikák. Dönts az elemzés alapján, mit tegyél: GPIO kiváltása, egy hasznos adat jelentése, rögzítés és naplózás, a képkocka átadása egy ML modellnek. Add ki a döntést vagy a rögzített eredményt: mentés, kódolás, küldés, visszarajzolás a képkockába az IDE előnézetéhez.
Egyetlen fejezetoldal sem tárgyalta az összes lépést; a fejezet azokat az építőelemeket tárgyalta, amelyekből a folyamat összeáll. Annak megválasztása, hogy mely elemeket és milyen sorrendben használd, az alkalmazás szkriptjének feladata.
5.34.2. Hová vezet a fejezet¶
Az image modul a képekkel képként foglalkozik – képpontok, régiók, rajzolás, észlelések. A rögzített adatokon végzett munka jó része nem illik ebbe a keretbe. Egy tetszőleges számtömb feletti statisztikák kiszámítása, vektorizált aritmetika futtatása nyers érzékelőadatokon, egy olyan egyéni mátrixtranszformáció alkalmazása, amely mögött nincs image modul metódus, adatok előkészítése egy gépi tanulási modell számára, amely egy adott tenzorelrendezést igényel – mindezek egy számtömb-könyvtár feladatai, nem egy képfeldolgozóé.
A következő fejezet pontosan ezzel foglalkozik. A kamerán a MicroPythonnal szállított ulab.numpy modul a NumPy egy részhalmaza, és két híd kapcsolja össze az image modullal: a to_ndarray() egy képkocka képpontjait egy ndarray objektumba másolja a numerikus munkához, az Image konstruktor pedig elfogad egy ndarray objektumot, hogy az eredményből új képet építsen, amely készen áll a megjelenítésre, mentésre vagy az image könyvtárba való visszatáplálásra. A két modul összeáll – mindegyik azt teszi, amit a másik nem, és együtt lefedik a numerikus és képalkotási munkát, amelyre egy beágyazott látás alkalmazásnak szüksége van.