Teknik Konvolusi & Transformasi Fourier (FT)


Teknik Konvolusi
Operasi yang mendasar dalam pengolahan citra adalah operasi konvolusi.
Konvolusi 2 buah fungsi f(x) dan g(x) didefenisikan sebagai berikut :
h(x) = f(x) * g(x) =
Tanda * menyatakan operator konvolusi, dan peubah (variabel) a adalah peubah bantu (dummy variabel).
Untuk fungsi diskrit, konvolusi didefenisikan sebagai.
h(x) = f(x) * g(x) =
Pada operasi konvolusi di atas, g(x) disebut kernel konvolusi atau kernel penapis (filter).
Kernel g(x) merupakan suatu jendela yang dioperasikan secara bergeser pada sinyal masukan f(x), yang dalam hal ini, jumlah perkalian kedua fungsi pada setiap titik merupakan hasil konvolusi yang dinyatakan dengan keluaran h(x).
Ilustrasi konvolusi adalah sebagai berikut : Misalkan fungsi f(x) dan g(x) seperti gambar 1 dan 2, langkah-langkah  perhitungan hasil konvolusi ditunjukkan mulai dari gambar 3 sampai dengan gambar 6, yaitu :
 Fungsi Sinyal Masukan
Fungsi Kernel atau Filter
Fungsi g(-a)
Fungsi g(x-a)
Fungsi f(a)g(x-a) untuk 0 <= x <=1
Fungsi f(a)g(x-a) untuk 1<= x <=2
Ilustrasi Proses Konvolusi
Contoh konvolusi yang lain adalah dengan fungsi delta. Ada dua macam fungsi delta : delta Dirac dan delta Kronecker.
1.      Konvolusi Pada Fungsi Dwimatra
Untuk fungsi dengan dua peubah (fungsi dua dimensi atau dwimatra), operasi konvolusi didefenisikan sebagai berikut :
a. Untuk fungsi malar
b. Untuk fungsi diskrit
Fungsi penapis g(x,y)_ disebut juga convolution filter, convolution mask, convolution kernel, atau template. Dalam ranah diskrit kernel konvolusi dinyatakan dalam bentuk matriks (umumnya 3 x 3). Ukuran matrik ini biasanya lebih kecil dari ukuran citra. Setiap elemen matriks disebut koefisien konvolusi.
Ilustrasi konvolusi ditunjukkan pada gambar berikut
Operasi konvolusi dilakukan dengan menggeser kernel konvolusi pixel per pixel. Hasil konvolusi disimpan dalam matriks yang baru.
Contoh : Misalkan citra f (x,y) yang berukuran 5 x 5 dan sebuah kernel atau mask yang berukuran 3 x 3 masing-masing adalah sebagai berikut :
Keterangan : Tanda     menyatakan posisi (0,0) dari kernel
Operasi antara citra f(x,y) dengan kernel g(x,y)
f(x,y) * g(x,y)
Langkah penyelesaiannya adalah sebagai berikut :
1.      Tempatkan kernel pada sudut kiri atas, kemudian hitung nilai pixel pada posisi (0,0) dari kernel :
Hasil konvolusi =(0 x 4) + (-1 x 4) + (0 x 3) + (-1 x 6) + (4 x 6) + (-1 x 5) + (0 x 5) + (-1 x 6) + (0 x 6) = 3
2.      Geser kernel satu pixel ke kanan, kemudian hitung nilai pixel pada posisi (0,0) dari kernel :
Hasil konvolusi = 0
3.      Geser lagi kernel satu pixel kekanan, keamudian hitung nilai pixel pada posisis (0,0) seperti langkah sebelumnya, didapat :
Selanjutnya geser kernel satu pixel ke bawah, lalu mulai lagi melakukan konvolusi dari sisi kiri citra, setiap kali konvolusi, geser kernel satu pixel ke kanan.Setelah baris ketiga dikonvolusi, maka didapat hasil seperti gambar berikut :
Catatan :
Jika hasil konvolusi menghasilkan nilai pixel negatif, maka nilai tersebut dijadikan nol, sebaliknya jika hasil konvolusi menghasilkan nilai pixel yang lebih besar dari nilai maksimum, maka nilai tersebut dijadikan ke nilai keabuan maksimum.
Untuk pixel tepi tidak dikonvolusi, jadi  nilainya tetap sama seperti citra asal, Sehingga hasil secara keseluruhan adalah seperti gambar berikut :
Masalah timbul bila pixel yang dikonvolusi adalah pixel pinggir (border), karena beberapa koefisien konvolusi tidak dapat diposisikan pada pixel-pixel citra (efek "menggantung"), seperti contoh di bawah ini :


Masalah "menggantung" seperti ini selalu terjadi pada pixel-pixel pinggir kiri, kanan, atas, dan bawah. Solusi untuk masalah ini adalah [SID95] :

