SUBBAB 2: Konvolusi

Tujuan Pembelajaran

Setelah selesai mempelajari materi, mahasiswa diharapkan mampu memahami dan mengimplementasikan teknik padding dalam konvolusi.

Teknik Padding

Pada hasil matriks sebelumnya, dapat dilihat bahwa area pinggir citra tidak memiliki nilai hasil konvolusi. Agar operasi konvolusi tetap bisa diterapkan di area pinggir atau tepi citra, kita dapat menggunakan teknik padding. Padding adalah teknik menambahkan baris atau kolom piksel di sekeliling citra dengan tujuan memperluas citra tanpa mengubah informasi piksel asli.

Dengan padding, hasil deteksi tepi yang diperoleh akan mencakup keseluruhan citra, termasuk piksel-piksel di tepi. Misalnya, kita memiliki citra grayscale berukuran 4×4 seperti di bawah ini.

\[ \begin{bmatrix} 190 & 175 & 112 & 122 \\ 192 & 177 & 114 & 124 \\ 194 & 180 & 116 & 126 \\ 195 & 180 & 117 & 127 \end{bmatrix} \]

Kita dapat menggunakan teknik padding untuk mengkonvolusikan semua piksel pada citra tersebut. Ada beberapa jenis padding yang umum digunakan, diantaranya sebagai berikut.

  1. Zero Padding
  2. Zero padding menambahkan nilai 0 di sekitar tepi citra. Tujuan utamanya adalah mempertahankan ukuran citra setelah operasi konvolusi. Teknik ini sering digunakan karena sederhana dan efisien.

    \[ \begin{bmatrix} \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} \\ \textcolor{red}{0} & 190 & 175 & 112 & 122 & \textcolor{red}{0} \\ \textcolor{red}{0} & 192 & 177 & 114 & 124 & \textcolor{red}{0} \\ \textcolor{red}{0} & 194 & 180 & 116 & 126 & \textcolor{red}{0} \\ \textcolor{red}{0} & 195 & 180 & 117 & 127 & \textcolor{red}{0} \\ \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} & \textcolor{red}{0} \end{bmatrix} \]

  3. Constant Padding
  4. Constant padding serupa dengan zero padding, tetapi nilai yang ditambahkan di tepi bisa ditentukan. Pada contoh ini, digunakan nilai konstan 1.

    \[ \begin{bmatrix} \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} \\ \textcolor{red}{1} & 190 & 175 & 112 & 122 & \textcolor{red}{1} \\ \textcolor{red}{1} & 192 & 177 & 114 & 124 & \textcolor{red}{1} \\ \textcolor{red}{1} & 194 & 180 & 116 & 126 & \textcolor{red}{1} \\ \textcolor{red}{1} & 195 & 180 & 117 & 127 & \textcolor{red}{1} \\ \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} & \textcolor{red}{1} \end{bmatrix} \]

  5. Reflect Padding
  6. Reflect padding mencerminkan nilai piksel dari tepi ke arah luar, memberikan efek simetri seperti pantulan cermin. Nilai di luar citra berasal dari nilai di dalam citra dengan urutan terbalik.

    \[ \begin{bmatrix} \textcolor{red}{177} & \textcolor{red}{192} & \textcolor{red}{177} & \textcolor{red}{114} & \textcolor{red}{124} & \textcolor{red}{114} \\ \textcolor{red}{175} & 190 & 175 & 112 & 122 & \textcolor{red}{112} \\ \textcolor{red}{177} & 192 & 177 & 114 & 124 & \textcolor{red}{114} \\ \textcolor{red}{180} & 194 & 180 & 116 & 126 & \textcolor{red}{126} \\ \textcolor{red}{180} & 195 & 180 & 117 & 127 & \textcolor{red}{117} \\ \textcolor{red}{180} & \textcolor{red}{194} & \textcolor{red}{180} & \textcolor{red}{116} & \textcolor{red}{126} & \textcolor{red}{116} \end{bmatrix} \]

  7. Edge/Replicate Padding
  8. Replicate padding mengulang nilai piksel di tepi ke luar, mempertahankan nilai batas tetap. Ini memberikan pengaruh dominan dari piksel tepi pada area yang dipad.

    \[ \begin{bmatrix} \textcolor{red}{190} & \textcolor{red}{190} & \textcolor{red}{175} & \textcolor{red}{112} & \textcolor{red}{122} & \textcolor{red}{122} \\ \textcolor{red}{190} & 190 & 175 & 112 & 122 & \textcolor{red}{122} \\ \textcolor{red}{192} & 192 & 177 & 114 & 124 & \textcolor{red}{124} \\ \textcolor{red}{194} & 194 & 180 & 116 & 126 & \textcolor{red}{126} \\ \textcolor{red}{195} & 195 & 180 & 117 & 127 & \textcolor{red}{127} \\ \textcolor{red}{195} & \textcolor{red}{195} & \textcolor{red}{180} & \textcolor{red}{117} & \textcolor{red}{127} & \textcolor{red}{127} \end{bmatrix} \]

  9. Wrap Padding
  10. Wrap padding mengambil nilai dari sisi berlawanan citra untuk mengisi tepi. Artinya, piksel dari sisi kanan akan muncul di sisi kiri dan sebaliknya. Ini memberikan efek seperti citra yang melingkar.

    \[ \begin{bmatrix} \textcolor{red}{127} & \textcolor{red}{195} & \textcolor{red}{180} & \textcolor{red}{117} & \textcolor{red}{127} & \textcolor{red}{195} \\ \textcolor{red}{122} & 190 & 175 & 112 & 122 & \textcolor{red}{190} \\ \textcolor{red}{124} & 192 & 177 & 114 & 124 & \textcolor{red}{192} \\ \textcolor{red}{126} & 194 & 180 & 116 & 126 & \textcolor{red}{194} \\ \textcolor{red}{127} & 195 & 180 & 117 & 127 & \textcolor{red}{195} \\ \textcolor{red}{122} & \textcolor{red}{190} & \textcolor{red}{175} & \textcolor{red}{112} & \textcolor{red}{122} & \textcolor{red}{190} \end{bmatrix} \]

