• Tidak ada hasil yang ditemukan

TEKNIK PENGOLAHAN CITRA. Kuliah 8 Filtering in Frequency Domain. Indah Susilawati, S.T., M.Eng.

N/A
N/A
Protected

Academic year: 2021

Membagikan "TEKNIK PENGOLAHAN CITRA. Kuliah 8 Filtering in Frequency Domain. Indah Susilawati, S.T., M.Eng."

Copied!
16
0
0

Teks penuh

(1)

TEKNIK PENGOLAHAN CITRA

Kuliah 8 – Filtering in Frequency Domain

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

Program Studi Teknik Elektro

Program Studi Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

Universitas Mercu Buana Yogyakarta

(2)

KULIAH 8

TEKNIK PENGOLAHAN CITRA

FILTERING IN FREQUENCY DOMAIN

(PENAPISAN DI DOMAIN FREKUENSI)

Ideal Filtering: Low Pass Filtering

Misal diketahui suatu matriks hasil transformasi Fourier yang telah digeser sehingga koefisien DC-nya berada di pusat matriks. Oleh karena komponen frekuensi rendah berada di pusat matriks, maka low pass filtering dapat dilakukan dengan mengalikan matriks tsb dengan suatu matriks sedemikian sehingga nilai-nilai yang berada di pusat matriks dipertahankan, dan nilai-nilai yang jauh dari pusat dihilangkan atau diminimalkan. Salah satu cara untuk melakukan hal ini adalah dengan mengalikannya dengan suatu matriks low pass ideal yang didefinisikan sbb.

⎩ ⎨ ⎧ = D daripada jauh lebih pusat ke y x titik jarak jika D daripada dekat lebih pusat ke y x titik jarak jika y x m ) , ( , 0 ) , ( , 1 ) , (

Misalnya adalah dengan lingkaran dengan radius D = 15 (seperti yang digunakan pada pertemuan minggu yang lalu).

[x,y] = meshgrid(-128:127, -128: 127) z = sqrt(x.^2 + y.^2)

c = (z<15) imshow (c)

Sebuah lingkaran dengan D = 15

(3)

Maka IDFT dari perkalian yang terjadi dapat dinyatakan sbb.

Berikut adalah contoh low pass filtering dalam domain frekuensi.

clear all; clc;

% --- % Membaca citra dan melakukan transformasi Fourier % Menggeser koefisien DC ke pusat matriks

%

---I = imread ('einstein.jpg'); If = fft2(I);

If = fftshift(If);

% --- % Membuat filter low pass berupa lingkaran dengan % radius D = 15 % ---[x,y] = meshgrid(-128:127, -128: 127) z = sqrt(x.^2 + y.^2) c = (z<15) % --- % Mengalikan matriks hasil transf. Fourier dengan % filter low pass

% Dalam Matlab .* adalah perkalian element-wise % antara dua matriks

%

---If_low = If.*c;

% --- % Melakukan IDFT pada hasil filtering

%

---If_low_inv = ifft2(If_low);

% --- % Menampilkan hasil

%

---subplot (2,2,1), imshow (I) subplot (2,2,2), fftshow (If) subplot (2,2,3), imshow (c)

(4)

citra asli DFT citra

Filter low pass Citra hasil filtering

Dengan menggunakan citra yang lain, tampak sbb.

citra asli DFT citra

(5)

Pada citra hasil filtering dengan LPF tampak efek yang disebut “ringing’. Hal ini disebabkan oleh cutoff yang tajam pada lingkaran. Semakin kecil lingkaran yang digunakan sebagai filter, maka citra hasil filtering akan semakin kabur (blurr), dan sebaliknya semakin besar lingkaran maka semakin berkurang tingkat ke-kabur-an pada citra hasil filtering. Dua gambar berikut menunjukkan hasil dengan D = 5 dan D = 30.

D = 5

citra asli DFT citra

Filter low pass Citra hasil filtering

---

D = 30

citra asli DFT citra

(6)

Ideal Filtering: High Pass Filtering

High Pass Filtering dapat dilakukan dengan cara yang berkebalikan dengan cara yang dilakukan pada low pass filtering, yaitu dengan menghilangkan elemen-elemen (nilai-nilai) pada pusat matriks dan mempertahankan nilai-nilai yang lain. Secara sederhana hal ini dapat dilakukan dengan membuat lingkaran yang berkebalikan dengan yang digunakan pada low pass filtering.

⎩ ⎨ ⎧ = D daripada jauh lebih pusat ke y x titik jarak jika D daripada dekat lebih pusat ke y x titik jarak jika y x m ) , ( , 1 ) , ( , 0 ) , (

Misalnya adalah dengan lingkaran dengan radius D = 15

[x,y] = meshgrid(-128:127, -128: 127) z = sqrt(x.^2 + y.^2)

c = (z>15) imshow (c)

Sebuah lingkaran dengan D = 15

Berikut adalah contoh high pass filtering dalam domain frekuensi, menggunakan filter high pass di atas.

(7)

D = 15

citra asli DFT citra

Filter low pass Citra hasil filtering

---

D = 5

citra asli DFT citra

(8)

D = 30

citra asli DFT citra

Filter low pass Citra hasil filtering

---

Semakin besar cutoff maka semakin banyak bagian yang dihilangkan dari matriks hasil transformasi; artinya hanya frekuensi-frekuensi tertinggi saja yang tertinggal, hal ini terlihat pada hasil restorasi citra dimana hanya tebing-tebing citra (edges) saja yang tampak. Jika cutoff kecil, maka hanya frekuensi-frekuensi terendah saja yang dihilangkan, hasil restorasi masih tampak terdapat aras keabuan.

Filter Butterworth

Ideal filtering secara sederhana memotong matriks hasil transformasi Fourier pada jarak tertentu dari pusat matriks. Cara ini memang mudah diimplementasikan namun ada kekurangannya, yaitu menimbulkan efek “ringing” pada citra hasil akhirnya (hasil restorasi atau hasil IDFT). Cara untuk mengatasi kekurangan ini adalah dengan menggunakan matriks filter yang berupa lingkaran dengan cutoff yang tidak terlalu tajam. Jenis filter semacam ini salah satunya adalah filter Butterworh.

(9)

⎩ ⎨ ⎧ ≥ < = = D r jika D r jika r f LPF , 0 , 1 ) ( ⎩ ⎨ ⎧ ≤ > = = D r jika D r jika r f HPF , 0 , 1 ) (

Dengan r adalah jarak dari pusat matriks dan D adalah jarak cutoff. Fungsi-fungsi ini diilustrasikan pada gambar berikut.

Fungsi-fungsi filter Butterworth didasarkan pada persamaan-persamaan berikut. Untuk LPF n

D

r

r

f

2

)

