e19df sessi 6 pengolahan citra frequensi

PENGOLAHAN
CITRA DI KAWASAN
FREKUENSI
STMIK PPKIA Pradnya Paramita
Sigit Setyowibowo, ST., MMSI

Domain Spasial vs Domain
Frekuensi
Domain Spasial

Domain Frekuensi

■ Konsep koordinat baris dan
kolom

■ Konsep frekuensi, perubahan
intensitas piksel ke piksel
(frekuensi rendah dan tinggi)

■ Pemrosesan pixel-by-pixel
■ Komputasi lama (terutama

citra dengan ukuran spasial
tinggi)

■ Pemrosesan berdasarkan
pemilihan frekuensi yang akan
difilter atau tidak
■ Komputasi relatif cepat
(terutama citra dengan
ukuran spasial tinggi)

2

Konsep Frekuensi dalam citra
■ Sembarang sinyal spasial mempunyai representasi frekuensi
■ Makna frekuensi dalam citra:
– Komponen frekuensi tinggi dikaitkan dengan perubahan piksel ke
piksel secara cepat sepanjang citra. Misal: teks, tekstur, dsb.


Komponen frekuensi tinggi dikaitkan dengan fitur berskala besar

pada citra. Misal: daerah dengan intensitas konstan, atau piksel
yang jumlahnya mendominasi dalam seluruh daerah citra.

3

Transformasi citra dapat diproses
melalui kawasan spasial maupun frekuensi

Transformasi Fourier
■ Fungsi periodik dapat dinyatakan sebagai jumlah
sinus dan/atau cosinus dar perbedaan frekuensi
setiap perkaliannya dengan koefisien yang berbeda

5

Transformasi Fourier
■ Fungsi yang tidak periodik tetapi dengan daerah kurva yang terbatas
dapat dinyatakan sebagai integral sinus dan/atau cosinus dikalikan
dengan fungsi bobot.
■ Transformasi Fourier 1 dimensi:


Transformasi Fourier 2 dimensi:

6

Transformasi Fourier Diskrit
■ Karena citra adalah gelombang diskrit, maka fungsi f(x), x=0,1,…,M-1,
untuk satu dimensi kita mendapatkan:

■ Formula Euler:
■ Sehingga didapatkan:





Untuk u = 0,…,M-1
f(x) adalah nilai intensitas setiap piksel
Nilai u adalah komponen dalam domain frekuensi
Setiap F(u) adalah nilai frekuensi dalam transformasi

7


Sebagai
contoh, terdapat f(x) = (2, 4, 1, 5). Alihragam Fourier-nya seperti
 
berikut.