Setiap jenis padding memberikan hasil konvolusi yang berbeda, tergantung pada bagaimana nilai tepi diolah.

Rumus Teknik Padding

Menentukan Jumlah Padding

Secara matematis, jumlah padding yang diperlukan pada setiap sisi matriks input dihitung menggunakan rumus berikut:

\[ P = \left\lfloor \frac{K - 1}{2} \right\rfloor \]

Di mana:

  • P adalah jumlah baris atau kolom padding di tiap sisi (atas, bawah, kiri, kanan)
  • K adalah ukuran kernel (misalnya, 3 untuk kernel 3x3)

Contohnya, jika kita menggunakan kernel berukuran 3x3, maka:

\[ P = \left\lfloor \frac{3 - 1}{2} \right\rfloor = \left\lfloor 1 \right\rfloor = 1 \]

Artinya, kita perlu menambahkan 1 baris padding di atas dan bawah, serta 1 kolom di kiri dan kanan.

Dengan padding ini, kernel bisa tetap bergerak ke seluruh posisi, termasuk bagian tepi matriks, tanpa "keluar" dari area input.



Menghitung Ukuran Matriks Output

Selain itu, untuk menghitung ukuran output setelah konvolusi, kita dapat menggunakan rumus berikut:

$$Output = \left( \frac{(Input - Kernel + 2 \times Padding)}{Stride} \right) + 1$$

Keterangan:

  • Input: ukuran lebar atau tinggi gambar input
  • Kernel: ukuran lebar atau tinggi dari filter (biasanya persegi, misal 3x3)
  • Padding: jumlah piksel yang ditambahkan di tepi gambar (untuk menjaga ukuran)
  • Stride: jumlah langkah pergeseran kernel setiap kali bergerak
Hasil dari rumus ini harus dibulatkan ke bawah jika tidak menghasilkan bilangan bulat.

Contoh

Agar lebih paham, ayo perhatikan ilustrasi proses konvolusi dengan teknik padding di bawah ini. Gambar 2.4 menunjukkan citra ukuran 4x4 beserta nilai pikselnya.

Komponen Warna RGB Komponen Warna RGB

Gambar 2.4 Citra 4x4 untuk melakukan konvolusi teknik padding

Gunakan fitur di bawah ini untuk melihat cara kerjanya. Berikut adalah petunjuk penggunaannya:

  • Pilih kernel dari dropdown, atau isi manual jika memilih Custom.
  • Atur jenis padding di bagian kiri bawah, padding yang dipilih berada di sekeliling input matriks.
  • Lihat Input Matriks, blok oranye menunjukkan area 3x3 yang sedang diproses.
  • Klik Mulai Konvolusi. Setelah itu, tombol berubah menjadi Lanjut untuk melanjutkan proses konvolusi.
  • Lihat Hasil Konvolusi, hasil dari proses konvolusi ditampilkan di sisi kanan. Nilai hasil konvolusi akan muncul satu per satu di posisi yang sesuai. Nilai yang baru dihitung ditandai dengan warna merah.
  • Di bagian bawah, perhitungan konvolusi ditampilkan secara rinci. Kamu bisa melihat cara nilai hasil dikalkulasi dari matriks dan kernel.
  • Klik tombol Ulangi untuk memulai ulang proses dengan kondisi awal.

Input Matriks

Kernel Konvolusi

Hasil Konvolusi

Perhitungan:

Perhitungan akan muncul di sini



Penjelasan:

Dengan menggunakan teknik padding, nilai piksel pada bagian tepi citra tetap dapat dikonvolusikan, sehingga setiap piksel, termasuk yang berada di pinggir matriks, memiliki kontribusi terhadap hasil akhir konvolusi. Teknik ini penting untuk menjaga dimensi output tetap sama dengan input atau untuk memastikan seluruh area citra ikut diproses oleh kernel.

Aktivitas 5

Kerjakan aktivitas berikut untuk menguji pemahaman dan menambah nilai progresmu!
Soal 1 dari 5

Perhatikan matriks citra berukuran 4×4 dan kernel 3×3 pada Gambar 2.5.

Komponen Warna RGB Komponen Warna RGB

Gambar 2.5 Matriks citra 4x4


Matriks Citra

Kernel

Hasil Konvolusi