AI-For-Beginners/translations/sl/lessons/4-ComputerVision/06-IntroCV
leestott b5a91026ce 🌐 Update translations via Co-op Translator 2025-08-30 08:19:54 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-30 08:19:54 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 08:19:54 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-26 01:51:51 +00:00

README.md

Uvod v računalniški vid

Računalniški vid je področje, katerega cilj je omogočiti računalnikom, da pridobijo visok nivo razumevanja digitalnih slik. To je precej široka definicija, saj lahko razumevanje pomeni veliko različnih stvari, vključno z iskanjem objekta na sliki (prepoznavanje objektov), razumevanjem dogajanja (prepoznavanje dogodkov), opisovanjem slike z besedilom ali rekonstrukcijo prizora v 3D. Obstajajo tudi posebne naloge, povezane s človeškimi slikami: ocenjevanje starosti in čustev, prepoznavanje obrazov ter določanje 3D drže, če naštejemo le nekaj primerov.

Pred-predavanjski kviz

Ena najpreprostejših nalog računalniškega vida je klasifikacija slik.

Računalniški vid pogosto velja za vejo umetne inteligence. Danes se večina nalog računalniškega vida rešuje z uporabo nevronskih mrež. Več o posebni vrsti nevronskih mrež, ki se uporabljajo za računalniški vid, konvolucijske nevronske mreže, bomo spoznali v tem poglavju.

Vendar pa je v mnogih primerih smiselno, da pred obdelavo slike z nevronsko mrežo uporabimo nekatere algoritmične tehnike za izboljšanje slike.

Na voljo je več Python knjižnic za obdelavo slik:

  • imageio omogoča branje/pisanje različnih formatov slik. Podpira tudi ffmpeg, uporabno orodje za pretvorbo video okvirjev v slike.
  • Pillow (znan tudi kot PIL) je nekoliko zmogljivejši in podpira manipulacijo slik, kot so morfing, prilagoditve palete in drugo.
  • OpenCV je zmogljiva knjižnica za obdelavo slik, napisana v C++, ki je postala de facto standard za obdelavo slik. Ima priročen Python vmesnik.
  • dlib je knjižnica v C++, ki implementira številne algoritme strojnega učenja, vključno z nekaterimi algoritmi računalniškega vida. Ima tudi Python vmesnik in se lahko uporablja za zahtevne naloge, kot so prepoznavanje obrazov in zaznavanje obraznih značilnosti.

OpenCV

OpenCV velja za de facto standard za obdelavo slik. Vsebuje veliko uporabnih algoritmov, implementiranih v C++. OpenCV lahko uporabljate tudi v Pythonu.

Dober vir za učenje OpenCV je tečaj Learn OpenCV. V našem učnem načrtu ni cilj, da se naučimo OpenCV, ampak da vam pokažemo nekaj primerov, kdaj ga lahko uporabimo in kako.

Nalaganje slik

Slike v Pythonu lahko priročno predstavimo z NumPy polji. Na primer, sivinske slike velikosti 320x200 pik bi bile shranjene v polju velikosti 200x320, barvne slike enakih dimenzij pa bi imele obliko 200x320x3 (za 3 barvne kanale). Za nalaganje slike lahko uporabite naslednjo kodo:

import cv2
import matplotlib.pyplot as plt

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

Tradicionalno OpenCV uporablja kodiranje BGR (modro-zelena-rdeča) za barvne slike, medtem ko ostala Python orodja uporabljajo bolj tradicionalno RGB (rdeča-zelena-modra). Da bo slika pravilno prikazana, jo morate pretvoriti v barvni prostor RGB, bodisi z zamenjavo dimenzij v NumPy polju ali z uporabo funkcije OpenCV:

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

Ista funkcija cvtColor se lahko uporablja za izvajanje drugih pretvorb barvnih prostorov, kot je pretvorba slike v sivinsko ali v HSV (odtenek-nasičenost-vrednost) barvni prostor.

OpenCV lahko uporabite tudi za nalaganje video posnetkov okvir za okvir - primer je podan v vajah OpenCV Notebook.

Obdelava slik

