Penjelasan Pelacakan Warna#

Apa itu melacak warna dan bagaimana CMUcam4 melakukannya?#

Pelacakan warna adalah kemampuan untuk mengambil sebuah gambar, mengisolasi warna tertentu, dan mengekstrak informasi tentang lokasi region gambar tersebut yang hanya berisi warna itu. Sebagai contoh, anggaplah Anda diberi sebuah foto yang berisi bola merah yang terletak di jalan tanah. Jika seseorang meminta Anda menggambar kotak di sekitar apa pun yang berwarna merah dalam gambar, Anda akan dengan cukup mudah menggambar persegi panjang di sekitar bola. Ini adalah ide dasar di balik pelacakan warna. Anda tidak perlu tahu bahwa objek tersebut adalah bola. Anda hanya perlu memiliki konsep warna merah untuk mengisolasi objek dalam gambar. Di bawah, kami akan secara singkat membahas bagaimana CMUcam4 sebenarnya menggunakan informasi dalam gambar kamera untuk melakukan pelacakan warna.

Untuk menentukan warna, Anda perlu mendefinisikan nilai minimum dan maksimum yang diperbolehkan untuk tiga saluran warna. Setiap warna unik direpresentasikan oleh nilai merah, hijau, dan biru yang menunjukkan seberapa banyak setiap saluran dicampurkan ke dalam warna unik tersebut. Bagian yang rumit tentang menentukan warna adalah bahwa Anda perlu mendefinisikan rentang nilai yang diperbolehkan untuk ketiga saluran warna. Karena cahaya tidak sepenuhnya seragam dan warna objek tidak sepenuhnya seragam, Anda perlu mengakomodasi variasi ini. Namun, Anda tidak ingin mengendurkan batas-batas ini terlalu banyak, atau banyak warna yang tidak diinginkan akan diterima. Karena, dalam kasus CMUcam4, setiap saluran warna diubah menjadi angka antara 0 dan 255, Anda dapat membatasi setiap saluran dengan dua angka, batas atas dan bawah. Jika Anda memiliki dua batas untuk masing-masing dari tiga saluran, ini berarti enam nilai dapat digunakan untuk membatasi seluruh ruang warna yang ingin Anda lacak. Jika Anda membayangkan warna direpresentasikan oleh kubus di mana setiap sisi adalah saluran warna yang berbeda (merah, hijau, dan biru) maka enam nilai yang digunakan untuk memilih warna Anda akan menggambar kotak tiga dimensi di dalam kubus tersebut yang mendefinisikan kumpulan warna yang Anda inginkan.

Setelah Anda memiliki batas untuk warna yang ingin Anda lacak, CMUcam4 mengambil batas-batas ini dan memproses gambar. Ada banyak cara untuk melacak warna dalam sebuah gambar yang bisa cukup kompleks. CMUcam4 menggunakan algoritma satu lintasan sederhana yang memproses setiap frame gambar baru dari kamera secara independen. Ia dimulai dari kiri atas gambar dan secara berurutan memeriksa setiap piksel baris demi baris. Jika piksel yang diperiksanya berada dalam rentang warna yang ditentukan pengguna, ia menandai piksel tersebut sebagai dilacak. Ia juga memeriksa posisi piksel yang dilacak saat ini untuk melihat apakah itu posisi paling atas, paling bawah, paling kiri, atau paling kanan dari semua piksel yang dilacak yang ditemukan sejauh ini dalam gambar. Jika ia menemukan bahwa piksel tersebut berada di luar bounding box saat ini dari region yang dilacak, ia memperbesar bounding box untuk memuat piksel baru ini. Karena lokasi bahkan satu piksel yang dilacak dapat mengubah bounding box, bounding box terkadang dapat berfluktuasi cukup banyak dari frame ke frame. Penyaringan noise (lihat paragraf berikutnya) dapat digunakan untuk mengurangi sebagian fluktuasi tersebut. Satu-satunya informasi utama lain yang disimpan adalah jumlah koordinat horizontal dan vertikal dari piksel yang dilacak. Di akhir gambar, CMUcam4 mengambil jumlah horizontal dan jumlah vertikal dari piksel yang dilacak dan membagi masing-masing dengan jumlah total piksel yang dilacak dan mendapatkan nilai yang menunjukkan di mana bagian tengah objek yang dilacak berada. Karena setiap piksel yang dilacak hanya menyumbang sebagian kecil pada jumlah horizontal dan vertikal akhir, bagian tengah (sering disebut centroid) dari piksel yang dilacak biasanya merupakan pengukuran yang jauh lebih stabil daripada bounding box. Setelah semua piksel dalam gambar diperiksa, jumlah total piksel yang dilacak juga dapat digunakan bersama dengan luas bounding box untuk menghitung tingkat keyakinan dan jumlah piksel dalam objek yang dilacak.

Penyaringan noise memungkinkan kita membuat rentang pelacakan warna lebih besar sehingga kita dapat mengakomodasi variasi yang lebih besar dalam nilai piksel gambar tanpa menyebabkan variasi acak lain dalam gambar ikut dilacak. Ide di balik penyaringan noise adalah bahwa kita hanya ingin menganggap sebuah piksel sebagai warna yang dilacak jika ia bagian dari sekelompok piksel yang berada dalam batas pelacakan warna. Pada CMUcam4 kami mengimplementasikan ini dengan cara yang hanya memerlukan satu lintasan atas gambar. Saat memproses piksel dalam sebuah gambar, CMUcam4 memelihara penghitung yang melacak berapa banyak piksel berurutan dalam baris saat ini, sebelum piksel saat ini, yang berada dalam batas warna yang dilacak. Jika nilai tersebut di atas nilai filter noise maka piksel saat ini ditandai sebagai piksel yang dilacak.

Apa itu histogram dan untuk apa gunanya?#

Histogram adalah jenis bagan yang menampilkan frekuensi dan distribusi data. Dalam kasus CMUcam4, histogram menunjukkan frekuensi dan distribusi nilai warna yang ditemukan dalam sebuah gambar. Setiap batang mewakili rentang nilai warna untuk saluran tertentu. CMUcam4 dapat membagi kemungkinan nilai warna dari 0 hingga 255 menjadi 1, 2, 4, 8, 16, 32, dan 64 bin yang berbeda. Setiap bin berisi jumlah piksel yang ditemukan dalam gambar yang berada dalam batas warna tertentu. Jadi nilai besar pada satu bin tertentu berarti banyak dari warna tersebut ditemukan dalam gambar. Setiap histogram hanya mewakili satu saluran warna yang dipilih.

Histogram adalah cara untuk mengabstraksikan isi sebuah gambar. Mereka memiliki banyak kegunaan seperti pengenalan objek primitif, thresholding, atau color balancing. Mereka sangat berguna untuk membedakan antara tekstur yang berbeda. Coba arahkan CMUcam4 dengan auto-gain dimatikan ke dua permukaan bertekstur berbeda dan perhatikan perbedaan dalam distribusi warnanya. Efek ini dapat digunakan untuk membedakan permukaan lantai atau mendeteksi rintangan.