SUBBAB 3: Operator Turunan Pertama

Tujuan Pembelajaran

Setelah selesai mempelajari materi, mahasiswa diharapkan:

  • Mampu mengenal konsep dan bentuk kernel operator Sobel.
  • Mampu melakukan konvolusi citra dengan kernel Sobel menggunakan teknik padding.
  • Mampu melakukan tahapan lanjutan operator Sobel, yaitu perhitungan magnitudo gradien dan thresholding.
Konsep Operator Sobel

Operator Sobel adalah pengembangan dari operator Prewitt dengan memperkenalkan bobot tambahan pada elemen pusat kernel. Tujuan utama penambahan bobot ini adalah untuk meningkatkan sensitivitas terhadap perubahan intensitas pada pusat filter, sehingga menghasilkan deteksi tepi yang lebih halus dan lebih tahan terhadap noise. Berikut adalah contoh hasil pendeteksian tepi menggunakan operator Sobel.

Hasil Operator Prewitt

Gambar 3.8 Hasil pendeteksian tepi operator Sobel

๐Ÿ” Tujuan Sobel:

Sama seperti operator Prewitt, Sobel ingin mengukur seberapa tajam perubahan kecerahan di dua arah:

  • Arah horizontal (kiri ke kanan)
  • Arah vertikal (atas ke bawah)

Sobel memperkirakan perubahan (turunan pertama) menggunakan 9 titik dalam bentuk kotak 3ร—3. Jadi, dia melihat sekeliling suatu piksel dan menghitung perbedaan rata-ratanya.


Rumus Turunan Diskrit Operator Sobel

Dalam arah horizontal (x), Sobel memperkirakan perubahan nilai antara bagian kanan dan kiri dari piksel tengah:

$$ \frac{\partial f}{\partial x} \approx \left[ f(x+1, y-1) + 2f(x+1, y) + f(x+1, y+1) - \left( f(x-1, y-1) + 2f(x-1, y) + f(x-1, y+1) \right) \right] $$

Artinya:

  • Ambil 3 piksel di sisi kanan (x+1)
  • Kurangi dengan 3 piksel di sisi kiri (xโˆ’1)
  • Semua titik berada di baris yโˆ’1, y, dan y+1
  • Pada posisi yang sejajar secara vertikal terhadap piksel tengah

Sedangkan dalam arah vertikal (y), Sobel menghitung perubahan antara bagian atas dan bawah dari piksel tengah:

$$ \frac{\partial f}{\partial y} \approx \left[ f(x-1, y+1) + 2f(x, y+1) + f(x+1, y+1) - \left( f(x-1, y-1) + 2f(x, y-1) + f(x+1, y-1) \right) \right] $$

Artinya:

  • Ambil 3 piksel di sisi atas (y+1)
  • Kurangi dengan 3 piksel di sisi bawah (yโˆ’1)
  • Semua titik berada di kolom xโˆ’1, x, dan x+1
  • Pada posisi yang sejajar secara horizontal terhadap piksel tengah
Kernel Operator Sobel

Dari rumus turunan diskrit sebelumnya, bisa diterjemahkan langsung menjadi matriks kernel Sobel, yang tinggal kamu geser (konvolusi) ke seluruh gambar. Berikut adalah matriks kernel untuk operator Sobel.

  1. Kernel Gx (deteksi perubahan kiriโ€“kanan):
    • Kernel Gx digunakan untuk mendeteksi tepi dalam arah horizontal, yaitu perubahan dari kiri ke kanan.
    • Sobel membandingkan intensitas tiga piksel di sisi kiri dan tiga piksel di sisi kanan dari piksel pusat.
    • Piksel di sisi kiri dikalikan dengan bobot negatif (โˆ’1 atau โˆ’2), sedangkan yang kanan dengan bobot positif (+1 atau +2).
    • Piksel di kolom tengah dikalikan dengan 0, sehingga tidak mempengaruhi hasil akhir.
    $$ G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} $$
  2. Kernel Gy (deteksi perubahan atasโ€“bawah):
    • Kernel Gy digunakan untuk mendeteksi tepi dalam arah vertikal, yaitu perubahan dari atas ke bawah.
    • Sobel membandingkan intensitas tiga piksel di sisi atas dan tiga piksel di sisi bawah dari piksel pusat.
    • Piksel di sisi atas dikalikan dengan bobot negatif, sedangkan piksel di sisi bawah dikalikan dengan bobot positif.
    • Baris tengah (y) dikalikan dengan 0, sehingga tidak memberikan kontribusi pada hasil gradien.
    $$ G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} $$

