SUBBAB 6: Operator Canny

Tujuan Pembelajaran

Setelah selesai mempelajari materi, mahasiswa diharapkan:

  • Mampu memahami konsep operator Canny dalam pendeteksian tepi.
  • Mampu melakukan perhitungan tahap-tahap operator Canny, yaitu gaussian blur, gradien operator Sobel, non-maximum suppression, double threshold, dan edge tracking by hysteris.
Apa itu Operator Canny?

Operator Canny adalah salah satu metode deteksi tepi paling populer dan kuat. Tujuannya adalah:

Menemukan tepi yang tajam, jelas, dan bebas noise, dengan akurasi tinggi.

Metode ini dikembangkan oleh John F. Canny pada tahun 1986 dan sampai sekarang masih digunakan luas karena keakuratannya.

Tujuan utama metode ini adalah:

  1. Mengurangi noise pada gambar.
  2. Mendeteksi tepi yang sebenarnya, bukan cuma perubahan kecil.
  3. Menentukan arah tepi.
  4. Menghubungkan titik-titik tepi agar membentuk garis yang utuh.

Perbandingan Canny dengan Operator Lain

Gambar 6.1 merupakan perbandingan operator Canny dengan operator lain.

Hasil Operator Prewitt

Gambar 6.1 Perbandingan hasil operator Canny dengan operator lainnya

Perbedaan Hasil Deteksi Tepi Antar Operator:

  • Prewitt menghasilkan tepi yang halus dan agak kabur, tidak terlalu tajam dibandingkan operator lain.
  • Sobel memberikan hasil tepi yang lebih tegas dari Prewitt karena bobot piksel tengah lebih besar.
  • Roberts menghasilkan tepi yang sangat tipis dan tajam, namun lebih sensitif terhadap noise.
  • Kirsch mendeteksi tepi dengan sangat tebal dan menyeluruh, menangkap banyak arah dengan kontras tinggi.
  • Laplace menunjukkan tepi yang lebih gelap dan halus, seringkali tidak setegas metode turunan pertama.
  • LoG menghasilkan tepi yang lebih bersih dibanding Laplace karena efek smoothing sebelum deteksi.
  • Canny memberikan hasil paling bersih dan tajam, dengan garis tepi yang sangat tipis dan akurat.
  • Prewitt dan Sobel serupa, tetapi Sobel lebih unggul dalam ketegasan garis.
  • Roberts unggul dalam mendeteksi tepi halus, namun rawan noise dan tidak menangkap kontur besar dengan baik.
  • Kirsch dan Canny sama-sama mendeteksi tepi kuat, tapi Kirsch lebih tebal sedangkan Canny lebih tipis dan rapi.

Dari perbandingan ini, dapat disimpulkan bahwa operator Canny adalah metode yang lebih unggul karena menghasilkan peta tepi yang lebih rapi dan akurat.

Tahapan Deteksi Tepi Operator Canny
1. Gaussian Blur (Menghaluskan Gambar)

Tujuan: Mengurangi noise atau bintik-bintik kecil yang bisa salah dikenali sebagai tepi.

Caranya: Gambar dikonvolusi dengan Gaussian Filter (filter blur).



2. Gradient (Turunan Pertama) dengan Operator Sobel

Tujuan: Mendeteksi seberapa besar perubahan intensitas piksel.

Caranya: Hitung gradien arah X dan Y menggunakan operator Sobel.



3. Non-Maximum Suppression

Tujuan: Menajamkan tepi dengan menghapus piksel yang bukan puncak maksimum di arah gradien.

Contoh (arah gradien →):

\[ \begin{bmatrix} 3 & \mathbf{7} & 2 \end{bmatrix} \quad \text{Piksel tengah (7) lebih besar, jadi disimpan.} \]



4. Thresholding Ganda (Double Threshold)

Tujuan: Menentukan apakah suatu piksel merupakan tepi kuat, lemah, atau bukan tepi.

  • Tepi kuat: gradien > threshold tinggi → ✅ dipertahankan
  • Tepi lemah: antara threshold rendah dan tinggi → ❓ perlu dicek
  • Bukan tepi: gradien < threshold rendah → ❌ dihapus

Contoh (threshold tinggi = 100, rendah = 50):

  • 120 → tepi kuat
  • 70 → tepi lemah
  • 40 → bukan tepi


5. Edge Tracking by Hysteresis

Tujuan: Menentukan apakah piksel tepi lemah akan tetap disimpan atau dibuang.

Caranya:

  • Jika terhubung ke tepi kuat → ✅ disimpan
  • Jika terisolasi → ❌ dibuang

Contoh:

Strong ➝ Weak ➝ Weak → ✅ simpan semua
Weak sendiri tanpa koneksi → ❌ buang

Contoh Perhitungan dengan Operator Canny

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

Komponen Warna RGB Komponen Warna RGB

Gambar 6.2 Matriks citra 4x4 untuk perhitungan operator Canny


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



Langkah 1: Gaussian Blur (Menghaluskan Gambar)

Input Matriks

Kernel Konvolusi

Hasil Konvolusi

Perhitungan:

Perhitungan akan muncul di sini



Penjelasan:

Hasil konvolusi Gaussian menunjukkan penyaringan halus (smoothing) di seluruh area gambar dengan nilai intensitas yang meningkat bertahap dari kiri atas (0,0) ke kanan bawah (3,3). Hal ini menunjukkan bahwa nilai intensitas piksel menjadi lebih halus dan merata dengan transisi yang lembut. Titik dengan nilai tertinggi berada di piksel (3,3) yaitu 124.25, sementara nilai terendah berada di piksel (0,2) yaitu 130.75, menunjukkan transisi lembut dan konsisten. Pola ini mencerminkan efek Gaussian yang mengurangi noise tanpa menghilangkan bentuk umum atau gradasi alami pada citra.



