Proyek Visi Komputer
Tentang
Repo ini menampilkan semua proyek pengkodean (lab) yang dikerjakan oleh Mehmet dan Jean saat terdaftar di CSCI437 selama semester Musim Gugur 2020 di Colorado School of Mines, meliputi periode dari 28 Agustus 2020 hingga 14 Desember 2020. Lab-lab ini menyediakan platform yang komprehensif untuk mempelajari Python, OpenCV, dan konsep dasar visi komputer.
Tentang Kelas
Saya mengikuti Pengantar Visi Komputer (CSCI437) selama semester Musim Gugur 2020. Selama waktu ini, Dr. William Hoff dan Dr. Tom Williams mengajar kelas tersebut. Berikut adalah 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, di 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 ke setiap frame video, dan mensimulasikan persegi mundur ke kejauhan dengan secara bertahap menyesuaikan koordinat Z setiap titik. Selain itu, nomor frame harus ditampilkan pada setiap frame, dan video akhir dengan overlay grafis harus diunggah untuk dinilai.
Lab 2
Lab 2 membahas transformasi citra, khususnya 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 ke sebuah gambar untuk membentuk objek yang familier menggunakan fungsi line OpenCV. Lab ini menekankan pemahaman geometri kamera dan matriks transformasi dalam visi komputer.
Lab 3
Lab 3 membahas pencocokan template, di mana mahasiswa ditugaskan untuk melacak sebuah sub-citra template melalui setiap frame dari file film menggunakan korelasi silang ternormalisasi. Tugas melibatkan memungkinkan pengguna memilih template dari citra pertama film, melacak template ini di seluruh citra berikutnya, menggambar persegi panjang untuk menunjukkan lokasi template pada setiap citra, dan membuat file film output untuk menunjukkan lokasi-lokasi tersebut. Mahasiswa didorong untuk bereksperimen dengan berbagai template untuk memahami mana yang memungkinkan pelacakan terbaik dan mengapa, serta untuk mendiskusikan skor korelasi yang diamati ketika kecocokan teridentifikasi dengan benar.
Lab 4
Lab 4 berfokus pada segmentasi warna menggunakan ruang warna HSV, sebuah teknik yang dibahas dalam kuliah karena efektivitasnya dalam menangani citra berwarna. Mahasiswa ditugaskan untuk menerapkan operasi ambang (threshold) untuk mensegmentasi piksel rambu stop dari citra yang disediakan, menggunakan program Python/OpenCV. Tugas ini mengharuskan menemukan nilai ambang yang paling baik mendeteksi piksel rambu stop, melakukan operasi morfologi untuk membersihkan hasil, dan mengumpulkan citra yang telah disegmentasi bersama dengan program Python dan parameter ambang serta operasi morfologi yang digunakan.
Lab 5
Lab 5 melibatkan tugas memasukkan tekstur gambar baru ke area tertentu pada gambar yang ada sedemikian rupa sehingga proyeksi terlihat benar. Proses ini, yang dikenal sebagai penggantian bidang (plane replacement), mengharuskan mahasiswa menggunakan transformasi proyektif (homografi) untuk memetakan gambar baru ke area planar dari gambar yang ada. Lab ini menekankan aplikasi praktis homografi untuk memodifikasi konten gambar sambil menjaga 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 yang kontras (CCC) dalam sebuah citra. Tugas melibatkan penggunaan OpenCV untuk mendeteksi target CCC, mengurutkannya dengan benar, menghitung pose dengan fungsi solvePnP() OpenCV, dan menggambar sumbu koordinat serta pose pada citra. Lab ini menekankan penerapan konsep seperti deteksi target, estimasi pose, dan format keluaran visual dalam visi komputer.
Lab 7
Lab 7 berpusat pada deteksi dan pencocokan fitur SIFT antar citra. Tujuannya adalah mengidentifikasi kecocokan fitur SIFT yang benar dari satu citra ke citra lain dan menganalisis akurasi kecocokan ini. Lab ini melibatkan penggunaan kode Python dan citra dari dataset yang diberikan, menyesuaikan parameter algoritma untuk mengoptimalkan deteksi kecocokan, dan menghitung metrik presisi dan recall untuk mengevaluasi kinerja proses pencocokan fitur. Mahasiswa diharuskan 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 pemasangan transformasi afine untuk mendeteksi dan menimpa objek dari citra pelatihan ke citra 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 kinerja sistem deteksi objek. Mahasiswa diharapkan memodifikasi dan menjalankan kode Python yang disediakan, menganalisis kinerja sistem di bawah kondisi yang berbeda, dan mengumpulkan temuan serta kode yang dimodifikasi.
Lab 9
Lab 9 melibatkan menempatkan titik anotasi pada sebuah objek dalam citra pelatihan dan secara otomatis menampilkan titik-titik tersebut dengan benar pada objek dalam citra kueri berikutnya. Lab ini menekankan ekstraksi fitur, pencocokan menggunakan uji rasio untuk menghilangkan kecocokan yang ambigu, pemasangan transformasi afine 2D menggunakan RANSAC untuk mengeliminasi outlier, dan menerapkan transformasi untuk memetakan titik anotasi dari citra pelatihan ke citra kueri. Tugas penting adalah menyesuaikan ambang jumlah kecocokan inlier untuk menyeimbangkan antara positif palsu dan negatif palsu, dengan tujuan mencapai akurasi tertinggi dalam mengklasifikasikan citra dengan benar.
Lab 10
Lab 10 didedikasikan untuk menggunakan transformasi Hough untuk menemukan segmen garis dan mengidentifikasi set garis paralel dalam sebuah citra. Ini memanfaatkan Transformasi Hough probabilistik melalui fungsi cv2.HoughLinesP() OpenCV untuk mendeteksi segmen garis yang direpresentasikan oleh titik akhir mereka. Lab ini juga melibatkan identifikasi titik hilang (vanishing points) dengan menganalisis vektor arah dari segmen-segmen garis ini, dengan tujuan memahami orientasi garis paralel di ruang 3D sebagaimana muncul pada bidang citra 2D. Mahasiswa ditugaskan memproses citra uji untuk menemukan segmen garis paralel, bereksperimen dengan parameter untuk mengoptimalkan deteksi, dan mengumpulkan hasil mereka bersama program Python.
Catatan
- Anda akan memerlukan paket python pihak ketiga 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 mengetahuinya sendiri. Jika Anda menemukannya atau Anda terjebak, silakan laporkan ke formulir masalah.