1. Pixel-pixel pinggir diabaikan, tidak di-konvolusi. Solusi ini banyak dipakai di dalam pustaka fungsi-fungsi pengolahan citra. Dengan cara seperti ini, maka pixel-pixel pinggir nilainya tetap sama seperti citra asal. Gambar 14 memperlihatkan hasil konvolusi yang dalam hal ini nilai pixel-pixel pinggir sama dengan nilai pixel semula.
2. Duplikasi elemen citra, misalnya elemen kolom pertama disalin ke kolom M+1, begitu juga sebaliknya, lalu konvolusi dapat dilakukan terhadap pixelpixel pinggir tersebut

3. Elemen yang ditandai dengan “?” diasumsikan bernilai 0 atau konstanta yang lain, sehingga  konvolusi pixel-pixel pinggir dapat dilakukan

Solusi dengan ketiga pendekatan di atas mengasumsikan bagian pinggir citra lebarnya sangat kecil (hanya satu pixel) relatif dibandingkan denagn ukuran citra, sehingga pixel-pixel pinggir tidak memperlihatkan efek yang kasat mata
Pixel - pixel pinggir (yang tidak diarsir) tidak dikonvolusi
Algoritma konvolusi citra N x M dengan dengan mask atau kernel yang berukuran 3 · 3 ditunjukkan pada Algoritma 5.1. Pixel yang dikonvolusi adalah elemen (i, j). Delapan buah pixel yang bertetangga dengan pixel (i, j) diperlihatkan pada dibawah ini

Pixel-pixel pinggir (yang tidak diarsir) tidak dikonvolusi
Konvolusi berguna pada proses pengolahan citra seperti :
1.      Perbaikan kualitas citra (image enhancement)
2.      Penghilangan derau.
3.      Penghalusan/pelembutan citra.
4.      Deteksi tepi, penajaman tepi.
5.      Dll.
Contoh Teknik Konvolusi
Citra awal
Citra hasil konvolusi
Proses olah citranya sebagai berikut:
Sample yang digunakan adalah matriks 5×5
Citra hasil konvolusi
Proses penghitungan sample matriks 5×5 secara manual :
Rumus yang digunakan f(x)*g(x)
Nilai mask yang dipakai:
Transformasi Fourier (FT)
Pada tahun 1822, Joseph Fourier, ahli matematika dari Prancis menemukan bahwa: setiap fungsi periodik (sinyal) dapat dibentuk dari penjumlahan gelombang-gelombang sinus/cosinus.
Contoh : Sinyal kotal merupakan penjumlahan dari fungsi-fungsi sinus berikut (lihat gambar pada halaman berikut)
f(x) = sin(x) + sin(3x)/3 + sin(5x)/5 +
sin(7x)/7 + sin(9x)/9
Fungsi kotak sebagai penjumlahan fungsi-fungsi sinus
Cobakan juga program matlab berikut untuk melihat sampai batas n berapa fungsi yang dihasilkan sudah berbentuk fungsi kotak.
function kotak(n)
t = 0:pi/200:8*pi;
            kot = sin(t);
            for i = 3 : 2: n
            kot = kot + (sin(i*t))/i;
            end
plot(kot)
Rumus FT – 1 dimensi
Rumus FT kontinu 1 dimensi
Rumus FT diskret 1 dimensi
Contoh FT 1 dimensi
Misalkan kita memiliki sinyal x(t) dengan rumus sbb:
x(t) = cos(2*pi*5*t) + cos(2*pi*10*t) +
cos(2*pi*20*t) + cos(2*pi*50*t)
Sinyal ini memiliki empat komponen frekuensi yaitu 5,10,20,50
Contoh sinyal 1 Dimensi x(t)

FT dari sinyal tersebut
Contoh Penghitungan FT
Hasil penghitungan FT biasanya mengandung bilangan real dan imajiner
Fourier Spectrum didapatkan dari magnitude kedua bilangan tersebut shg|F(u)| = [2(u) + I2(u)]1/2
Untuk contoh di halaman sebelumnya, Fourier Spectrumnya adalah sebagai berikut:
|F(0)| = 3.25           |F(1)| =  [(-0.5)2+(0.25)2]1/2 = 0.5590
|F(2)| = 0.25           |F(3)| =  [(0.5)2+(0.25)2]1/2 = 0.5590
Rumus FT – 2 dimensi
Contoh FT 2 Dimensi

Untuk menampilkan nilai FT suatu citra, karena keterbatasan display, seringkali digunakan nilai D(u,v)= c log [1 + |F(u,v)|]

Sifat-sifat FT 2 dimensi
Separable :
Pemrosesan FT 2 dimensi dapat dilakukan dengan melakukan FT 1 dimensi terhadap kolom, kemudian dilanjutkan dengan FT 1 dimensi terhadap baris
Translasi :

Periodik
FT dan IFT bersifat periodik dengan periode N (N adalah jumlah titik)
Rotasi
Jika kita merotasikan f(x,y) sebanyak θ0. maka F(u,x) juga akan berotasi sebanyak θ0, demikian pula sebaliknya.
Distributif
FT dan IFT bersifat distributif terhadap penjumlahan tapi tidak terhadap perkalian
Penskalaan
Nilai rata-rata
Sumber :





Komentar

Postingan populer dari blog ini

Operasi-operasi Dasar Pengolahan Citra Digital

Struktur Data untuk Citra Digital

Pemampatan Citra