= (f(0)(cos(0)-j sin(0)) +

f(1)(cos()-j sin()) +

f(2)(cos()-j sin()) +

f(3)( (cos()-j sin())) / 4
= (f(0) + f(1) + f(2) + f(3)) / 4
= (2 + 4 + 1 + 5) / 4 = 12 / 4 = 3
= (f(0)(cos(0)-j sin(0)) +

f(1)(cos()-j sin()) +


f(3)( (cos()-j sin())) / 4
= (2 (1-0) + 4(0-j) + 1(-1-0) + 5(0+j)) / 4
= (1+j)/4 = 0,25 + j0,25

f(2)(cos()-j sin()) +


   
= (f(0)(cos()-j sin()) +

f(1)(cos()-j sin()) +

f(3)( (cos()-j sin())) / 4
= (2 (1-0) + 4(-1-0) + 1(1-0) + 5(-1-0) ) / 4
= -6 / 4 = -1,50

= (f(0)(cos(0)-j sin(0)) +
f(2)(cos()-j sin()) +


f(1)(cos()-j sin()) +

f(3)( (cos()-j sin())) / 4

= (2 (1-0) + 4(0+j) + 1(-1-0) + 5(0-j) ) / 4
= (1 - j)/4
= 0,25 - j0,25

f(2)(cos()-j sin()) +


Adapun
 
alihragam-baliknya berupa:
 
dengan u = 0,1,2,…,N-1
Sebagai contoh, terdapat f(x) = (2, 4, 1, 5). Alihragam Fourier-nya seperti
berikut.
= (f(0)(cos(0)-j sin(0)) +


f(1)(cos()-j sin()) +

f(3)( (cos()-j sin())) / 4
= (f(0) + f(1) + f(2) + f(3)) / 4
= (2 + 4 + 1 + 5) / 4 = 12 / 4 = 3

f(2)(cos()-j sin()) +

Program : dft1d.m
function [Re, Im] = dft1d(Fx)
% DFT1D Digunakan untuk memperoleh DFT dimensi satu.
% Hasil: Re berisi bagian real dan
%
Im berisi bagian imajiner
n = length(Fx); % Jumlah nilai dalam fungsi Fx
for u = 0 : n - 1
Re(u+1) = 0;
Im(u+1) = 0;
for x = 0 : n - 1
radian = 2 * pi * u * x / n;

cosr = cos(radian);
sinr = -sin(radian);
Re(u+1) = Re(u+1) + Fx(x+1) * cosr;
Im(u+1) = Im(u+1) + Fx(x+1) * sinr;
end
Re(u+1) = Re(u+1) / n;
Im(u+1) = Im(u+1) / n;
end

Contoh penggunaan fungsi dft1d ditunjukkan di bawah ini. Perhatikan Fx perlu
ditranspos.
>> Fx = [2,4,1,5]; 
>> [Re,Im] = dft1d(Fx) 
Re =
 
3.00000 0.25000 -1.50000 0.25000
 
Im =
 
0.00000 0.25000 -0.00000 -0.25000

 
>> 
Alihragam-baliknya dapat diperoleh melalui fungsi idft1d seperti berikut.

Program : idft1d.m
function Fx = idft1d(Fu)
% IDFT1D Digunakan untuk melaksanakan transformasi balik
%
1D DFT.
%
Masukan: Fu berupa bilangan kompleks

n = length(Fu); % Jumlah nilai dalam fungsi Fu
for u = 0 : n - 1
Fx(u+1) = 0;
for x = 0 : n - 1
radian = 2 * pi * u * x / n;
cosr = cos(radian);
sinr = sin(radian);
Fx(u+1) = Fx(u+1) + Fu(x+1) * (cosr+ j*sinr);

end
end
Fx = real(Fx); % Peroleh bagian real

Berikut adalah contoh penggunaan DCT dan alihragam-baliknya:
 
>> Fx = [2,4,1,5]; 
>> [Re,Im] = dft1d(Fx); 
>> F = idft1d(Re+Im*j) 
F=
 
2.0000

4.0000

1.0000

5.0000

 

>> 
 
Perhatikan, argumen pada fungsi idft1d berupa bilangan kompleks, tetapi tidak ada
komponen imajinernya atau nilai imajinernya nol. Pengalian dengan j pada Im*j
dipakai untuk membentuk bagian imajiner. Hasilnya terlihat sama dengan isi Fx

Transformasi Fourier Diskrit 2-D

Untuk citra 2 dimensi, DFT yang digunakan:


Untuk u=0,…,M-1 and v=0,…,N-1 dan iDFT didefinisikan:


Karena nilai FT adalah bilangan kompleks, kadang-kadang kita nyatakan F(u) dalam koordinat polar:

Dimana jarak atau spektrum dinyatakan dengan:


Sudut fase dnyatakan oleh

:

15

Transformasi Fourier Diskrit 2-D
■ Untuk u=0, v=0, didapatkan:
■ Sama dengan rata-rata nilai intensitas.
■ Lokasi ini juga adalah titik origin pada domain frekuensi.

16

Program : dft2d.m
function [Re, Im] = dft2d(berkas)
% DFT2D Digunakan untuk memperoleh DFT dimensi dua.
%
Masukan: nama berkas berskala keabuan
%
Hasil: Re berisi bagian real dan
%
Im berisi bagian imajiner
Fx = double(imread(berkas));
[m, n] = size(Fx); % Ukuran citra
% m = jumlah baris
% n = jumlah kolom
for v = 0 : m -1
for u = 0 : n - 1
Re(v+1, u+1) = 0;
Im(v+1, u+1) = 0;
for y = 0 : m - 1
for x = 0 : n - 1
radian = 2 * pi * ...
(u * x / n + v * y / m);
cosr = cos(radian);
sinr = -sin(radian);
Re(v+1, u+1) = Re(v+1, u+1) + Fx(y+1, x+1) * cosr;
Im(v+1, u+1) = Im(v+1, u+1) + Fx(y+1, x+1) * sinr;
end
end
end
end

Fungsi dft2d digunakan untuk mentransformasikan citra berskala keabuan.
Contoh penggunaannya misalnya seperti berikut:
>> [Dr, Di] = dft2d(’C:\Image\lena128.png’); 
Dengan cara seperti itu, Dr mencatat bagian real dan Di mencatat bagian
imajiner.

Fast Fourier Transform
■  Suatu metode bernama FFT (Fast Fourier Transform) dibuat untuk
mempercepat komputasi alihragam Fourier. Jika kompleksitas DFT untuk
mentransformasikan sebuah piksel seperti yang tertuang dalam
implementasi di depan sebesar O(N2), FFT memiliki kompleksitas sebesar O(N
log2 N). Sebagai pembanding, jika N sama dengan 256 maka N 2 sama dengan
65.536, sedangkan N log2 N menghasilkan 256 x 8 atau 2048. Jadi, FFT lebih
cepat 32 kali dibandingkan DFT untuk ukuran citra seperti itu. Pada
alihragam berdimensi dua, penghematan waktu akan lebih terasa
■ Peluang adanya penghematan waktu komputasi dapat dilukiskan untuk citra
N=8. Nilai untuk u dan x sama dengan 0,1,2,3,4,5,6,7 dengan nilai real

Visualisasi Pemrosesan FFT
■  Sebagaimana telah dibahas di depan, alihragam Fourier menghasilkan
bilangan kompleks. Terkait dengan hal itu, terdapat definisi spektrum Fourier
seperti berikut:
■ dengan R(u,v) menyatakan bagian real dan I(u,v) menyatakan bagian
imajiner. Adapun sudut fase transformasi didefinisikan sebagai:
 
■ Selain itu, terdapat pula istilah power spectrum atau spektrum daya, yang
didefinisikan sebagai kuadrat besaran:
 

■ Untuk kepentingan analisis secara visual, spektrum dan sudut fase Fourier
dapat disajikan dalam bentuk gambar. Berikut adalah contoh untuk
melakukan transformasi citra lena256.tif dan kemudian menyajikan
spektrum.
 
>> Img = imread(’C:\Image\lena256.tif’); 
>> F = fft2(Img); 
>> imshow(abs(F),[]); 

Transformasi Fourier pada citra dan visualisasi

■ Mengingat nilai dalam spektrum terlalu lebar, penerapan logaritma biasa
digunakan hanya untuk kepentingan visualisasi. Sebagai contoh, Gambar (c)
diperoleh melalui:
 
>> S2 = log(1 + abs(F)); 
>> imshow(S2, []); 
 
■ Penambahan angka 1 dimaksudkan untuk menghindari terjadinya log(0).
■ Hasil pada Gambar (c) menunjukkan keadaan yang seperti berulang yang
muncul pada setiap pojok dalam kotak frekuensi. Hal ini disebabkan adanya
sifat pengulangan pada transformasi Fourier. Dalam hal ini, nilai pada M/2
menuju ke M-1 adalah pengulangan dari titik asal 0 hingga M/2 – 1. Hal ini
juga berlaku pada arah mendatar. Berdasarkan sifat ini, untuk kepentingan
visualisasi, titik awal (0,0) seringkali diubah agar terletak di tengah-tengah
kotak frekuensi

Frekuensi 0 diletakkan di tengah-tengah kotak frekuensi

■ Hal seperti itu dapat dikerjakan dengan menggunakan fungsi fftshift. Kegunaan fungsi fftshift
adalah untuk mengatur agar komponen frekuensi nol diletakkan di tengah-tengah spektrum.
X=
 
1
2
3
4
5
6
7
8
9 10 11 12
13 14 15 16
 
Jika dikenakan perintah seperti berikut
 
fftshift(X)
 
diperoleh hasil berupa:
 
ans =
 
11 12
9 10
15 16 13 14
3
4
1
2
7
8
5
6

Penukaran kuadran melalui fftshift

Contoh berikut menunjukkan efek penukaran fftshift pada hasil
transformasi Fourier:
>> G = fftshift(F); 
>> imshow(log(1+abs(G)),[]) 
>>
Hasilnya dapat dilihat pada Gambar (d) sebelumnya

Penapisan pada Kawasan Frekuensi
■ Menurut teorema konvolusi, konvolusi pada kawasan frekuensi dapat
dilakukan dengan mengalikan F(v, u) dengan H(v,u) (Gonzalez, dkk., 2004).
Dalam hal ini, H(v,u) dinamakan sebagai fungsi transfer filter dan
diperoleh melalui pengenaan DFT terhadap h(y,x), yang merupakan kernel
konvolusi pada kawasan spasial.

■ Adapun contoh berikut menunjukkan pemakaian zero padding.
>> Fs = imread('C:\Image\kotatua.tif'); 
>> Hs = fspecial('sobel'); 
>> size(Fs) 
ans =
 
747 500
 
>> Ff = fft2(Fs, 512, 512); 
>> Hf = fft2(Hs, 512, 512); 
>> G = Hf .* Ff; 
>> F = real(ifft2(G)); 
>> Fx = F(1:250, 1:250); 
>> imshow(uint8(Fx)) 

Contoh pemfilteran dengan filter Sobel pada kawasan frekuensi

Program : filterdft.m
function F = filterdft(berkas, H)
% FILTERDFT Digunakan untuk melaksanakan pemfilteran
%
pada kawasan frekuensi menggunakan FFT.
%
Masukan:
%
berkas - nama citra
%
H - kernel pada kawasan spasial
%
Keluaran:
%
F - citra yang telah difilter
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Menentukan ukuran baru untuk perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Transformasi via FFT dengan zero padding
Ff = fft2(Fs, p, q);
Hf = fft2(H, p, q);
% Konvolusi
G = Hf .* Ff;
% Peroleh citra hasil pemfilteran
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));

■ Contoh penggunaan fungsi filterdft:
>> H = fspecial(’sobel’); 
>> F = filterdft('C:\Image\kotatua.tif', H); 
>> imshow(F) 

Source code FFT satu dimensi dalam matlab dapat dilihat sebagai berikut:
Image=imread('cameraman.tif');
[ImageHeight ImageWidth]=size(Image);
X=fft(Image);
Y=ifft(X);
imshow([Image X uint8(Y)]);
sedangkan source code FFT dua dimensi dalam matlab dapat dilihat
sebagai berikut:
Image=imread('cameraman.tif');
[ImageHeight ImageWidth]=size(Image);
X=fft2(Image);
Y=ifft2(X);
imshow([Image X uint8(Y)]);

Filtering pada Domain Frekuensi

Filter Lolos-Rendah
■ Filter lowpass adalah flter yang mengubah (menurunkan) komponen frekuensi tnggi, dan
melewatkan (passing) komponen frekuensi rendah. Citra yang diflter menggunakan flter
lowpass memiliki detail yang kurang tajam dibandingkan citra asal.
■ Filter ini berguna untuk menghaluskan derau atau untuk kepentingan
interpolasi tepi objek dalam citra.
■ Tiga jenis filter lolos-rendah dilihat pada Tabel berikut

Filter lolos-rendah
 Jenis filter lolos-rendah pada kawasan frekuensi yang paling
sederhana adalah yang dinamakan ILPF (Ideal Low Pass
Filter). Filter ini memiliki fungsi transfer seperti berikut:

Dalam hal ini, D0 adalah bilangan non-negatif yang biasa
disebut radius filter, yang menentukan ambang frekuensi, dan
D(v,u) adalah jarak antara (v,u) terhadap pusat filter, yang
dinyatakan dengan

Program : ilpf.m
function F = ilpf(berkas, d0)
% ILPF Digunakan untuk melaksanakan
pemfilteran
%
pada kawasan frekuensi menggunakan
ILPF.
%
Masukan:
%
berkas - nama citra
%
d0 - menentukan frekuensi ambang
%
Keluaran:
%
F - citra yang telah difilter
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Menentukan ukuran baru untuk perluasan
citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;

% Menentukan jangkauan frekuensi u dan v
u = 0:(p - 1);
v = 0:(q - 1);
% Hitung indeks untuk meshgrid
idx = find(u > q/2);
u(idx) = u(idx) - q;
idy = find(v > p/2);
v(idy) = v(idy) - p;
% Peroleh array meshgrid
[V, U] = meshgrid(v, u);
% Hitung jarak D(v,u)
D = sqrt(V.^2 + U.^2);
% Hitung frekuensi ambang sebesar d0 kalai lebar
citra
ambang = d0 * q;

% Peroleh fungsi transfer
Hf = double(D > F = ilpf('C:\Image\kotatua.tif', 0.08); imshow(F) 

Hasil penerapan ILPF

■ BLPF
 
(Butterworth low pass filter) merupakan jenis filter lolos-rendah yang
digunakan untuk memperbaiki efek bergelombang yang dikenal dengan
sebutan ringing, yang diakibatkan oleh ILPF. Berbeda dengan ILPF, BLPF tidak
memiliki titik diskontinu yang tajam. Fungsi transfernya berupa
■ Dalam hal ini, n dinamakan orde filter.

Program : blpf.m
function F = blpf(berkas, d0, n)
% BLPF Digunakan untuk melaksanakan pemfilteran
%
%
%
%
%
%
%

pada kawasan frekuensi menggunakan BLPF.
Masukan:
berkas - nama citra
d0 - menentukan frekuensi ambang
n - menentukan faktor n
Keluaran:
F - citra yang telah difilter

Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran
citra
% Menentukan ukuran baru untuk
perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;

% Menentukan jangkauan frekuensi u dan
v
u = 0:(p - 1);
v = 0:(q - 1);
% Hitung indeks untuk meshgrid
idx = find(u > q/2);
u(idx) = u(idx) - q;
idy = find(v > p/2);
v(idy) = v(idy) - p;
% Peroleh array meshgrid
[V, U] = meshgrid(v, u);
% Hitung jarak D(v,u)
D = sqrt(V.^2 + U.^2);

% Menentukan n kalau n tidak disebutkan
if nargin == 2
n = 1;
end
ambang = d0 * p; % Hitung frekuensi ambang
Hf = 1 ./ (1 + D ./ ambang^(2 * n));
% Transformasi via FFT dengan zero padding
Ff = fft2(Fs, p, q);
% Pemfilteran
G = Hf .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));

■ Contoh pemakaian fungsi blpf:
>> F = blpf('C:\Image\kotatua.tif', 0.02, 0.3 ); 
>> imshow(F) 

Hasil penerapan BLPF dengan N =1

Hasil penerapan BLPF untuk berbagai N

■ GLPF
 
(Gaussian low pass filter) merupakan filter lolos-rendah dengan fungsi
transfer seperti berikut:
dengan merupakan deviasi standar. Sebagai contoh, dengan menggunakan
sama dengan Do maka
Saat D(v,u) = D0, filter turun menjadi 0.607 terhadap nilai maksimum 1.

Program : glpf.m
function F = glpf(berkas, d0)
% GLPF Digunakan untuk melaksanakan pemfilteran
%
pada kawasan frekuensi menggunakan GLPF.
%
Masukan:
%
berkas - nama citra
%
d0 - menentukan frekuensi ambang
%
Keluaran:
%
F - citra yang telah difilter

Fs = double(imread(berkas));
[a, b] = size(Fs);
%Peroleh ukuran citra
% Menentukan ukuran baru untuk perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1);
v = 0:(q - 1);

% Hitung indeks untuk meshgrid
idx = find(u > q/2);
u(idx) = u(idx) - q;
idy = find(v > p/2);
v(idy) = v(idy) - p;
% Peroleh array meshgrid
[V, U] = meshgrid(v, u);
% Hitung jarak D(v,u)
D = sqrt(V.^2 + U.^2);
% Menentukan n kalau n tidak
disebutkan
if nargin == 2
n = 1;
end

ambang = d0 * p; % Hitung frekuensi ambang
Hf = exp(-(D.^2) ./ (2 * ambang ^ 2));
% Transformasi via FFT dengan zero padding
Ff = fft2(Fs, p, q);
% Pemfilteran
G = Hf .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));