/

(

1

1

)

(

+

=

Untuk HPF n

r

D

r

f

2

)

/

(

1

1

)

(

+

=

Dengan parameter n adalah orde dari filter, orde menentukan ketajaman cutoff dari filter yang dibuat. Berikut ilustrasi grafis fungsi filter Butterworth dengan n = 2 dan n = 4.

(10)

Fungsi filter Butterworth dengan n = 2

Fungsi filter Butterworth dengan n = 4

Salah satu variasi dari fungsi filter Butterworth LPF adalah yang dinyatakan dengan persamaan berikut.

n

D

r

C

r

f

2

)

/

(

1

1

)

(

+

=

Dengan C adalah suatu konstanta. Pada persamaan yang dinyatakan sebelumnya adalah kasus jika diambil C = 1, sehingga saat r = D maka magnitude f(r) = 0,5. Nilai konstanta lain yang juga sering dipakai adalah C = 0,414, sehingga saat r = D maka nilai magnitude f(r) = 1/√2. Berikut akan diberikan contoh membangun filter Butterworth LPF dengan C = 0,414 dan opsi masukan citra, jarak cutoff, dan orde filter.

(11)

function out = Lbutter(im, d, n)

% ---% Lbutter (im, d, n) membentuk filter Butterworth LPF

% ukuran filter sama dengan ukuran citra im % cutoff adalah d

% orde filter adalah n % sintaks:

% im = imread ('cameraman.tif'); % low = Lbutter (im, 25, 2);

%

---height = size (im, 1); width = size (im, 2);

[x, y] = meshgrid (-floor(width/2): floor((width-1)/2):...

-floor(height/2):floor((height-1)/2));

out = 1./(1+(sqrt(2)-1)*((x.^2 + y.^2)/d^2).^n);

Filter Butterworth HPF dapat dibangun dengan mengurangkan LPF-nya dari 1, sehingga dapat dibuat fungsinya dengan mudah ( HPF = 1 – LPF ).

function out = Hbutter(im, d, n)

% ---% Hbutter (im, d, n) membentuk filter Butterworth HPF

% ukuran filter sama dengan ukuran citra im % cutoff adalah d

% orde filter adalah n % sintaks:

% im = imread ('cameraman.tif'); % low = Hbutter (im, 25, 2);

%

---out = 1 - Lbutter (im, d, n);

Berikut contoh filtering dengan filter Butterworth LPF dan menggunakan fungsi-fungsi di atas. clear all; clc; % ---I = imread ('cameraman.tif'); If = fft2(I);

(12)

If = fftshift(If); % ---lb = Lbutter (If, 15, 1); % ---If_lb = If.*lb; % ---If_lb_inv = ifft2(If_lb); %

---subplot (2,2,1), imshow (I) title ('citra asli')

subplot (2,2,2), fftshow (If) title ('DFT citra')

subplot (2,2,3), imshow (lb) title ('Filter low pass')

subplot (2,2,4), fftshow (If_lb_inv, 'log') title ('Citra hasil filtering')

citra asli DFT citra

Filter low pass Citra hasil filtering

(13)

citra asli DFT citra

Filter high pass Citra hasil filtering

Jika digunakan n = 2 dan opsi ‘abs’ fungsi fftshow, hasilnya sbb.

citra asli DFT citra

(14)

Gaussian Filtering

Filter Gaussian juga dapat dilakukan dalam domain frekuensi, yaitu untuk low pass filtering. Implementasinya sama dengan yang dilakukan pada proses sebelumnya, yaitu membangun filter Gaussian, mengalikannya dengan matriks hasil transformasi Fourier, dan menginversikan hasilnya. Filter Gaussian merupakan jenis filter yang “paling smooth” dan filter ideal merupakan filter yang “paling tidak smooth”. Sedangkan filter Butterworth berada diantara keduanya.

Contoh clear all; clc; % ---I = imread ('cameraman.tif'); If = fft2(I); If = fftshift(If); % ---g1 = fspecial('gaussian', 256, 10); g1 = mat2gray(g1); Ifg1 = If.*g1; Ifg1_inv = ifft2(Ifg1); % ---g2 = fspecial('gaussian', 256, 30); g2 = mat2gray(g2); Ifg2 = If.*g2; Ifg2_inv = ifft2(Ifg2); %

---subplot (2,2,1), fftshow (Ifg1,'log') title ('std = 10')

subplot (2,2,2), fftshow (Ifg1_inv, 'abs') title ('Citra hasil')

subplot (2,2,3), fftshow (Ifg2, 'log') title ('std = 30')

subplot (2,2,4), fftshow (Ifg2_inv, 'abs') title ('Citra hasil')

Keterangan:

(15)

std = 10 Citra hasil

std = 30 Citra hasil

Dengan cara yang serupa, dapat dibangun filter Gaussian high pass dengan mengurangkan filter Gaussian low pass dari satu (HPF = 1 – LPF).

Contoh clear all; clc; % ---I = imread ('cameraman.tif'); If = fft2(I); If = fftshift(If); % ---g1 = fspecial('gaussian', 256, 10); g1 = mat2gray(g1); h1 = 1 - g1; Ifh1 = If.*h1;

(16)

Ifh1_inv = ifft2(Ifh1); % ---g2 = fspecial('gaussian', 256, 30); g2 = mat2gray(g2); h2 = 1 - g2; Ifh2 = If.*h2; Ifh2_inv = ifft2(Ifh2); %

---subplot (1,2,1), fftshow (Ifh1_inv, 'abs') title ('Menggunakan std = 10')

subplot (1,2,2), fftshow (Ifh2_inv, 'abs') title ('Menggunakan std = 30')

Menggunakan std = 10 Menggunakan std = 30

Tugas

Buatlah citra wajah seseorang yang anda kenal dengan kamera digital. Bereksperimenlah dengan menerapkan transformasi Fourier pada citra tsb dan kemudian terapkan filter-filter (di domain frekuensi) berikut:

a. Ideal filter (low pass dan high pass) b. Butterworth filter

c. Gaussian filter

Berapa radius terkecil dari LPF sehingga anda masih bisa mengenali wajahnya? (Kumpulkan sebelum UAS, lebih cepat lebih baik).

Referensi

Dokumen terkait

LAMPIRAN :BERITA ACARA PENJELASAN / AANWIJZING DOKUMEN PENGADAAN KONTRAK HARGA SATUAN KEGIATAN : Peningkatan Jalan Buduk Peningkatan Jalan Buduk Peningkatan Jalan Buduk

Ini bisa dilihat dari tata bahasa sopan yang digunakan pada waktu berbicara pada orang yang lebih tua , dan bisa dilihat dari posisi tubuh ketika melakukan ojiki ( memberi

· Bahan pemadaman yang tidak sesuai karena alasan keselamatan: Air dengan tekanan jet penuh · Bahaya khusus akibat dari zat atau campuran.. Selama pemanasan atau bila ada gas

Hal ini diduga karena suhu yang rendah dan waktu pengeringan yang pendek menyebabkan air terikat yang terkandung di dalam bahan tidak terlalu banyak menguap sehingga

Dari tabel 5.6 dapat dilihat, hasil penelitian pada 55 responden Tanggal 15 Februari s/d 5 April 2010 di Klinik Bersalin Mariani Medan, didapatkan hasil uji statistik nilai p=0,943

Tujuan khusus dari penelitian ini adalah untuk mengetahui karakteristik masyarakat yaitu jumlah anggota keluarga, umur, tingkat pendidikan dan jenis pekerjaan di

Uji path analisis menunjukkan variabel kualitas produk yang dipengaruhi kepercayaan ada pengaruh mediasi terhadap keputusan nasabah menabung di Bank BRI Syariah