Gambar dan pemrosesan gambar

Selesai

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):

Diagram of a grayscale image.

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:

Diagram of a color image.

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:

Diagram of a filter.

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
Diagram of a banana. Diagram of a filtered banana.

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.