Deteksi Tepi Dengan Metode Sobel (bagian 2)

Pendahuluan

Pada tulisan sebelumnya, kita telah membahas ruang lingkup pengolahan citra dan hubungannya dengan Grafika Komputer dan Pengenalan Pola.

Pada tulisan ini, kita akan mempelajari Metode Deteksi Tepi Sobel.

Dasar Teori
Metode Sobel adalah sebuah metode pendeteksian tepi yang tergolong kategori gradient edge detection (Murdianto, 2007), dimana metode ini akan mendeteksi nilai maksimum dan nilai minimum dari tepi sebuah gambar sesuai ditunjukkan pada gambar 1 di bawah ini:
Gambar 1. Pendeteksian Tepi Gambar Asli (a) menjadi Pola (b)

Apabila threshold (batas) dari sebuah obyek sudah sesuai dengan nilai yang ditetapkan, maka dapat ditentukan apakah nilai tersebut merupakan batas dari sebuah obyek atau bukan. Proses pendeteksian ini dilakukan terhadap seluruh cell matrik dari sebuah citra 2 dimensi. Artinya sistem akan melakukan mapping terhadap sebuah citra sehingga diperoleh seluruh tepi dari obyek-obyek dalam citra tersebut.
Setelah seluruh tepi obyek dari citra tersebut telah dipetakan, proses berikutnya adalah melakukan penyaringan terhadap obyek yang perlu diolah dan obyek yang tidak perlu diolah seperti noise seperti ditunjukkan pada gambar 2 sebagai berikut. Noise pada gambar dapat muncul dari beberapa sebab, kualitas cahaya saat pengambilan gambar menggunakan kamera, noise pada obyek yang diambil seperti debu, batu atau obyek-obyek lain yang tidak seharusnya muncul saat gambar diambil atau bisa juga noise berasal dari kualitas kamera yang digunakan, misalnya kamera yang tidak memiliki fitur auto focus sehingga gambar yang diambil memiliki “bayangan” atau duplikasi obyek. Noise pada gambar digital dapat diperbaiki dengan beberapa tools dari perangkat lunak pengolah citra seperti Adobe Photoshop dan lain-lain.
Pada Gambar 2 dijelaskan, walaupun pada citra asli (a) memiliki banyak noise baik noise yang berada di latar belakang maupun noise yang berada di dalam obyek, akan tetapi noise-noise tersebut memiliki dimensi yang kurang dari nilai yang ditetapkan sebagai sebuah obyek, maka noise tersebut akan dihilangkan dan terbentuklah pola yang tergambar pada gambar (b).
Noise adalah gangguan dalam citra yang dapat membuat kesalahan pendeteksian yang kemudian berujung pada kesalahan pengenalan pola dari citra yang diolah. Noise merupakan tantangan terbesar dalam konsep pengolahan citra. Sistem dapat mengira noise sebagai obyek (kesalahan negatif) maupun sebaliknya obyek sebagai noise (kesalahan positif).
                             

 Gambar 2. Pembersihan Noise dari Citra

Metode deteksi tepi sobel cukup baik dalam pendeteksian noise sebelum noise yang ada dalam citra tersebut memiliki toleransi yang cukup besar. Pada gambar 2 di atas, noise dipandang sebagai sebuah obyek yang memiliki dimensi (ukuran) tertentu yang kemudian “diabaikan” oleh sistem sehingga tidak akan diproses kemudian. Akan tetapi apabila dimensi noise ini melebihi ukuran yang diijinkan, maka noise tersebut akan dianggap sebagai sebuah obyek seperti pada gambar 2.8 di atas.
Noise bisa juga muncul sebagai warna toleransi yang cukup mirip seperti ditunjukkan pada gambar 3 di bawah ini.
   Gambar 3 Hasil pengolahan Citra dengan Metode Deteksi Tepi Sobel

Metode deteksi tepi Sobel dilakukan dengan operasi matriks terhadap piksel-piksel di sekitar piksel yang sedang di-scan. Sebuah citra tersusun atas matriks 2 dimensi yang masing-masing  sel matrik tersebut berisi kombinasi warna merah, hijau dan biru seperti ditunjukkan pada gambar 4 sebagai berikut.
   Gambar 4 Matriks Warna dalam Piksel Gambar 2D

Matriks Sobel merupakan matriks 3x3 dengan koefisien nilai RGB yang telah ditentukan seperti pada gambar 5 sebagai berikut.
 Gambar 5 Matrik Sobel

