Proyek Visi Komputer

Repositori GitHub Proyek

Tentang

Repositori ini menampilkan semua proyek pemrograman (lab) yang dikerjakan oleh Mehmet dan Jean saat terdaftar di CSCI437 selama semester Gugur 2020 di Colorado School of Mines, mencakup periode dari 28 Agustus 2020 hingga 14 Desember 2020. Lab-lab ini memberikan platform komprehensif untuk mempelajari Python, OpenCV, dan konsep dasar visi komputer.

Tentang Kelas

Saya mengambil Pengantar Visi Komputer (CSCI437) selama semester Gugur 2020. Selama waktu ini, Dr. William Hoff dan Dr. Tom Williams mengajar kelas tersebut. CSCI437. Berikut deskripsi resmi kelas untuk CSCI437:

(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).

Kredit

Ada skrip Python dan/atau segmen kode yang disediakan oleh kelas CSCI437 selama kuliah, pada slide, atau melalui Canvas. Kelas CSCI437 diselenggarakan di Colorado School of Mines. Lab-lab ini dikerjakan bersama mitra berikut:

  • Jean Duong
  • Mehmet Yilmaz

Deskripsi Lab

Lab 1

Lab 1 berfokus pada dasar-dasar penggunaan OpenCV dengan Python. Peserta diharapkan menulis program Python yang membaca file video, memproyeksikan empat titik yang membentuk sebuah persegi pada setiap frame video, dan mensimulasikan persegi yang mundur ke kejauhan dengan menyesuaikan koordinat Z setiap titik secara bertahap. Selain itu, nomor frame harus ditampilkan pada setiap frame, dan video akhir dengan overlay grafis harus diunggah untuk penilaian.

Lab 2

Lab 2 membahas transformasi gambar, secara khusus berfokus pada rotasi di sekitar sumbu X, Y, dan Z menggunakan konvensi “sudut tetap XYZ”. Mahasiswa ditugaskan untuk menghitung matriks rotasi, menghitung matriks transformasi homogen untuk pose kamera, membuat matriks kalibrasi, dan memproyeksikan titik-titik ke sebuah citra untuk membentuk objek yang dikenal menggunakan fungsi line OpenCV. Lab ini menekankan pemahaman geometri kamera dan matriks transformasi dalam visi komputer.

Lab 3

Lab 3 mengenai pencocokan template, di mana mahasiswa ditugaskan untuk melacak sub-gambar template melalui setiap frame file film menggunakan korelasi silang ternormalisasi. Tugas melibatkan memungkinkan pengguna memilih template dari gambar pertama film, melacak template ini di gambar-gambar berikutnya, menggambar persegi panjang untuk menunjukkan lokasi template pada setiap gambar, dan membuat file film keluaran untuk menunjukkan lokasi-lokasi tersebut. Mahasiswa dianjurkan bereksperimen dengan berbagai template untuk memahami template mana yang memungkinkan pelacakan terbaik dan mengapa, serta mendiskusikan skor korelasi yang diamati ketika kecocokan teridentifikasi dengan benar.

Lab 4

Lab 4 berfokus pada segmentasi warna menggunakan ruang warna HSV, teknik yang dibahas dalam kuliah karena efektivitasnya dalam menangani gambar berwarna. Mahasiswa ditugaskan menerapkan operasi ambang untuk mensegmen piksel rambu berhenti dari gambar yang disediakan, menggunakan program Python/OpenCV. Tugas ini mengharuskan menemukan nilai ambang yang paling baik mendeteksi piksel rambu berhenti, melakukan operasi morfologi untuk membersihkan hasil, dan mengumpulkan gambar yang sudah disegmentasi beserta program Python dan parameter ambang serta operasi morfologi yang digunakan.

Lab 5

Lab 5 melibatkan tugas memasukkan tekstur gambar baru ke area tertentu dari sebuah gambar yang ada sehingga proyeksinya terlihat benar. Proses ini, yang dikenal sebagai penggantian bidang (plane replacement), mengharuskan mahasiswa menggunakan teknik transformasi proyekti (homografi) untuk memetakan gambar baru ke area planar dari gambar yang ada. Lab ini menekankan penerapan praktis homografi untuk memodifikasi konten gambar sambil mempertahankan kebenaran perspektif. Mahasiswa diharapkan mengumpulkan gambar asli, gambar dengan tekstur pengganti, gambar gabungan, dan program Python mereka sebagai bagian dari pengumpulan lab.

