AI-For-Beginners/translations/cs/lessons/4-ComputerVision/06-IntroCV
leestott 2555d81160 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-26 01:51:51 +00:00

README.md

Úvod do počítačového vidění

Počítačové vidění je obor, jehož cílem je umožnit počítačům získat pokročilé porozumění digitálním obrazům. Toto je poměrně široká definice, protože porozumění může znamenat mnoho různých věcí, včetně nalezení objektu na obrázku (detekce objektů), pochopení, co se děje (detekce událostí), popisu obrázku textem nebo rekonstrukce scény ve 3D. Existují také speciální úkoly související s lidskými obrazy: odhad věku a emocí, detekce a identifikace obličeje, odhad 3D pozice a další.

Kvíz před přednáškou

Jedním z nejjednodušších úkolů počítačového vidění je klasifikace obrázků.

Počítačové vidění je často považováno za odvětví AI. V současnosti je většina úkolů počítačového vidění řešena pomocí neuronových sítí. V této sekci se dozvíme více o speciálním typu neuronových sítí používaných pro počítačové vidění, konvolučních neuronových sítích.

Nicméně, než předáte obrázek neuronové síti, v mnoha případech má smysl použít některé algoritmické techniky k vylepšení obrázku.

Existuje několik knihoven v Pythonu dostupných pro zpracování obrázků:

  • imageio lze použít pro čtení/zápis různých formátů obrázků. Podporuje také ffmpeg, užitečný nástroj pro převod video snímků na obrázky.
  • Pillow (známý také jako PIL) je o něco výkonnější a podporuje také některé manipulace s obrázky, jako je morfování, úpravy palety a další.
  • OpenCV je výkonná knihovna pro zpracování obrázků napsaná v C++, která se stala de facto standardem pro zpracování obrázků. Má pohodlné rozhraní pro Python.
  • dlib je knihovna v C++, která implementuje mnoho algoritmů strojového učení, včetně některých algoritmů počítačového vidění. Má také rozhraní pro Python a lze ji použít pro náročné úkoly, jako je detekce obličeje a detekce klíčových bodů na obličeji.

OpenCV

OpenCV je považováno za de facto standard pro zpracování obrázků. Obsahuje mnoho užitečných algoritmů implementovaných v C++. OpenCV můžete volat i z Pythonu.

Dobré místo pro učení OpenCV je tento kurz Learn OpenCV. V našem kurzu není cílem naučit se OpenCV, ale ukázat vám některé příklady, kdy jej lze použít a jak.

Načítání obrázků

Obrázky v Pythonu lze pohodlně reprezentovat pomocí NumPy polí. Například černobílé obrázky o velikosti 320x200 pixelů by byly uloženy v poli 200x320 a barevné obrázky stejné velikosti by měly tvar 200x320x3 (pro 3 barevné kanály). K načtení obrázku můžete použít následující kód:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpeg')
plt.imshow(im)

Tradičně OpenCV používá kódování BGR (modrá-zelená-červená) pro barevné obrázky, zatímco ostatní nástroje v Pythonu používají tradičnější RGB (červená-zelená-modrá). Aby obrázek vypadal správně, je třeba jej převést do barevného prostoru RGB, buď výměnou rozměrů v poli NumPy, nebo voláním funkce OpenCV:

im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)

Stejnou funkci cvtColor lze použít k provádění dalších transformací barevného prostoru, jako je převod obrázku na černobílý nebo do barevného prostoru HSV (odstín-sytost-hodnota).

OpenCV můžete také použít k načítání videa snímek po snímku příklad je uveden v cvičení OpenCV Notebook.

Zpracování obrázků

Než obrázek předáte neuronové síti, můžete chtít provést několik kroků předzpracování. OpenCV dokáže mnoho věcí, včetně:

  • Změny velikosti obrázku pomocí im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Rozmazání obrázku pomocí im = cv2.medianBlur(im,3) nebo im = cv2.GaussianBlur(im, (3,3), 0)
  • Změna jasu a kontrastu obrázku může být provedena manipulací s poli NumPy, jak je popsáno v této poznámce na Stackoverflow.
  • Použití práhování voláním funkcí cv2.threshold/cv2.adaptiveThreshold, což je často vhodnější než úprava jasu nebo kontrastu.
  • Použití různých transformací na obrázek:
    • Afinní transformace mohou být užitečné, pokud potřebujete kombinovat rotaci, změnu velikosti a zkosení obrázku a znáte zdrojovou a cílovou polohu tří bodů na obrázku. Afinní transformace zachovávají rovnoběžné čáry rovnoběžné.
    • Perspektivní transformace mohou být užitečné, když znáte zdrojové a cílové pozice 4 bodů na obrázku. Například pokud pořídíte fotografii obdélníkového dokumentu pomocí kamery smartphonu z určitého úhlu a chcete vytvořit obdélníkový obrázek samotného dokumentu.
  • Pochopení pohybu uvnitř obrázku pomocí optického toku.

Příklady použití počítačového vidění

V našem OpenCV Notebook uvádíme některé příklady, kdy lze počítačové vidění použít k provádění konkrétních úkolů:

  • Předzpracování fotografie Braillovy knihy. Zaměřujeme se na to, jak můžeme použít práhování, detekci prvků, perspektivní transformaci a manipulace s NumPy k oddělení jednotlivých Braillových symbolů pro další klasifikaci neuronovou sítí.
Braillův obrázek Předzpracovaný Braillův obrázek Braillovy symboly

Obrázek z OpenCV.ipynb

  • Detekce pohybu ve videu pomocí rozdílu snímků. Pokud je kamera pevná, pak by snímky z kamerového záznamu měly být velmi podobné. Protože snímky jsou reprezentovány jako pole, pouhým odečtením těchto polí pro dva po sobě jdoucí snímky získáme rozdíl pixelů, který by měl být nízký pro statické snímky a vyšší, pokud je v obraze výrazný pohyb.

Obrázek video snímků a rozdílů snímků

Obrázek z OpenCV.ipynb

  • Detekce pohybu pomocí optického toku. Optický tok nám umožňuje pochopit, jak se jednotlivé pixely na video snímcích pohybují. Existují dva typy optického toku:

    • Hustý optický tok vypočítává vektorové pole, které ukazuje, kam se každý pixel pohybuje.
    • Řídký optický tok je založen na výběru některých výrazných prvků na obrázku (např. hran) a sestavení jejich trajektorie snímek po snímku.

Obrázek optického toku

Obrázek z OpenCV.ipynb

✍️ Příkladové notebooky: OpenCV vyzkoušejte OpenCV v akci

Pojďme provést několik experimentů s OpenCV prozkoumáním OpenCV Notebook

Závěr

Někdy lze relativně složité úkoly, jako je detekce pohybu nebo detekce špičky prstu, vyřešit čistě pomocí počítačového vidění. Proto je velmi užitečné znát základní techniky počítačového vidění a co knihovny jako OpenCV dokážou.

🚀 Výzva

Podívejte se na toto video z AI show, abyste se dozvěděli o projektu Cortic Tigers a o tom, jak vytvořili řešení založené na blocích pro demokratizaci úkolů počítačového vidění prostřednictvím robota. Proveďte průzkum dalších podobných projektů, které pomáhají novým studentům vstoupit do tohoto oboru.

Kvíz po přednášce

Přehled & Samostudium

Přečtěte si více o optickém toku v tomto skvělém tutoriálu.

Úkol

V tomto cvičení natočíte video s jednoduchými gesty a vaším cílem bude extrahovat pohyby nahoru/dolů/vlevo/vpravo pomocí optického toku.

Snímek pohybu dlaně

Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.