Konvolusi Image
Konvolusi adalah salah satu
proses filtering image yang sering dilakukan pada proses pengolahan gambar.
Pada MATLAB terdapat banyak sekali cara yang dapat dilakukan untuk melakukan
proses konvolusi. Proses konvolusi dilakukan dengan menggunakan matriks yang
biasa disebut mask yaitu matriks yang berjalan sepanjang proses dan
digunakan untuk menghitung nilai representasi lokal
dari beberapa piksel pada image.
Disini kita akan menghitung nilai biner pada saat sebelum konvolusi dan setelah konvolusi.
Contoh implementasi sebelum konvolusi :
Nah, sekarang kita lihat nilai biner gambar sebelum di konvolusi :
Contoh implementasi konvolusi yaitu:
Nah, sekarang kita lihat nilai biner gambar setelah di konvolusi :
Setelah melihat nilai biner sebelum dan sesudah konvolusi nah sekarang kita lihat perbedaan gambar setelah dan sebelum konvolusi :
Gambar sebelum konvolusi :
Gambar setelah konvolusi :
Nah sekarang kita buat cara penghitungan menggunakan matlab untuk membuktikan hasil konvolusi caranya:
Source Code:
x=input ('masukan banyak baris');
y=input ('masukan banyak kolom');
for i=1:x
for j=1:y
im(i,j)=input('masukan nilai baris');
end
end
%============ inisialisasi input operasi =================
choice =input('type 1 for correlation and 2 for convolution');
window = input('enter the window size');
if choice==1
for i=1:window*window
w(i)=input('enter the window value rowvise');
end
end
if choice==2
for i=1:window*window
w(window*window-i+1)=input('input the window value rowvise');
end
end
%=================== rumus =======================
[a b] = size(im);
m = a+2*(window-1);
n = b+2*(window-1);
imfull =zeros(m,n);
imout=zeros(m,n);
imfinal=zeros(a,b);
for i=1:m
for j=1:n
if (i>=window && i<=m-window+1 && j>=window && j<=n-window+1);
imfull(i,j)=im(i-window+1, j-window+1);
end
end
end
for k=1: m-window+1
for l=1:n-window+1
count=1;
isum =0;
for i=k:k+window-1
for j=1:1+window-1
isum=w(count)*imfull(i,j)+isum;
count=count+1;
end
end
imout(k+1,l+1)=isum;
end
end
%================ output ======================
for i=1:a
for j=1:b
imfinal(i,j)=imout(i+window-1,j+window-1);
end
end
im
count =1;
for i=1:window
for j=1:window
win(i,j)=w(count);
count=count+1;
end
end
win
imfinal
Hasilnya :
Source Code:
x=input ('masukan banyak baris');
y=input ('masukan banyak kolom');
for i=1:x
for j=1:y
im(i,j)=input('masukan nilai baris');
end
end
%============ inisialisasi input operasi =================
choice =input('type 1 for correlation and 2 for convolution');
window = input('enter the window size');
if choice==1
for i=1:window*window
w(i)=input('enter the window value rowvise');
end
end
if choice==2
for i=1:window*window
w(window*window-i+1)=input('input the window value rowvise');
end
end
%=================== rumus =======================
[a b] = size(im);
m = a+2*(window-1);
n = b+2*(window-1);
imfull =zeros(m,n);
imout=zeros(m,n);
imfinal=zeros(a,b);
for i=1:m
for j=1:n
if (i>=window && i<=m-window+1 && j>=window && j<=n-window+1);
imfull(i,j)=im(i-window+1, j-window+1);
end
end
end
for k=1: m-window+1
for l=1:n-window+1
count=1;
isum =0;
for i=k:k+window-1
for j=1:1+window-1
isum=w(count)*imfull(i,j)+isum;
count=count+1;
end
end
imout(k+1,l+1)=isum;
end
end
%================ output ======================
for i=1:a
for j=1:b
imfinal(i,j)=imout(i+window-1,j+window-1);
end
end
im
count =1;
for i=1:window
for j=1:window
win(i,j)=w(count);
count=count+1;
end
end
win
imfinal
Hasilnya :
Nah sekarang kita buat cara penghitungan manualnya untuk membuktikan hasil konvolusi benar atau tidak caranya :
1. ambil saja untuk membuktikan matriks paling atas yaitu
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
2. Lalu kita kalikan dengan matriks yang kita masukan dalam program
-1 | -1 | -1 |
-1
| 8 | -1 |
-1 | -1 | -1 |
Rumusnya :
a | b | c | r | s | t | |
d | e | e |
*
|
u
|
v
|
w
|
f | g | h |
x
|
y
|
z
|
e = v*e + z*a + y*b + x*c + w*d + u*e + t*f + s*g + r*h
Hasilnya :
0
|
0
|
0
|
-1
|
-1
|
-1
|
|
0
|
0
|
0
|
*
|
-1
|
8
|
-1
|
0
|
0
|
0
|
-1
|
-1
|
-1
|
0 = 8*0 + (-1)*0 + (-1)*0 + (-1)*0 + (-1)*0 + (-1)*0 + (-1)*0 + (-1)*0 + (-1)*0 = 0
lakukan sampai semua kolom memiliki nilai konvolusinya :)
setelah dilakukan penghitungan seperti rumus diatas ternyata hasil penghitungan konvolusi sama yaitu
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
terkait dengan Pengolahan Citra, bisa diunduh artikel berikut http://repository.gunadarma.ac.id/bitstream/123456789/1366/1/51407001.pdf
BalasHapusterima kasih mba hanum :)
BalasHapus