Sunday, June 12, 2016

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

Deteksi Tepi Dengan Metode Sobel (bagian 1)

Pendahuluan
Tutorial kali ini kita akan membahas Deteksi Tepi Dengan Metode Sobel. Tulisan ini cukup panjang sehingga akan saya bagi menjadi 2 bagian.

Bagian 1: Kita akan membahas Lingkup Grafika Komputer, Pengolahan Citra, Pengenalan Pola
Bagian 2: Kita akan membahas Metode Deteksi Tepi Sobel

Selamat menikmati:

Dasar Teori

Citra (image) adalah kombinasi warna dan garis pada bidang dua dimensi yang merepresentasikan sebuah bentuk gambar atau obyek. Secara tinjauan matematis, citra adalah sebuah fungsi kontinyu dari intensitas cahaya pada bidang dua dimensi. Sebuah gambar dapat diperoleh dari bermacam-macam perangkat seperti kamera digital atau analog, sinar x, mikroskop elektron dan sebagainya dan dipergunakan untuk bermacam-macam keperluan misalnya medis, sipil, industri, entertainment, militer dan sebagainya.

Citra terbagi 2 yaitu ada citra yang bersifat analog dan ada citra yang bersifat digital. Citra analog adalah citra yang bersifat kontinu seperti gambar pada monitor televisi, foto sinar X, hasil CT Scan dll. Sedangkan pada citra digital adalah citra yang dapat diolah oleh komputer (T. Sutoyo et al. 2009:9). Definisi lain menyebutkan bahwa citra digital merupakan citra yang dihasilkan dari pengolahan dengan menggunakan komputer, dengan cara merepresentasikan citra secara numerik dengan nilai­nilai diskret (Winarno, 2011). Sebuah citra digital dapat mewakili sebuah matrik M kolom dan N baris dimana perpotongan kolom dan baris tersebut disebut piksel (pixel: picture element). Sebuah piksel memiliki sebuah warna yang terbentuk dari kombinasi warna-warna primer merah, hijau dan biru (RGB) yang dijelaskan pada gambar 2.1 sebagai berikut.

  Gambar 1 Satu Piksel Dalam Sebuah Gambar

Kedalaman warna (color depth) adalah satuan yang digunakan untuk mengukur jumlah warna yang ditampilkan dalam sebuah piksel. Ukuran kedalaman warna (bit) yang sering digunakan adalah 1, 8, 16, 24, 32, dan 64. Sebagai contoh untuk ukuran 8 bit, maka sebuah warna diwakili untuk 2 pangkat 8 (256) warna nilai R (merah), G (hijau) dan B (biru). Semakin tinggi nilai warna, maka semakin mendekati warna asli dari obyek yang ada pada gambar tersebut.

Resolusi gambar adalah banyaknya piksel yang digunakan untuk membentuk gambar tersebut. Pada dasarnya resolusi gambar menjelaskan seberapa banyak piksel yang tersimpan dalam gambar tersebut. Contoh nilai resolusi gambar adalah 300 x 200 piksel yang berarti gambar tersebut memiliki 300 pixel mendatar (kolom) dan 200 piksel vertikal (baris). Semakin banyak (tinggi) resolusi sebuah gambar maka gambar tersebut semakin halus.

Di dalam bidang komputer, terdapat tiga bidang studi yang berkaitan dengan data citra, namun tujuan ketiganya berbeda, yaitu:
  1. Grafika Komputer (computer graphics).
  2. Pengolahan Citra (image processing).
  3. Pengenalan Pola (pattern recognition/image interpretation).
 Hubungan ketiga bidang studi itu dijelaskan pada gambar 2 sebagai berikut:



 Gambar 2 Hubungan Antar Bidang Studi Tentang Citra

Grafika Komputer

Grafika komputer bertujuan untuk menghasilkan citra dengan primitif geometri seperti garis atau kurva. Primitif geometri tersebut memerlukan data deskriptif untuk melukis elemen-elemen gambar. Contoh data deskriptif adalah koordinat titik, panjang garis dan sebagainya yang dijelaskan pada gambar 3 sebagai berikut:


Gambar 3 Data Deskriptif Untuk Menghasilkan Citra pada Grafika Komputer

Contoh grafika komputer untuk menghasilkan sebuah gambar persegi panjang menggunakan AutoCAD ditunjukkan pada gambar 4 sebagai berikut: 

 Gambar 4 Contoh Menggambar Citra Menggunakan Data Deskriptif


Pengolahan Citra Digital
Sebuah citra digital dapat diolah kembali untuk bermacam-macam keperluan, misalnya memperbaiki kualitas citra tersebut, mendapatkan informasi-informasi pada sebuah citra maupun untuk keperluan-keperluan keamanan. Pada umumnya sebuah pengolahan citra digital adalah mengambil informasi dalam sebuah piksel, merubah nilai warna pada piksel tersebut menjadi nilai integer dan mengolah nilai tersebut secara matematis.

Tantangan dalam sebuah pengolahan digital adalah, gambar bukan suatu besaran yang langsung terukur seperti nilai panjang sebuah benda yang diukur menggunakan penggaris atau tegangan listrik yang diukur menggunakan volt meter, tetapi sebuah obyek yang dikonversi menjadi nilai digital sehingga faktor-faktor yang menyebabkan kesalahan menjadi semakin banyak. Kesalahan tersebut dapat terjadi karena kualitas citra yang menjadi masukan sebuah sistem tidak terlalu bagus, resolusi yang rendah, noise gambar dan lain-lain.

Hubungan citra dengan pengolahan citra diilustrasikan pada gambar 5 sebagai berikut:


 
Gambar 5 Hubungan Citra Dengan Pengolahan Citra



Pengenalan Pola

Pengenalan pola mengelompokkan data numerik secara otomatis oleh komputer. Tujuan pengelompokan ini adalah mengenali sebuah obyek dalam citra tersebut yang diharapkan komputer dapat membedakan antar obyek dalam citra tersebut. Hal ini mirip dengan pengenalan pola yang dimiliki otak manusia, dimana manusia dapat membedakan obyek-obyek yang ditangkap oleh mata (sebagai sebuah citra) dan mengenali obyek tersebut sebagai sebuah benda. Hubungan antara citra dan deskripsi obyek diilustrasikan pada gambar 6 sebagai berikut:
Gambar 6 Hubungan Citra dengan Deskripsi Pola Yang Dihasilkan Oleh Pengenalan Pola

Contoh pengolahan pola dari sebuah citra ditunjukkan pada gambar 7 sebagai berikut:
 
  Gambar 7 Pengenalan Pola Obyek


Deteksi Tepi

Tepi adalah batas antara obyek dan latar belakang dan menunjukkan batas antara obyek yang tumpang tindih. Ini berarti jika tepi dapat ditentukan secara akurat, semua benda yang terdapat dalam sebuah citra bisa diukur dimensinya (Nadernejad E et el, 2008). Suatu titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik tersebut mempunyai perbedaan yang tinggi dengan tetangganya (Riyanto). Deteksi tepi adalah salah satu operasi paling umum yang digunakan dalam analisa citra. Terdapat banyak sekali algoritma deteksi tepi yang terdapat dalam literatur-literatur ilmiah sebagai contoh:

  1. Metode Robert
  2. Metode Prewitt
  3. Metode Sobel
  4. Metode Canny

Setelah sebuah obyek diketahui tepi-tepi (batas antara obyek dengan latar belakang), obyek tersebut dapat dikenali sebagai sebuah pola dan setelah pola tersebut dikenali, secara sederhana sistem dapat memutuskan apakah obyek tersebut harus diolah atau tidak. Bagian pendeteksian tepi disini yang memerlukan resource paling besar, karena sistem harus mendeteksi seluruh perbedaan antara latar belakang dengan obyek-obyek non-background yang secara kasat mata, manusia dapat langsung membedakan apakah obyek tersebut bagian dari background atau bukan.

Deteksi tepi diperoleh dengan memanfaatkan representasi warna dalam bentuk geometri vektor yang merupakan jarak dari vektor ruang 3 dimensi yang diformulakan sebagai berikut (Murdianto, 2007):

Dimana:

D            :       Jarak warna C1 dan C2

R1, R2    :       Level warna merah (Red) dari warna C1 dan C2

G1, G2   :       Level warna hijau (Green) dari warna C1 dan C2

B1, B2    :       Level warna biru (Blue) dari warna C1 dan C2

Secara umum, algoritma pendeteksian tepi adalah sebagai berikut:

  1. Ekstrak warna (R,G,B) dari sebuah pixel gambar dan simpan hasilnya sebagai C1
  2. Ekstrak warna (R,G,B) dari pixel gambar di sebelah kanan C1 dan simpan hasilnya sebagai C2
  3. Bandingkan nilai warna C1 dan C2 tersebut
  4. Jika perbandingan warna C1 dan C2 tersebut melebihi nilai toleransi yang diberikan, maka diperoleh batas antara latar belakang dan obyek. 
Gambar 8 berikut adalah deteksi tepi sebuah obyek.
  Gambar 8. Pendeteksian Tepi Gambar Asli (a) menjadi Pola (b)


Metode Sobel merupakan pengembangan metode Robert dengan menggunakan filter HPF (High Pass Filter) yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian dan gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF. Kelebihan dari metode Sobel ini adalah kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi tepi.

Permasalahan yang muncul pada pendeteksian tepi adalah kondisi pencahayaan, keberadaan benda-benda lain yang memiliki intensitas yang sama atau hampir sama dan noise (derau) pada sebuah citra. Masalah-masalah ini dapat diatasi dengan “memainkan” ambang batas tepi untuk memisahkan derau, dan obyek-obyek yang memiliki nilai intensitas yang hampir sama (Nadernejad E et el, 2008). Selain memainkan nilai ambang batas, akan sangat baik jika pendeteksian tepi dilakukan menggunakan lebih dari satu algoritma yang berbeda.



Lanjut Ke Metode Sobel

Referensi:

  1. Sutoyo, T. et al. (2009). Teori Pengolahan Citra Digital. Yogyakarta: Andi.
  2. Winarno E, Aplikasi Deteksi Tepi Pada Real Time Video Menggunakan Algoritma Canny Detection, Jurnal Teknologi Informasi DINAMIK, Vol 16, No. 1, Januari 2011: 44-49 ISSN: 0854-9524
  3. Riyanto Sigit, Modul Praktikum Pengolahan Citra,  Politeknik Elektronika Negeri Surabaya
  4. Nadernejad E., Sharifzadeh S., Hassanpour H., Edge Detection Techniques: Evaluations and Comparisons, Applied Mathematical Sciences, Vol. 2, 2008, no. 31, 1507 – 1520