AI-For-Beginners/translations/tl/lessons/4-ComputerVision/06-IntroCV
leestott c6463675e6 🌐 Update translations via Co-op Translator 2025-08-28 04:44:09 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-28 04:44:09 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 04:44:09 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-28 04:44:09 +00:00

README.md

Panimula sa Computer Vision

Computer Vision ay isang disiplina na ang layunin ay bigyan ang mga computer ng kakayahang maunawaan ang mga digital na imahe sa mataas na antas. Medyo malawak ang depinisyon na ito, dahil ang pag-unawa ay maaaring mangahulugan ng iba't ibang bagay, kabilang ang paghahanap ng isang bagay sa larawan (object detection), pag-unawa sa nangyayari (event detection), paglalarawan ng larawan gamit ang teksto, o pagbuo muli ng eksena sa 3D. Mayroon ding mga espesyal na gawain na may kaugnayan sa mga larawan ng tao: pagtatantiya ng edad at emosyon, pagtuklas at pagkilala sa mukha, at pagtatantiya ng 3D pose, upang pangalanan ang ilan.

Pre-lecture quiz

Isa sa mga pinakasimpleng gawain ng computer vision ay ang image classification.

Ang computer vision ay madalas itinuturing na isang sangay ng AI. Sa kasalukuyan, karamihan sa mga gawain sa computer vision ay nalulutas gamit ang neural networks. Matutunan natin ang higit pa tungkol sa espesyal na uri ng neural networks na ginagamit para sa computer vision, convolutional neural networks, sa buong seksyon na ito.

Gayunpaman, bago mo ipasa ang imahe sa isang neural network, sa maraming kaso ay may kabuluhan na gumamit ng ilang algorithmic techniques upang mapahusay ang imahe.

Mayroong ilang mga Python libraries na magagamit para sa image processing:

  • imageio maaaring gamitin para sa pagbabasa/pagsulat ng iba't ibang format ng imahe. Sinusuportahan din nito ang ffmpeg, isang kapaki-pakinabang na tool para sa pag-convert ng mga video frame sa mga imahe.
  • Pillow (kilala rin bilang PIL) ay mas makapangyarihan, at sinusuportahan din ang ilang manipulasyon ng imahe tulad ng morphing, pag-aayos ng palette, at iba pa.
  • OpenCV ay isang makapangyarihang library para sa image processing na isinulat sa C++, na naging de facto standard para sa image processing. Mayroon itong maginhawang Python interface.
  • dlib ay isang C++ library na nag-iimplementa ng maraming machine learning algorithms, kabilang ang ilan sa mga Computer Vision algorithms. Mayroon din itong Python interface, at maaaring gamitin para sa mga hamong gawain tulad ng pagtuklas ng mukha at facial landmark detection.

OpenCV

OpenCV ay itinuturing na de facto standard para sa image processing. Naglalaman ito ng maraming kapaki-pakinabang na algorithm, na ipinatupad sa C++. Maaari mo ring tawagin ang OpenCV mula sa Python.

Isang magandang lugar upang matutunan ang OpenCV ay ang Learn OpenCV course na ito. Sa ating kurikulum, ang layunin natin ay hindi matutunan ang OpenCV, kundi ipakita ang ilang mga halimbawa kung kailan ito maaaring gamitin, at paano.

Pag-load ng mga Imahe

Ang mga imahe sa Python ay maaaring maginhawang irepresenta gamit ang NumPy arrays. Halimbawa, ang grayscale images na may sukat na 320x200 pixels ay maiimbak sa isang 200x320 array, at ang color images na may parehong dimensyon ay magkakaroon ng hugis na 200x320x3 (para sa 3 color channels). Upang mag-load ng imahe, maaari mong gamitin ang sumusunod na code:

import cv2
import matplotlib.pyplot as plt

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

Tradisyonal, ang OpenCV ay gumagamit ng BGR (Blue-Green-Red) encoding para sa mga color images, habang ang iba pang Python tools ay gumagamit ng mas tradisyunal na RGB (Red-Green-Blue). Para maging tama ang itsura ng imahe, kailangan mo itong i-convert sa RGB color space, alinman sa pamamagitan ng pagpapalit ng dimensyon sa NumPy array, o sa pamamagitan ng pagtawag sa isang OpenCV function:

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

Ang parehong cvtColor function ay maaaring gamitin upang magsagawa ng iba pang mga color space transformations tulad ng pag-convert ng imahe sa grayscale o sa HSV (Hue-Saturation-Value) color space.

Maaari mo ring gamitin ang OpenCV upang mag-load ng video frame-by-frame - isang halimbawa ay ibinigay sa exercise OpenCV Notebook.

Image Processing