Contoh pemakaian fungsi di glpf:
>> F = glpf('C:\Image\kotatua.if', 0.05); 
>> imshow(F) 

Hasil penerapan filter GLPF

Filter Lolos-Tinggi
■ Filter
 
highpass adalah flter yang mengubah (menurunkan) komponen frekuensi rendah, dan
melewatkan (passing) komponen frekuensi tnggi. Citra yang diflter menggunakan flter
highpass memiliki detail yang lebih tajam dibandingkan citra asal.
■ Filter ini memiliki hubungan dengan filter lolos-rendah seperti berikut:
■ Dengan Hlt(v,u) adalah fungsi transfer filter lolos-tinggi dan H lf(v,u) adalah
fungsi transfer filter lolos-rendah.
■ Tiga jenis filter lolos-tinggi dilihat di Tabel. Ketiga filter yang tercantum dalam
tersebut yaitu IHPF (Ideal high pass filter), BHPF (Butterworth high pass
filter), dan GHPF (Gaussian high pass filter).

Filter lolos-tinggi

Program : bhpf.m
function F = bhpf(berkas, d0, n)

% Hitung indeks untuk meshgrid
idx = find(u > q/2);
u(idx) = u(idx) - q;
idy = find(v > p/2);
v(idy) = v(idy) - p;

