Anda di halaman 1dari 12

BAB VI

KONVOLUSI
Capaian Pembelajaran
Dapat memahami apa itu konvolusi
Dapat memahami manfaat konvolusi
Mampu membuat program Image Processing kovolusi
dengan menggunakan
Delphi 7 serta dapat menguji aplikasi konvolusi dengan berbagai mask
konvolusi

7.1 Bahan dan Alat


Komputer PC
Software Delphi 07

7.2 Landasan Teori


Konvolusi 2 buah fungsi f(x) dan g(x) didefinisikan sebagai :

notasi

merupakan operator konvolusi. Untuk fungsi diskrit konvolusi

didefinisikan sebagai,

dimana g(x) merupakan kernel konvolusi atau kernel filter.


Untuk fungsi dua dimensi, operasi konvolusi didefinisikan sebagai : (untuk
fungsi kontinu)

dan untuk fungsi diskrit, didefinisikan sebagai :

Fungsi filter g(x,y) disebut juga filter konvolusi, mask konvolusi, kernel
konvolusi, atau template. Ilustrasi konvolusi diperlihatkan pada gambar di
bawah ini :

f(i,j) = Ax0 + Bx1 + Cx2 + Dx3 + Ex4 + Fx5 + Gx6 + Hx7 + Ix8
Perhatikan kasus berikut, citra
1

Dikonvolusi menggunakan templete

akan menghasilkan citra

yang baru dengan nilai-nilai =


2

Template template yang sering muncul penggunaannya dalam pengolahan


citra (meminimalisir noise pada citra, edge detection, filtering, dan lain lain)
adalah template klasikal 3x3. Template yang diaplikasikan sebagai low pass
filter adalah :

Pengaplikasian untuk high pass filter digunakan template :

Template yang lain yang sering juga digunakan untuk melakukan smoothing
citra adalah :

Tabel 1 memperlihatkan operasi High Pass Filter dan Low Pass Filter pada
suatu citra yang memiliki nilai nilai intensitas pixel berikut :
0 0
0
0
0
0 1
1
1
0
0 1
1
1
0
0 1
1
1
0
0 1
1
1
0
0 1
6
1
0
0 1
1
1
0
0 0
0
0
0
Contoh citra sesudah dan sebeum dilakukan proses filtering dan konvolusi
dapat dilihat pada tabel di bawah ini:

7.3 Prosedur Percobaan


Untuk perancangan program konvolusi menggunakan Delphi dapat kita lakukan
langkah langkah berikut :
1. Jalankan Delphi.

2. Tambahan icon Panel1, Panel2, Image1, Image2, Button1, Button2,


Memo1, Memo2, MainMenu1, dan OpenPictureDialog pada form1 :

Untuk Panel 1, Nilai nilai property pada object inspector adalah :

Untuk Image1, icon Image1 letakkan di atas Panel1 pada Form1. Nilai
nilai property pada object inspector adalah :

Untuk Panel2, Nilai nilai property pada object inspector adalah :

Untuk Image2, icon Image2 letakkan di atas Panel2 pada Form1. Nilai
nilai property pada object inspector adalah :

Untuk MainMenu1, klik 2x pada icon MainMenu1, sehingga muncul


tampilan sebagai berikut, atur sedemikian hingga, agar tampilan menjadi :

3. Klik 2x pada MainMenu1 -> File -> Open, setelah muncul halaman editor,
tuliskan listing program berikut :

procedure TForm1.Open1Click(Sender: TObject);


begin
if not OpenPictureDialog1.Execute then exit else
begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:= 'Image Processing - '+
ExtractFileName (OpenPictureDialog1.Filename);
end;

if gambar.PixelFormat <> pf24bit then


gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
end;
4. Kembali ke Form1, Klik 2x pada MainMenu1 Image Processing Konvolusi,
setelah muncul halaman editor, tuliskan listing berikut :

procedure TForm1.Konvolusi1Click(Sender: TObject);


const konvolusi : array[0..1,0..2,0..2]of smallint =
(((1,1,1),(1,1,1),(1,1,1)),
((0,0,0),(0,0,0),(0,0,0)));
const konvolusi2 : array[0..1,0..2,0..2]of smallint =
(((0,-1,0),(-1,4,-1),(0,-1,0)),
((0,0,0),(0,0,0),(0,0,0)));
const konvolusi3 : array[0..1,0..2,0..2]of smallint =
(((1,3,1),(3,16,3),(1,3,1)),
((0,0,0),(0,0,0),(0,0,0)));
var row
: array[0..8]of pbytearray;
col
: pbytearray;
x,y
: smallint;
i,j,k,p
: smallint;
image
: tbitmap;
sum,jum
: longint;
begin
if RadioButton1.Checked then
begin
P:=-120;
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+(konvolusi[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+((konvolusi)[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('konvulusi1.bmp');
Image.free;
end;
if RadioButton2.Checked then
begin
P:=-120;
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+(konvolusi2[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+((konvolusi2)[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('konvulusi1.bmp');
Image.free;
end;
if RadioButton3.Checked then
begin
P:=-120;
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+(konvolusi3[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+((konvolusi3)[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('konvulusi1.bmp');
Image.free;
end;
end;

5. Klik 2x pada MainMenu1 -> File -> Exit, setelah muncul halaman editor,
tuliskan listing program berikut :

procedure TForm1.Exit1Click(Sender: TObject);


begin
close;
end;
6. Eksekusikan program dengan menekan F9 (Run) pada keyboard, maka hasil
yang di dapatkan adalah :

6.4 Flowchart Program

6.5 Hasil Program


LPF :

HPF:

SMOOTHING :

6.6 Analisa Percobaan


Dari percobaan diatas bisa dianalisa :

Semakin besar ukuran image yang akan dikonvolusi maka akan semakin
lama proses konvolusi yang dilakukan.
Matriks pada konstanta konvolusi akan mempengaruhi hasil image baru.

6.7 Kesimpulan
Pada percobaan diatas bisa diambil kesimpulan :

Didapatkan hasil gambar yang berbeda pada setiap matriks yang


digunakan, yaitu
((1,1,1),(1,1,1),(1,1,1)), ((0,-1,0),(-1,4,-1),(0,-1,0)),
((1,3,1),(3,16,3),(1,3,1)).

Anda mungkin juga menyukai