Setiap sel dari matriks di gambar 4 akan diolah menggunakan koefisien matriks di gambar 2.12 sehingga diperoleh jarak antar warna. Jika jarak antar warna tersebut kurang dari nilai yang ditentukan maka konversi nilai RGB pada pixel tersebut menjadi putih dan jika lebih dari nilai yang ditentukan, maka konversi nilai RGB pada pixel tersebut sebagai hitam sehingga diperoleh matriks warna baru seperti ditunjukkan pada gambar 4 di atas.
Pendeteksian tepi obyek menggunakan metode Sobel dijelaskan pada diagram alir gambar 6 di bawah ini:
Gambar 6 Diagram Alir Metode Sobel dalam Penentuan Warna Piksel

Source Code

Setelah kita memahami Algorima Deteksi Tepi Sobel, kita akan menulis kode program (saya tulis dalam bahasa PHP)

<?php

// Tentukan citra yang akan diolah
$gambar_awal = "coba.jpg";

// pembentukan citra digital
$gambar_digital = imagecreatefromjpeg($gambar_awal);

//Cari dimensi gambar
$data_gambar = getimagesize($gambar_awal);

$akhir = imagecreatetruecolor($data_gambar[0],$data_gambar[1]);

// Proses semua piksel
for($x=1;$x<$data_gambar[0]-1;$x++){
    for($y=1;$y<$data_gambar[1]-1;$y++){
    // Hitung semua nilai abu-abu di matrik sobel disekitar piksel yang discan
    $piksel_atas = luminansi(imagecolorat($gambar_digital,$x,$y-1));
    $piksel_bawah = luminansi(imagecolorat($gambar_digital,$x,$y+1));
    $piksel_kiri = luminansi(imagecolorat($gambar_digital,$x-1,$y));
    $piksel_kanan = luminansi(imagecolorat($gambar_digital,$x+1,$y));
    $piksel_atas_kiri = luminansi(imagecolorat($gambar_digital,$x-1,$y-1));
    $piksel_atas_kanan = luminansi(imagecolorat($gambar_digital,$x+1,$y-1));
    $piksel_bawah_kiri = luminansi(imagecolorat($gambar_digital,$x-1,$y+1));
    $piksel_bawah_kanan = luminansi(imagecolorat($gambar_digital,$x+1,$y+1));
       
      // Hitung nilai x dan y
$rubah_x = ($piksel_atas_kanan+($piksel_kanan*2)+$piksel_bawah_kanan)-($piksel_atas_kiri +($piksel_kiri*2)+$piksel_bawah_kiri);
$rubah_y = ($piksel_atas_kiri+($piksel_atas*2)+$piksel_atas_kanan)-($piksel_bawah_kiri+($piksel_bawah*2)+$piksel_bawah_kanan);
       
    // hitung jarak
    $abu_abu = sqrt($rubah_x*$rubah_x+$rubah_y*$rubah_y);
    $abu_abu = 255-$abu_abu;
       
    // Proses Menentukan nilai abu-abu
        if($abu_abu > 255){
            $abu_abu = 255;
        }
        if($abu_abu < 0){
            $abu_abu = 0;
        }
       
        $abu_abu_baru  = imagecolorallocate($akhir,$abu_abu,$abu_abu,$abu_abu);
       
        imagesetpixel($akhir,$x,$y,$abu_abu_baru);           
    }
}

// Beritahu browser bahwa ada data citra yang akan ditampilkan
header('Content-Type: image/jpeg');

imagejpeg($akhir);

function luminansi($pixel){
    $pixel = sprintf('%06x',$pixel);
    $red = hexdec(substr($pixel,0,2))*0.30;
    $green = hexdec(substr($pixel,2,2))*0.59;
    $blue = hexdec(substr($pixel,4))*0.11;
    return $red+$green+$blue;
}

?>

Hasil:

Citra Asli
Citra Sobel


Semoga Bermanfaat

Referensi
  1. Murdianto A, Ekstraksi Fitur Wajah dengan Metode Gabor Wavelet, Fasilkom UI, 2007

Next Post Previous Post
3 Comments
  • Unknown
    Unknown March 1, 2020 at 11:44 PM

    Boleh minta bantu kak

    • Unknown
      Unknown August 6, 2020 at 9:41 AM

      Kalo ada pertanyaan seputar pengolahan citra silahkan email ke saya, siapa tau saya bisa bantu. :)

  • Unknown
    Unknown December 22, 2020 at 4:51 AM

    pak boleh minta emailnya saya mau tanya2 hehe

Add Comment
comment url