Gambar dan pemrosesan gambar
Sebelum kita dapat menjelajahi pemrosesan gambar dan kemampuan visi komputer lainnya, berguna untuk mempertimbangkan apa gambar sebenarnya dalam konteks data untuk program komputer.
Gambar sebagai array piksel
Ke komputer, gambar adalah array nilai piksel numerik. Misalnya, pertimbangkan array berikut:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Array terdiri dari tujuh baris dan tujuh kolom, mewakili nilai piksel untuk gambar piksel 7x7 (yang dikenal sebagai resolusi gambar). Setiap piksel memiliki nilai antara 0 (hitam) dan 255 (putih); dengan nilai di antara batas-batas ini yang mewakili nuansa abu-abu. Gambar yang diwakili oleh array ini terlihat mirip dengan gambar berikut (diperbesar):
Array nilai piksel untuk gambar ini bersifat dua dimensi (mewakili baris dan kolom, atau koordinat x dan y ) dan menentukan satu persegi panjang nilai piksel. Lapisan tunggal nilai piksel seperti ini mewakili gambar skala abu-abu. Pada kenyataannya, sebagian besar gambar digital multidirmani dan terdiri dari tiga lapisan (dikenal sebagai saluran) yang mewakili warna warna merah, hijau, dan biru (RGB). Misalnya, kita dapat mewakili gambar warna dengan menentukan tiga saluran nilai piksel yang membuat bentuk persegi yang sama dengan contoh skala abu-abu sebelumnya:
Red:
150 150 150 150 150 150 150
150 150 150 150 150 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 150 150 150 150 150
150 150 150 150 150 150 150
Green:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Blue:
255 255 255 255 255 255 255
255 255 255 255 255 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 255 255 255 255 255
255 255 255 255 255 255 255
Berikut gambar yang dihasilkan:
Kotak ungu diwakili oleh kombinasi:
Red: 150
Green: 0
Blue: 255
Kotak kuning di tengah diwakili oleh kombinasi:
Red: 255
Green: 255
Blue: 0
Menggunakan filter untuk memproses gambar
Cara umum untuk melakukan tugas pemrosesan gambar adalah dengan menerapkan filter yang memodifikasi nilai piksel gambar untuk membuat efek visual. Filter didefinisikan oleh satu atau beberapa array nilai piksel, yang disebut kernel filter. Misalnya, Anda dapat menentukan filter dengan kernel 3x3 seperti yang ditunjukkan dalam contoh ini:
-1 -1 -1
-1 8 -1
-1 -1 -1
Kernel kemudian dikonvolasi di seluruh gambar, menghitung jumlah tertimbang untuk setiap patch piksel 3x3 dan menetapkan hasilnya ke gambar baru. Lebih mudah untuk memahami cara kerja pemfilteran dengan menjelajahi contoh langkah demi langkah.
Mari kita mulai dengan gambar skala abu-abu yang kita jelajahi sebelumnya:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Pertama, kami menerapkan kernel filter ke patch kiri atas gambar, mengalikan setiap nilai piksel dengan nilai bobot yang sesuai di kernel dan menambahkan hasilnya:
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255
Hasilnya (-255) menjadi nilai pertama dalam array baru. Kemudian kita memindahkan kernel filter di sepanjang satu piksel ke kanan dan mengulangi operasi:
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510
Sekali lagi, hasilnya ditambahkan ke array baru, yang sekarang berisi dua nilai:
-255 -510
Proses ini diulang hingga filter telah dikonvolasi di seluruh gambar, seperti yang ditunjukkan dalam animasi ini:
Filter dikonvolasi di seluruh gambar, menghitung array nilai baru. Beberapa nilai mungkin berada di luar rentang nilai 0 hingga 255 piksel, sehingga nilai disesuaikan agar pas dengan rentang tersebut. Karena bentuk filter, tepi luar piksel tidak dihitung, sehingga nilai padding (biasanya 0) diterapkan. Array yang dihasilkan mewakili gambar baru di mana filter telah mengubah gambar asli. Dalam hal ini, filter telah memiliki efek menyoroti tepi bentuk dalam gambar.
Untuk melihat efek filter dengan lebih jelas, berikut adalah contoh filter yang sama yang diterapkan ke gambar nyata:
Gambar Asli | Gambar Terfilter |
---|---|
Karena filter dikonvolasi di seluruh gambar, manipulasi gambar semacam ini sering disebut sebagai pemfilteran konvolusional. Filter yang digunakan dalam contoh ini adalah jenis filter tertentu (disebut filter tempat ) yang menyoroti tepi pada objek dalam gambar. Ada banyak jenis filter lain yang dapat Anda gunakan untuk membuat pengaburan, penajaman, inversi warna, dan efek lainnya.