Lab 6

Lab 6 menginstruksikan mahasiswa untuk mendeteksi dan menghitung pose target yang terdiri dari lima lingkaran konsentris kontras (CCCs) dalam sebuah gambar. Tugas melibatkan menggunakan OpenCV untuk mendeteksi target CCC, mengurutkannya dengan benar, menghitung pose dengan fungsi solvePnP() OpenCV, dan menggambar sumbu koordinat serta pose pada gambar. Lab ini menekankan penerapan konsep seperti deteksi target, estimasi pose, dan format output visual dalam visi komputer.

Lab 7

Lab 7 berpusat pada deteksi dan pencocokan fitur SIFT antar gambar. Tujuannya adalah mengidentifikasi kecocokan yang benar dari fitur SIFT dari satu gambar ke gambar lain dan menganalisis akurasi kecocokan ini. Lab ini melibatkan penggunaan kode Python dan gambar dari dataset yang diberikan, menyesuaikan parameter algoritma untuk mengoptimalkan deteksi kecocokan, dan menghitung metrik presisi serta recall untuk mengevaluasi performa proses pencocokan fitur. Mahasiswa diminta mengumpulkan program Python mereka dan nilai presisi serta recall yang dihitung untuk berbagai pengaturan parameter.

Lab 8

Lab 8 berfokus pada deteksi objek menggunakan pencocokan fitur dan pemodelan transformasi afine untuk mendeteksi dan menimpa objek dari gambar pelatihan ke gambar kueri. Lab ini melibatkan mendeteksi objek dalam berbagai skenario, menyesuaikan ambang jumlah kecocokan inlier untuk mengurangi positif palsu, dan menghitung metrik presisi, recall, dan akurasi untuk mengevaluasi performa sistem deteksi objek. Mahasiswa diharapkan memodifikasi dan menjalankan kode Python yang disediakan, menganalisis performa sistem dalam kondisi berbeda, dan mengumpulkan temuan serta kode yang dimodifikasi.

Lab 9

Lab 9 melibatkan menempatkan titik anotasi pada objek dalam gambar pelatihan dan secara otomatis menunjukkan titik-titik tersebut dengan benar pada objek dalam gambar kueri berikutnya. Lab ini menekankan ekstraksi fitur, pencocokan menggunakan tes rasio untuk menghilangkan kecocokan ambigu, memasang transformasi afine 2D menggunakan RANSAC untuk mengeliminasi outlier, dan menerapkan transformasi untuk memetakan titik anotasi dari gambar pelatihan ke gambar kueri. Tugas penting adalah mengatur ambang jumlah kecocokan inlier untuk menyeimbangkan antara positif palsu dan negatif palsu, dengan tujuan mencapai akurasi tertinggi dalam mengklasifikasikan gambar dengan benar.

Lab 10

Lab 10 didedikasikan untuk menggunakan transformasi Hough untuk menemukan segmen garis dan mengidentifikasi kumpulan garis paralel dalam sebuah gambar. Ini memanfaatkan Transform Hough probabilistik melalui fungsi cv2.HoughLinesP() OpenCV untuk mendeteksi segmen garis yang direpresentasikan oleh titik ujungnya. Lab ini juga melibatkan identifikasi titik lenyap dengan menganalisis vektor arah dari segmen garis ini, dengan tujuan memahami orientasi garis paralel dalam ruang 3D saat muncul di bidang citra 2D. Mahasiswa ditugaskan memproses gambar uji untuk menemukan segmen garis paralel, bereksperimen dengan parameter untuk mengoptimalkan deteksi, dan mengumpulkan hasil mereka beserta program Python.

Catatan

  • Anda akan membutuhkan paket pihak ketiga Python berikut untuk menjalankan skrip/lab ini: cv2 & numpy.
  • Beberapa lab ini mungkin mengharuskan Anda menggunakan versi cv2 tertentu. Sayangnya, persyaratan tidak didokumentasikan, jadi Anda harus mencari tahu sendiri. Jika Anda berhasil menemukannya atau Anda terjebak, silakan laporkan ke formulir isu.