Langkah 2: Hitung Magnitudo

Input Matriks

Kernel Konvolusi

Hasil Konvolusi

Perhitungan:

Perhitungan akan muncul di sini


Penjelasan:
  • Hasil konvolusi Sobel Gx menunjukkan adanya tepi vertikal yang sangat jelas di kolom ke-1 dengan nilai -224 dan kolom ke-2 dengan nilai -174. Nilai-nilai ini menunjukkan perubahan intensitas yang tajam dari kiri ke kanan, seperti perbatasan antara area terang dan gelap. Sementara itu, piksel di kiri (kolom 0) dan kanan (kolom 2 dan 3) memiliki nilai lebih kecil, menandakan perubahan intensitas di sana tidak terlalu tajam.
  • Hasil konvolusi menggunakan kernel Sobel Gy 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.

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} \]
\[ \text{Direction} = \arctan\left(\frac{G_y}{G_x}\right) \]
Petunjuk:

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

Gx
Gy
Magnitudo
Arah (derajat)

Perhitungan:

Penjelasan:

Hasil magnitudo menunjukkan seberapa kuat perubahan intensitas di setiap piksel, di mana nilai yang lebih tinggi menandakan adanya tepi yang lebih jelas. Misalnya, nilai 224.09 menunjukkan tepi yang sangat kuat, sementara nilai 43.48 menunjukkan tepi yang lemah. Sementara itu, bagian arah tepi menunjukkan ke mana arah perubahan intensitas tersebut, dalam satuan derajat. Arah mendekati 180° berarti tepi cenderung horizontal, sedangkan arah mendekati 90° menunjukkan tepi vertikal. Dengan begitu, kita bisa mengetahui tidak hanya posisi dan kekuatan tepi, tetapi juga orientasinya dalam gambar.



Langkah 3: Non-Maximum Suppression

Proses untuk mengurangi tepi yang tidak merupakan puncak lokal.

Petunjuk:

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

NMS akan mempertahankan piksel dengan nilai magnitudo tertinggi sepanjang arah gradiennya.

Magnitudo
Arah (derajat)
NMS

Perhitungan:
Penjelasan:

Hasil NMS (Non-Maximum Suppression) berfungsi untuk menyaring piksel yang bukan merupakan puncak lokal di arah tepinya, sehingga hanya tepi yang paling tajam yang dipertahankan. Nilai 1 menunjukkan bahwa piksel tersebut adalah maksimum lokal dan dianggap sebagai bagian dari tepi yang signifikan. Sebaliknya, nilai 0 berarti piksel tersebut ditekan (dihilangkan) karena bukan puncak tertinggi dalam arah tepinya. Misalnya, piksel kanan bawah memiliki magnitudo 43.48 dan arah 174.8°, tetapi bernilai 0 di NMS karena bukan nilai tertinggi dibanding tetangganya di arah yang sama. Dengan cara ini, hasil deteksi tepi menjadi lebih tipis dan akurat.



Langkah 4: Double Thresholding

Kita juga dapat menyaring hasilnya agar hanya tepi yang kuat yang ditampilkan. Untuk menentukan high threshold dan low threshold kita menggunakan rumus berikut.

\[ \text{High Threshold} = \frac{\text{Jumlah Seluruh Piksel}}{\text{Banyak Piksel}} = \frac{2145,65}{16} = 134,10 \]

Untuk low threshold, kita menentukan nilai α (alpha), terlebih dahulu. Nilainya tergantung pada nilainya tergantung pada karakteristik gambar (kontras, noise, detail), kebutuhan aplikasi. Disini kita atur nilai α yaitu 0,7

\[ Low\ Threshold = \alpha \times \text{Threshold} = 0,7 \times 134,10 = 93,87 \]
Petunjuk:

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

Hasil NMS
Hasil Thresholding

Perhitungan:

Penjelasan:

Hasil double threshold menunjukkan bahwa hanya kolom terakhir yang dianggap non-edge (0), karena nilai magnitudonya rendah. Kolom lainnya tergolong weak (0.5) atau strong edge (1). Ini membantu memisahkan tepi kuat dari yang lemah dalam deteksi tepi.


Langkah 5: Edge Tracking by Hysteresis

Terakhir, kita akan melakukan edge tracking by hysteresis untuk menghubungkan tepi lemah dan tepi kuat.

Petunjuk:

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

Threshold
Tepi

Perhitungan:

Penjelasan:

Hasil edge tracking by hysteresis menunjukkan bahwa hanya weak edge (0,5) yang terhubung ke strong edge (1) yang dipertahankan sebagai tepi. Weak edge yang tidak terhubung, seperti di pojok kanan bawah, dihilangkan (menjadi 0).

Aktivitas 14

Kerjakan aktivitas berikut untuk menguji pemahaman dan menambah nilai progresmu!

Gambar 6.3 menunjukkan citra berukuran 4x4 beserta nilai pikselnya.

Komponen Warna RGB Komponen Warna RGB

Gambar 6.3 Matriks citra 4x4

Matriks di bawah ini merupakan kernel gaussian blur (dengan standar deviasi σ ≈ 1) dan kernel operator Sobel.

\( \text{Gaussian Blur}_{(\sigma = 1)} = \begin{bmatrix} 0.0625 & 0.125 & 0.0625 \\ 0.125 & 0.25 & 0.125 \\ 0.0625 & 0.125 & 0.0625 \end{bmatrix} \)

\( Sobel_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \)
\( Sobel_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \)

Soal 1 dari 2


Matriks Citra
Double Threshold
Edge Tracking

Penjelasan: