teknik pengolahan citra kuliah 7 – transformasi · pdf fileteknik pengolahan citra...

17
TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi Fourier Indah Susilawati, S.T., M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika Fakultas Teknik dan Ilmu Komputer Universitas Mercu Buana Yogyakarta 2009

Upload: nguyenthuy

Post on 07-Feb-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

TEKNIK PENGOLAHAN CITRA

Kuliah 7 – Transformasi Fourier

Indah Susilawati, S.T., M.Eng.

Program Studi Teknik Elektro

Program Studi Teknik Informatika Fakultas Teknik dan Ilmu Komputer

Universitas Mercu Buana Yogyakarta 2009

Page 2: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

KULIAH 7

TEKNIK PENGOLAHAN CITRA

TRANSFORMASI FOURIER

Transformasi Fourier merupakan salah satu dasar penting dalam pengolahan citra,

dapat memproses dengan efisien dan lebih cepat. Dibandingkan dengan linear spatial

filtering, maka transformasi Fourier lebih cepat (terutama jika ukuran filternya besar).

Transformasi Fourier memungkinkan pengolahan dengan cara mengisolasi satu

“frekuensi” tertentu pada citra, sehingga dapat digunakan untuk menerapkan LPF dan

HPF dengan ketelitian yang cukup tinggi.

Latar Belakang

Suatu fungsi periodik dapat dinyatakan sebagai jumlahan fungsi sinus dan cosinus

yang bervariasi amplitude dan frekuensinya. Gambar berikut merupakan contoh suatu

fungsi dan dekomposisinya menjadi fungsi-fungsi sinus.

Page 3: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Beberapa fungsi mungkin hanya terdekomposisi menjadi sejumlah terhingga

fungsi sinus dan cosinus, tetapi juga terdapat fungsi yang mempunyai tak terhingga

fungsi dekomosisi, misalnya fungsi gelombang kotak (square wave) berikut.

Pada gambar berikut, diambil empat fungsi dekomposisi yang pertama dan kemudian

dijumlahkan. Semakin banyak fungsi dekomposisi yang dijumlahkan, maka hasilnya

akan semakin mirip dengan fungsi aslinya (fungsi kotak).

Transformasi Fourier Diskret Satu Dimensi

Dalam fungsi diskret (sebagaimana pada pengolahan citra), maka hanya akan ada

sejumlah terhingga nilai sehingga juga hanya dibutuhkan sejumlah terhingga fungsi saja.

Misalkan terdapat suatu deret sbb.

1 1 1 1 -1 -1 -1 -1

Maka dapat dinyatakan dengan pendekatan diskret seperti gelombang kotak pada gambar

berikut. Pada gambar yang sama juga dapat dilihat bahwa gelombang kotak ini dapat

dinyatakan sebagai jumlahan dua fungsi sinus saja. Oleh karena pembahasan pengolahan

citra menggunakan citra digital maka hanya akan dibahas transformasi Fourier diskret

saja (DFT : Discrete Fourier Transform).

Page 4: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Definisi DFT Satu Dimensi

Misalkan terdapat deret sepanjang N yang dinyatakan sbg fx = [f0, f1, f2, ..., fN-1]

maka DFT dari deret tsb didefinisikan sbg

Fu = [F0, F1, F2, ..., FN-1]

dengan

Dan untuk Inverse Discrete Fourier Transform (IDFT) – nya adalah

∑−

=⎥⎦⎤

⎢⎣⎡=

1

02exp1 N

uux F

Nxui

Nf π

Page 5: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Fast Fourier Transform (FFT)

Alternatif lain untuk menghitung DFT (selain menggunakan rumusan di atas)

adalah menggunakan algoritma cepat yang dikenal dengan Fast Fourier Transform (FFT).

Dengan FFT maka waktu yang dibutuhkan untuk menghitung DFT menjadi lebih cepat.

Metode FFT bekerja secara rekursif dengan membagi vektor asli menjadi dua

bagian, menghitung FFT masing-masing bagian, dan kemudian menggabungkannya. Hal

ini mengindikasikan bahwa FFT akan menjadi sangat efisien jika panjang vektor

merupakan bilangan pangkat 2. Tabel berikut memuat perbandingan jumlah operasi

perkalian dalam perhitungan DFT menggunakan rumus DFT secara langsung dan

menggunakan algoritma FFT.

DFT Dua Dimensi

Dalam dua dimensi, DFT mempunyai input berupa matriks dan akan

menghasilkan output berupa matriks dengan ukuran yang sama. Jika input adalah f(x,y)

maka outputnya dapat dinyatakan dengan F(u,v). Matriks F(u,v) disebut transformasi

Fourier dari f (x,y) dan ditulis sbb.

Jika diketahui fungsi F(u,v), maka matriks f(x,y) dapat dicari dengan Inverse DFT, yaitu

Dalam satu dimensi, suatu fungsi dapat dinyatakan sebagai jumlahan fungsi sinus

dan cosinus. Oleh karena citra adalah fungsi dua dimensi f(x,y), maka adalah beralasan

jika fungsi tsb dinyatakan sebagai

Page 6: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Definisi DFT untuk 2 dimensi mirip dengan pada satu dimensi. Dengan masukan

f(x,y) berukuran M x N (sehingga x = 0, 1, ... M-1 dan y = 0, 1, 2, ..., N-1) maka

Sifat-Sifat Transformasi Fourier Dua Dimensi

Similarity (Kemiripan). Dari rumusan DFT dan IDFT dua dimensi di atas, maka

sekilas terlihat bahwa keduanya sangat mirip kecuali faktor skala 1/MN pada rumus

IDFT dan tanda negatif pada eksponen dalam rumus DFT. Hal ini menunjukkan bahwa

algoritma yang sama dapat diterapkan untuk mencari DFT dan IDFT hanya dengan

sedikit penyesuaian saja.

DFT Sebagai Filter Spasial. Perhatikan bahwa nilai

merupakan nilai yang tidak bergantung pada nilai f atau F. Ini berarti bahwa nilai tsb

dapat dihitung terlebih dahulu dan kemudian meletakkannya di depan tanda sigma. Ini

juga berarti bahwa setiap nilai F(u,v) dapat diperoleh dengan mengalikan setiap nilai

f(x,y) dengan suatu nilai tertentu, dan menjumlahkan semua hasilnya. Hal ini sama

seperti yang dilakukan pada proses linear spatial filtering, yaitu mengalikan semua

elemen di bawah mask dan kemudian menjumlahkan hasilnya. Dengan demikian, DFT

dapat dipandang sebagai filter spasial linear dengan ukuran sama besar dengan citra yang

diolah.

Separabilitas. Perhatikan bahwa elemen filter transformasi Fourier dapat

dinyatakan sebagai hasil kali sbb.

Page 7: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Hasil kali yang pertama

hanya bergantung pada x dan u dan independen terhadap y dan v. Sebaliknya hasil kali

yang kedua

hanya bergantung pada y dan v dan independen terhadap x dan u. Hal ini berarti rumusan

di atas dapat dipecah menjadi rumusan yang lebih sederhana yang mengolah masing-

masing baris dan kolom pada matriks. DFT dan IDFT untuk matriks baris adalah sbb.

Jika variabel x dan u diganti dengan y dan v maka didapatkan rumusan DFT dan IDFT

untuk matriks kolom.

DFT dua dimensi dapat diperoleh dengan menggunakan sifat separabilitas ini;

untuk menghitung DFT sebuah matriks, dapat dihitung DFT seluruh baris dan kemudian

menghitung DFT semua kolom dari matriks hasilnya. Dapat juga menghitung DFT

seluruh kolom dan kemudian menghitung DFT semua baris dari matriks hasilnya.

Perhatikan gambar berikut.

Page 8: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Linearitas. DFT mempunyai sifat linear, yaitu DFT dari jumlahan dua atau lebih

fungsi adalah jumlahan dari DFT masing-masing fungsi tsb; DFT dari perkalian skalar

suatu fungsi adalah DFT dari fungsi tsb dikalikan dengan skalar yang sama. Atau

dinyatakan,

Dengan f dan g adalah matriks dan k adalah skalar. Sifat ini sangat penting saat

menangani degradasi citra, misalnya citra berderau yang dimodelkan sbg

d = f + n

dengan f adalah citra tak berderau, n adalah derau dan d adalah citra berderau. Maka

dengan transformasi Fourier citra berderau dapat dinyatakan

Dan sebagaimana yang akan dibahas nanti, derau yang tampak pada DFT membuatnya

