AI-For-Beginners/translations/hr/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 u računalni vid

Računalni vid je disciplina čiji je cilj omogućiti računalima da steknu visok nivo razumijevanja digitalnih slika. Ovo je prilično široka definicija jer razumijevanje može značiti mnogo različitih stvari, uključujući pronalaženje objekta na slici (detekcija objekata), razumijevanje što se događa (detekcija događaja), opisivanje slike tekstom ili rekonstrukciju scene u 3D. Postoje i posebni zadaci vezani za slike ljudi: procjena dobi i emocija, detekcija i identifikacija lica te procjena 3D poze, da spomenemo samo neke.

Kviz prije predavanja

Jedan od najjednostavnijih zadataka računalnog vida je klasifikacija slika.

Računalni vid se često smatra granom umjetne inteligencije (AI). Danas se većina zadataka računalnog vida rješava pomoću neuronskih mreža. U ovom dijelu ćemo naučiti više o posebnoj vrsti neuronskih mreža koje se koriste za računalni vid, konvolucijskim neuronskim mrežama.

Međutim, prije nego što sliku proslijedite neuronskoj mreži, u mnogim slučajevima ima smisla koristiti neke algoritamske tehnike za poboljšanje slike.

Postoji nekoliko Python biblioteka dostupnih za obradu slika:

  • imageio može se koristiti za čitanje/pisanje različitih formata slika. Također podržava ffmpeg, koristan alat za pretvaranje video okvira u slike.
  • Pillow (poznat i kao PIL) je nešto moćniji i podržava manipulaciju slikama poput morfinga, podešavanja paleta i još mnogo toga.
  • OpenCV je moćna biblioteka za obradu slika napisana u C++, koja je postala de facto standard za obradu slika. Ima praktično Python sučelje.
  • dlib je C++ biblioteka koja implementira mnoge algoritme strojnog učenja, uključujući neke algoritme računalnog vida. Također ima Python sučelje i može se koristiti za izazovne zadatke poput detekcije lica i obilježja lica.

OpenCV

OpenCV se smatra de facto standardom za obradu slika. Sadrži mnogo korisnih algoritama implementiranih u C++. OpenCV možete koristiti i iz Pythona.

Dobar izvor za učenje OpenCV-a je ovaj Learn OpenCV tečaj. U našem kurikulumu cilj nije naučiti OpenCV, već vam pokazati neke primjere kada se može koristiti i kako.

Učitavanje slika

Slike u Pythonu mogu se praktično predstaviti pomoću NumPy nizova. Na primjer, crno-bijele slike veličine 320x200 piksela bile bi pohranjene u nizu dimenzija 200x320, dok bi slike u boji iste dimenzije imale oblik 200x320x3 (za 3 kanala boja). Za učitavanje slike možete koristiti sljedeći kod:

import cv2
import matplotlib.pyplot as plt

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

Tradicionalno, OpenCV koristi BGR (plavo-zelena-crvena) kodiranje za slike u boji, dok ostatak Python alata koristi tradicionalniji RGB (crveno-zelena-plava). Da bi slika izgledala ispravno, trebate je pretvoriti u RGB prostor boja, bilo zamjenom dimenzija u NumPy nizu ili pozivanjem OpenCV funkcije:

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

Ista funkcija cvtColor može se koristiti za izvođenje drugih transformacija prostora boja, poput pretvaranja slike u crno-bijelu ili u HSV (nijansa-zasićenost-vrijednost) prostor boja.

OpenCV također možete koristiti za učitavanje videozapisa okvir po okvir - primjer je dan u vježbi OpenCV Notebook.

Obrada slika

Prije nego što sliku proslijedite neuronskoj mreži, možda ćete htjeti primijeniti nekoliko koraka predobrade. OpenCV može učiniti mnogo toga, uključujući:

  • Promjenu veličine slike pomoću im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Zamućivanje slike pomoću im = cv2.medianBlur(im,3) ili im = cv2.GaussianBlur(im, (3,3), 0)
  • Promjenu svjetline i kontrasta slike manipulacijom NumPy nizovima, kako je opisano u ovoj bilješci na Stackoverflowu.
  • Korištenje praga pozivanjem funkcija cv2.threshold/cv2.adaptiveThreshold, što je često bolje od podešavanja svjetline ili kontrasta.
  • Primjenu različitih transformacija na sliku:
    • Afine transformacije mogu biti korisne ako trebate kombinirati rotaciju, promjenu veličine i iskrivljenje slike te znate izvorne i odredišne lokacije tri točke na slici. Afine transformacije zadržavaju paralelne linije paralelnima.
    • Perspektivne transformacije mogu biti korisne kada znate izvorne i odredišne pozicije 4 točke na slici. Na primjer, ako slikate pravokutni dokument pametnim telefonom pod nekim kutom i želite dobiti pravokutnu sliku samog dokumenta.
  • Razumijevanje kretanja unutar slike pomoću optčkog toka.

Primjeri korištenja računalnog vida

U našem OpenCV Notebook dajemo neke primjere kada se računalni vid može koristiti za obavljanje specifičnih zadataka:

  • Predobrada fotografije Brailleove knjige. Fokusiramo se na to kako možemo koristiti pragove, detekciju obilježja, perspektivne transformacije i manipulacije NumPy nizovima kako bismo odvojili pojedinačne Brailleove simbole za daljnju klasifikaciju neuronskom mrežom.
Braille slika Predobrađena Braille slika Braille simboli

Slika iz OpenCV.ipynb

  • Detekcija kretanja u videu pomoću razlike okvira. Ako je kamera fiksna, tada bi okviri iz videozapisa trebali biti prilično slični. Budući da su okviri predstavljeni kao nizovi, jednostavnim oduzimanjem tih nizova za dva uzastopna okvira dobit ćemo razliku piksela, koja bi trebala biti mala za statične okvire, a postati veća kada postoji značajno kretanje na slici.

Slika video okvira i razlike okvira

Slika iz OpenCV.ipynb

  • Detekcija kretanja pomoću optičkog toka. Optički tok omogućuje nam razumijevanje kako se pojedini pikseli na video okvirima kreću. Postoje dvije vrste optičkog toka:

    • Gusti optički tok računa vektorsko polje koje pokazuje za svaki piksel kamo se kreće
    • Rijetki optički tok temelji se na uzimanju nekih karakterističnih obilježja na slici (npr. rubova) i praćenju njihove putanje od okvira do okvira.

Slika optičkog toka

Slika iz OpenCV.ipynb

✍️ Primjeri bilježnica: OpenCV isprobajte OpenCV u praksi

Napravimo nekoliko eksperimenata s OpenCV-om istražujući OpenCV Notebook

Zaključak

Ponekad se relativno složeni zadaci poput detekcije kretanja ili detekcije vrhova prstiju mogu riješiti isključivo računalnim vidom. Stoga je vrlo korisno poznavati osnovne tehnike računalnog vida i što biblioteke poput OpenCV-a mogu učiniti.

🚀 Izazov

Pogledajte ovaj video iz AI showa kako biste saznali više o projektu Cortic Tigers i kako su izgradili rješenje temeljeno na blokovima za demokratizaciju zadataka računalnog vida putem robota. Istražite druge slične projekte koji pomažu novim učenicima da se uključe u ovo područje.

Kviz nakon predavanja

Pregled i samostalno učenje

Pročitajte više o optičkom toku u ovom odličnom vodiču.

Zadatak

U ovom laboratoriju snimit ćete video s jednostavnim gestama, a vaš cilj je izdvojiti pokrete gore/dolje/lijevo/desno koristeći optički tok.

Pokret dlana okvir

Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.