% BHPF Digunakan untuk melaksanakan pemfilteran
%
pada kawasan frekuensi menggunakan BHPF.
%
Masukan:
%
berkas - nama citra
%
d0 - menentukan frekuensi ambang
%
n - menentukan faktor n
%
Keluaran:
%
F - citra yang telah difilter

Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran
citra
% Menentukan ukuran baru untuk perluasan
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;

citra

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1);
v = 0:(q - 1);

% Peroleh array meshgrid
[V, U] = meshgrid(v, u);
% Hitung jarak D(v,u)
D = sqrt(V.^2 + U.^2);
% Menentukan n kalau n tidak disebutkan
if nargin == 2
n = 1;
end

ambang = d0 * p; % Hitung frekuensi ambang
Hlr = 1 ./ (1 + (D ./ ambang) .^(2 * n)); % Lolos-rendah
Hlt = 1 - Hlr;
% Lolos-tinggi
% Transformasi via FFT dengan zero padding
Ff = fft2(Fs, p, q);
% Pemfilteran
G = Hlt .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));

■ Contoh pemakaian fungsi blpf:
>> F = bhpf('C:\Image\goldhill.tif', 0.005, 1 ); 
>> imshow(F) 

Pemfilteran dengan BHPF
Gambar (b) menunjukkan bahwa penerapan BHPF pada citra
membuat latarbelakang menjadi hampir hilang, karena nilai
intensitas reratanya hilang (menjadi nol).

Pemfilteran dengan Pendekatan High Frequency Emphasis

■  Penerapan filter lolos-tinggi dengan cara yang telah dibahas menimbulkan
efek berupa hilangnya latarbelakang. Hal ini disebabkan pemfilteran dengan
cara tersebut menghilangkan komponen DC (F(0,0)).


Nah, untuk mengatasi hal itu, terdapat pendekatan yang dinamakan
pemfilteran high frequency emphasis (HFE). Dalam hal ini, penonjolan
frekuensi tinggi diatur melalui rumus:

■ Dalam hal ini,


Hlt adalah fungsi transfer filter lolos-tinggi;



a adalah nilai ofset, sebagai penambah nilai rerata intensitas;



b adalah nilai pengali, untuk meningkatkan kontras.

■ Gonzales, dkk. (2004) menunjukkan bahwa penggunaan a sebesar 0,5 dan b
sebesar 2 memberikan hasil yang memuaskan pada citra medis.

Program : hfe.m
function F = hfe(berkas, d0, n)
% HFE Digunakan untuk melaksanakan pemfilteran
%
pada kawasan frekuensi menggunakan BHPF
%
dan menerapkan HFE (High frequency emphasis).
%
Masukan:
%
berkas - nama citra
%
d0 - menentukan frekuensi ambang
%
n - menentukan faktor n
%
Keluaran:
%
F - citra yang telah difilter

Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Menentukan ukuran baru untuk perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Menentukan jangkauan frekuensi u dan v
u = 0:(p - 1);
v = 0:(q - 1);
% Hitung indeks untuk meshgrid
idx = find(u > q/2);
u(idx) = u(idx) - q;

ambang = d0 * p; % Hitung frekuensi
ambang
Hlr = 1 ./ (1 + (D ./ ambang) .^(2 * n)); %
Lolos-rendah
Hlt = 1 - Hlr;
% Lolos-tinggi
% Proses HFE
Hfe = 0.5 + 2 * Hlt;
% Transformasi via FFT dengan zero padding
Ff = fft2(Fs, p, q);
% Pemfilteran
G = Hfe .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));

■ Contoh penggunaan fungsi hfe:
>> F = hfe('C:\Image\goldhill.tif', 0.05, 1 ); 
>> imshow(F) 

Hasil penerapan high frequency emphasis
Terlihat bahwa terjadi penonjolan citra tanpa menghilangkan
latarbelakang

Latihan
1.

Berikan beberapa contoh transformasi yang mengalihkan ke kawasan frekuensi.

2.

Terdapat data seperti berikut:
 
f(x) = (3, 4, 4, 5)
 
Hitunglah transformasi Fourier F(0) hingga F(3).

3.

Jelaskan maksud istilah berikut.
■ Spektrum Fourier
■ Spektrum daya (power spectrum)

4.

Apa yang Anda ketahui mengenai FFT?

5.

Apa kegunaan fungsi fftshift?

6.

Jelaskan yang dimaksud dengan istilah berikut.
■ Filter lolos-rendah
■ Filter lolos-tinggi