|
|
||
|---|---|---|
| .. | ||
| lab | ||
| README.md | ||
README.md
Pengenalan kepada Visi Komputer
Visi Komputer adalah disiplin yang bertujuan untuk membolehkan komputer memperoleh pemahaman yang mendalam tentang imej digital. Ini adalah definisi yang agak luas, kerana pemahaman boleh bermaksud banyak perkara yang berbeza, termasuk mencari objek dalam gambar (pengesanan objek), memahami apa yang berlaku (pengesanan peristiwa), menggambarkan gambar dalam teks, atau membina semula satu adegan dalam 3D. Terdapat juga tugas khusus yang berkaitan dengan imej manusia: penilaian umur dan emosi, pengesanan dan pengenalan wajah, serta penilaian pose 3D, untuk menyebut beberapa.
Kuiz pra-ceramah
Salah satu tugas paling mudah dalam visi komputer adalah klasifikasi imej.
Visi komputer sering dianggap sebagai cabang AI. Pada masa kini, kebanyakan tugas visi komputer diselesaikan menggunakan rangkaian neural. Kita akan belajar lebih lanjut tentang jenis khusus rangkaian neural yang digunakan untuk visi komputer, rangkaian neural konvolusional, sepanjang bahagian ini.
Namun, sebelum anda menghantar imej ke rangkaian neural, dalam banyak kes adalah masuk akal untuk menggunakan beberapa teknik algoritma untuk meningkatkan imej.
Terdapat beberapa pustaka Python yang tersedia untuk pemprosesan imej:
- imageio boleh digunakan untuk membaca/menulis pelbagai format imej. Ia juga menyokong ffmpeg, alat berguna untuk menukar bingkai video kepada imej.
- Pillow (juga dikenali sebagai PIL) adalah sedikit lebih berkuasa, dan juga menyokong beberapa manipulasi imej seperti morfing, penyesuaian palet, dan banyak lagi.
- OpenCV adalah pustaka pemprosesan imej yang kuat ditulis dalam C++, yang telah menjadi standard de facto untuk pemprosesan imej. Ia mempunyai antara muka Python yang mudah digunakan.
- dlib adalah pustaka C++ yang melaksanakan banyak algoritma pembelajaran mesin, termasuk beberapa algoritma Visi Komputer. Ia juga mempunyai antara muka Python, dan boleh digunakan untuk tugas yang mencabar seperti pengesanan wajah dan tanda landmark wajah.
OpenCV
OpenCV dianggap sebagai standard de facto untuk pemprosesan imej. Ia mengandungi banyak algoritma berguna, dilaksanakan dalam C++. Anda juga boleh memanggil OpenCV dari Python.
Tempat yang baik untuk belajar OpenCV adalah kursus Learn OpenCV ini. Dalam kurikulum kami, matlamat kami bukan untuk belajar OpenCV, tetapi untuk menunjukkan kepada anda beberapa contoh di mana ia boleh digunakan, dan bagaimana.
Memuatkan Imej
Imej dalam Python boleh diwakili dengan mudah oleh array NumPy. Sebagai contoh, imej grayscale dengan saiz 320x200 piksel akan disimpan dalam array 200x320, dan imej berwarna dengan dimensi yang sama akan mempunyai bentuk 200x320x3 (untuk 3 saluran warna). Untuk memuatkan imej, anda boleh menggunakan kod berikut:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
Secara tradisional, OpenCV menggunakan pengkodan BGR (Biru-Hijau-Merah) untuk imej berwarna, sementara alat Python yang lain menggunakan RGB (Merah-Hijau-Biru) yang lebih tradisional. Agar imej kelihatan betul, anda perlu menukarnya ke ruang warna RGB, sama ada dengan menukar dimensi dalam array NumPy, atau dengan memanggil fungsi OpenCV:
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
Fungsi cvtColor function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space.
You can also use OpenCV to load video frame-by-frame - an example is given in the exercise OpenCV Notebook.
Image Processing
Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including:
- Resizing the image using
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS) - Blurring the image using
im = cv2.medianBlur(im,3)orim = cv2.GaussianBlur(im, (3,3), 0) - Changing the brightness and contrast of the image can be done by NumPy array manipulations, as described in this Stackoverflow note.
- Using thresholding by calling
cv2.threshold/cv2.adaptiveThresholdyang sama, yang sering lebih baik daripada menyesuaikan kecerahan atau kontras. - Menerapkan pelbagai transformasi pada imej:
- Transformasi Afine boleh berguna jika anda perlu menggabungkan putaran, pengubahsuaian saiz dan penggayaan pada imej dan anda tahu lokasi sumber dan destinasi bagi tiga titik dalam imej. Transformasi afine mengekalkan garis selari.
- Transformasi Perspektif boleh berguna apabila anda tahu posisi sumber dan destinasi bagi 4 titik dalam imej. Sebagai contoh, jika anda mengambil gambar dokumen segi empat tepat melalui kamera telefon pintar dari sudut tertentu, dan anda ingin menghasilkan imej segi empat tepat dokumen itu sendiri.
- Memahami pergerakan dalam imej dengan menggunakan aliran optik.
Contoh penggunaan Visi Komputer
Dalam Notebook OpenCV kami, kami memberikan beberapa contoh di mana visi komputer boleh digunakan untuk melaksanakan tugas tertentu:
- Pra-pemprosesan gambar buku Braille. Kami memberi tumpuan kepada bagaimana kami boleh menggunakan penetapan ambang, pengesanan ciri, transformasi perspektif dan manipulasi NumPy untuk memisahkan simbol Braille individu untuk pengelasan selanjutnya oleh rangkaian neural.
![]() |
![]() |
![]() |
|---|
Imej dari OpenCV.ipynb
- Mengesan pergerakan dalam video menggunakan perbezaan bingkai. Jika kamera tetap, maka bingkai dari suapan kamera seharusnya sangat serupa antara satu sama lain. Memandangkan bingkai diwakili sebagai array, dengan hanya menolak array tersebut untuk dua bingkai berturut-turut, kita akan mendapatkan perbezaan piksel, yang seharusnya rendah untuk bingkai statik, dan menjadi lebih tinggi apabila terdapat pergerakan yang ketara dalam imej.
Imej dari OpenCV.ipynb
-
Mengesan pergerakan menggunakan Aliran Optik. Aliran optik membolehkan kita memahami bagaimana piksel individu pada bingkai video bergerak. Terdapat dua jenis aliran optik:
- Aliran Optik Padat mengira medan vektor yang menunjukkan untuk setiap piksel di mana ia bergerak
- Aliran Optik Jarang berdasarkan pengambilan beberapa ciri khas dalam imej (contohnya, tepi), dan membina trajektori mereka dari bingkai ke bingkai.
Imej dari OpenCV.ipynb
✍️ Notebook Contoh: OpenCV cuba OpenCV dalam Tindakan
Mari kita lakukan beberapa eksperimen dengan OpenCV dengan meneroka Notebook OpenCV
Kesimpulan
Kadang-kadang, tugas yang agak kompleks seperti pengesanan pergerakan atau pengesanan hujung jari boleh diselesaikan hanya dengan visi komputer. Oleh itu, adalah sangat berguna untuk mengetahui teknik asas visi komputer, dan apa yang boleh dilakukan oleh pustaka seperti OpenCV.
🚀 Cabaran
Tonton video ini dari rancangan AI untuk belajar tentang projek Cortic Tigers dan bagaimana mereka membina penyelesaian berasaskan blok untuk mendemokrasikan tugas visi komputer melalui robot. Lakukan sedikit penyelidikan tentang projek lain seperti ini yang membantu memudahkan pembelajaran baru dalam bidang ini.
Kuiz pasca-ceramah
Ulasan & Pembelajaran Sendiri
Baca lebih lanjut mengenai aliran optik dalam tutorial hebat ini.
Tugasan
Dalam lab ini, anda akan merakam video dengan gerakan sederhana, dan matlamat anda adalah untuk mengekstrak pergerakan atas/bawah/kiri/kanan menggunakan aliran optik.
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk memastikan ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.




