AI-For-Beginners/translations/id/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-29 16:53:37 +00:00

README.md

Pengantar ke Computer Vision

Computer Vision adalah sebuah disiplin ilmu yang bertujuan untuk memungkinkan komputer memahami gambar digital pada tingkat yang lebih tinggi. Definisi ini cukup luas, karena memahami dapat berarti banyak hal, termasuk menemukan objek dalam gambar (deteksi objek), memahami apa yang sedang terjadi (deteksi peristiwa), mendeskripsikan gambar dalam bentuk teks, atau merekonstruksi sebuah adegan dalam 3D. Ada juga tugas-tugas khusus yang berkaitan dengan gambar manusia: estimasi usia dan emosi, deteksi dan identifikasi wajah, serta estimasi pose 3D, untuk beberapa contoh.

Kuis sebelum kuliah

Salah satu tugas paling sederhana dalam computer vision adalah klasifikasi gambar.

Computer vision sering dianggap sebagai cabang dari AI. Saat ini, sebagian besar tugas computer vision diselesaikan menggunakan jaringan saraf. Kita akan mempelajari lebih lanjut tentang jenis jaringan saraf khusus yang digunakan untuk computer vision, convolutional neural networks, di bagian ini.

Namun, sebelum Anda mengirimkan gambar ke jaringan saraf, dalam banyak kasus masuk akal untuk menggunakan beberapa teknik algoritmik untuk meningkatkan kualitas gambar.

Ada beberapa pustaka Python yang tersedia untuk pemrosesan gambar:

  • imageio dapat digunakan untuk membaca/menulis berbagai format gambar. Pustaka ini juga mendukung ffmpeg, alat yang berguna untuk mengonversi frame video menjadi gambar.
  • Pillow (juga dikenal sebagai PIL) sedikit lebih kuat, dan juga mendukung beberapa manipulasi gambar seperti morphing, penyesuaian palet, dan lainnya.
  • OpenCV adalah pustaka pemrosesan gambar yang kuat yang ditulis dalam C++, dan telah menjadi standar de facto untuk pemrosesan gambar. Pustaka ini memiliki antarmuka Python yang nyaman.
  • dlib adalah pustaka C++ yang mengimplementasikan banyak algoritma pembelajaran mesin, termasuk beberapa algoritma Computer Vision. Pustaka ini juga memiliki antarmuka Python, dan dapat digunakan untuk tugas-tugas menantang seperti deteksi wajah dan landmark wajah.

OpenCV

OpenCV dianggap sebagai standar de facto untuk pemrosesan gambar. Pustaka ini berisi banyak algoritma yang berguna, yang diimplementasikan dalam C++. Anda juga dapat memanggil OpenCV dari Python.

Tempat yang baik untuk mempelajari OpenCV adalah kursus Learn OpenCV ini. Dalam kurikulum kita, tujuan kita bukan untuk mempelajari OpenCV, tetapi untuk menunjukkan beberapa contoh kapan dan bagaimana pustaka ini dapat digunakan.

Memuat Gambar

Gambar dalam Python dapat dengan mudah direpresentasikan oleh array NumPy. Sebagai contoh, gambar grayscale dengan ukuran 320x200 piksel akan disimpan dalam array 200x320, dan gambar berwarna dengan dimensi yang sama akan memiliki bentuk 200x320x3 (untuk 3 saluran warna). Untuk memuat gambar, Anda dapat menggunakan kode berikut:

import cv2
import matplotlib.pyplot as plt

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

Secara tradisional, OpenCV menggunakan pengkodean BGR (Blue-Green-Red) untuk gambar berwarna, sementara alat Python lainnya menggunakan RGB (Red-Green-Blue) yang lebih umum. Agar gambar terlihat benar, Anda perlu mengonversinya ke ruang warna RGB, baik dengan menukar dimensi dalam array NumPy, atau dengan memanggil fungsi OpenCV:

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

Fungsi cvtColor yang sama juga dapat digunakan untuk melakukan transformasi ruang warna lainnya seperti mengonversi gambar menjadi grayscale atau ke ruang warna HSV (Hue-Saturation-Value).

Anda juga dapat menggunakan OpenCV untuk memuat video frame demi frame - contoh diberikan dalam latihan OpenCV Notebook.

Pemrosesan Gambar

Sebelum mengirimkan gambar ke jaringan saraf, Anda mungkin ingin menerapkan beberapa langkah pra-pemrosesan. OpenCV dapat melakukan banyak hal, termasuk:

  • Mengubah ukuran gambar menggunakan im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Memburamkan gambar menggunakan im = cv2.medianBlur(im,3) atau im = cv2.GaussianBlur(im, (3,3), 0)
  • Mengubah kecerahan dan kontras gambar dapat dilakukan dengan manipulasi array NumPy, seperti yang dijelaskan dalam catatan Stackoverflow ini.
  • Menggunakan thresholding dengan memanggil fungsi cv2.threshold/cv2.adaptiveThreshold, yang sering lebih disukai dibandingkan menyesuaikan kecerahan atau kontras.
  • Menerapkan berbagai transformasi pada gambar:
    • Transformasi Afine dapat berguna jika Anda perlu menggabungkan rotasi, perubahan ukuran, dan kemiringan pada gambar, serta mengetahui lokasi sumber dan tujuan dari tiga titik dalam gambar. Transformasi afine menjaga garis paralel tetap paralel.
    • Transformasi Perspektif dapat berguna ketika Anda mengetahui posisi sumber dan tujuan dari 4 titik dalam gambar. Misalnya, jika Anda mengambil gambar dokumen persegi panjang menggunakan kamera ponsel dari sudut tertentu, dan Anda ingin membuat gambar persegi panjang dari dokumen itu sendiri.
  • Memahami pergerakan dalam gambar dengan menggunakan optical flow.

Contoh Penggunaan Computer Vision

Dalam OpenCV Notebook kami, kami memberikan beberapa contoh kapan computer vision dapat digunakan untuk melakukan tugas tertentu:

  • Pra-pemrosesan foto buku Braille. Kami berfokus pada bagaimana kami dapat menggunakan thresholding, deteksi fitur, transformasi perspektif, dan manipulasi NumPy untuk memisahkan simbol Braille individu untuk klasifikasi lebih lanjut oleh jaringan saraf.
Gambar Braille Gambar Braille Pra-pemrosesan Simbol Braille

Gambar dari OpenCV.ipynb

  • Mendeteksi gerakan dalam video menggunakan perbedaan frame. Jika kamera tetap, maka frame dari umpan kamera seharusnya cukup mirip satu sama lain. Karena frame direpresentasikan sebagai array, hanya dengan mengurangkan array untuk dua frame berturut-turut kita akan mendapatkan perbedaan piksel, yang seharusnya rendah untuk frame statis, dan menjadi lebih tinggi ketika ada gerakan substansial dalam gambar.

Gambar frame video dan perbedaan frame

Gambar dari OpenCV.ipynb

  • Mendeteksi gerakan menggunakan Optical Flow. Optical flow memungkinkan kita memahami bagaimana piksel individu pada frame video bergerak. Ada dua jenis optical flow:

    • Dense Optical Flow menghitung medan vektor yang menunjukkan untuk setiap piksel ke mana ia bergerak.
    • Sparse Optical Flow didasarkan pada mengambil beberapa fitur khas dalam gambar (misalnya, tepi), dan membangun lintasannya dari frame ke frame.

Gambar Optical Flow

Gambar dari OpenCV.ipynb

✍️ Contoh Notebook: OpenCV coba OpenCV dalam Aksi

Mari kita lakukan beberapa eksperimen dengan OpenCV dengan menjelajahi OpenCV Notebook

Kesimpulan

Terkadang, tugas yang relatif kompleks seperti deteksi gerakan atau deteksi ujung jari dapat diselesaikan murni dengan computer vision. Oleh karena itu, sangat membantu untuk mengetahui teknik dasar computer vision, dan apa yang dapat dilakukan pustaka seperti OpenCV.

🚀 Tantangan

Tonton video ini dari AI show untuk mempelajari tentang proyek Cortic Tigers dan bagaimana mereka membangun solusi berbasis blok untuk mendemokratisasi tugas computer vision melalui robot. Lakukan penelitian tentang proyek lain seperti ini yang membantu pemula masuk ke bidang ini.

Kuis setelah kuliah

Tinjauan & Studi Mandiri

Baca lebih lanjut tentang optical flow dalam tutorial hebat ini.

Tugas

Dalam lab ini, Anda akan mengambil video dengan gerakan sederhana, dan tujuan Anda adalah mengekstrak gerakan atas/bawah/kiri/kanan menggunakan optical flow.

Frame Gerakan Telapak Tangan

Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.