Pengolahan citra digital by Jans Hendry / S2 TE UGM 09
ALGORITMA SOBEL UNTUK DETEKSI KARAKTER PADA PLAT NOMOR KENDARAAN BERMOTOR
Edge atau tepi merupakan representasi dari batas objek dalam citra. Hal ini merupakan permasalahan mendasar dan penting dalam pengolahan citra digital. Yang perlu diingat adalah edge memiliki nilai intensitas yang sangat kontras dibandingkan dengan piksel di sebelahnya (neighborhood). Deteksi tepi bisa menjadi sebuah filter untuk menghilangkan informasi yang tidak dibutuhkan, atau lebih sering disebut sebagai noise atau derau. Dengan deteksi tepi, struktur dari properti atau objek dalam citra tetap dipertahankan. Algoritma Sobel merupakan salah satu algoritma dari edge detection pada citra digital yang berbasis pada nilai gradient. Algoritma ini digunakan untuk citra biner. Citra biner merupakan citra yang bernilai antara 0 dan 1 atau sering disebut sebagai grayscale. Metode gradient adalah metode yang mendeteksi pinggir objek dengan mencari nilai maksimum dan minimum dari turunan pertama citra tersebut. Selain gradient ada juga basis dari algoritma deteksi pinggir, yakni Laplacian. Laplacian didasarkan pada turunan kedua dari citra tersebut. Untuk lebih jelas perhatikan gambar (2) untuk gradient dan gambar (3) untuk laplacian.
Gambar (1). Isyarat Asli
Gambar (2). Isyarat Gradient
1
Gambar (3). Isyarat Laplacian Gambar (1) menujukkan gradient atau turunan pertama dari isyarat asli yang ditunjukkan oleh gambar (1) berbentuk 1-D. Tampak bahwa turunan pertama ini menghasilkan nilai maksimum di pusat koordinat. Artinya adalah lokasi piksel edge berada pada titik tersebut bila melebihi nilai ambang yang ditetapkan. Metode lain adalah laplacian, dengan menggunakan turunan kedua, akan menghasilkan nilai minimum di pusat koordinat. Nilai ambang sangat dibutuhkan disini, karena akan menentukan nilai intensitas mana yang dianggap sebagai edge dan mana yang bukan. Algoritma Sobel memiliki operator konvolusi yang disebut juga sebagai operator sobel atau kernel sobel. Kernel ini berukuran 3x3 yang terdiri atas 2 buah kernel, untuk horizontal (Gx) dan vertikal (Gy). Kernel tersebut dioperasikan secara konvolusi dengan piksel pada citra dalam arah x dan arah y. Kernel ini ditunjukkan oleh gambar (4).
Gambar (4). Kernel Sobel Lalu dihitung magnitude dari gradient nya.
Gambar (5). Magnitude gradient untuk sobel Algoritma sobel memang sering digunakan sebagai edge detecting algorithm tapi tentu memiliki kekurangan. Kekurangannya adalah citra digital tidak bisa dilepaskan dari kehadiran derau. Masalahnya ketika citra ini dikonvolusikan dengan kernel sobel, yang terjadi adalah derau tersebut juga ikut di proses, sehingga derau menjadi bagian dari hasil algoritma sobel. Hal ini tentu tidak diharapkan, sehingga perlu adanya filter terhadap derau yang harus diberikan terlebih dahulu. Filter yang sering digunakan adalah filter statistik, yakni filter median. Algoritma sobel bagus jika
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09
diterapkan pada data yang sangat besar, sehingga SNR nya menjadi semakin besar dan kehadiran derau masih bisa ditoleransi. Operator sobel bisa saja berukuran lebih dari 3, tetapi ada rumusan untuk itu, karena dengan ukuran lebih besar maka diharapkan derau juga bisa dihilangkan. Sebaiknya juga gunakan ukuran ganjil, agar hasil konvolusinya didasarkan pada titik tengah dan operator memiliki titik tengah. Sebenarnya, matlab telah menyediakan toolbox khusus untuk algoritma ini, yakni: image = edge(image,’sobel’) tapi dalam artikel ini, akan dicoba membuat program sendiri dengan langkah-langkah dari penggunaan algoritma Sobel. 1. Lakukan filter untuk mengurangi derau pada citra. 2. Lalu filter dengan operasi konvolusi pada citra dengan kernel sobel. Ingat lakukan secara terpisah untuk Gx dan Gy. Sehingga dihasilkan intensitas baru yakni Ix dan Iy secara terpisah. 3. Lalu estimasi magnitude gradient untuk tiap piksel menggunakan persamaan:
4. Dengan memberikan nilai ambang atau threshold terhadap magnitude gradient, maka didapat citra yang berisi hasil dari edge detection. Untuk pemrograman dengan matlab, ikuti langkah-langkah berikut ini: 1. Baca citra asli yang akan dideteksi tepinya. I=imread('jogja','jpg'); imshow(I), title('Citra Asli');
2. Konversi citra menjadi grayscale. Ig=rgb2gray(I);
3. Haluskan citra untuk menghilangkan derau dengan filter median. Igm=medfilt2(Ig,[3 3]);
4. Terapkan operasi sobel Mx=[-1 0 1;-2 0 2;-1 0 1]; My=-Mx'; Gy=imfilter(double(Igm),My,'conv'); Gx=imfilter(double(Igm),Mx,'conv'); M=sqrt(Gx.^2+Gy.^2);
5. Buatlah nilai ambang yang diinginkan. Yang perlu anda perhatikan adalah, algoritma untuk threshold bisa anda gunakan yang mana saja. Dalam hal ini saya menggunakan algoritma global threshold. Tapi algoritma ini, saya modifikasi untuk menghasilkan citra yang lebih bagus. mmax=max(max(M)); 3
mmin=min(min(M)); T=(mmax+mmin)/2; T=(T/mmax); % normalisasi threshold M=M/mmax; miu1=.1; miu2=.2; del_miu=abs(miu1-miu2); [r c]=size(M); an=1; while an<=500 for ii=1:r for jj=1:c if M(ii,jj)
6. Lalu tampilkan hasil proses Sobel. Dalam hal ini, diberikan juga sebagai pembanding yakni algoritma sobel yang secara otomatis dihasilkan oleh matlab. [Igms,thres]=edge(Igm,'sobel'); figure, imshow(M), title('Citra Hasil Sobel Filtering'); figure, imshow(Igms,[]), title('Citra Hasil Sobel Filtering');
Hasil eksekusi dari program di atas adalah:
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09
Perlu diingat bahwa aktifitas ini bersifat subyektif. Artinya kualitas dari filter tersebut dalam menghasilkan edge yang diinginkan tergantung pada pemrogram. Sehingga bila dirasa sudah cukup memberikan hasil yang maksimal, maka program sudah dapat dikatakan berhasil. Semoga artikel ini dapat membantu anda, untuk filter edge detection yang lain, akan ditulis dalam artikel berbeda.
TERIMA KASIH 5
Referensi: - Vincent, O.R., Folorunso, O. A descriptive algorithm for Sobel image edge detection. - R. Gonzalez and R. Woods. Digital Image Processing. Addison Wesley - http://www.pages.drexel.edu/~weg22/edge.html - www.image.google.co.id