lebih mudah untuk dihilangkan.

Koefisien DC. Nilai F(0,0) pada DFT disebut koefisien DC. Jika u = v = 0, maka

persamaan atau rumusan DFT di atas menghasilkan

Nilai di atas sama dengan jumlahan semua elemen pada matriks asli (yang diolah).

Pergeseran (Shifting). Untuk kemudahan dalam menampilkan (display), akan

lebih mudah jika koefisien DC berada di pusat matriks. Hal ini akan terjadi jika semua

elemen matriks f(x,y) dikalikan dengan (-1)x+y sebelum dilakukan transformasi. Gambar

berikut memperlihatkan pergeseran matriks menggunakan metode ini. Koefisien DC

ditunjukkan dengan kotak kecil berwarna hitam di sudut kiri atas submatriks A.

Page 9: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Simetri Konjugat. Analisis definisi transformasi Fourier mengarahkan ke sifat

simetri; jika diambil substitusi u = -u dan v = -v maka

F(u,v) = F*(-u + pM, -v + qN)

untuk sebarang bilangan bulat p dan q. Hal ini berarti bahwa setengah hasil transformasi

merupakan “cermin” konjugat dari setengah yang lain. Dapat dipandang bahwa setengah

bagian atas adalah “cermin” konjugat dari setengah bagian bawah atau setengah bagian

kiri adalah “cermin” konjugat dari setengah bagian kanan. Simetri berarti bahwa

informasi berada di setengah hasil transformasi, setengahnya lagi adalah redundant

(mubazir). Gambar berikut memperlihatkan simetri dalam DFT yang telah digeser; kotak

kecil berwarna hitam menunjukkan posisi koefisien DC.

Menampilkan Hasil Transformasi

Setelah melakukan transformasi Fourier citra f(x,y) menjadi F(u,v) maka perlu

dilihat hasilnya. Elemen F(u,v) merupakan bilangan kompleks sehingga tidak dapat

Page 10: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

ditampilkan secara langsung, namum dapat dilihat magnitude-nya yaitu | F(u,v) |. Berikut

cara atau pendekatan yang dapat dilakukan untuk menampilkan hasil tranformasi Fourier.

1. Temukan nilai terbesar dari | F(u,v) | yaitu m. Nilai ini biasanya adalah koefisien

DC yang dihasilkan dari transformasi. Gunakan imshow.m untuk

melihat | F(u,v) | / m.

2. Gunakan mat2gray.m untuk melihat | F(u,v) | secara langsung.

Permasalahan lain adalah bahwa koefisien DC biasanya sangat besar dibandingkan

dengan nilai-nilai yang lain. Hal ini mempunyai pengaruh pada tampilan hasil

transformasi yaitu berupa satu titik putih dikelilingi warna hitam. Satu cara untuk

merentangkan nilainya adalah dengan mengambil logaritma dari | F(u,v) | dan

menampilkan

Log ( 1 + | F(u,v) | )

Tampilan magnitude transformasi Fourier disebut spektrum dari transformasi tersebut.

Transformasi Fourier Dalam MATLAB

Beberapa fungsi Matlab yang sesuai adalah

• fft.m untuk memperoleh DFT dari sebuah vektor

• ifft.m untuk memperoleh inverse DFT dari sebuah vektor

• fft2.m untuk memperoleh DFT dari sebuah matriks

• ifft2.m untuk memperoleh inverse DFT dari sebuah matriks

• fftshift.m untuk menggeser hasil transformasi sehingga koefisien DC berada di

tengah

Contoh 1

Membuat matriks 8 x 8 dengan semua elemennya sama dengan 1, kemudian mencari

DFT-nya dengan metode FFT. Hasilnya adalah matriks dengan koefisien DC dan nol

pada semua elemen yang lain (karena matriks masukan elemennya sama, tidak ada

perubahan)

>> a = ones (8);

>> fft2 (a)

Hasilnya adalah

Page 11: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

ans =

64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Contoh 2

Membentuk matriks yang mengandung perubahan nilai dan melihat DFT-nya.

>> a = [100 200; 100 200];

>> b = repmat (a, 4, 4)

b =

100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200 100 200

>> bfft = fft2 (b)

bfft =

