Pendeteksian Tepi

7
Pendeteksian Tepi Edge atau tepi didefinisikan sebagai perubahan intensitas grey level secara mendadak, dalam jarak yang singkat. Berikut ini program pendeteksian tepi menggunakan teknik sobel. Proses yang akan dijalankan adalah: Langkah yang dapat dilakukan adalah sebagai berikut : 1. Dari modul pertama yang telah Anda kerjakan, tambahkan satu button ganti caption dengan ‘Sobel’ dan name dengan ‘btn_sobel’atau jika menggunakan menu file Anda dapat menambahkan satu menu file dengan mengganti caption ‘Sobel’ dan name object menjadi mn_sobel

description

edge detection

Transcript of Pendeteksian Tepi

Page 1: Pendeteksian Tepi

Pendeteksian Tepi

Edge atau tepi didefinisikan sebagai perubahan intensitas grey level secara mendadak,

dalam jarak yang singkat. Berikut ini program pendeteksian tepi menggunakan teknik sobel.

Proses yang akan dijalankan adalah:

Langkah yang dapat dilakukan adalah sebagai berikut :

1. Dari modul pertama yang telah Anda kerjakan, tambahkan satu button ganti caption

dengan ‘Sobel’ dan name dengan ‘btn_sobel’atau jika menggunakan menu file Anda

dapat menambahkan satu menu file dengan mengganti caption ‘Sobel’ dan name object

menjadi mn_sobel

klik dua kali pada menu file sobel dan isikan source code berikut :

procedure TForm1.mn_sobelClick(Sender: TObject);

const

sobel : array [0..1,0..2,0..2] of smallint =(((-1,0,1),(-2,0,2),(-1,0,1)),((-

1,-2,-1),(0,0,0),(1,2,1)));

var

row :array [0..8] of pbytearray;col : pbytearray;

Page 2: Pendeteksian Tepi

x,y : smallint;i,j,k,p : smallint;image : tbitmap;sum,jum : longint;

Begin

p:=-120;

mn_grayscale.Click;

image := tbitmap.Create;Image.Assign(gambar);

for y:=1 to

gambar.Height-2 do begin

for i:=-1 to 1 do

row[i+1]:= Image.ScanLine[y+i];col := gambar.ScanLine[y];

x:=3;

repeat

sum := 0;

for i:=-1 to 1 do

for j:=-1 to 1 do

sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]);jum:=0;

for i:=-1 to 1 do

for j:=-1 to 1 do

jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]);sum := (sum + jum)+p;

if sum>255 then

sum:=255;

if sum<0 then

sum:=0;

for k:=0 to 2 do

col[x+k]:=sum;

inc(x,3);

until

x>=3*(gambar.Width-4);

end;

Image2.Picture.bitmap := gambar;

gambar.SaveToFile('Image Sobel');Image.free;

end;

2. Lakukan langkah yang sama seperti padalangkah no.1 dengan mengganti nama button

dengan Robert dan salin source code berikut

procedure TForm1.mn_edge_robertClick(Sender: TObject);const roberts:array [0..1,0..1,0..1] of smallint=(((1,0),(0,-1)),((-1,0),(0,1)));

Page 3: Pendeteksian Tepi

varrow : array [0..8] of pbytearray;col : pbytearray;x,y : smallint;i,j,k,buffer : smallint;image : tbitmap;sum,jum : longint;

beginbuffer:=-20;mn_grayscale.Click;image := tbitmap.Create;Image.Assign(gambar);for y:=1 to gambar.Height-2 dobeginfor i:=-1 to 0 dorow[i+1]:= Image.ScanLine[y+i];col := gambar.ScanLine[y];x:=3;repeatsum := 0;for i:=-1 to 0 dofor j:=-1 to 0 dosum:=sum+(roberts[0,i+1,j+1]*row[i+1,x-j*3]);jum:=0;for i:=-1 to 0 dofor j:=-1 to 0 dojum:=jum+(roberts[1,i+1,j+1]*row[i+1,x-j*3]);sum := (sum - jum)- buffer;if sum>255 then sum:=255;if sum<0 then sum:=0;for k:=0 to 2 docol[x+k]:=sum;inc(x,3);untilx>=3*(gambar.Width-4);end;Image2.Picture.bitmap := gambar;

end;

3. Lakukan langkah yang sama seperti pada langkah no.1 dengan mengganti nama button

dengan ‘Prewitt’ dan salin source code berikut

procedure TForm1.mn_prewittClick(Sender: TObject);

const

prewitt : array [0..1,0..2,0..2] of

smallint =(((-1,0,1),(-1,0,1),(-1,0,1)),((1,1,1),(0,0,0),(-1,-1,-1)));

Page 4: Pendeteksian Tepi

var

row :array [0..8] of pbytearray;

col : pbytearray;

x,y : smallint;

i,j,k,p : smallint;image : tbitmap;

sum,jum : longint;

Begin

p:=-120;

mn_grayscale.Click;

image := tbitmap.Create;Image.Assign(gambar);

for y:=1 to

gambar.Height-2 do begin

for i:=-1 to 1 do

row[i+1]:= Image.ScanLine[y+i];col := gambar.ScanLine[y];

x:=3;

repeat

sum := 0;

for i:=-1 to 1 do

for j:=-1 to 1 do

sum:=sum+(prewitt[0,i+1,j+1]*row[i+1,x+j*3]);jum:=0;

for i:=-1 to 1 do

for j:=-1 to 1 do

jum:=jum+(prewitt[1,i+1,j+1]*row[i+1,x+j*3]);sum := (sum + jum)+p;

if sum>255 then

sum:=255;

if sum<0 then

sum:=0;

for k:=0 to 2 do

col[x+k]:=sum;

inc(x,3);

until

x>=3*(gambar.Width-4);

end;

Image2.Picture.bitmap := gambar;

end;

Page 5: Pendeteksian Tepi

4. Lakukan langkah yang sama seperti pada langkah no.1 dengan mengganti nama button

dengan ‘Laplacian’ dan salin source code berikut

procedure TForm1.mn_laplacianClick(Sender: TObject);

const

laplacian : array [0..1,0..2,0..2] of

smallint =(((0,-1,0),(-1,4,-1),(0,-1,0)),((-1,-2,-1),(0,0,0),(1,2,1)));

var

row :array [0..8] of pbytearray;

col : pbytearray;

x,y : smallint;

i,j,k,p : smallint;

image : tbitmap;

sum,jum : longint;

Begin

p:=-120;

mn_grayscale.Click;

image := tbitmap.Create;Image.Assign(gambar);

for y:=1 to

gambar.Height-2 do begin

for i:=-1 to 1 do

row[i+1]:= Image.ScanLine[y+i];col := gambar.ScanLine[y];

x:=3;

repeat

sum := 0;

for i:=-1 to 1 do

for j:=-1 to 1 do

sum:=sum+(laplacian[0,i+1,j+1]*row[i+1,x+j*3]);jum:=0;

for i:=-1 to 1 do

for j:=-1 to 1 do

jum:=jum+(laplacian[1,i+1,j+1]*row[i+1,x+j*3]);sum := (sum + jum)+p;

if sum>255 then

sum:=255;

if sum<0 then

sum:=0;

for k:=0 to 2 do

col[x+k]:=sum;

Page 6: Pendeteksian Tepi

inc(x,3);

until

x>=3*(gambar.Width-4);

end;

Image2.Picture.bitmap := gambar;

end;