Preden sliko posredujete nevronski mreži, boste morda želeli uporabiti več korakov predobdelave. OpenCV omogoča številne funkcije, vključno z:

  • Spreminjanje velikosti slike z uporabo im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Zameglitev slike z uporabo im = cv2.medianBlur(im,3) ali im = cv2.GaussianBlur(im, (3,3), 0)
  • Spreminjanje svetlosti in kontrasta slike je mogoče z manipulacijo NumPy polj, kot je opisano v tej opombi na Stackoverflow.
  • Uporaba pragovne obdelave z uporabo funkcij cv2.threshold/cv2.adaptiveThreshold, kar je pogosto boljše od prilagajanja svetlosti ali kontrasta.
  • Uporaba različnih transformacij na sliki:
    • Afine transformacije so uporabne, če morate kombinirati rotacijo, spreminjanje velikosti in nagib slike ter poznate izvorno in ciljno lokacijo treh točk na sliki. Afine transformacije ohranjajo vzporedne črte vzporedne.
    • Perspektivne transformacije so uporabne, ko poznate izvorne in ciljne položaje 4 točk na sliki. Na primer, če posnamete sliko pravokotnega dokumenta s pametnim telefonom pod kotom in želite narediti pravokotno sliko samega dokumenta.
  • Razumevanje gibanja znotraj slike z uporabo optičnega toka.

Primeri uporabe računalniškega vida

V našem OpenCV Notebook podajamo nekaj primerov, kdaj lahko računalniški vid uporabimo za izvajanje specifičnih nalog:

  • Predobdelava fotografije Braillove knjige. Osredotočamo se na to, kako lahko uporabimo pragovno obdelavo, zaznavanje značilnosti, perspektivno transformacijo in manipulacijo NumPy za ločevanje posameznih Braillovih simbolov za nadaljnjo klasifikacijo z nevronsko mrežo.
Braillova slika Predobdelana Braillova slika Braillovi simboli

Slika iz OpenCV.ipynb

  • Zaznavanje gibanja v videu z uporabo razlike med okvirji. Če je kamera fiksna, bi morali biti okvirji iz video posnetka med seboj precej podobni. Ker so okvirji predstavljeni kot polja, lahko z odštevanjem teh polj za dva zaporedna okvirja dobimo razliko med piksli, ki bi morala biti nizka za statične okvirje in postati višja, ko je v sliki zaznano večje gibanje.

Slika video okvirjev in razlik med okvirji

Slika iz OpenCV.ipynb

  • Zaznavanje gibanja z uporabo optičnega toka. Optični tok nam omogoča razumevanje, kako se posamezni piksli na video okvirjih premikajo. Obstajata dve vrsti optičnega toka:

    • Gost optični tok izračuna vektorsko polje, ki kaže, kam se premika vsak piksel.
    • Redek optični tok temelji na zaznavanju nekaterih značilnih značilnosti slike (npr. robov) in gradnji njihove trajektorije od okvirja do okvirja.

Slika optičnega toka

Slika iz OpenCV.ipynb

✍️ Primeri zvezkov: OpenCV preizkusite OpenCV v akciji

Izvedimo nekaj eksperimentov z OpenCV z raziskovanjem OpenCV Notebook.

Zaključek

Včasih je mogoče relativno kompleksne naloge, kot so zaznavanje gibanja ali zaznavanje konic prstov, rešiti zgolj z računalniškim vidom. Zato je zelo koristno poznati osnovne tehnike računalniškega vida in kaj knjižnice, kot je OpenCV, omogočajo.

🚀 Izziv

Oglejte si ta video iz oddaje AI show, da se naučite o projektu Cortic Tigers in kako so zgradili rešitev na osnovi blokov za demokratizacijo nalog računalniškega vida prek robota. Raziskujte druge podobne projekte, ki pomagajo novim učencem pri vstopu na področje.

Po-predavanjski kviz

Pregled in samostojno učenje

Preberite več o optičnem toku v tem odličnem vodiču.

Naloga

V tej nalogi boste posneli video s preprostimi gestami, vaš cilj pa bo izluščiti premike gor/dol/levo/desno z uporabo optičnega toka.

Okvir premika dlani

Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve AI za prevajanje Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.