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 :
- Menempatkan kernel pada sudut kiri atas, kemudian hitung nilai pixel pada posisi (0,0) dan kernel hasil = (3)
- Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel pada posisi (0,0) dan kernel hasil = (0)
- Selanjutnya dengan cara yang sama geser ke kanan dan seterusnya
- Geser kernel satu pixel ke bawah, lakukan perhitungan seperti di atas
- Nilai pixel citra tepi tidak berubah
- 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
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