Bago ipasa ang isang imahe sa isang neural network, maaaring gusto mong mag-apply ng ilang mga pre-processing steps. Maraming magagawa ang OpenCV, kabilang ang:

  • Pag-resize ng imahe gamit ang im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Pag-blur ng imahe gamit ang im = cv2.medianBlur(im,3) o im = cv2.GaussianBlur(im, (3,3), 0)
  • Pagbabago ng liwanag at contrast ng imahe ay maaaring gawin sa pamamagitan ng NumPy array manipulations, tulad ng inilarawan sa Stackoverflow note na ito.
  • Paggamit ng thresholding sa pamamagitan ng pagtawag sa cv2.threshold/cv2.adaptiveThreshold functions, na madalas mas mainam kaysa sa pag-aadjust ng liwanag o contrast.
  • Pag-aapply ng iba't ibang transformations sa imahe:
    • Affine transformations ay maaaring maging kapaki-pakinabang kung kailangan mong pagsamahin ang rotation, resizing, at skewing sa imahe at alam mo ang source at destination location ng tatlong puntos sa imahe. Ang affine transformations ay nagpapanatili ng parallel lines na parallel.
    • Perspective transformations ay maaaring maging kapaki-pakinabang kapag alam mo ang source at destination positions ng 4 na puntos sa imahe. Halimbawa, kung kukuha ka ng larawan ng isang rectangular na dokumento gamit ang smartphone camera mula sa isang anggulo, at gusto mong gawing rectangular ang imahe ng dokumento mismo.
  • Pag-unawa sa galaw sa loob ng imahe gamit ang optical flow.

Mga Halimbawa ng Paggamit ng Computer Vision

Sa aming OpenCV Notebook, nagbibigay kami ng ilang mga halimbawa kung kailan maaaring gamitin ang computer vision upang magsagawa ng mga partikular na gawain:

  • Pre-processing ng larawan ng isang Braille book. Nakatuon kami sa kung paano namin magagamit ang thresholding, feature detection, perspective transformation, at NumPy manipulations upang paghiwalayin ang mga indibidwal na Braille symbols para sa karagdagang classification ng isang neural network.
Braille Image Braille Image Pre-processed Braille Symbols

Imahe mula sa OpenCV.ipynb

  • Pagtuklas ng galaw sa video gamit ang frame difference. Kung ang camera ay nakapirmi, ang mga frame mula sa camera feed ay dapat na halos magkapareho sa isa't isa. Dahil ang mga frame ay kinakatawan bilang arrays, sa pamamagitan lamang ng pagbabawas ng mga arrays para sa dalawang magkasunod na frame ay makakakuha tayo ng pixel difference, na dapat mababa para sa static frames, at magiging mas mataas kapag may makabuluhang galaw sa imahe.

Image of video frames and frame differences

Imahe mula sa OpenCV.ipynb

  • Pagtuklas ng galaw gamit ang Optical Flow. Optical flow ay nagbibigay-daan sa atin upang maunawaan kung paano gumagalaw ang mga indibidwal na pixels sa video frames. Mayroong dalawang uri ng optical flow:

    • Dense Optical Flow ay nagko-compute ng vector field na nagpapakita kung saan gumagalaw ang bawat pixel
    • Sparse Optical Flow ay batay sa pagkuha ng ilang natatanging features sa imahe (hal. edges), at pagbuo ng kanilang trajectory mula frame to frame.

Image of Optical Flow

Imahe mula sa OpenCV.ipynb

✍️ Mga Halimbawa ng Notebook: OpenCV subukan ang OpenCV in Action

Gawin natin ang ilang eksperimento gamit ang OpenCV sa pamamagitan ng pag-explore sa OpenCV Notebook

Konklusyon

Minsan, ang mga medyo komplikadong gawain tulad ng pagtuklas ng galaw o pagtuklas ng dulo ng daliri ay maaaring malutas gamit lamang ang computer vision. Kaya, napakahalaga na malaman ang mga pangunahing teknika ng computer vision, at kung ano ang magagawa ng mga library tulad ng OpenCV.

🚀 Hamon

Panoorin ang video na ito mula sa AI show upang matutunan ang tungkol sa proyekto ng Cortic Tigers at kung paano nila binuo ang isang block-based solution upang gawing mas accessible ang mga gawain sa computer vision gamit ang isang robot. Mag-research tungkol sa iba pang mga proyekto na tulad nito na tumutulong sa mga bagong mag-aaral na makapasok sa larangan.

Post-lecture quiz

Review & Self Study

Magbasa pa tungkol sa optical flow sa mahusay na tutorial na ito.

Assignment

Sa lab na ito, kukuha ka ng video na may simpleng mga galaw, at ang layunin mo ay i-extract ang mga galaw na pataas/pababa/kaliwa/kanan gamit ang optical flow.

Palm Movement Frame

Paunawa:
Ang dokumentong ito ay isinalin gamit ang AI translation service na Co-op Translator. Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.