Mengapa Sobel Menambahkan Bobot 2 pada Piksel

Operator Sobel adalah penyempurnaan dari Prewitt dalam deteksi tepi. Perbedaan utama antara keduanya adalah bahwa Sobel memberikan bobot lebih besar pada piksel pusat dalam arah gradien. Mari kita bahas secara lebih mendetail alasan di balik hal ini. Masalah pada Operator Prewitt:

\( G_x = \begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix} \)
\( G_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} \)

Prewitt menghitung selisih antara area kiri dan kanan untuk ๐บ๐‘ฅ, serta area atas dan bawah untuk ๐บ๐‘ฆ. Namun, karena semua bobot dalam satu kolom atau baris adalah sama, Prewitt lebih rentan terhadap noise karena menganggap semua piksel memiliki kontribusi yang sama terhadap gradien.



Perbaikan pada Operator Sobel

Sobel mencoba mengatasi masalah noise dengan cara meningkatkan kontribusi piksel yang lebih dekat ke pusat, karena piksel-piksel ini lebih relevan dalam menentukan perubahan intensitas lokal. Kernel Sobel dituliskan sebagai:

\( G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \)
\( G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \)

๐Ÿ‘‰ Apa yang berubah dibandingkan dengan Prewitt?
  • Pada Sobel, baris tengah dari ๐บ๐‘ฅ (atau kolom tengah dari ๐บ๐‘ฆ) diberikan bobot 2.
  • Ini berarti piksel tengah dalam arah gradien memiliki pengaruh lebih besar dalam perhitungan.

Berikut adalah hasil deteksi tepi Operator Sobel yang meliputi hasil konvolusi kernel horizontal (Gx), hasil konvolusi kernel vertikal (Gy), magnitude gradient, dan hasil thresholding-nya.

Hasil Operator Prewitt
Hasil Operator Prewitt

Gambar 3.9 Hasil konvolusi, magnitudo, dan threshold dengan operator Sobel

Contoh Perhitungan dengan Operator Sobel

Gambar 3.10 menunjukkan citra ukuran 4x4 beserta nilai pikselnya yang akan kita gunakan untuk mendeteksi tepi dengan operator Sobel.

Komponen Warna RGB Komponen Warna RGB

Gambar 3.10 Matriks citra 4x4 untuk perhitungan operator Sobel dengan I = Input Matriks


Berikut adalah kernel Sobel yang akan digunakan.

\( G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \)
\( G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \)

Kita akan melakukan pendeteksian tepi pada matriks di atas menggunakan operator Sobel dan teknik edge padding.



Langkah 1: Teknik Edge Padding

Langkah pertama yang dilakukan sebelum proses konvolusi adalah melakukan teknik padding, yaitu edge padding. Teknik ini menambahkan baris atau kolom di tepi matriks dengan menyalin nilai dari elemen tepi yang ada. Tujuannya adalah agar semua piksel pada citra dapat diproses dengan filter tanpa kehilangan informasi di tepi.

Menentukan Jumlah Padding:
  • Ukuran filter: \( f = 3 \)
  • Maka padding: \( p = \left\lfloor \frac{3 - 1}{2} \right\rfloor = 1 \)
  • Tambahkan 1 baris di atas dan bawah serta 1 kolom di kiri dan kanan

Berikut adalah hasil matriks setelah dilakukan teknik edge padding terhadap matriks input pada gambar:

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


Langkah 2: Konvolusi dengan Kernel Sobel

Sebelum memulai proses konvolusi, kita perlu menentukan ukuran matriks output yang akan dihasilkan.

Menghitung Ukuran Matriks Output:
  • Ukuran awal matriks (input): \( 4 \times 4 \)
  • Ukuran kernel: \( 3 \times 3 \)
  • Padding: \( p = 1 \)
  • Stride: \( 1 \)
  • Maka ukuran output: \[ \left( \frac{4 - 3 + 2 \times 1}{1} \right) + 1 = (3) + 1 = 4 \] Jadi, ukuran output adalah \( 4 \times 4 \)

