Jumat, 21 Oktober 2016

Pengertian Teori Konvolusi

TEORI KONVOLUSI

         Konvolusi (convolution) adalah sebuah proses dimana citra dimanipulasi dengan menggunakaneksternal mask / subwindows untuk menghasilkan citra yang baru. Sedangkan Filtering
tanpa menggunakan ekternal mask tetapi hanya menggunakan pixel tetangga untuk mendapatkan pixel yang baru.

Konvolusi sangat banyak dipergunakan dalam pengolahan citra untuk memperhalus (smoothing), menajamkan (crispening), mendeteksi tepi (edge detection), serta efek lainnya.

1. Embossing
Embossing yaitu membuat citra seolah diukir pada permukaaan selembar nikel. Koefisien jendela konvolusi memiliki bobot tengah bernilai 0 & jumlah seluruh bobot = 0.

2. Blurring
Blurring (Pengaburan) yaitu filter spasial low-pass yang melenyapkan detil halus dari suatu citra. Pengaburan dicapai melalui konvolusi dari seluruh koefisien mask bernilai sama. Blurring ini perataan nilai pixel-pixel tetangga, makin besar ukuran mask maka makin besar efek pengaburan

3. Sharpening
Sharpening (Penajaman) yaitu memperjelas detil suatu citra(menambah kontras) dengan penjumlahan atas citra tepi dengan citra aslinya maka bagian tepi objek akan terlihat berbeda dengan latarnya, sehingga citra terkesan lebih tajam.

4. Edge Detection
Deteksi tepi yaitu proses menentukan lokasi titik-titik yang merupakan tepi objek.


Konvolusi berguna pada proses pengolahan citra seperti :
  • Perbaikan kualitas citra (image enhancment)
  • penghilang derau (noise)
  • mengorangi erotan (mencong/serong)
  • penghalusan / pembulatan citra
  • dll

Secara matematis, konvolusi adalah integral yang mencerminkan jumlah lingkaran dari sebuah sudut fungsi F yang digeser atas fungsi g sehingga menghasilkan fungsi h. Konvolusi dilambangkan dengan arsterik (*). Sehingga, F*g=h berarti fungsi F dikonvolusikan dengan fungsi g menghasilkan fungsi h.

konvolusi dua buah fungsi F(x) dan g(x) di definiskan sebagai berikut :
integral dari -tak hingga sampai tak terhingga. Untuk fungsi diskrit, konvolusi di definisikan sebagai :

g(x) disebut dengan kernel konvolusi (filter). Kernel g(x) merupakan jendela yang dioperasikan secara bergeser pada sinyal masukan F(x). Hasil konvolusi dinyatakan dengan keluaran h(x).

Ilustrasi Konvolusi : F(i,j)

F(i,j) = AP1+BP2+CP3+DP4+EP5+FP6+GP7+HP8+IP9

Contoh, misal citra F(x,y) yang berukuran 5x5 sebuah kernel dengan 3x3 matriks sebagai berikut :
Tahapan menghitung hasil konvolusi :

  1. Menempatkan kernel pada sudut kiri atas, kemudian hitung nilai pixel pada posisi (0,0) dan kernel hasil = (3)
  2. Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel pada posisi (0,0) dan kernel hasil = (0)
  3. Selanjutnya dengan cara yang sama geser ke kanan dan seterusnya
  4. Geser kernel satu pixel ke bawah, lakukan perhitungan seperti di atas
  5. Nilai pixel citra tepi tidak berubah
  6. Sehingga di dapatkan hasil sebagai berikut


Hasil Print Screen dari aplikasi Konvolusi dengan Matlab (GUI)

Berikut adalah langkah-langkah yang diperlukan :

1. Buat layout GUI yang terdiri dari 2 axes, 2text, 2button seperti gambar dibawah ini.


2. Klik kanan pada button 'Buka Gambar', klik View Callbacks > Callback

3. Isikan source code untuk tombol "Buka Gambar" seperti dibawah ini:

4. Klik kanan pada button 'Histeq', klik View Callbacks > Callback. Lalu isikan kode berikut :



GIm = handles.data1;
numofpixels=size(GIm,1)*size(GIm,2);
imshow(GIm);
HIm=uint8(zeros(size(GIm,1),size(GIm,2)));
freq=zeros(256,1);
probf=zeros(256,1);
probc=zeros(256,1);
cum=zeros(256,1);
output=zeros(256,1);   

%freq counts the occurrence of each pixel value.
%The probability of each occurrence is calculated by probf.
for  i=1:size(GIm,1)
     for  j=1:size(GIm,2)   
        value=GIm(i,j);
        freq(value+1)=freq(value+1)+1;
        probf(value+1)=freq(value+1)/numofpixels;
     end
end

sum=0;
no_bins=255;

%The cumulative distribution probability is calculated. 
for  i=1:size(probf)
   sum=sum+freq(i);
   cum(i)=sum;
   probc(i)=cum(i)/numofpixels;
   output(i)=round(probc(i)*no_bins);   
end

for  i=1:size(GIm,1)
     for  j=1:size(GIm,2)
             HIm(i,j)=output(GIm(i,j)+1);  
     end   
end

axes(handles.axes2);
imshow(HIm);
handles.data2 = HIm;
guidata(hObject,handles);


figure( 'Position' ,get(0, 'screensize' ));
dat=cell(256,6);
for  i=1:256   
dat(i,:)={i,freq(i),probf(i),cum(i),probc(i),output(i)};      
end

columnname =   { 'Bin' ,  'Histogram' ,  'Probability' ,  'Cumulative histogram' , 'CDF' , 'Output' };
columnformat = { 'numeric' ,  'numeric' ,  'numeric' ,  'numeric' ,  'numeric' , 'numeric' };
columneditable =  [false false false false false false];
t = uitable( 'Units' , 'normalized' , 'Position' , ...
            [0.1 0.1 0.4 0.9],  'Data' , dat, ...
             'ColumnName' , columnname, ...
             'ColumnFormat' , columnformat, ...
             'ColumnEditable' , columneditable, ...
             'RowName' ,[]); 
    subplot(2,2,2); bar(GIm);
    title( 'Sebelum Histogram equalization' );
    subplot(2,2,4); bar(HIm);
    title( 'Sesudah Histogram equalization' );




5. Simpan project. Lalu coba jalankan aplikasi. Hasilnya akan seperti berikut

Coba masukan gambar, dengan menekan tombol Buka Gambar,


Kemudian lakukan histogram equalization dengan menekan tombol histeq, hasilnya akan seperti dibawah ini :







Daftar Pustaka


1. http://www.hanivinside.net/2016/10/histeq-pada-pengohan-citra.html
2. http://topikisblog.blogspot.co.id/2015/01/konvolusi-pada-pengolahan-citra.html
3. http://kuliah-kami.blogspot.co.id/2012/04/proses-konvolusi-untuk-mengolah-citra.html









2 komentar:

  1. Kak kalau boleh tau nama kakak siapa ? buat saya masukkin ke daftar pustaka

    BalasHapus
  2. Kalau filtering tidak menggunakan eksternal mask? Contohnya seperti apa? Apakah proses sharpening atau denoising bukan bukan proses filtering?

    BalasHapus