Professional Documents
Culture Documents
Pengolahan
Citra di Kawasan
Frekuensi
Perhatikan bahwa jumlah data diskret N yang sama di kawasan frekuensi, yang
sejalan dengan hukum kelestarian informasi. F(u) diperoleh melalui persamaan:
1 2𝜋𝑢𝑥 2𝜋𝑢𝑥
𝐹 (𝑢) = ∑𝑁−1
𝑥=0 𝑓(𝑥)(𝑐𝑜𝑠 [ ] − 𝑗 𝑠𝑖𝑛 [ ]) (6.1)
𝑁 𝑁 𝑁
atau
1 2𝜋𝑢𝑥
𝐹 (𝑢) = 𝑁 ∑𝑁−1
𝑥=0 𝑓( 𝑥 ) 𝑒𝑥𝑝 [−𝑗 𝑁
] , dengan u = 0,1,2,…,N-1 (6.2)
2𝜋𝑢𝑥
𝑓 (𝑥 ) = ∑𝑁−1
𝑥=0 𝐹 ( 𝑢) 𝑒𝑥𝑝[𝑗 𝑁 ] , dengan u = 0,1,2,…,N-1 (6.3)
1 2𝜋0𝑥 2𝜋0𝑥
𝐹 (0) = 4 ∑3𝑥=0 𝑓(𝑥)(𝑐𝑜𝑠 [ ] − 𝑗 𝑠𝑖𝑛 [ ])
4 4
= (f(0)(cos(0)-j sin(0)) +
f(1)(cos(0)-j sin(0)) +
f(2)(cos(0)-j sin(0)) +
f(3)( (cos(0)-j sin(0))) / 4
= (f(0) + f(1) + f(2) + f(3)) / 4
= (2 + 4 + 1 + 5) / 4 = 12 / 4 = 3
1 2𝜋1𝑥 2𝜋1𝑥
𝐹 (1) = 4 ∑3𝑥=0 𝑓(𝑥)(𝑐𝑜𝑠 [ 4 ] − 𝑗 𝑠𝑖𝑛 [ 4 ])
Pengolahan Citra di Kawasan Frekuensi 171
= (f(0)(cos(0)-j sin(0)) +
f(1)(cos(𝜋/2)-j sin(𝜋/2)) +
f(2)(cos(𝜋)-j sin(𝜋)) +
f(3)( (cos(3𝜋/2)-j sin(3𝜋/2))) / 4
= (2 (1-0) + 4(0-j) + 1(-1-0) + 5(0+j)) / 4
= (1+j)/4 = 0,25 + j0,25
1 2𝜋2𝑥 2𝜋2𝑥
𝐹 (2) = 4 ∑3𝑥=0 𝑓(𝑥)(𝑐𝑜𝑠 [ ] − 𝑗 𝑠𝑖𝑛 [ ])
4 4
= (f(0)(cos(0)-j sin(0)) +
f(1)(cos(𝜋)-j sin(𝜋)) +
f(2)(cos(2𝜋)-j sin(2𝜋)) +
f(3)( (cos(3𝜋)-j sin(3𝜋))) / 4
= (2 (1-0) + 4(-1-0) + 1(1-0) + 5(-1-0) ) / 4
= -6 / 4 = -1,50
1 2𝜋3𝑥 2𝜋3𝑥
𝐹 (3) = 4 ∑3𝑥=0 𝑓(𝑥)(𝑐𝑜𝑠 [ 4 ] − 𝑗 𝑠𝑖𝑛 [ 4 ])
= (f(0)(cos(0)-j sin(0)) +
f(1)(cos(3𝜋/2)-j sin(3𝜋/2)) +
f(2)(cos(3𝜋)-j sin(3𝜋)) +
f(3)( (cos(9𝜋/2)-j sin(9𝜋/2))) / 4
= (2 (1-0) + 4(0+j) + 1(-1-0) + 5(0-j) ) / 4
= (1 - j)/4
= 0,25 - j0,25
Pada Gambar 6.2, DFT-1 menyatakan transformasi balik dari kawasan frekuensi
ke kawasan spasial. Perhatikan bahwa data asli f(x) hanya 4, tetapi hasil alihragam
ada 8, seolah ada tambahan informasi.
Sekarang akan ditunjukkan pelaksanaan alihragam-baliknya. Perhatikan
cara menghitungnya.
2𝜋0𝑥 2𝜋0𝑥
𝑓 (0) = ∑3𝑥=0 𝐹(𝑥)(𝑐𝑜𝑠 [ ] + 𝑗 𝑠𝑖𝑛 [ ])
4 4
= F(0)(cos(0)+j sin(0)) +
F(1)(cos(0)+j sin(0)) +
F(2)(cos(0)+j sin(0)) +
F(3)( (cos(0)+j sin(0))) / 4
3
2𝜋1𝑥 2𝜋1𝑥
𝑓(1) = ∑ 𝐹(𝑥)(𝑐𝑜𝑠 [ ] + 𝑗 𝑠𝑖𝑛 [ ])
4 4
𝑥=0
= F(0)(cos(0)+j sin(0)) +
F(1)(cos(𝜋/2)+j sin(𝜋/2)) +
F(2)(cos(𝜋)+j sin(𝜋)) +
F(3)( (cos(3𝜋/2)+j sin(3𝜋/2))
= 3 (1+0) + (0,25 + j0,25)(0+j) - 1,5 (-1+0) +
(0,25-j0,25)(0-j)
Pengolahan Citra di Kawasan Frekuensi 173
3
2𝜋2𝑥 2𝜋2𝑥
𝑓 (2) = ∑ 𝐹(𝑥)(𝑐𝑜𝑠 [ ] + 𝑗 𝑠𝑖𝑛 [ ])
4 4
𝑥=0
= F(0)(cos(0)-j sin(0)) +
F(1)(cos(𝜋)-j sin(𝜋)) +
F(2)(cos(2𝜋)-j sin(2𝜋)) +
F(3)(cos(3𝜋)-j sin(3𝜋))
= 3 (1-0) + (0,25 + j0,25) (-1-0) - 1,5 (1-0) +
((0,25-j0,25))(-1-0)
= 3 – 0,25 –j0,25 -1,5 – 0,25 +j0,25
=1
3
2𝜋3𝑥 2𝜋3𝑥
𝑓(3) = ∑ 𝐹(𝑥)(𝑐𝑜𝑠 [ ] + 𝑗 𝑠𝑖𝑛 [ ])
4 4
𝑥=0
= (F(0)(cos(0)+j sin(0)) +
F(1)(cos(3𝜋/2)+j sin(3𝜋/2)) +
F(2)(cos(3𝜋)+j sin(3𝜋)) +
F(3)( (cos(9𝜋/2)+j sin(9𝜋/2))) / 4
= 3 (1-0) + (0,25 + j0,25) (0-j) - 1,5 (-1-0) +
(0,25-j0,25)(0+j)
= 3 - j0,25 + 0,25 + 1,5 + j0,25 + 0,25
= 5
Program : dft1d.m
174 Pengolahan Citra, Teori dan Aplikasi
Re(u+1) = Re(u+1) / n;
Im(u+1) = Im(u+1) / n;
end
Akhir Program
>> Fx = [2,4,1,5]';
>> [Re,Im] = dft1d(Fx)
Re =
Im =
>>
Program : idft1d.m
Pengolahan Citra di Kawasan Frekuensi 175
function Fx = idft1d(Fu)
% IDFT1D Digunakan untuk melaksanakan transformasi balik
% 1D DFT.
% Masukan: Fu berupa bilangan kompleks
Akhir Program
>> Fx = [2,4,1,5]';
>> [Re,Im] = dft1d(Fx);
>> F = idft1d(Re+Im*j)
F =
>>
Suatu citra diskret berdimensi dua f(x, y) dapat dinyatakan sebagai deret
Fourier, yang dituliskan seperti berikut:
𝑢𝑥 𝑣𝑦 𝑢𝑥 𝑣𝑦
𝐹(𝑢, 𝑣) = ∑𝑀 −1 𝑁−1
𝑦=0 ∑𝑥 =0 𝑓(𝑥, 𝑦)(cos(2𝜋 ( 𝑁 + )) − 𝑗 sin (2𝜋 ( 𝑁 + ))) (6.4)
𝑀 𝑀
Dalam hal ini, citra berukuran MxN (M baris dan N kolom). Komponen v bernilai
dari 0 sampai dengan M-1 dan u bernilai dari 0 sampai dengan N-1. Dalam hal
ini, u dan v menyatakan frekuensi, sedangkan nilai F(u, v) dinamakan koefisien
Fourier atau spektrum frekuensi diskret.
Adapun alihragam-baliknya berupa:
1 𝑢𝑥 𝑣𝑦 𝑢𝑥 𝑣𝑦
𝑓(𝑦, 𝑥) = ∑𝑀−1 𝑁−1
𝑦=0 ∑ 𝑥=0 𝐹(𝑣, 𝑢)(cos (2𝜋 ( + )) + 𝑗 sin (2𝜋 ( + ))) (6.5)
𝑀𝑁 𝑁 𝑀 𝑁 𝑀
Program : dft2d.m
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
Pengolahan Citra di Kawasan Frekuensi 177
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
Akhir Program
Dengan cara seperti itu, Dr mencatat bagian real dan Di mencatat bagian
imajiner.
Tabel berikut memberikan contoh waktu pengeksekusian yang dilakukan
pada tiga citra dengan ukuran yang berlainan dengan menggunakan fungsi
dft2d. Terlihat bahwa semakin besar ukuran citra yang diproses, terjadi
peningkatan waktu komputasi yang sangat signifikan.
2𝜋𝑢𝑥
Tabel 6.2 Nilai-nilai 𝑒𝑥𝑝 [𝑗 ]
8
x 0 1 2 3 4 5 6 7
u
0 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0
1 1 1 1 1 1 1 1
1 1+j0 +𝑗 0+j − +𝑗 -1+j0 − −𝑗 0-j − −𝑗
√2 √2 √2 √2 √2 √2 √2 √2
2 1+j0 0+j -1+j0 0-j 1+j0 0+j -1+j0 0-j
1 1 1 1 1 1 1 1
3 1+j0 − −𝑗 0+j + −𝑗 0-j + +𝑗 0-j − +𝑗
√2 √2 √2 √2 √2 √2 √2 √2
4 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0 1+j0
1 1 1 1 1 1 1 1
5 1+j0 +𝑗 0+j − +𝑗 -1+j0 − −𝑗 0-j − −𝑗
√2 √2 √2 √2 √2 √2 √2 √2
6 1+j0 0+ j -1+j0 0-j 1+j0 0+j -1+j0 0-j
1 1 1 1 1 1 1 1
7 1+j0 − −𝑗 0+i −𝑗 0-j + +𝑗 0-j − +𝑗
√2 √2 √2 √2 √2 √2 √2 √2
Pengolahan Citra di Kawasan Frekuensi 179
2𝜋𝑢𝑥 1
Terlihat bahwa nilai-nilai 𝑒𝑥𝑝 [𝑗 ] banyak yang sama, yaitu 0, , dan 1.
8 √2
Oleh karena itu, algoritma cepat dibuat untuk tidak mengulang proses perkalian
dengan angka-angka yang sama. Bahkan, perkalian dengan angka 1 dapat
diloncati karena tidak perlu dilakukan. Demikian pula, perkalian dengan nol sama
dengan melompati datanya untuk tidak perlu disertakan dalam perhitungan.
Namun, perlu dictata bahwa penghematan proses komputasi ini hanya dapat
terjadi untuk jumlah pikel N = 2 n , yaitu 2, 4, 8, 16, dan seterusnya. Untuk citra
dengan besar N (dan M) kurang dari angka-angka tersebut dapat dilengkapi
dengan piksel-piksel kosong (bernilai intensitas nol).
Cara melakukan komputasi dengan FFT dijabarkan oleh Cooley, dkk.
(1969). Implementasi dengan Octave berupa fungsi fft dan fft2. Contoh
penggunaan fft2 seperti berikut:
dengan R(u,v) menyatakan bagian real dan I(u,v) menyatakan bagian imajiner.
Adapun sudut fase transformasi didefinisikan sebagai:
𝐼(𝑣,𝑢)
∅(𝑣, 𝑢) = 𝑡𝑎𝑛 −1 [ ] (6.7)
𝑅(𝑣,𝑢)
180 Pengolahan Citra, Teori dan Aplikasi
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.png dan kemudian menyajikan spektrum.
(c) Visualisasi hasil FFT dengan (d) Visualisasi hasil FFT. Dengan
skala logaritmik intensitas frekuensi nol ditengahkan
Hasil pada Gambar 6.3(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,
sebagaimana ditunjukkan pada Gambar 6.4.
Hal seperti itu dapat dikerjakan dengan menggunakan fungsi fftshift yang
disediakan oleh Octave. Kegunaan fungsi fftshift adalah untuk mengatur agar
komponen frekuensi nol diletakkan di tengah-tengah spektrum. Untuk
memberikan gambaran fungsi ini, perhatikan contoh berikut.
X=
Pengolahan Citra di Kawasan Frekuensi 183
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
fftshift(X)
ans =
11 12 9 10
15 16 13 14
3 4 1 2
7 8 5 6
>> G = fftshift(F);
>> imshow(log(1+abs(G)),[])
>>
Gonzales, dkk. (2004) menjelaskan cara menentukan ukuran baru untuk citra
f dan h. Misalkan, f berukuran a x b dan h berukuran c x d. Kedua fungsi tersebut
diperluas menjadi berukuran p x q. Maka, ukuran untuk p dan q harus memenuhi
p > a + c -1 (6.9)
dan
Pengolahan Citra di Kawasan Frekuensi 187
q > b + d -1 (6.10)
2r
dengan r adalah bilangan bulat. Dalam praktik, nilai p dan q acapkali dibuat sama,
yaitu sebesar r. Dengan kata lain, nilai r harus memenuhi persamaan berikut:
2r > a + c -1 (6.11)
dan
2r > b + d -1 (6.12)
Dengan asumsi bahwa ukuran citra f jauh lebih besar daripada citra h, satu
pendekatan yang biasa dilakukan untuk memperoleh nilai p dan q untuk
kepentingan zero padding menggunakan algoritma seperti berikut.
Keluaran:
pxq (ukuran baru citra untuk f dan h)
1. m max(a, b)
3. p 2q
4. q 2q
188 Pengolahan Citra, Teori dan Aplikasi
>> Fs = imread('C:\Image\kotatua.png');
>> Hs = fspecial('sobel');
>> size(Fs)
ans =
747 500
Pada contoh di atas, pengaturan 512 didasarkan pada perhitungan untuk zero
padding seperti yang telah dibahas di depan, mengingat ukuran citra berupa
250x250. Pada perintah di atas,
Fx = F(1:250, 1:250);
digunakan untuk mengambil citra seperti ukuran citra semula. Gambar 6.8
menunjukkan contoh citra yang diproses dan hasil pemfilteran.
Pengolahan Citra di Kawasan Frekuensi 189
Gambar 6.8 Contoh pemfilteran dengan filter Sobel pada kawasan frekuensi
Hs = fspecial('sobel');
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
190 Pengolahan Citra, Teori dan Aplikasi
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Konvolusi
G = Hf .* Ff;
Akhir Program
>> H = fspecial(’sobel’);
>> F = filterdft('C:\Image\kotatua.png', H);
>> imshow(F)
Filter lolos-bawah (low-pass filter) adalah filter yang mempunyai sifat dapat
meloloskan yang berfrekuensi rendah dan menghilangkan yang berfrekuensi
tinggi. Efek filter ini membuat perubahan level keabuan menjadi lebih lembut.
Filter ini berguna untuk menghaluskan derau atau untuk kepentingan interpolasi
tepi objek dalam citra. Tiga jenis filter lolos-rendah dilihat pada Tabel 6.1.
Pengolahan Citra di Kawasan Frekuensi 191
Butterworth
Gaussian
192 Pengolahan Citra, Teori dan Aplikasi
1 𝑗𝑖𝑘𝑎 𝐷(𝑣, 𝑢) ≤ 𝐷0
𝐻 (𝑣, 𝑢) = { (6.13)
0 𝑗𝑖𝑘𝑎 𝐷(𝑣, 𝑢) > 𝐷0
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
𝐷 (𝑣, 𝑢) = √𝑣 2 + 𝑢2 (6.14)
Skrip berikut menunjukkan suatu fungsi yang ditujukan untuk memfilter citra
menggunakan ILPF.
Program : ilpf.m
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Pemfilteran
G = Hf .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));
Akhir Program
Gambar 6.9 merupakan contoh penerapan IDLF untuk berbagai nilai d0 yang
diterapkan pada kotatua.png.
194 Pengolahan Citra, Teori dan Aplikasi
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
1
𝐻 (𝑣, 𝑢) = (6.15)
1+[𝐷 (𝑣,𝑢)/𝐷0 ]2𝑛
Program : blpf.m
Pengolahan Citra di Kawasan Frekuensi 195
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Pemfilteran
G = Hf .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));
Akhir Program
196 Pengolahan Citra, Teori dan Aplikasi
Gambar 6.10 dan 6.11 merupakan contoh penerapan IDLF untuk berbagai nilai d0
dan n yang berbeda yang diterapkan pada kotatua.png.
GLPF (Gaussian low pass filter) merupakan filter lolos-rendah dengan fungsi
transfer seperti berikut:
𝐷2 (𝑣,𝑢)
𝐻 (𝑣, 𝑢) = 𝑒 2𝜎2 (6.16)
𝐷2 (𝑣,𝑢)
2
𝐻 (𝑣, 𝑢) = 𝑒 2𝐷0 (6.17)
Program : glpf.m
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Pemfilteran
G = Hf .* Ff;
% Transformasi balik
Pengolahan Citra di Kawasan Frekuensi 199
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));
Akhir Program
Gambar 6.12 merupakan contoh penerapan GLPF untuk berbagai nilai d0 yang
diterapkan pada kotatua.png.
Dengan Hlt (v,u) adalah fungsi transfer filter lolos-tinggi dan Hlf(v,u) adalah fungsi
transfer filter lolos-rendah.
Tiga jenis filter lolos-tinggi dilihat di Tabel 6.3. Ketiga filter yang tercantum
dalam tersebut yaitu IHPF (Ideal high pass filter), BHPF (Butterworth high pass
filter), dan GHPF (Gaussian high pass filter).
Butterworth
Pengolahan Citra di Kawasan Frekuensi 201
Program : bhpf.m
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Pemfilteran
G = Hlt .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));
Akhir Program
Gambar 6.13 menunjukkan gambar asli dan hasil pemrosesan dengan perintah di
atas.
Pengolahan Citra di Kawasan Frekuensi 203
Hasil pada Gambar 6.13(b) menunjukkan bahwa penerapan BHPF pada citra
membuat latarbelakang menjadi hampir hilang, karena nilai intensitas reratanya
hilang (menjadi nol).
Program : hfe.m
Fs = double(imread(berkas));
[a, b] = size(Fs); %Peroleh ukuran citra
% Proses HFE
Hfe = 0.5 + 2 * Hlt;
Pengolahan Citra di Kawasan Frekuensi 205
% Pemfilteran
G = Hfe .* Ff;
% Transformasi balik
F = real(ifft2(G));
F = uint8(F(1:a, 1:b));
Akhir Program
Gambar 6.14 menunjukkan gambar asli goldhill.png dan hasil pemrosesan di atas.
Latihan
1. Berikan beberapa contoh transformasi yang mengalihkan ke kawasan
frekuensi.
2. Terdapat data seperti berikut:
f(x) = (3, 4, 4, 5)
mesh(fftshift(H));
colormap(jet);
11. Dengan menggunakan fungsi fillrb (Soal 9), bagaimana kalau dikehendaki
untuk memperoleh fungsi transfer filter lolos-tinggi Butterworth?
208 Pengolahan Citra, Teori dan Aplikasi