Selanjutnya, kita akan memulai proses konvolusi. Kita kalikan tiap elemen citra dengan kernel Gx, lalu jumlahkan hasilnya. Begitu pula dengan kernel Gy.

Petunjuk:

Gunakan dropdown untuk memilih kernel yang akan digunakan, lalu klik tombol Mulai Konvolusi.

Input Matriks

Kernel Konvolusi

Hasil Konvolusi

Perhitungan:

Perhitungan akan muncul di sini


Penjelasan:
  • Hasil konvolusi menggunakan kernel Gx-Sobel menunjukkan deteksi tepi vertikal yang kuat di area transisi antara kolom ketiga dan keempat, terutama dengan nilai tinggi seperti -312, -212, -213, dan -214. Nilai-nilai ini mengindikasikan adanya perubahan intensitas yang signifikan secara horizontal dari piksel gelap (175, 177, dan 180) ke terang (112, 114, 116, dan 117) sehingga menunjukkan keberadaan tepi vertikal yang jelas.
  • Hasil konvolusi menggunakan kernel Gy-Sobel menunjukkan nilai-nilai yang rendah karena gambar aslinya tidak memiliki perubahan intensitas yang mencolok secara vertikal. Artinya, tidak ada transisi terang-gelap yang signifikan dari atas ke bawah yang bisa dianggap sebagai tepi horizontal.


Langkah 3: Hitung Magnitudo

Setelah kita mendapatkan hasil turunan pertama di arah horizontal (Gx) dan vertikal (Gy), kita bisa menghitung magnitudo dan arah tepi. Berikut caranya.

Rumus:
\[ \text{Magnitude} = \sqrt{G_x^2 + G_y^2} \]
Petunjuk:

Klik tombol Mulai Hitung, lalu klik Lanjut untuk melanjutkan proses.

Gx
Gy
Magnitudo

Perhitungan:
Penjelasan:

Magnitudo tinggi terlihat di piksel [0,1] = 312.1, [0,2] = 212.15, [1,1] = 312.52, [1,2] = 213.68, [2,1] = 312.23, [2,2] = 214.34, [3,1] = 312.01, dan [3,2] = 213.02, menunjukkan kemungkinan besar ada tepi di area tengah. Nilai lainnya seperti [0,0] = 45.4 atau [3,3] = 40.2 jauh lebih rendah, menandakan area tanpa tepi. Jadi, tepi kemungkinan terletak di sekitar kolom 1โ€“2.




Langkah 4: Thresholding (Ambang Batas)

Setelah menghitung magnitudo, langkah selanjutnya adalah menyaring hasilnya agar hanya tepi yang kuat yang ditampilkan. Untuk menentukan threshold kita menggunakan rumus berikut.

\[ \text{Threshold} = \frac{\text{Jumlah Seluruh Piksel}}{\text{Banyak Piksel}} = \frac{2508,12}{16} = 156,76 \]
(Catatan: Selesaikan proses magnitude terlebih dahulu sebelum menghitung threshold).

Petunjuk:
  • Klik tombol Mulai Hitung, lalu klik Lanjut atau Autoplay untuk melanjutkan proses.
Magnitudo
Threshold (T = 156,76)

Perhitungan:
Penjelasan:

Berdasarkan hasil threshold, bagian tepi terdeteksi pada piksel [0, 1], [0, 2], [1, 1], [1, 2], [2, 1], [2, 2], [3, 1] dan [3, 2] karena nilai magnitudonya melebihi 156.76. Piksel-piksel ini membentuk pola vertikal di tengah, menunjukkan adanya garis tepi vertikal. Sementara piksel lainnya bernilai 0, menandakan area non-tepi.

Aktivitas 8

Kerjakan kuis berikut untuk menguji pemahamanmu!

Soal 1 dari 2

Gambar 3.11 menunjukkan citra grayscale berukuran 4x4 beserta nilai pikselnya.

Komponen Warna RGB Komponen Warna RGB

Gambar 3.11 Matriks citra 4x4


Berikut adalah kernel operator Sobel.

\( G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \)
\( G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \)


Hasil Konvolusi Gx
Hasil Konvolusi Gy
Hasil Magnitude
Thresholding

Penjelasan: