SUBBAB 3: Operator Turunan Pertama
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.
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.

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.
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
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.
- 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} $$ - 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} $$
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:
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:
๐ 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.


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.
|
|
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:
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:Klik tombol Mulai Hitung, lalu klik Lanjut untuk melanjutkan proses.
Perhitungan:
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.
- Klik tombol Mulai Hitung, lalu klik Lanjut atau Autoplay untuk melanjutkan proses.
Perhitungan:
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.
![]() |
|
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}
\)
|
