algoritma robert dan prewitt untuk deteksi tepi objek pada citra digital

7

Click here to load reader

Upload: jans-hendry

Post on 04-Jul-2015

1.009 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

1

ALGORITMA ROBERT dan PREWITT UNTUK DETEKSI

TEPI OBJEK PADA CITRA DIGITAL

Operator Robert mampu melakukan perhitungan gradient pada citra 2-D dengan lebih

sederhana dan cepat. Biasanya, citra yang akan diolah menggunakan algoritma ini merupakan

citra grayscale dan begitu juga dengan citra outputnya. Nilai intensitas tiap piksel pada citra

keluaran mewakili estimasi magnitude absolute (mutlak) dari gradient pada piksel tersebut

dari sebuah citra yang menjadi masukan. Kernel Robert berukuran 2x2. Kernel ini akan

dikonvolusikan dengan citra masukan. Sama halnya dengan Sobel, kernel Robert juga terdiri

atas Gx (horizontal) dan Gy (vertikal). Tapi yang perlu diperhatikan adalah untuk citra yang

diduga memiliki derau, menggunakan kernel atau operator masking dengan dimensi yang

semakin besar akan sangat membantu untuk menghilangkan derau tersebut. Jadi memang

sebaiknya memilih algoritma yang bisa menyediakan dimensi kernel yang besar, walau

sebenarnya kernel yang ada bisa diperbesar dimensinya dengan rumusan tertentu.

Bentuk operator Robert adalah:

0 -1

1 0

Kernel ini dirancang untuk menghasilkan respon secara maksimal terhadap edge yang

membentuk sudut 450 terhadap grid, satu kernel untuk tiap dua orientasi yang saling tegak

lurus. Dengan menggunakan dua buah kernel yang berbeda akan menghasilkan intensitas

yang baru pula, Ix dan Iy. Lalu gradient dan orientasi nya dapat dihitung dengan

menggunakan persamaan untuk algoritma jenis gradient:

� = ���� + ���

Tapi gradient tersebut bisa juga dihitung dengan pendekatan lain yang lebih cepat

komputasinya:

|�| = |��| + |��|

Arahnya dapat dihitung dengan persamaan:

= arctan ������ −3�4

Sebenarnya, matlab telah menyediakan toolbox khusus untuk algoritma ini, yakni:

image = edge(‘image’,’robert’)

tapi dalam artikel ini, akan dicoba membuat program sendiri dengan langkah-langkah dari

penggunaan algoritma Robert.

1 0

0 -1

Gx Gy

Page 2: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

1. Lakukan filter untuk mengurangi derau pada citra.

2. Lalu filter dengan operasi konvolusi pada citra dengan kernel Robert. 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.

Langkah-langkah dalam membuat program edge detection menggunakan operator Sobel bisa juga

digunakan untuk operator Robert dengan mengganti matriks kernel atau operatornya.

1. Baca citra asli yang akan dideteksi tepinya.

% baca citra dan memberikan noise salt & pepper I=imread('sepatuku','jpg'); I=imnoise(I,'salt & pepper'); imshow(I), title('Citra Asli Terkena Noise');

2. Konversi citra menjadi grayscale.

Ig=rgb2gray(I);

3. Haluskan citra untuk menghilangkan derau dengan filter median.

Igm=medfilt2(Ig,[5 5]);

4. Terapkan operasi Robert

Mx=[1 0;0 -1]; My=[0 -1;1 0]; Gy=imfilter(double(Igm),My,'symmetric'); Gx=imfilter(double(Igm),Mx,'symmetric'); 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)); mmin=min(min(M)); T=(mmax+mmin)/2; T=(T/mmax); % normalisasi threshold M=M/mmax; % normalisasi citra 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

Page 3: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

3

if M(ii,jj)<T M1(ii,jj)=M(ii,jj); else M2(ii,jj)=M(ii,jj); end end end

miu1=mean2(M1); miu2=mean2(M2); T=(miu1+miu2)*2; an=an+1; end

for ii=1:r for jj=1:c if M(ii,jj)<T M(ii,jj)=0; else M(ii,jj)=1; end end end

6. Lalu tampilkan hasil proses Robert.

Dalam hal ini, diberikan juga sebagai pembanding yakni algoritma robert yang secara

otomatis dihasilkan oleh matlab.

[Igms,thres]=edge(Igm,'robert'); figure, imshow(M), title('Program Sendiri Untuk Robert Filtering'); figure, imshow(Igms,[]), title('Robert Filtering dengan Toolbox

Matlab');

Hasil eksekusi dari program di atas adalah:

Page 4: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital
Page 5: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

5

Algoritma Prewitt sebenarnya mirip dengan Sobel karena operator yang digunakan adalah 3x3.

Matriks ini juga dikonvolusikan dengan citra masukan dalam arah x dan y. Hanya saja, filter ini

memiliki kelebihan “cepat” dibandingkan dengan Sobel. Tapi kernelnya hanya cocok untuk citra yang

memiliki kontras tinggi dan derau yang sangat kecil. Langkah-langkah yang digunakan juga sama

dengan algoritma di atas.

Operator Prewitt adalah:

-1 0 1

-1 0 1

-1 0 1

Sebenarnya, matlab telah menyediakan toolbox khusus untuk algoritma ini, yakni:

image = edge(‘image’,’prewitt’)

Karena langkah-langkahnya sama, maka saya langsung menampilkan programnya saja:

% 1. baca citra I=imread('sepatuku','jpg'); imshow(I), title('Citra Asli');

% 2. grayscale citra Ig=rgb2gray(I);

% 3. median filtering untuk menghilangkan noise Igm=medfilt2(Ig,[5 5]);

1 1 1

0 0 0

-1 -1 -1

Gx Gy

Page 6: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

% 4. terapkan operasi prewitt Mx=[-1 0 1; -1 0 1; -1 0 1]; My=[1 1 1; 0 0 0; -1 -1 -1]; Gy=imfilter(double(Igm),My,'symmetric'); Gx=imfilter(double(Igm),Mx,'symmetric'); M=sqrt(Gx.^2+Gy.^2); figure, imshow(M), title('Gradient Dari Prewitt Filtering');

%% Global threshold mmax=max(max(M)); mmin=min(min(M)); T=(mmax+mmin)/2; T=(T/mmax); % normalisasi threshold M=M/mmax; % normalisasi citra miu1=.1; miu2=.2; del_miu=abs(miu1-miu2); [r c]=size(M); an=1; while an<=100 for ii=1:r for jj=1:c if M(ii,jj)<T M1(ii,jj)=M(ii,jj); else M2(ii,jj)=M(ii,jj); end end end

miu1=mean2(M1); miu2=mean2(M2); T=(miu1+miu2)*2; an=an+1; end

for ii=1:r for jj=1:c if M(ii,jj)<T M(ii,jj)=0; else M(ii,jj)=1; end end end

[Igms,thres]=edge(Igm,'prewitt'); figure, imshow(M), title('Program Sendiri Untuk Prewitt Filtering'); figure, imshow(Igms,[]), title('Prewitt Filtering dengan Toolbox

Matlab');

hasil eksekusi program di atas:

Page 7: Algoritma Robert Dan Prewitt Untuk Deteksi Tepi Objek Pada Citra Digital

Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

7

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

Referensi:

- R. Gonzalez and R. Woods. Digital Image Processing. Addison Wesley

- www.image.google.co.id