9600 0 0 0 -3200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Matriks b dapat dinyatakan dengan jumlahan dua matriks yaitu sebuah matriks konstan

yang semua elemennya 150 dan sebuah matriks yang berubah-ubah nilainya sebesar -50

dan 50 dari kiri ke kanan. Matriks konstan akan menghasilkan koefisien DC yang bernilai

64 x 150 = 9600.

Page 12: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Contoh 3

Membuat matriks dengan satu tebing step tunggal dan mencari DFT-nya.

>> a = [zeros(8, 4) ones(8, 4)]

a =

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

>> afft = fft2 (a)

afft =

Columns 1 through 5

32.0000 -8.0000 +19.3137i 0 -8.0000 + 3.3137i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 6 through 8 -8.0000 - 3.3137i 0 -8.0000 -19.3137i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Untuk menempatkan koefisien DC di tengah dan karena hasil transformasi memuat nilai-

nilai kompleks maka dicari magnitude-nya sekaligus dibulatkan.

>> afft = fftshift (afft)

>> round (abs(afft))

Page 13: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 21 32 21 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Koefisien DC merupakan jumlahan semua nilai matriks a dan nilai-nilai yang lain

merupakan koefisien-koefisien fungsi sinus yang diperlukan untuk membentuk tebing

pada matriks.

Transformasi Fourier Citra

Akan dibuat beberapa citra sederhana dan melihat hasil transformasi Fourier-nya.

Contoh 1

>> a = [zeros (256, 128) ones (256, 128)];

>> af = fftshift (fft2 (a) );

Untuk melihat spektrumnya dapat dipilih dari dua cara berikut:

1. af1 = log ( 1 + abs (af) );

imshow (af1/af1(129,129))

Proses ini didasarkan pada kenyataan bahwa setelah penggeseran maka koefisien

DC berada pada posisi x = y = 129. Nilai direntangkan dengan fungsi log dan

membagi nilainya dengan koefisien DC.

2. imshow (mat2gray ( log (1 + abs (af) ) ) )

Fungsi mat2gray.m secara otomatis melakukan scaling untuk menampilkan citra.

Untuk kemudahan maka akan dibuat satu fungsi sederhana untuk melihat hasil

transformasi. Berikut adalah contoh fungsinya.

Page 14: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

function fftshow (f, type) if nargin < 2, type = 'log'; end if (type == 'log') f1 = log (1 + abs(f)); fm = max (f1(:)); imshow (im2uint8(f1/fm)) elseif (type == 'abs') fa = abs(f); fm = max (fa(:)); imshow (fa/fm) else error ('Type must be log or abs'); end;

Berikut adalah citra dari matriks a dan hasil transformasi Fourier-nya.

Citra matriks a Transf. Fourier matriks a

Citra matriks b Transf. Fourier matriks b

Page 15: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Contoh 2

Membuat sebuah kotak dan melihat transformasi Fourier-nya.

clear all; clc; a = zeros (256, 256); a(78:178, 78:178) = 1; imshow (a) af = fftshift(fft2(a)); figure, fftshow(af,'abs')

Sebuah kotak dan DFT-nya

Contoh 3

Sebuah kotak yang diputar 45° dan melihat DFT-nya.

clear all; clc; [x,y] = meshgrid(1:256, 1: 256) b = (x+y < 329) & (x+y > 182) & (x-y > -67) & (x-y < 73) imshow (b) bf = fftshift(fft2(b)); figure, fftshow(bf)

Page 16: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Sebuah kotak yang diputar 45° dan DFT-nya

Contoh 4

Membuat sebuah lingkaran dan melihat DFT-nya.

clear all; clc; [x,y] = meshgrid(-128:127, -128: 127) z = sqrt(x.^2 + y.^2) c = (z<15) imshow (c) cf = fftshift(fft2(c)); figure, fftshow(cf,'log')

Sebuah lingkaran dan DFT-nya

Page 17: TEKNIK PENGOLAHAN CITRA Kuliah 7 – Transformasi · PDF fileTEKNIK PENGOLAHAN CITRA Kuliah 7 ... M.Eng. Program Studi Teknik Elektro Program Studi Teknik Informatika ... Gambar berikut

Contoh 5

Citra einstein.jpg dan DFT-nya.

Citra einstein.jpg dan DFT-nya

Citra einstein.jpg dengan derau periodik dan DFT-nya