AI-For-Beginners/translations/sr/lessons/4-ComputerVision/06-IntroCV
localizeflow[bot] 43c61babaf chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:36:47 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:36:47 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-09-07 15:24:18 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:36:47 +00:00

README.md

Увод у рачунарски вид

Рачунарски вид је област чији је циљ да омогући рачунарима да стекну висок ниво разумевања дигиталних слика. Ово је прилично широка дефиниција, јер разумевање може значити много различитих ствари, укључујући проналажење објекта на слици (детекција објеката), разумевање шта се дешава (детекција догађаја), описивање слике текстом или реконструкцију сцене у 3D. Постоје и посебни задаци везани за људске слике: процена старости и емоција, детекција и идентификација лица, као и процена 3D положаја, да наведемо само неке.

Квиз пре предавања

Један од најједноставнијих задатака рачунарског вида је класификација слика.

Рачунарски вид се често сматра граном вештачке интелигенције. Данас се већина задатака рачунарског вида решава коришћењем неуронских мрежа. У овом делу ћемо научити више о посебној врсти неуронских мрежа које се користе за рачунарски вид, конволуционе неуронске мреже.

Међутим, пре него што слику проследите неуронској мрежи, у многим случајевима има смисла користити неке алгоритамске технике за побољшање слике.

Постоји неколико Python библиотека доступних за обраду слика:

  • imageio може се користити за читање/уписивање различитих формата слика. Такође подржава ffmpeg, користан алат за конвертовање видео кадрова у слике.
  • Pillow (познат и као PIL) је нешто моћнији и подржава неке манипулације сликама као што су морфинг, подешавање палете и друго.
  • OpenCV је моћна библиотека за обраду слика написана у C++, која је постала де факто стандард за обраду слика. Има погодан Python интерфејс.
  • dlib је C++ библиотека која имплементира многе алгоритме машинског учења, укључујући неке алгоритме рачунарског вида. Такође има Python интерфејс и може се користити за изазовне задатке као што су детекција лица и детекција карактеристичних тачака на лицу.

OpenCV

OpenCV се сматра де факто стандардом за обраду слика. Садржи много корисних алгоритама, имплементираних у C++. OpenCV можете користити и из Python-а.

Добро место за учење OpenCV-а је курс Learn OpenCV. У нашем курикулуму, циљ нам није да научимо OpenCV, већ да вам покажемо неке примере када се може користити и како.

Учитавање слика

Слике у Python-у могу се погодније представити помоћу NumPy низова. На пример, слике у сивим тоновима величине 320x200 пиксела биће смештене у низ величине 200x320, а колор слике истих димензија имаће облик 200x320x3 (за 3 канала боја). Да бисте учитали слику, можете користити следећи код:

import cv2
import matplotlib.pyplot as plt

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

Традиционално, OpenCV користи BGR (плаво-зелено-црвено) кодирање за колор слике, док остали Python алати користе традиционалнији RGB (црвено-зелено-плаво). Да би слика изгледала исправно, потребно је да је конвертујете у RGB простор боја, било заменом димензија у NumPy низу, или позивом OpenCV функције:

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

Иста cvtColor функција може се користити за извођење других трансформација простора боја, као што је конвертовање слике у сиве тонове или у HSV (нијанса-засићеност-вредност) простор боја.

OpenCV можете користити и за учитавање видео записа кадрова по кадар - пример је дат у вежби OpenCV Notebook.

Обрада слика

Пре него што слику проследите неуронској мрежи, можда ћете желети да примените неколико корака предобраде. OpenCV може радити многе ствари, укључујући:

  • Промену величине слике коришћењем im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Замагљивање слике коришћењем im = cv2.medianBlur(im,3) или im = cv2.GaussianBlur(im, (3,3), 0)
  • Промену осветљености и контраста слике можете урадити манипулацијом NumPy низовима, као што је описано у овом Stackoverflow чланку.
  • Коришћење праговања позивом функција cv2.threshold/cv2.adaptiveThreshold, што је често пожељније од подешавања осветљености или контраста.
  • Примена различитих трансформација на слику:
    • Афинске трансформације могу бити корисне ако треба да комбинујете ротацију, промену величине и искривљење слике и знате изворну и одредишну локацију три тачке на слици. Афинске трансформације задржавају паралелне линије паралелним.
    • Перспективне трансформације могу бити корисне када знате изворне и одредишне позиције 4 тачке на слици. На пример, ако снимите слику правоугаоног документа помоћу камере паметног телефона из неког угла, а желите да направите правоугаону слику самог документа.
  • Разумевање кретања унутар слике коришћењем оптичког тока.

Примери коришћења рачунарског вида

У нашем OpenCV Notebook, дајемо неке примере када се рачунарски вид може користити за извршавање специфичних задатака:

  • Предобрада фотографије Брајеве књиге. Фокусирамо се на то како можемо користити праговање, детекцију карактеристика, перспективну трансформацију и манипулације NumPy низовима да бисмо раздвојили појединачне Брајеве симболе за даљу класификацију помоћу неуронске мреже.
Слика Брајеве књиге Предобрађена слика Брајеве књиге Брајеви симболи

Слика из OpenCV.ipynb

  • Детекција кретања у видеу коришћењем разлике кадрова. Ако је камера фиксирана, онда би кадрови из видео записа требало да буду прилично слични један другом. Пошто су кадрови представљени као низови, само одузимањем тих низова за два узастопна кадра добићемо разлику пиксела, која би требало да буде мала за статичне кадрове, а да постане већа када постоји значајно кретање на слици.

Слика видео кадрова и разлике кадрова

Слика из OpenCV.ipynb

  • Детекција кретања коришћењем оптичког тока. Оптички ток нам омогућава да разумемо како се појединачни пиксели на видео кадровима крећу. Постоје две врсте оптичког тока:

    • Густи оптички ток израчунава векторско поље које показује за сваки пиксел где се креће
    • Ретки оптички ток заснован је на узимању неких карактеристичних елемената на слици (нпр. ивица) и изградњи њихове трајекторије од кадра до кадра.

Слика оптичког тока

Слика из OpenCV.ipynb

✍️ Пример Notebook-а: OpenCV испробајте OpenCV у акцији

Хајде да урадимо неке експерименте са OpenCV-ом истражујући OpenCV Notebook

Закључак

Понекад се релативно сложени задаци као што су детекција кретања или детекција врха прста могу решити искључиво рачунарским видом. Због тога је веома корисно знати основне технике рачунарског вида и шта библиотеке попут OpenCV-а могу да ураде.

🚀 Изазов

Погледајте овај видео из AI Show-а да бисте сазнали више о пројекту Cortic Tigers и како су изградили решење засновано на блоковима за демократизацију задатака рачунарског вида путем робота. Истражите друге сличне пројекте који помажу новим ученицима да се укључе у ову област.

Квиз после предавања

Преглед и самостално учење

Прочитајте више о оптичком току у овом одличном туторијалу.

Задатак

У овом лабораторијском раду, снимићете видео са једноставним гестовима, а ваш циљ је да извучете кретања горе/доле/лево/десно користећи оптички ток.

Кадар кретања длана