penerapan metode transformasi fourier untuk perbaikan citra digital, setyo nugroho

13
1 LAPORAN PENELITIAN JURUSAN TEKNIK INFORMATIKA STIKOM BALIKPAPAN PENERAPAN METODE TRANSFORMASI FOURIER UNTUK PERBAIKAN CITRA DIGITAL oleh Setyo Nugroho Jurusan Teknik Informatika STIKOM Balikpapan 2005

Upload: setyo-nugroho

Post on 07-Jun-2015

3.448 views

Category:

Documents


3 download

DESCRIPTION

Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho.Laporan Penelitian Jurusan Teknik Informatika STIKOM Balikpapan, 2005. Pada pengolahan citra digital, metode frequency domain dapat digunakan untukmenyelesaikan masalah-masalah tertentu yang sulit jika dilakukan dengan menggunakanmetode spatial domain. Pada metode frequency domain, informasi citra digitalditransformasikan lebih dulu dengan transformasi Fourier, kemudian dilakukan manipulasipada hasil transformasi Fourier tersebut. Setelah manipulasi selesai, dilakukan inversetransformasi Fourier untuk mendapatkan informasi citra kembali.Noise yang dapat dihilangkan atau dikurangi dengan metode ini adalah noise yangmenghasilkan pola tertentu pada spektrum Fouriernya, misalnya berupa garis lurus.

TRANSCRIPT

Page 1: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

1

LAPORAN PENELITIAN

JURUSAN TEKNIK INFORMATIKA

STIKOM BALIKPAPAN

PENERAPAN METODE TRANSFORMASI

FOURIER UNTUK PERBAIKAN CITRA

DIGITAL

oleh

Setyo Nugroho

Jurusan Teknik Informatika

STIKOM Balikpapan

2005

Page 2: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

2

DAFTAR ISI

LANDASAN TEORI............................................................................................. 2

Metode Frequency Domain..................................................................................... 2

Transformasi Fourier............................................................................................... 2

CARA PENELITIAN ........................................................................................... 5

HASIL DAN PEMBAHASAN ............................................................................. 8

PENUTUP............................................................................................................ 10

DAFTAR PUSTAKA.......................................................................................... 10

LAMPIRAN......................................................................................................... 11

Page 3: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

3

LANDASAN TEORI

Metode Frequency Domain

Secara umum, metode yang digunakan dalam pemrosesan citra digital dapat dibagi

menjadi dua kelompok, yaitu metode spatial domain dan metode frequency domain. Pada

metode spatial domain, pemrosesan dilakukan dengan cara memanipulasi nilai pixel dari

citra tersebut secara langsung.

Sedangkan pada pengolahan citra digital dengan metode frequency domain,

informasi citra digital ditransformasikan lebih dulu dengan transformasi Fourier,

kemudian dilakukan manipulasi pada hasil transformasi Fourier tersebut. Setelah

manipulasi selesai, dilakukan inverse transformasi Fourier untuk mendapatkan informasi

citra kembali.

Metode frequency domain ini dapat digunakan untuk menyelesaikan masalah-

masalah tertentu yang sulit jika dilakukan dengan menggunakan metode spatial domain.

Transformasi Fourier

Transformasi Fourier dari f(x), didefinisikan sebagai berikut:

di mana

Sebaliknya, jika diketahui F(u), maka f(x) dapat diperoleh dengan Inverse

Transformasi Fourier berikut:

Kedua persamaan di atas disebut dengan pasangan transformasi Fourier.

Jika f(x) adalah bilangan real, biasanya F(u) merupakan bilangan kompleks yang

bisa diuraikan menjadi:

F(u) = R(u) + jI(u)

dimana R(u) dan I(u) adalah komponen real dan imajiner dari F(u).

Persamaan di atas juga sering dituliskan sebagai:

F(u) = | F(u) | ejφu

∫∞

∞−

−= dxuxjxfuF ]2exp[)()( π

1−=j

∫∞

∞−

= duuxjuFxf ]2exp[)()( π

Page 4: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

4

dimana | F(u) | adalah magnitude dari F(u), yang diperoleh dari :

| F(u) | = [ R2(u) + I

2(u) ]

1/2

φ(u) = tan-1

[ I(u) / R(u) ]

Fungsi magnitude | F(u) | disebut juga spektrum Fourier dari f(x), dan φ(u) disebut dengan

sudut fase dari f(u).

Jika f(x) dijadikan diskrit maka persamaan transformasi Fourier diskrit adalah:

Karena pada pengolahan citra digital, data yang digunakan berbentuk digital/diskrit

maka dapat digunakan kedua persamaan diatas untuk melakukan transformasi dan inverse

transformasi Fourier.

Untuk menganalisa citra pada frequency domain, hasil transformasi Fourier dapat

ditampilkan sebagai citra, dimana intensitasnya proporsional dengan besarnya | F(u) | atau

spektrum Fourier. Namun karena dynamic range dari spektrum Fourier biasanya sangat

besar, maka sebelum ditampilkan sebagai citra harus diubah menjadi:

D(u,v) = c log ( 1 + |F(u,v)| )

dimana c adalah konstanta. Selanjutnya yang ditampilkan sebagai citra adalah nilai dari

D(u,v). Nilai D(u,v) ini akan memiliki dynamic range yang lebih kecil daripada |F(u,v)|.

=

=

=

−=

1

0

1

0

]/2exp[)()(

]/2exp[)(1

)(

N

u

N

x

NuxjuFxf

dan

NuxjxfN

xf

π

π

Page 5: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

5

Berikut ini adalah contoh gambar beberapa citra dengan spektrum Fouriernya.

Page 6: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

6

CARA PENELITIAN

Untuk mengimplementasikan proses pengolahan citra dengan metode frequency

domain, penulis membuat program dengan menggunakan MATLAB. Secara garis besar

program ini akan melakukan langkah-langkah berikut:

• membuka file citra digital

• menampilkan citra digital

• melakukan transformasi Fourier pada citra

• menampilkan spektrum Fourier dari citra

• melakukan perubahan pada hasil transformasi Fourier

• menampilkan spektrum Fourier yang telah diubah

• melakukan inverse transformasi Fourier

• menampilkan citra digital hasil proses

Pada MATLAB telah tersedia beberapa fungsi yang dapat langsung digunakan

untuk membantu mempercepat pembuatan program. Adapun fungsi-fungsi MATLAB

yang sangat penting dan digunakan di program ini antara lain:

• IMREAD

Fungsi ini berguna untuk membaca citra dari suatu file. Jika citra yang dibaca

memiliki format warna grayscale, fungsi ini akan menghasilkan array dua dimensi

yang berisi informasi intensitas grayscale dari citra tersebut. Fungsi ini mendukung

format BMP, JPEG, TIF, PNG, HDF, PCX, dan XWD.

• IMSHOW

Fungsi ini digunakan untuk menampilkan citra pada layar.

• IMWRITE

Fungsi ini digunakan untuk menyimpan citra ke dalam file. Fungsi ini merupakan

kebalikan dari fungsi IMREAD.

• FFT2

Fungsi ini digunakan untuk melakukan transformasi Fourier terhadap array 2

dimensi. Hasil yang diperoleh juga akan berbentuk array 2 dimensi.

• FFTSHIFT

Fungsi ini digunakan untuk melakukan pergeseran dari hasil transormasi Fourier,

sehingga memudahkan analisa visualisasi dari spektrum Fourier. Karena spektrum

Fourier bersifat periodik, pergeseran ini tidak akan berpengaruh pada citra yang

dihasilkan jika dilakukan inverse transformasi Fourier.

• IFFT2

Fungsi ini digunakan untuk melakukan inverse transformasi Fourier terhadap array 2

dimensi. Hasil yang diperoleh juga akan berbentuk array 2 dimensi.

Page 7: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

7

Langkah pertama yang dilakukan adalah membaca file citra yang akan diproses

dan menyimpan informasi graylevel dari semua pixelnya ke dalam sebuah matriks.

Perintah yang digunakan adalah:

nmfile = 'flo_nois.bmp';

img = imread(nmfile);

Selanjutnya dilakukan transformasi Fourier dan dilanjutkan dengan penggeseran

(shifting) hasil transformasi Fourier tersebut supaya hasil visualisasinya lebih mudah

diamati dan dianalisa. Untuk itu digunakan perintah: % Transformasi Fourier dengan FFT

img_f = fft2(img);

img_fs = fftshift(img_f);

Setelah itu baru digunakan perintah imshow untuk menampilkan citra maupun

spektrum Fouriernya. Namun pada saat spektrum Fourier akan ditampilkan, karena

dynamic range dari spektrum Fourier sangat besar, lebih dulu dilakukan proses dengan

perintah berikut:

img_spectrum = log(1+abs(img_fs));

Proses ini akan memperkecil dynamic range sehingga dapat ditampilkan di layar dengan

lebih jelas dan lebih mudah untuk dianalisa.

Untuk menghilangkan noise, lebih dulu dibuat sebuah matriks h yang dimensinya

sama dengan dimensi dari matriks untuk menyimpan hasil transformasi Fourier, yaitu 256

x 256. Matriks h ini dinisialisasi dengan diisi nilai satu pada setiap elemennya dengan

menggunakan perintah:

h = ones(256);

Selanjutnya bagian tertentu dari matriks yang menunjukkan area dimana noise berada pada

spektrum Fourier citra diubah menjadi nol, dengan menggunakan perintah:

% Memilih area frekuensi yang akan difilter

% untuk menghapus noise.

for ix = 1:256,

for iy = 1:256,

% Noise berasal dari frekuensi yang membentuk garis

% vertikal di bagian tengah spektrum.

% Nilai pada area ini akan dihilangkan dengan cara

% dikalikan 0.

if (iy > 127) & (iy < 130) & ((ix < 123) | (ix > 134))

h(ix,iy) = 0;

end

end

end

Perintah di atas hanya berlaku untuk noise yang ada pada citra yang digunakan oleh

penulis. Jika noise pada spektrum Fourier citra lainnya berada di area yang berbeda,

tentunya perintah di atas harus dimodifikasi angka-angkanya sehingga sesuai dengan area

noise pada spektrum Fourier yang akan dihilangkan.

Page 8: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

8

Setelah bagian tertentu dari matriks tersebut diberi nilai nol, sedangkan yang

lainnya tetap bernilai satu, maka masing-masing elemen matriks tersebut dikalikan dengan

elemen-elemen yang bersesuaian dari matriks spektrum Fourier citra, dengan perintah:

g = img_fs .* h;

Perkalian ini akan menghasilkan spektrum Fourier baru dimana area noise telah

hilang karena dikalikan dengan nol. Pada visualisasi spektrum Fourier hilangnya area

noise ini ditunjukkan dengan warna hitam di area tersebut.

Langkah berikutnya adalah melakukan inverse transformasi Fourier dari spektrum

Fourier yang baru untuk mendapatkan informasi citra kembali, dengan perintah:

hasil = uint8(abs(ifft2(g)));

Digunakannya uint8 adalah supaya informasi citra yang diperoleh memiliki tipe

data pixel 8-bit atau 256 graylevel, sehingga sama dengan citra asalnya.

Program selengkapnya yang disertai dengan penjelasan mengenai perintah-perintah

yang digunakan dapat dilihat pada lampiran.

Page 9: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

9

HASIL DAN PEMBAHASAN

Program yang dibuat telah diujicobakan untuk beberapa file citra yang memiliki

berbagai jenis noise yang dapat terlihat pada spektrum Fouriernya.

Contoh kasus 1:

Pada gambar berikut ini gambar kiri atas adalah citra yang memiliki noise berupa

garis-garis horisontal. Sedangkan gambar kanan atas adalah spektrum Fourier dari citra

trsebut. Pada spektrum Fourier ini tampak sebuah garis vertikal berwarna terang yang

mewakili noise pada citra tersebut.

Gambar kanan bawah menunjukkan gambar spektrum Fourier yang telah diproses.

Proses dilakukan dengan cara mengalikan nilai spektrum pada area yang dipilih dengan

nol. Area yang dipilih adalah bagian berwarna terang yang membentuk garis vertikal

karena bagian inilah yang mewakili adanya noise. Sedangkan area di bagian pusat

spektrum tidak dihilangkan karena area ini mengandung informasi citra itu sendiri. Jika

area pusat spektrum ini juga dijadikan nol, maka citra yang dihasilkan akan menjadi gelap.

Page 10: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

10

Setelah area yang dipilih dikalikan dengan nol, tampak bahwa warna pada area tersebut

menjadi gelap.

Setelah itu dilakukan inverse transformasi Fourier sehingga didapatkan citra seperti

pada gambar kiri bawah. Terlihat bahwa citra menjadi lebih jelas karena noise berupa

garis-garis horisontal sudah tidak ada lagi.

Contoh kasus 2:

Pada contoh kasus ini prinsipnya sama dengan contoh pertama, hanya bedanya

jenis noise yang ada di sini direpresentasikan dengan adanya dua garis vertikal berwarna

terang pada spektrum Fourier dari citra.

Setelah area spektrum yang dipilih dikalikan nol, kemudian dilakukan inverse

transformasi Fourier, terlihat bahwa citra yang dihasilkan jauh lebih jelas daripada

sebelumnya.

Page 11: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

11

Dari kedua contoh kasus tersebut, terlihat bahwa dengan melakukan pemrosesan

citra digital dengan metode frequency domain, kita dapat melakukan perbaikan pada citra

yang tercemari oleh noise tertentu.

Noise yang dapat dihilangkan atau dikurangi dengan metode ini adalah noise yang

menghasilkan pola tertentu pada spektrum Fouriernya, misalnya berupa garis lurus. Jika

noise yang ada tersebar dan bentuknya tidak teratur, maka akan sulit untuk menentukan

area mana yang menjadi penyebab noise tersebut.

PENUTUP

Pada pengolahan citra digital, metode frequency domain dapat digunakan untuk

menyelesaikan masalah-masalah tertentu yang sulit jika dilakukan dengan menggunakan

metode spatial domain. Pada metode frequency domain, informasi citra digital

ditransformasikan lebih dulu dengan transformasi Fourier, kemudian dilakukan manipulasi

pada hasil transformasi Fourier tersebut. Setelah manipulasi selesai, dilakukan inverse

transformasi Fourier untuk mendapatkan informasi citra kembali.

Noise yang dapat dihilangkan atau dikurangi dengan metode ini adalah noise yang

menghasilkan pola tertentu pada spektrum Fouriernya, misalnya berupa garis lurus.

Secara umum program yang dibuat telah berfungsi dengan baik, namun demikian

masih terbuka kemungkinan untuk dikembangkan lebih lanjut, misalnya dengan

menambahkan kemampuan untuk menentukan area pada spektrum Fourier yang akan

dipilih secara interaktif.

DAFTAR PUSTAKA

• Rafael C. Gonzalez, Richard E. Woods, 1993, Digital Image Processing, Addison-

Wesley Publishing Company Inc., USA.

• Kristian Sandberg, 2001, An overview of Fourier analysis for signal processing,

Dept. of Applied Mathematics, University of Colorado at Boulder,

http://amath.colorado.edu/courses/3310/2001fall/Improc/Webpages/fourier/fourier.

css.

• Duane Hanselman, Bruce Littlefield, 2002, MATLAB, Bahasa Komputasi Teknis,

Pearson Education Asia dan Penerbit Andi, Yogyakarta.

Page 12: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

12

LAMPIRAN

Listing Program

% Image processing pada frequency domain % untuk menghapus noise berupa garis-garis horisontal. nmfile = 'flo_nois.bmp'; img = imread(nmfile); % Transformasi Fourier dengan FFT img_f = fft2(img); img_fs = fftshift(img_f); % Menyiapkan figure sbg tempat untuk menampilkan citra. h1 = figure; iptsetpref('ImshowAxesVisible','off'); set(h1, 'Units','pixels', ... 'Position', [10 40 560 530], ... 'MenuBar', 'none', ... 'ToolBar','none'); set(h1, 'NumberTitle', 'off'); set(h1, 'Name', 'Image Processing in Frequency Domain (Press Enter to continue...)'); ah1 = axes('Parent',h1, ... 'Units','pixels', ... 'Position',[5 265 256 256], ... 'XTick',[], ... 'YTick',[], ... 'Box','on', ... 'Tag','Axes3'); ah2 = axes('Parent',h1, ... 'Units','pixels', ... 'Position',[280 265 256 256], ... 'XTick',[], ... 'YTick',[], ... 'Box','on', ... 'Tag','Axes4'); ah3 = axes('Parent',h1, ... 'Units','pixels', ... 'Position',[5 5 256 256], ... 'XTick',[], ... 'YTick',[], ... 'Box','on', ... 'Tag','Axes1'); ah4 = axes('Parent',h1, ... 'Units','pixels', ... 'Position',[280 5 256 256], ... 'XTick',[], ... 'YTick',[], ... 'Box','on', ... 'Tag','Axes2'); % Menampilkan citra asal axes(ah1); imshow(img); pause; % Kompresi dynamic range dari spektrum Fourier % untuk menampilkan spektrum Fourier sbg citra (Gonzalez, p.92) img_spectrum = log(1+abs(img_fs)); axes(ah2); % Menampilkan spektrum Fourier dari citra %imshow(r2f2, [3 10]);

Page 13: Penerapan Metode Transformasi Fourier untuk Perbaikan Citra Digital, Setyo Nugroho

13

imshow(img_spectrum, [3 10]); pause; h = ones(256); % Memilih area frekuensi yang akan difilter % untuk menghapus noise. for ix = 1:256, for iy = 1:256, % Noise berasal dari frekuensi yang membentuk garis % vertikal di bagian tengah spektrum. % Nilai pada area ini akan dihilangkan dengan cara % dikalikan 0. if (iy > 127) & (iy < 130) & ((ix < 123) | (ix > 134)) h(ix,iy) = 0; end end end g = img_fs .* h; % Kompresi dynamic range dari spektrum Fourier img_spectrum = log(1+abs(g)); axes(ah4); % Menampilkan spektrum Fourier yang sudah difilter imshow(img_spectrum, [3 10]); pause; % Inverse Transformasi Fourier hasil = uint8(abs(ifft2(g))); axes(ah3); % Menampilkan citra hasil imshow(hasil); pause; close;