5.34. Shrnutí¶
Modul image je největší API, které kamera zpřístupňuje, a tato kapitola právě pokryla jeho obrys: jak je obraz reprezentován v paměti, jak kamera čte a zapisuje jednotlivé pixely, jak kreslí do zachycených snímků, jak je aritmeticky a geometricky transformuje, jak je prahově klasifikuje a filtruje, jak z nich extrahuje měření a detekce, jak z nich dekóduje tištěné symboly, jak porovnává jeden obraz s druhým a jak dostává výsledky na kameru a z ní.
Sada nástrojů je široká záměrně. Klasický pipeline počítačového vidění běžící na malé vestavěné kameře dělá většinu své práce předtím, než cokoli dosáhne modelu strojového učení, pokud nějaký existuje – prahování pročistí vstup, filtry odšumí, oblasti zúží hledání, detektory blobů a čar lokalizují kandidáty, skórování podobnosti rozhodne, zda je kandidát zajímavý, a vstupně-výstupní vrstva předá výsledek čemukoli, co spouští další fázi. Každá stránka v této kapitole pokryla jednu z těchto operací; správný pipeline pro jakoukoli danou aplikaci je jejich sekvence složená v pořadí, které problém vyžaduje.
5.34.1. Vzor pipeline¶
Většina netriviálních aplikací kamery sleduje stejný obrys. Zachyťte snímek ze senzoru. Předzpracujte jej: převeďte formáty, vyrovnejte histogram, rozmažte šum. Lokalizujte oblasti nebo příznaky zájmu: detekce blobů, detekce čar, porovnávání šablon, dekódování kódů. Analyzujte to, co bylo nalezeno: geometrická měření, skórování podobnosti, statistiky. Rozhodněte, co dělat na základě analýzy: spusťte GPIO, nahlaste payload, zachyťte a zaznamenejte, předejte snímek modelu strojového učení. Vypište rozhodnutí nebo zachycený artefakt: uložte, zakódujte, odešlete, zakreslete zpět do snímku pro náhled v IDE.
Žádná jediná stránka kapitoly nepokryla každý krok; kapitola pokryla stavební bloky, které pipeline skládá. Volba, které bloky použít a v jakém pořadí, je úkolem aplikačního skriptu.
5.34.2. Kam kapitola vede¶
Modul image se zabývá obrazy jako obrazy – pixely, oblastmi, kreslením, detekcemi. Spousta práce se zachycenými daty se do tohoto rámce nevejde. Výpočet statistik nad libovolným číselným polem, spouštění vektorizované aritmetiky nad surovými daty senzoru, aplikace vlastní maticové transformace, za kterou nestojí žádná metoda modulu image, příprava dat pro model strojového učení, který chce specifické rozložení tenzoru – to všechno jsou úlohy pro knihovnu číselných polí, nikoli pro knihovnu pro zpracování obrazu.
Přesně tomu se věnuje další kapitola. Modul ulab.numpy dodávaný s MicroPython na kameře je podmnožinou NumPy a s modulem image jej spojují dva mosty: to_ndarray() kopíruje pixely snímku do ndarray pro numerickou práci a konstruktor Image přijímá ndarray k sestavení nového obrazu z výsledku, připraveného k zobrazení, uložení nebo zpětnému předání do knihovny image. Tyto dva moduly se skládají – každý dělá to, co druhý nedělá, a společně pokrývají numerickou a obrazovou práci, kterou aplikace vestavěného vidění potřebuje.