Selasa, 28 Februari 2012

Tugas Pengolahan Citra Konvolusi


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 :


     














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 :


abc

rst
dee
*
u
v
w
fgh

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

2 komentar:

  1. terkait dengan Pengolahan Citra, bisa diunduh artikel berikut http://repository.gunadarma.ac.id/bitstream/123456789/1366/1/51407001.pdf

    BalasHapus