Upload
doanthuy
View
230
Download
0
Embed Size (px)
Citation preview
BAB 11
Restorasi
Citra
Setelah bab ini berakhir, diharapkan pemakai memahami
berbagai hal berikut yang berhubungan dengan restorasi
citra dan mampu mempraktikkannya.
Restorasi citra
Derau dalam citra
Jenis derau
Penghilangan derau
Penghilangan derau di kawasan frekuensi
Filter inversi
Filter Wiener
Ukuran keberhasilan penghilangan derau
498 Pengolahan Citra Teori dan Aplikasi
11.1 Pengantar Restorasi Citra
Istilah restorasi mempunyai perbedaan makna dengan peningkatan citra.
Peningkatan citra (image enhancement) merupakan istilah yang menyatakan usaha
untuk membuat gambar agar lebih baik dari sudut pandang pengolahnya. Hal ini
dilakukan misalnya melalui pengubahan kontras dan kecerahan. Berbeda dengan
peningkatan citra, restorasi citra merupakan proses untuk membuat citra yang
kualitasnya turun akibat adanya tambahan derau agar menjadi mirip dengan
keadaan aslinya. Itulah sebabnya, pembahasan restorasi akan dimulai dengan
pembahasan derau.
11.2 Derau dalam Citra
Derau sesungguhnya adalah komponen dalam citra yang tidak
dikehendaki. Dalam praktik, kehadiran derau tidak dapat dihindari. Sebagai
contoh, derau Gaussian biasa muncul pada sebarang isyarat. Derau putih (white
noise) biasa menyertai pada siaran televisi yang berasal dari stasiun pemancar
yang lemah. Derau butiran biasa muncul dalam film-film fotografi. Derau yang
dinamakan ‘garam dan merica’ sering mewarnai citra. Derau garam berwarna
putih dan derau garam berwarna hitam. Gambar 11.1 menunjukkan efek derau
dalam isyarat satu-dimensi.
Isyarat asli
Derau
Isyarat asli + derau
Gambar 11.1 Derau pada isyarat satu dimensi
Restorasi Citra 499
Derau dapat dikelompokkan menjadi empat kelas (Acharya dan Ray,
2005).
1. Derau tambahan (additive noise): Derau ini biasa muncul karena sensor
yang bekerja tidak sempurna dan memberikan isyarat tambahan terdistribusi
Gaussian, yang tidak bergantung pada isyarat asli. Isyarat yang dihasilkan
dapat dinyatakan secara matematis seperti berikut:
𝑔(. ) = 𝑓(. )+ 𝑑(.) (11.1)
Dalam hal ini, g(.) menyatakan isyarat yang telah terkena derau, f(.)
menyatakan citra asli, dan d(.) menyatakan derau.
2. Derau perkalian (multiplicative noise): Derau perkalian biasa terjadi pada
filem fotografi. Deraunya biasa disebut sebagai derau bercak (speckle noise).
Secara matematis, isyarat yang terkena derau perkalian dapat ditulis seperti
berikut:
𝑔(. ) = 𝑓(. ) ∗ 𝑑(.) (11.2)
Dalam hal ini, g(.) menyatakan isyarat yang telah terkena derau, f(.)
menyatakan citra asli, dan d(.) menyatakan derau.
3. Derau impuls (impulse noise): Sensor ataupun saluran data terkadang
memberikan derau berbentuk biner (0 atau 1). Derau seperti itu dimodelkan
sebagai berikut:
𝑔(. ) = (1 − 𝑝) ∗ 𝑓(. ) + 𝑝 ∗ 𝑑(.) (11.3)
Dalam hal ini, g(.) menyatakan isyarat yang telah terkena derau, f(.)
menyatakan citra asli, d(.) menyatakan derau, dan p menyatakan parameter
biner yang nilainya berupa 0 atau 1. Berdasarkan rumus di atas, isyarat asli
akan hilang saat p bernilai 1.
500 Pengolahan Citra Teori dan Aplikasi
4. Derau kuantisasi (quantization noise): Derau kuantisasi termasuk sebagai
derau yang bergantung pada isyarat. Hal ini terjadi saat kuantisasi terhadap
isyarat dilakukan sebelum dikonversi menjadi isyarat digital. Derau ini dapat
mengakibatkan detail citra hilang.
11.3 Jenis Derau
Jenis derau yang umum bervariasi Gaussian atau impuls. Namun, berbagai
mode derau yang lain terkadang dibicarakan dalam ranah pengolahan citra dengan
tujuan untuk menurunkan kualitas citra untuk kepentingan khusus pengujian
proses penghilangan derau.
11.3.1 Derau Gaussian
Derau Gaussian adalah model derau yang memiliki fungsi kerapatan
probabilitas (probability density function / PDF) yang diberikan oleh kurva
Gaussian. PDF yang mewakili sifat paling acak dalam bentuk satu dimensi seperti
berikut:
𝑝(𝑧) =1
√2𝜋𝑒−(𝑧−𝜇)2
2𝜎2 (11.4)
Dalam hal ini, adalah nilai rerata dan adalah deviasi standar (atau akar
varians) variabel random. PDF-nya ditunjukkan pada Gambar 11.2.
Restorasi Citra 501
p(z)
z + -
1
√2𝜋𝜎
0,607
√2𝜋𝜎
Gambar 11.2 Fungsi kepadatan probabilitas derau Gaussian
Derau Gaussian dapat dilakukan dengan menggunakan fungsi pembangkit
bilangan acak. Sebagai contoh, pada Octave terdapat fungsi bernama randn yang
berguna untuk menghasilkan bilangan acak yang terdistribusi secara normal
dengan nilai berkisar antara 0 dan 1. Nah, rumus untuk mendapatkan derau
Gaussian yang acak dengan deviasi standar sebesar dan rerata sama dengan
adalah seperti berikut:
𝑑 = 𝑟𝑎𝑛𝑑𝑛 ∗ 𝜎 + 𝜇 (11.5)
Apabila berupa nol, rumus di atas dapat disederhanakan menjadi d = randn * .
Contoh penambahan derau pada citra berskala keabuan ditunjukkan pada
fungsi drgaussian. Argumen pertama berupa citra berskala keabuan. Argumen
kedua bersifat opsional dan menyatakan nilai deviasi standar. Nilai bawaannya
berupa 1. Argumen ketiga bersifat opsional dan menyatakan nilai rerata. Nilai
bawaannya berupa 0.
502 Pengolahan Citra Teori dan Aplikasi
Program : drgaussian.m
function [G] = drgaussian(F, sigma, mu)
% DRGAUSSIAN Menghasilkan citra yang telah diberi derau
% menggunakan Gaussian.
% F = citra berskala keabuan
% sigma = standar deviasi fungsi Gaussian
% mu = rerata fungsi Gaussian
if nargin < 3
mu = 0; % Nilai bawaan mu
end
if nargin < 2
sigma = 1; % Nilai bawaan deviasi standar
end
[m, n] = size(F);
F = double(F);
for i=1 : m
for j=1 : nc
derau = randn * sigma + mu;
G(i,j) = round(F(i, j) + derau);
if G(i,j) > 255
G(i,j) = 255;
elseif G(i,j) < 0
G(i,j) = 0;
end
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi drgaussian ditunjukkan di bawah ini.
>> Img = imread('C:\Image\innsbruck.png');
>> imshow(Img)
>> G = drgaussian(Img, 50); imshow(G)
>>
Restorasi Citra 503
Pada contoh di atas, yang digunakan sebesar 50. Tiga contoh hasil penambahan
derau Gaussian pada citra Innsbruck.png ditunjukkan pada Gambar 11.3.
(b) = 10
(c) = 25 (d) = 50
(a) Citra Innsbruck.png
Gambar 11.3 Derau Gaussian untuk tiga nilai deviasi standar ()
Cara seperti di atas berlaku untuk citra berskala keabuan. Kalau dikehendaki,
derau Gaussian juga dapat diterapkan pada citra berwarna. Dalam hal ini, derau
perlu ditambahkan ke komponen R, G, dan B masing-masing. Contoh penerapan
derau Gaussian ditunjukkan pada Gambar 11.4.
504 Pengolahan Citra Teori dan Aplikasi
(b) = 10
(c) = 150 (d) = 150
(a) Citra bangunan.png
Gambar 11.4 Derau Gaussian pada citra berwarna
Apabila tidak tersedia fungsi yang menghasilkan bilangan acak yang
terdistribusi secara normal, fungsi pembangkit bilangan acak yang terdistribusi
seragam dapat digunakan. Pada Octave dan MATLAB, tersedia fungsi seperti itu,
yaitu rand. Adapun implementasinya seperti berikut.
Program : drgaussian2.m
function [G] = drgaussian2(F, sigma, mu)
% DRGAUSSIAN Menghasilkan citra yang telah diberi derau
% menggunakan Gaussian.
%
% Berdasarkan kode
% Harley R. Myler dan Arthur R. Weeks, 1993
%
% F = citra berskala keabuan
% sigma = standar deviasi fungsi Gaussian
% mu = rerata
if nargin < 3
mu = 0;
Restorasi Citra 505
end
if nargin < 2
sigma = 10;
end
[m, n] = size(F);
F = double(F);
for i=1 : m
for j=1 : n
derau = sqrt(-2 * sigma * sigma * log(1 - rand));
theta = rand * 1.9175345E-4 - 3.14159265;
derau = derau * cos(theta);
derau = derau + mu;
G(i,j) = round(F(i, j) + derau);
if G(i,j) > 255
G(i,j) = 255;
elseif G(i,j) < 0
G(i,j) = 0;
end
end
end
G = uint8(G);
Akhir Program
11.3.2 Derau Garam dan Merica (Salt & Pepper Noise)
Derau garam dan merica biasa dinamakan sebagai derau impuls positif dan
negatif, derau tembakan, atau derau biner. Derau ini biasa disebabkan oleh
gangguan yang tiba-tiba dan tajam pada proses perolehan isyarat citra. Bentuknya
berupa bintik-bintik hitam atau putih di dalam citra. Gambar 11.5 menunjukkan
contoh derau garam dan merica dengan berbagai nilai densitas derau. Derau
garam dan merica, sering muncul pada citra yang diperoleh melalui kamera.
506 Pengolahan Citra Teori dan Aplikasi
(a) Citra Innsbruck.png
(c) Probabilitas = 0,05 (d) Probabilitas = 0,2
(b) Probabilitas = 0,01
Gambar 11.5 Contoh derau garam dan merica untuk berbagai nilai probabilitas
Algoritma untuk membangkitkan derau garam dan merica dapat dilihat di
bawah ini.
ALGORITMA 1.1 – Membangkitkan derau garam dan merica
Masukan:
f : Citra berskala keabuan berukuran M x N
p : Probabilitas pembangkitan derau (0 s/d 1)
Keluaran:
g : Citra yang telah ditambahi dengan derau
derauImpuls(f, p): 1. Salin citra f ke g
Restorasi Citra 507
2. FOR y 1 TO M
FOR x 1 TO N
nilai_acak pembangkit_random
IF nilai_acak < p / 2
g(y, x) 0 // merica (berwarna hitam)
ELSE IF nilai_acak > p / 2 AND nilai_acak <= p
g(y, x) 255 // Garam (berwarna putih) END
END-IF END-FOR END-FOR
3. RETURN g
Skrip untuk membuat derau impuls ditunjukkan di bawah ini.
Program : drimpuls.m
function [G] = drimpuls(F, probabilitas)
% DRIMPULS Menghasilkan citra yang telah diberi derau
% menggunakan fungsi impuls.
% F = citra berskala keabuan
% probabilitas = Probabilitas kemunculan derau
% (0 s/d 1)
if nargin < 2
probabilitas = 0.05; % Nilai bawaan
end;
if probabilitas < 0 || probabilitas > 1
error('Nilai probabilitas harus antara 0 s/d 1');
end
[m, n] = size(F);
G = double(F);
for i=1 : m
for j=1 : n
nilai_acak = rand;
if nilai_acak <= probabilitas / 2
G(i,j) = 0;
elseif (nilai_acak > probabilitas / 2) && ...
(nilai_acak <= probabilitas)
G(i,j) = 255;
end
end
508 Pengolahan Citra Teori dan Aplikasi
end
G = uint8(G);
Akhir Program
Contoh untuk menambahkan derau impuls pada citra:
>> Img = imread('C:\Image\innsbruck.png');
>> imshow(Img)
>> G = drimpuls(Img, 0.005); imshow(G)
>> imshow(Img)
>>
11.3.3 Derau Eksponensial
Derau eksponensial (terkadang dinamakan derau eksponensial negatif)
merupakan jenis derau yang dihasilkan oleh laser yang koheren ketika citra
diperoleh. Oleh karena itu, derau ini sering disebut sebagai bercak laser (Myler
and Weeks, 1993). PDF-nya berupa
𝑝(𝑧) = {𝑎𝑒−𝑎𝑧 , 𝑢𝑛𝑡𝑢𝑘 0 ≤ 𝑧 < ~
0, 𝑧 < 0 (11.6)
Dalam hal ini, z adalah nilai aras keabuan I dan a>0. Reratanya berupa
𝜇 =1
𝑎 (11.7)
dan varians berupa
𝜎2 =1
𝑎2 (11.8)
Adapun bentuk PDF dapat dilihat pada Gambar 11.16.
Restorasi Citra 509
p(z)
z
1
𝑎
Gambar 11.6 Fungsi kepadatan probabilitas derau eksponensial negatif
Pembangkit derau eksponensial dilakukan dengan menggunakan rumus
(Gonzalez, dkk., 2004):
𝑑 = −1
𝑎ln (1 − 𝑟𝑎𝑛𝑑) (11.9)
Dalam hal ini, rand adalah pembangkit bilangan acak yang bersifat seragam.
Implementasinya dapat dilihat di bawah ini.
Program : dreksponensial.m
function [G] = dreksponensial(F, a)
% DREKSPONENSIAL Menghasilkan citra yang telah diberi derau
% menggunakan fungsi eksponensial negatif.
%
% Berdasarkan kode
% Rafael C. Gonzales, Richard E. Woods, dan
510 Pengolahan Citra Teori dan Aplikasi
% Steven L. Eddins, 2004
%
% F = citra berskala keabuan
% varians = varians yang dikehendaki
if nargin ~= 2
error('Penggunaan: dreksponensial(F, a)');
end
if a <= 0
error('Parameter berupa sebarang bilangan > 0');
end
[m, n] = size(F);
F = double(F);
G = zeros(m, n);
for i=1 : m
for j=1 : n
derau = -1/a * log(1 - rand);
G(i,j) = round(F(i,j) + derau);
if G(i,j) > 255
G(i,j) = 255;
end
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi dreksponensial:
>> Img = imread('C:\Image\innsbruck.png');
>> G = dreksponensial(Img, 100); imshow(G)
>>
Beberapa contoh hasil penerapan derau eksponensial negatif dapat dilihat pada
Gambar 11.17.
Restorasi Citra 511
(a) Citra Innsbruck.tif
(c) a = 0,07 (d) a = 0,01
(b) a = 0,1
Gambar 11.7 Contoh derau eksponensial negatif
11.3.4 Derau Gamma
Derau gamma (atau kadang disebut Erlang) merupakan efek penapisan
lolos-rendah terhadap citra yang mengandung derau eksponensial sebagai hasil
pengambilan citra yang teriluminasi oleh laser yang koheren (Myler dan Weeks,
1993). PDF derau Gamma didefinisikan sebagai berikut (Gonzalez dan Woods,
2002):
𝑝(𝑥) =𝑎𝑏𝑥𝑏−1
(𝑏−1) !𝑒−𝑎𝑥 (11.10)
Dalam hal ini, x adalah nilai aras keabuan, a>0, b berupa bilangan bulat positif,
dan tanda ! menyatakan faktorial. Rerata dan varians berupa:
512 Pengolahan Citra Teori dan Aplikasi
𝜇 =𝑏
𝑎2 (11.11)
dan
𝜎2 =𝑏
𝑎2 (11.12)
p(x)
x (b-1)/a
𝐾
𝐾 =0,607𝑎(𝑏 − 1)𝑏−1
(𝑏 − 1)!𝑒−(𝑏−1)
Gambar 11.8 Fungsi kepadatan probabilitas derau Gamma
Pembangkit bilangan acak untuk membangkitkan derau gamma berupa
(Gonzalez, dkk., 2004):
𝑥 = 𝐸1 +𝐸2 + ⋯+ 𝐸𝑏 (11.13)
Dalam hal ini, E adalah bilangan random eksponensial dengan parameter a.
Implementasinya dapat dilihat berikut ini.
Restorasi Citra 513
Program : drgamma.m
function [G] = drgamma(F, a, b)
% DRGAMMA Menghasilkan citra yang telah diberi derau
% menggunakan fungsi Gamma.
%
% Berdasarkan
% Rafael C. Gonzales, Richard E. Woods, dan
% Steven L. Eddins, 2004
%
% F = citra berskala keabuan
% a dan b = argumen untuk menentukan bentuk kurva
% a > 0 dan b bilangan bulat positif
if nargin ~= 3
error('Penggunaan: drgamma(F, a, b)');
end
if (a <= 0) || (a ~= round(a))
error('Argumen kedua harus berupa integer > 0');
end
if b < 1 || (b ~= round(b))
error('Argumen ketiga harus berupa integer > 0');
end
[m, n] = size(F);
alpha = b;
varians = b / (a * a);
p = sqrt(varians * a ) / 2.0;
F = double(F);
for i=1 : m
for j=1 : n
k = -1 / a;
derau = 0;
for p=1 : b
derau = derau + k * log(1 - rand);
end
G(i,j) = round(F(i,j)+derau);
if G(i,j) > 255
G(i,j) = 255;
end
end
end
G = uint8(G);
Akhir Program
514 Pengolahan Citra Teori dan Aplikasi
Contoh penggunaan fungsi drgamma:
>> Img = imread('C:\Image\innsbruck.png');
>> G = drgamma(Img, 1,20); imshow(G)
>>
Beberapa contoh hasil penerapan derau gamma dapat dilihat pada Gambar 11.9.
(a) Citra Innsbruck.png
(c) a = 4, b = 120 (d) a = 1, b = 50
(b) a = 1, b = 20
Gambar 11.9 Contoh derau gamma
11.3.4 Derau Rayleigh
Derau Rayleigh mempunyai PDF seperti berikut:
Restorasi Citra 515
𝑝(𝑥) = 𝑓(𝑥) = {2
𝑏(𝑧 − 𝑎)𝑒−(𝑧−𝑎)
2/𝑏 , 𝑧 ≥ 𝑎
0, 𝑧 < 0 (11.14)
Dalam hal ini, x adalah nilai aras keabuan. Rerata dihitung dengan menggunakan
rumus
𝜇 = √𝜋/(2𝑎) (11.15)
dan varians berupa
𝜎2 =𝑏(4−𝜋)
4 (11.16)
Bentuk PDF-nya dapat dilihat pada Gambar 11.10. Derau Rayleigh biasa muncul
pada jangkauan radar dan citra bergerak (Myler dan Weeks, 1993).
p(x)
x
0,607 2
𝑏
𝑎 + 𝑏
2
Gambar 11.10 Fungsi kepadatan probabilitas derau Rayleigh
Pembangkit bilangan acak diperoleh melalui (Gonzales, dkk., 2004):
516 Pengolahan Citra Teori dan Aplikasi
𝑧 = 𝑎 + √𝑏 ln (1− 𝑟𝑎𝑛𝑑) (11.17)
Implementasi untuk membangkitkan derau Rayleigh dapat dilihat di bawah ini.
Program : drrayleigh.m
function [G] = drrayleigh(F, a, b)
% DRRAYLEIGH Menghasilkan citra yang telah diberi derau
% menggunakan fungsi Rayleigh.
%
% Berdasarkan kode
% Rafael C. Gonzales, Richard E. Woods, dan
% Steven L. Eddins, 2004
%
% F = citra berskala keabuan
% a dan b = paramater untuk menentukan fungsi Rayleigh
if nargin ~= 3
error('Penggunaan: drrayleigh(F, a, b)');
end
if a <= 0 || b <= 0
error('Parameter a atau b berupa sebarang bilangan > 0');
end
[m, n] = size(F);
F = double(F);
G = zeros(m, n);
for i=1 : m
for j=1 : n
derau = a + sqrt(-b * log(1 - rand));
G(i,j) = round(F(i,j) + derau);
if G(i,j) > 255
G(i,j) = 255;
end
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi drrayleigh:
Restorasi Citra 517
>> Img = imread('C:\Image\innsbruck.png');
>> G = drrayleigh(Img, 10, 90); imshow(G)
>>
Beberapa contoh hasil penerapan derau Rayleigh dapat dilihat pada Gambar 11.11.
(a) Citra Innsbruck.png
(c) a = 1, b = 300 (d) a = 10, b = 490
(b) a = 10, b = 90
Gambar 11.11 Contoh derau Rayleigh
11.3.6 Derau Uniform
Derau uniform yaitu dengan peluang sama tinggi memiliki PDF seperti
berikut:
𝑝(𝑥) = {1
𝑏−𝑎, 𝑗𝑖𝑘𝑎 𝑎 ≤ 𝑥 ≤ 𝑏
𝑥, 𝑢𝑛𝑡𝑢𝑘 𝑙𝑎𝑖𝑛𝑛𝑦𝑎 (11.18)
518 Pengolahan Citra Teori dan Aplikasi
Rerata pada fungsi tersebut berupa
𝜇 =𝑎+𝑏
2 (11.19)
Varians-nya berupa
𝜎2 =(𝑏−𝑎)2
12 (11.20)
Bentuk PDF ditunjukkan pada Gambar 11.12.
p(x)
x
1
𝑏 − 𝑎
𝑎 𝑏
Gambar 11.12 Fungsi kepadatan probabilitas derau uniform
Pembangkit bilangan acak dapat dihitung melalui rumus (Gonzalez, dkk., 2004):
𝑧 = 𝑎 + (𝑏 − 𝑎) ∗ 𝑟𝑎𝑛𝑑 (11.21)
Implementasi untuk membangkitkan derau uniform dapat dilihat di bawah ini.
Restorasi Citra 519
Program : druniform.m
function [G] = druniform(F, a, b)
% DRRAYLEIGH Menghasilkan citra yang telah diberi derau
% uniform.
%
% Berdasarkan kode
% Rafael C. Gonzales, Richard E. Woods, dan
% Steven L. Eddins, 2004
%
% F = citra berskala keabuan
% a dan b = paramater untuk menentukan fungsi Rayleigh
if nargin ~= 3
error('Penggunaan: drrayleigh(F, a, b)');
end
if a <= 0 || b <= 0
error('Parameter a atau b berupa sebarang bilangan > 0');
end
[m, n] = size(F);
F = double(F);
G = zeros(m, n);
for i=1 : m
for j=1 : n
derau = a + (b-a) * rand;
G(i,j) = round(F(i,j) + derau);
if G(i,j) > 255
G(i,j) = 255;
elseif G(i,j) < 0
G(i,j) = 0;
end
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi druniform:
>> Img = imread('C:\Image\innsbruck.png');
>> G = druniform(Img, 1800, 0); imshow(G)
520 Pengolahan Citra Teori dan Aplikasi
>>
Beberapa contoh hasil penerapan derau uniform dapat dilihat pada Gambar 11.13.
(a) Citra Innsbruck.png
(c) a = 10, b = 50 (d) a = 10, b = 100
(b) a = 10, b = 30
Gambar 11.13 Contoh derau uniform
11.3.7 Derau Periodis
Derau periodis biasa terjadi karena interferensi listrik maupun
elektromekanis selama citra diakuisisi. Derau ini biasanya berbentuk sinusoidal.
Sifat periodis dapat berbentuk statisioner yaitu memiliki amplitudo, frekuensi, dan
fase yang tetap, tetapi dapat juga nonstasioner dengan nilai amplitudo, frekuensi,
dan fase berubah di sepanjang area citra.
Restorasi Citra 521
(a) Citra pantai.png
(c) a = 10, bx = -3, by = 4 (d) a = 20, bx = 10, by = 10
(b) a = 10, bx = 3, by = 4
Gambar 11.14 Citra dengan derau berupa gelombang sinus
Gambar 11.14 menunjukkan contoh citra yang telah diberi tambahan derau
periodis berbentuk sinus. Tambahan derau seperti itu dapat dilakukan dengan
menggunakan fungsi drperiodik. Implementasi fungsi tersebut dapat dilihat di
bawah ini.
Program : drperiodik.m
function [G] = drperiodik(F, a, bx, by)
% DRPERIODIK Menghasilkan citra yang teklah ditambahi
% derau periodis.
%
% F = Citra berskala keabuan
% b = penegas derau (1, 2, 3, ...)
% ax dan ay menentukan kemiringan derau
522 Pengolahan Citra Teori dan Aplikasi
if nargin < 4
a = 3; bx = 3; by = 5;
end
[m, n] = size(F);
for i=1:m
for j=1:n
X(i,j) = j;
Y(i,j) = i;
end
end
derau = a * sin(X/bx + Y/by) + 1;
G = uint8(double(F) + derau);
Akhir Program
Contoh penggunaan fungsi drperiodik:
>> Img = imread('C:\Image\pantai.png');
>> G = drperiodik(Img, 20, 10, 10); imshow(G)
>>
Contoh berikut menggunakan pemanggilan fungsi drperiodik dua arah:
>> Img = imread('C:\image\absam.png');
>> G = drperiodik(Img,10,1,50000);
>> G = drperiodik(G,10,50000,1); imshow(G)
>>
Restorasi Citra 523
Gambar 11.15 Hasil pengenaan drperiodik dua arah
11.4 Penghilangan Derau
Derau yang ditambahkan ke dalam citra umumnya memiliki spektrum
frekuensi yang lebih tinggi daripada komponen citra (Pratt, 2001). Oleh karena
itu, filter lolos-rendah dapat digunakan untuk menghilangkan derau.
Secara prinsip, penghilangan derau dapat dilakukan dengan pendekatan
yang linear ataupun nonlinear. Penghilangan derau secara linear dapat dilakukan
baik pada kawasan spasial maupun frekuensi. Termasuk pemrosesan pada
kawasan spasial yaitu penggunaan filter lolos-rendah (Pratt, 2001) ataupun filter
rerata aritmetik, filter rerata harmonik, dan filter rerata kontraharmonik (Gonzalez
dan Woods, 2002). Pada kawasan frekuensi, filter seperti homomorfik ataupun
filter lolos-rendah Butterworth dapat digunakan (Pratt, 2001).
11.4.1 Filter Lolos-Rendah
Penghilangan derau dengan filter lolos-rendah umumnya di ranah spasial
dilakukan dengan menggunakan cadar (biasa disebut tanggapan impuls)
524 Pengolahan Citra Teori dan Aplikasi
berukuran 3x3. Contoh ditunjukkan pada Gambar 11.16. Pada cadar tersebut,
semua koefisien telah dinormalisasi sehingga total nilai koefisien adalah 1. Cadar
pada Gambar 11.16(b) dan 11.16(c) adalah contoh cadar yang memiliki
tanggapan impuls seperti berikut:
𝐻 = [1 𝑏 1𝑏 𝑏2 𝑏1 𝑏 1
] (11.22)
𝐻 =1
9[1 1 11 1 11 1 1
] (a)
𝐻 =1
10[1 1 11 2 11 1 1
] (b)
𝐻 =1
16[1 2 12 4 21 2 1
] (c)
Gambar 11.16 Cadar filter lolos-rendah
Contoh pengenaan filter lolos-rendah pada citra yang telah diberi derau
ditunjukkan pada Gambar 11.17. Pelaksanaan penapisan dapat dilakukan dengan
melakukan konvolusi antara citra dan cadar. Contoh untuk melakukan operasi
penghilangan derau Gaussian dengan menggunakan cadar filter lolos-rendah
ditunjukkan berikut ini.
>> Img = imread('C:\Image\boneka.png');
>> H = [1 1 1; 1 1 1; 1 1 1] / 9
H =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
Restorasi Citra 525
>> G = drgaussian(Img, 5);
>> K = uint8(konvolusi(G,H)); imshow(K)
>>
Contoh hasil ditunjukkan pada Gambar 11.17(b).
526 Pengolahan Citra Teori dan Aplikasi
(a) Citra boneka.png yang telah
diberi derau Gaussian
(b) 1
9[1 1 11 1 11 1 1
]
(c) 1
10[1 1 11 2 11 1 1
]
(d) 1
16[1 2 12 4 21 2 1
]
Gambar 11.17 Contoh efek filter lolos-rendah
pada citra boneka yang mengandung derau Gaussian
11.4.2 Filter Rerata Aritmetik
Filter rerata aritmetik (arithmetic mean filter) dilakukan dengan
melakukan perhitungan rerata nilai pada suatu jendela berukuran m x n dan
Restorasi Citra 527
hasilnya digunakan sebagai nilai piksel pada citra keluaran. Dengan demikian,
jika g menyatakan citra yang terkena derau dan 𝑓 adalah citra yang deraunya telah
dihilangkan, hubungan kedua fungsi tersebut dapat ditulis menjadi
𝑓(𝑦,𝑥) =1
𝑚𝑛∑ 𝑔(𝑝, 𝑞)(𝑝,𝑞)∈𝑆𝑦𝑥
(11.23)
Filter ini cocok untuk menghilangkan derau uniform dan Gaussian, tetapi akan
sedikit mengaburkan citra.
Dalam praktik, pendekatan rerata di atas dapat dilakukan melalui
konvolusi antar g dan cadar H ataupun tanpa konvolusi. Dalam hal ini, semua
koefisien dalam cadar H bernilai 1
𝑚𝑛. Filter rerata aritmetik tidak lain adalah filter
pemerataan yang dibahas di Bagian 4.3.2. Gambar 11.18 menunjukkan gambaran
perhitungan untuk memperoleh nilai rerata yang diberikan ke 𝑓(𝑦,𝑥). Adapun
Gambar 11.19 menunjukkan contoh citra yang telah diberi derau dan hasil
pemrosesan dengan rerata aritmetik.
7 5
3 2
1 4
7
6
7
5
g 𝑓
2+6+7+4+1+3+7+5+7
9=
42
9= 4,6667 ≈ 5
y y
x x
Gambar 11.18 Contoh pemrosesan dengan filter rerata aritmetik
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter rerata aritmetik.
528 Pengolahan Citra Teori dan Aplikasi
Program : filarithmean.m
function [G] = filarithmean(F, ukuran)
% FILARITHMEAN Melakukan penghilangan derau dengan
% menggunakan filter rerata aritmetik
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
F = double(F);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
jum = 0;
for p = -setengah : setengah
for q = -setengah : setengah
jum = jum + F(i+p, j+q);
end
end
G(i-setengah, j-setengah) = jum / (ukuran * ukuran);
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filarithmean:
>> Img = imread('C:\Image\pantai.png');
>> G = drgaussian(Img, 10);
>> K = filarithmean(G); imshow(K);
>>
Ukuran jendela dapat ditentukan secara bebas dan terarah, misalnya, seperti
berikut:
Restorasi Citra 529
>> K = filarithmean(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek pererataan dengan filter rerata aritmetik diperlihatkan pada Gambar
11.19 dan Gambar 11.20. Gambar 11.20 menunjukkan bahwa filter rerata
aritmetik gagal mengatasi derau merica jika ukuran jendela yang digunakan kecil.
(a) Citra pantai.png yang telah diberi
derau Gaussian dengan = 10
(c) Filter rerata aritmetika 5 x 5 (d) Filter rerata aritmetika 9 x 9
(b) Filter rerata aritmetika 3 x 3
Gambar 11.19 Contoh efek filter rerata aritmetik
pada citra yang telah diberi derau Gaussian
530 Pengolahan Citra Teori dan Aplikasi
(a) Citra pantai.png yang telah diberi
derau garam dan merica, p = 0,01
(c) Filter rerata aritmetika 5 x 5 (d) Filter rerata aritmetika 9 x 9
(b) Filter rerata aritmetika 3 x 3
Gambar 11.20 Contoh efek filter rerata aritmetik
pada citra yang telah diberi derau garam dan merica
11.4.3 Filter Rerata Harmonik
Filter rerata harmonik (harmonic mean filter), yang termasuk dalam
golongan filter nonlinear, biasa digunakan untuk mengatasi derau Gaussian. Pada
derau garam dan merica, filter ini dapat digunakan untuk menghilangkan derau
garam, tetapi akan gagal kalau diterapkan pada derau merica (Gonzalez dan
Woods, 2002).
Operasi dengan filter ini dilakukan dengan menggunakan rumus
𝑓(𝑦,𝑥) =𝑚𝑛
∑1
𝑔(𝑝,𝑞)(𝑝,𝑞)∈𝑆𝑦𝑥
(11.24)
Restorasi Citra 531
Sebagai contoh, perhitungan dengan rumus di atas ditunjukkan pada Gambar
11.21.
7 5
3 2
1 4
7
6
7
3
g 𝑓
9
1
2 +
1
6 +
1
7 +
1
4 +
1
1 +
1
3 +
1
7 +
1
5 +
1
7
= 3,1266 ≈ 3
x x
y y
Gambar 11.21 Contoh perhitungan dengan filter rerata harmonik
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter rerata harmonik.
Program : filharmonik.m
function [G] = filharmonik(F, ukuran)
% FILHARMONIK Melakukan penghilangan derau dengan
% menggunakan filter rerata harmonik
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
F = double(F);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
532 Pengolahan Citra Teori dan Aplikasi
for j=1+setengah: n-setengah
jum = 0;
for p = -setengah : setengah
for q = -setengah : setengah
jum = jum + 1 / F(i+p, j+q);
end
end
G(i-setengah, j-setengah) = (ukuran * ukuran) / jum;
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filharmonik:
>> Img = imread('C:\Image\pantai.png');
>> G = drgaussian(Img, 10);
>> K = filharmonik(G); imshow(K);
>>
Ukuran jendela dapat ditentukan, misalnya, seperti berikut:
>> K = filharmonik(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek filter rerata harmonik diperlihatkan pada Gambar 11.22 dan Gambar
11.23. Gambar 11.23 menunjukkan bahwa filter rerata harmonik tidak dapat
mengatasi derau merica. Bintik warna putih dapat dihilangkan, tetapi bintik warna
hitam justru lebih ditonjolkan.
Restorasi Citra 533
(a) Citra kartun.tif yang telah diberi
derau Gaussian, = 10
(c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9
(b) Filter rerata harmonik 3 x 3
Gambar 11.22 Contoh efek filter rerata harmonik
pada citra yang diberi derau Gaussian
534 Pengolahan Citra Teori dan Aplikasi
(a) Citra kartun.png yang telah diberi
derau garam dan merica, p = 0,01
(c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9
(b) Filter rerata harmonik 3 x 3
Gambar 11.23 Contoh efek filter rerata harmonik
pada citra yang diberi derau garam dan merica
11.4.4 Filter Rerata Kontraharmonik
Penapisan dengan filter rerata kontraharmonik (contraharmonic mean
filter) dilaksanakan dengan menggunakan rumus berikut:
𝑓(𝑦,𝑥) =∑ 𝑔(𝑝,𝑞)𝑄+1(𝑝,𝑞)∈𝑆𝑦𝑥
∑ 𝑔(𝑝,𝑞)𝑄(𝑝,𝑞)∈𝑆𝑦𝑥
(11.25)
Dalam hal ini, Q dinamakan orde filter.
Filter rerata kontraharmonik cocok digunakan untuk menghilangkan derau
garam dan merica, tetapi tidak dapat dilakukan sekaligus. Dalam hal ini, nilai Q
positif berguna untuk menghilangkan derau merica dan nilai Q negatif berguna
Restorasi Citra 535
untuk membuang derau garam (Gonzalez dan Woods, 2002). Sebagai contoh,
perhitungan pada filter rerata kontraharmonik ditunjukkan pada Gambar 11.24.
7 5
3 2
1 4
7
6
7
6
g f̂
22+62+72+42+12+39+72+52+72
2+6+7+4+1+3+7+5+7=
238
42= 5,6667 ≈ 6
y y
x x
Q=1
Gambar 11.24 Ilustrasi perhitungan dengan filter rerata kontraharmonik
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter rerata kontraharmonik.
Program : filkontra.m
function [G] = filkontra(F, ukuran, orde)
% FILKONTRA Melakukan penghilangan derau dengan
% menggunakan filter rerata kontraharmonik
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% orde = orde filter
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
if nargin < 3
orde = 2;
end
[m, n] = size(F);
536 Pengolahan Citra Teori dan Aplikasi
setengah = floor(ukuran / 2);
F = double(F);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
atas = 0;
bawah = 0;
for p = -setengah : setengah
for q = -setengah : setengah
atas = atas + F(i+p, j+q)^orde;
bawah = bawah + F(i+p, j+q)^(orde-1);
end
end
G(i-setengah, j-setengah) = atas / bawah;
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filkontra:
>> Img = imread('C:\Image\boneka.png');
>> G = drgaussian(Img, 5);
>> K = filkontra(G,3); imshow(K);
>>
Ukuran jendela dapat ditentukan. Misalnya, seperti berikut:
>> K = filkontra(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek pererataan dengan filter rerata kontraharmonik diperlihatkan pada
Gambar 11.25 dan Gambar 11.26. Pada Gambar 11.26, salah satu derau garam
atau merica dapat dihilangkan dengan mengatur nilai orde filter berupa bilangan
positif atau negatif.
Restorasi Citra 537
(a) Citra boneka.png yang telah diberi
derau Gaussian, = 10
(c) Filter rerata kontraharmonik 5 x 5
Orde = 2
(d) Filter rerata kontraharmonik 3 x 3
Orde = 10
(b) Filter rerata kontraharmonik 3 x 3
Orde = 2
Gambar 11.25 Contoh efek filter rerata kontraharmonik
pada citra boneka yang diberi derau Gaussian
538 Pengolahan Citra Teori dan Aplikasi
(a) Citra boneka.png yang telah diberi
derau garam dan merica, p =0,01
(c) Filter rerata kontraharmonik 3 x 3
Orde = -2 (menghilangkan garam)
(b) Filter rerata kontraharmonik 3 x 3
Orde = 2 (Menghilangkan merica)
Gambar 11.26 Contoh efek filter rerata kontraharmonik
pada citra boneka yang diberi derau garam dan merica
11.4.5 Filter Rerata Yp
Filter rerata Yp (Yp mean filter) adalah jenis filter nonlinear yang
didefinisikan sebagai berikut (Myler dan Weeks, 1993):
𝑓(𝑦,𝑥) = √∑ 𝑔(𝑝,𝑞)𝑄(𝑝,𝑞)∈𝑆𝑦𝑥
𝑚 𝑛
1/𝑄
(11.26)
Dalam hal ini, parameter Q menentukan orde filter, m dan n menyatakan ukuran
jendela. Filter ini berguna untuk menghilangkan derau Gaussian.
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter rerata Yp.
Restorasi Citra 539
Program : filyp.m
function [G] = filyp(F, ukuran, orde)
% FILYP Melakukan penghilangan derau dengan
% menggunakan filter rerata Yp
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% orde = orde filter
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
if nargin < 3
orde = 2;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
F = double(F);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
jum = 0;
for p = -setengah : setengah
for q = -setengah : setengah
jum = jum + F(i+p, j+q)^orde / (ukuran * ukuran);
end
end
G(i-setengah, j-setengah) = jum ^ (1/orde);
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filyp:
>> Img = imread('C:\Image\innsbruck.png');
>> G = drgaussian(Img, 10);
>> K = filyp(G,3,2); imshow(K);
540 Pengolahan Citra Teori dan Aplikasi
>>
Ukuran jendela dapat ditentukan, misalnya seperti berikut:
>> K = filyp(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek pererataan dengan filter rerata Yp diperlihatkan pada Gambar 11.27.
(a) Citra innsbruck.png yang telah
diberi derau Gaussian
(c) Filter rerata Yp 5 x 5, Orde = 5 (d) Filter rerata Yp 9 x 9, Orde = -5
(b) Filter rerata Yp 3 x 3, Orde = 2
Gambar 11.27 Contoh efek filter rerata Yp pada citra yang diberi derau Gaussian
11.4.6 Filter Median
Sebagaimana telah dijelaskan pada Bagian 4.3.3, filter median dapat
dipakai untuk menghilangkan derau dalam citra. Filter ini menggunakan nilai
Restorasi Citra 541
median piksel-piksel di dalam jendela sebagai keluaran 𝑓. Jadi, filter median
dapat ditulis sebagai berikut:
𝑓(𝑦,𝑥) = 𝑚𝑒𝑑𝑖𝑎𝑛(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞)) (11.27)
Ilustrasi filter median ditunjukkan pada Gambar 11.28.
7 5
3 2
1 4
7
6
7
5
g f̂
1, 2, 3, 4, 5, 6, 7, 7, 7
1 2 3 4 5 6 7 8 9
y y
x x
Pengurutan
Indeks
Median (di tengah)
Gambar 11.28 Contoh filter median
Filter median cocok dipakai untuk menghilangkan derau impuls dan derau
eksponensial negatif. Contoh diperlihatkan pada Gambar 11.29.
542 Pengolahan Citra Teori dan Aplikasi
(a) Citra innsbruck.png yang telah diberi
derau garam dan merica, = 10
(c) Filter median 5 x 5 (d) Filter median 9 x 9
(b) Filter median 3 x 3
Gambar 11.29 Efek penghilangan derau impuls menggunakan filter median
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter median.
Program : filmed.m
function [G] = filmed(F, ukuran)
% FILMED Melakukan penghilangan derau dengan
% menggunakan filter median.
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% orde = orde filter
% G = Citra hasil pemrosesan
Restorasi Citra 543
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
F = double(F);
G = zeros(m-2*setengah, n-2*setengah);
Nilai = zeros(1,ukuran * ukuran);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
indeks = 1;
for p = -setengah : setengah
for q = -setengah : setengah
Nilai(indeks) = F(i+p, j+q);
indeks = indeks + 1;
end
end
indeks = indeks - 1; % jumlah data
% Urutkan data pada array Nilai
for p = 2: indeks
x = Nilai(p);
% Sisipkan x ke dalam data[1..p-1]
q = p - 1;
ketemu = 0;
while ((q >= 1) && (~ketemu))
if (x < Nilai(q))
Nilai(q+1) = Nilai(q);
q = q - 1;
else
ketemu = 1;
end
Nilai(q+1) = x;
end
end
% Gunakan nilai median
G(i-setengah, j-setengah) = …
Nilai(floor(ukuran * ukuran/2) + 1);
end
end
544 Pengolahan Citra Teori dan Aplikasi
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filmed:
>> Img = imread('C:\Image\innsbruck.png');
>> G = drimpuls(Img, 0.01); imshow(G)
>> K = filmed(G); imshow(K);
>>
Ukuran jendela dapat ditentukan seperti berikut:
>> K = filmed(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Contoh filter median pada citra yang tidak diberi derau dapat dilihat pada
Gambar 11.30. Tampak bahwa tekstur agak melembut. Sebagai akibatnya, detail
pada citra agak tersamarkan.
Restorasi Citra 545
(a) Citra boneka.png
(b) Filter median 3 x 3
Gambar 11.30 Efek filter median pada citra yang tidak diberi derau
11.4.7 Filter Max
Filter max atau filter maksimum adalah filter yang mencari nilai tertinggi
pada jendela dan menggunakannya sebagai nilai untuk citra keluaran. Rumusnya
sebagai berikut:
546 Pengolahan Citra Teori dan Aplikasi
𝑓(𝑦,𝑥) = 𝑚𝑎𝑥(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞)) (11.28)
Filter max berguna untuk mendapatkan bagian cerah pada citra. Sebagai
akibatnya, dengan menggunakan filter ini, derau merica dapat disingkirkan.
Sebagai contoh, perhitungan pada filter max diberikan pada Gambar 11.31.
7 5
3 2
1 4
7
6
7
7
g f̂
7
1 2 3 4 5 6 7 8 9
y y
x x
Bilangan
terbesar
Gambar 11.31 Ilustrasi filter max
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter max.
Program : filmax.m
function [G] = filmax(F, ukuran)
% FILMAX Melakukan penghilangan derau dengan
% menggunakan filter max.
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% orde = orde filter
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
Restorasi Citra 547
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
maks = 0;
for p = -setengah : setengah
for q = -setengah : setengah
if F(i+p,j+q) > maks
maks = F(i+p,j+q);
end
end
end
G(i-setengah, j-setengah) = maks;
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filmax:
>> Img = imread('C:\Image\innsbruck.png');
>> G = drimpuls(Img, 0.01);
>> K = filmax(G); imshow(K);
>>
Ukuran jendela dapat ditentukan seperti berikut:
>> K = filmax(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek filter max terhadap citra yang mengandung derau garam dan merica
diperlihatkan pada Gambar 11.32. Penerapan filter max terhadap citra yang tidak
diberi efek derau ditunjukkan pada Gambar 11.33.
548 Pengolahan Citra Teori dan Aplikasi
(a) Citra innsbruck.png yang telah diberi
derau garam dan merica, = 10
(c) Filter max 5 x 5 (d) Filter i 9 x 9
(b) Filter max 3 x 3
Gambar 11.32 Efek filter max pada citra yang diberi
derau impulsif (garam dan merica)
Restorasi Citra 549
(a) Citra boneka.png
(b) Filter max 3 x 3
Warna hitam
berkurang
Gambar 11.33 Efek filter max pada citra yang tidak diberi derau
550 Pengolahan Citra Teori dan Aplikasi
11.4.8 Filter Min
Filter min atau filter minimum adalah filter yang mencari nilai terendah
pada jendela dan menggunakannya sebagai nilai untuk citra keluaran. Rumusnya
sebagai berikut:
𝑓(𝑦,𝑥) = 𝑚𝑖𝑛(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞)) (11.29)
Filter min berguna untuk mendapatkan bagian tergelap dalam citra. Sebagai
hasilnya, dengan menggunakan filter ini, derau garam dapat disingkirkan. Sebagai
contoh, perhitungan pada filter min ditunjukkan pada Gambar 11.34.
7 5
3 2
1 4
7
6
7
1
g f̂
1
1 2 3 4 5 6 7 8 9
y y
x x
Bilangan
terkecil
Gambar 11.34 Ilustrasi filter min
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter min.
Program : filmin.m
function [G] = filmin(F, ukuran)
% FILMIN Melakukan penghilangan derau dengan
% menggunakan filter min.
% F = Citra berskala keabuan
% ukuran = ukuran jendela
Restorasi Citra 551
% orde = orde filter
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
terkecil = 255;
for p = -setengah : setengah
for q = -setengah : setengah
if terkecil > F(i+p,j+q)
terkecil = F(i+p,j+q);
end
end
end
G(i-setengah, j-setengah) = terkecil;
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filmin:
>> Img = imread('C:\Image\boneka.png');
>> K = filmin(Img); imshow(K);
>>
Hasilnya ditunjukkan pada Gambar 11.35.
Ukuran jendela dapat ditentukan seperti berikut:
>> K = filmin(G, 5);
552 Pengolahan Citra Teori dan Aplikasi
(a) Citra boneka.tif
(b) Filter min 3 x 3
Warna hitam
bertambah
Gambar 11.35 Efek filter min pada citra yang tidak diberi derau
Restorasi Citra 553
11.4.9 Filter Titik-Tengah
Filter titik-tengah (midpoint filter) adalah filter yang mencari nilai tengah
pada jendela dan menggunakannya sebagai nilai keluaran. Filter cocok untuk
menangani derau Gaussian ataupun uniform. Rumusnya sebagai berikut:
𝑓(𝑦,𝑥) =𝑚𝑎𝑥(𝑝,𝑞)∈𝑆𝑦𝑥
(𝑔(𝑝,𝑞))+𝑚𝑖𝑛(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞))
2 (11.30)
Sebagai contoh, perhitungan pada filter titik tengah ditunjukkan pada Gambar
11.36.
7 5
3 2
1 4
7
6
7
4
g f̂
y y
x x
Maksimum = 7
Minimum = 1
Titik tengah = (maksimum + minimum) / 2 = 4
Gambar 11.36 Ilustrasi filter titik tengah
Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan
filter titik tengah.
Program : filmid.m
554 Pengolahan Citra Teori dan Aplikasi
f function [G] = filmid(F, ukuran)
% FILMID Melakukan penghilangan derau dengan
% menggunakan filter titik tengah.
% F = Citra berskala keabuan
% ukuran = ukuran jendela
% orde = orde filter
% G = Citra hasil pemrosesan
if nargin < 2
ukuran = 3;
end
[m, n] = size(F);
setengah = floor(ukuran / 2);
G = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
terkecil = 255;
terbesar = 0;
for p = -setengah : setengah
for q = -setengah : setengah
if terkecil > F(i+p,j+q)
terkecil = F(i+p,j+q);
end
if terbesar < F(i+p,j+q)
terbesar = F(i+p,j+q);
end
end
end
G(i-setengah, j-setengah) = round(...
(terbesar + terkecil) / 2);
end
end
G = uint8(G);
Akhir Program
Contoh penggunaan fungsi filmid:
>> Img = imread('C:\Image\innsbruck.png');
>> G = drgaussian(Img, 10);
>> K = filmid(G,3,2); imshow(K);
>>
Restorasi Citra 555
Ukuran jendela dapat ditentukan seperti berikut:
>> K = filmid(G, 5);
Pada contoh di atas, ukuran jendela adalah 5 x 5.
Efek filter titik tengah diperlihatkan pada Gambar 11.37.
(a) Citra innsbruck.png yang telah
diberi derau Gaussian, = 10
(c) Filter titik tengah 5 x 5 (d) Filter titik tengah 9 x 9
(b) Filter titik tengah 3 x 3
Gambar 11.37 Contoh efek filter titik tengah
11.5 Penghilangan Derau di Kawasan Frekuensi
Derau periodis dapat dihilangkan atau dikurangi dengan menggunakan
penapisan di kawasan frekuensi. Dalam hal ini, filter yang dapat digunakan yaitu
band-reject, band-pass, dan notch (Gonzalez dan Woods, 2002). Namun, dari
ketiga filter tersebut, filter notch mempunyai karakteristik yang menarik, karena
556 Pengolahan Citra Teori dan Aplikasi
dapat dipakai untuk menghapus derau periodis pada citra. Filter notch berguna
untuk menolak atau meloloskan frekuensi-frekuensi pada suatu frekuensi pusat.
Filter ini sebenarnya adalah filter band-reject yang memiliki pita sempit (bentuk
filter band-reject ditunjukkan pada Gambar 11.38).
Am
pli
tud
o
Frekuensi
Am
pli
tud
o
Frekuensi
(b) Filter band-reject (a) Filter band-pass
Gambar 11.38 Filter band-reject dan filter band-pass
Derau yang bersifat berulang seringkali terlihat sebagai bintik yang cerah
pada citra kawasan frekuensi dibandingkan pada citra aslinya. Sebagai contoh
dapat dilihat pada Gambar 11.39(d), yang ditandai dengan lingkaran merah. Nah,
apabila bintik-bintik seperti itu dihilangkan, derau pun akan tereduksi. Hal itu
ditunjukkan pada Gambar 11.39(e).
Restorasi Citra 557
(a) Citra absam.png
(c) Citra diberi derau periodis
(d) Bintik cerah
(b) Spektrum citra absam.png
(e) Hasil penapisan (f) Bintik cerah dihapus
Gambar 11.39 Ilustrasi penghilangan derau periodis di kawasan frekuensi
Fungsi bernama filnotch berikut berguna untuk mendapatkan fungsi
transfer yang akan melakukan penghapusan pada frekuensi tertentu.
558 Pengolahan Citra Teori dan Aplikasi
Program : filnotch.m
function H = filnotch(a, b, d0, x, y, n)
% FILNOTCH Digunakan untuk memperoleh fungsi transfer
% filter notch
% Masukan:
% a = tinggi
% b = lebar
% d0 - menentukan frekuensi yang akan dihapus
% n = orde filter
% Keluaran:
% H - Fungsi transfer filter notch
% -----------------------------------------------
% Menentukan n kalau n tidak disebutkan
if nargin < 6
n = 1;
end
% Menentukan jangkauan frekuensi u dan v
u = 0:(a - 1);
v = 0:(b - 1);
% Hitung indeks untuk meshgrid
idx = find(u > b/2);
u(idx) = u(idx) - b;
idy = find(v > a/2);
v(idy) = v(idy) - a;
% Peroleh array meshgrid
[V, U] = meshgrid(v, u);
% Hitung jarak D(v,u)
D = sqrt(V.^2 + U.^2);
% Hitung fungsi transfer filter lolos-rendah
% dengan menggunakan Butterworth
Hlpf = 1./(1 + (D./d0) .^ (2*n));
% Peroleh fungsi transfer filter lolos-tinggi
Hhpf = 1 - Hlpf;
% Lakukan penggeseran secara melingkar
H = circshift(Hhpf, [y-1 x-1]);
Akhir Program
Restorasi Citra 559
Contoh penggunaan fungsi filnotch:
>> filnotch(5,5,10,1, 160)
ans =
0.009901 0.019608 0.047619 0.047619 0.019608
0.038462 0.047619 0.074074 0.074074 0.047619
0.038462 0.047619 0.074074 0.074074 0.047619
0.009901 0.019608 0.047619 0.047619 0.019608
0.000000 0.009901 0.038462 0.038462 0.009901
>>
Pada contoh di atas,
ukuran fungsi transfer yang dihasilkan berukuran 5x5 (nilai aktual berupa
ukuran citra yang telah diperluas di bagian kanan dan bawah);
radius frekuensi sebesar 10;
posisi x sebesar 1 dan posisi y sebesar 160, yang menyatakan pusat
frekuensi.
Dengan berbekal filter notch, penghapusan derau periodis dilakukan dengan
cara seperti yang ditunjukkan pada skrip berikut.
Program : filterper.m
% FILTERPER Mengurangi derau periodis.
% Spesifik pada citra absam dengan
% tambahan derau seperti terlihat di bawah ini.
close all;
Img = imread('C:\Image\absam.png');
[a, b] = size(Img);
% Kenakan derau vertikal dan horizontal
CitraBerderau = drperiodik(Img,10,1,10000000);
560 Pengolahan Citra Teori dan Aplikasi
CitraBerderau = drperiodik(CitraBerderau,10,100000,-1);
% Tampilkan citra yang berderau
figure, imshow(CitraBerderau);
% Menentukan ukuran baru untuk perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Buat filter notch
H1 = filnotch(p, q, 10, 1, 165);
H2 = filnotch(p, q, 10, 165, 1);
H3 = filnotch(p, q, 10, 1, 860);
H4 = filnotch(p, q, 10, 862, 1);
% Hitung FFT
F = fft2(double(CitraBerderau),p,q);
% Kenakan keempat filter notch
F_frek = F .* H1 .* H2 .* H3 .* H4;
% Ubah ke kawasan spasial
F_hasil = real(ifft2(F_frek));
% Buang tambahan pada baris dan kolom
F_hasil = F_hasil(1:size(CitraBerderau,1), ...
1:size(CitraBerderau,2));
figure, imshow(F_hasil,[]);
% Tampilkan citra berderau
Fc=fftshift(F);
Fcf=fftshift(F_frek);
% Menampikan spektrum citra asli dan citra hasil penapisan
S1=log(1+abs(Fc));
S2=log(1+abs(Fcf));
figure, imshow(S1,[])
figure, imshow(S2,[])
Akhir Program
Kunci penghilangan derau periodis terletak pada kode berikut:
H1 = filnotch(p, q, 10, 1, 165);
H2 = filnotch(p, q, 10, 165, 1);
H3 = filnotch(p, q, 10, 1, 860);
H4 = filnotch(p, q, 10, 862, 1);
Restorasi Citra 561
Dalam hal ini, p dan q menyatakan tinggi dan lebar citra setelah diperluas.
Berdasarkan keempat fungsi transfer tersebut, konvolusi pada kawasan frekuensi
dilakukan melalui:
F_frek = F .* H1 .* H2 .* H3 .* H4;
Nah, yang menjadi perhatian di sini adalah: “Bagaimana menentukan nilai
koordinat frekuensi pada H1 hingga H4?” Jawabannya, pusat frekuensi masing-
masing diperoleh dengan menentukan letak bintik cerah yang ditandai dengan
lingkaran merah pada Gambar 11.39(d). Untuk menentukan lokasi frekuensi
tersebut, peranti pada jendela yang dihasilkan imshow dapat dimanfaatkan.
Caranya, pada MATLAB, letakkan penunjuk mouse ke ikon yang ditunjukkan
pada Gambar 11.40. Selanjutnya, klik pada bintik cerah yang lokasinya ingin
diketahui. Langkah ini akan memunculkan tampilan semacam berikut:
. Lalu, catatlah nilai X dan Y-nya. Kemudiaan, lakukan
pula pencatatan frekuensi (0,0) yang terletak di tengah. Catat pula nilai X dan Y-
nya. Pada Octave, letakkan penunjuk mouse pada bintik cerah. Dengan sendirinya,
nilai X dan Y ditampilkan di bagian bawah.
562 Pengolahan Citra Teori dan Aplikasi
Gambar 11.40 Ikon untuk memulai pencarian lokasi bintik cerah
Perhitungan selanjutnya yang perlu dilakukan adalah dengan
memperhatikan letak kuadran dari bintik cerah. Perhatikan Gambar 11.41. Apabila
bintik cerah berada di Kuadran I, perhitungan untuk mendapatkan pusat frekuensi
sebagai berikut:
�̅� = 𝑥1 − 𝑥0, �̅� = 𝑦1 +𝑝 (11.31)
Perhitungan untuk mendapatkan pusat frekuensi di kuadran II sebagai berikut:
�̅� = 𝑥1 − 𝑥0, �̅� = 𝑦1 −𝑦0 (11.32)
Perhitungan untuk mendapatkan pusat frekuensi di kuadran III sebagai berikut:
�̅� = 𝑥1 +𝑞 �̅� = 𝑦1 − 𝑦0 (11.33)
Restorasi Citra 563
Perhitungan untuk mendapatkan pusat frekuensi pada kuadran IV sebagai berikut:
�̅� = 𝑥1 +𝑞 �̅� = 𝑦1 + 𝑝 (11.34)
Kuadran IV Kuadran I
Kuadran III Kuadran II
Frekuensi
(0,0)
(x1,y1)
(x0,y0)
(x2,y2)
(x4,y3) (x4,y4)
p
q
Bintik cerah
Gambar 11.41 Kuadran penentuan pusat frekuensi bintik cerah
11.6 Filter Inversi
Sebagaimana telah diketahui, pada kawasan frekuensi, suatu citra ditapis
dengan menggunakan rumus seperti berikut:
𝐺 = 𝐹.𝐻 (11.35)
Dalam hal ini, G adalah hasil penapisan pada DFT, F adalah DFT citra asal, dan H
adalah DFT filter. Secara matematis, Persamaan 11.35 dapat ditulis menjadi
𝐹 = 𝐺/𝐻 (11.36)
Persamaan di atas menyatakan bahwa apabila G dan H diketahui, F dapat
dihitung. Namun, dalam praktik, apakah persamaan seperti itu bermakna? Untuk
mengetahui jawabannya, cobalah untuk mempraktikkan perintah-perintah berikut:
564 Pengolahan Citra Teori dan Aplikasi
>> inversi('C:\Image\pantai.png',0.3);
>>
Angka 0.3 pada perintah di atas dipakai untuk mengatur ambang frekuensi pada
penapisan dengan filter lolos-rendah Butterworth. Hasilnya ditunjukkan pada
Gambar 11.42. Gambar 11.42(c) menunjukkan bahwa dengan menggunakan filter
inversi dimungkinkan untuk mendapatkan citra asli dengan hasil yang bagus.
Namun, jika ambang frekuensi diubah menjadi 0,1, hasilnya menjadi tidak cocok
lagi (Gambar 11.42(e)) meskipun citra hasil penapisan lolos-rendah masih terlihat
bagus. Hal inilah yang mengisyaratkan bahwa penggunaan filter inversi terlalu
riskan. Kegagalan seperti pada Gambar 11.42(e) terjadi manakala terdapat
elemen-elemen di dalam matriks Butterworth yang bernilai sangat kecil.
Karena bersifat sebagai pembagi, nilai yang sangat kecil akan menimbulkan hasil
berupa nilai yang sangat besar, yang akan mendominasi keluaran.
Restorasi Citra 565
(a) Citra pantai.png
(c) Hasil filter inversi gambar b
(b) Hasil penapisan dengan ambang
frekuensi = 0,3
(d) Hasil penapisan dengan ambang
frekuensi = 0,15
(e) Hasil filter inversi gambar d
Gambar 11.42 Gambaran filter inversi
Perlu diketahui, kode fungsi inversi adalah seperti berikut.
566 Pengolahan Citra Teori dan Aplikasi
Program : inversi.m
function [Fb] = inversi(berkas, d)
% INVERSI Digunakan untuk melihat efek inversi
% penapisan citra pada kawasan frekuensi.
% Argumen berkas adalah nama berkas yang diuji,
% sedangkan d menentukan ambang frekuensi.
Img=imread(berkas);
[a,b] = size(Img);
% Peroleh ukuran untuk kepentingan perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Proses untuk memperoleh citra yang ditapis
Ff = fft2(Img,p,q);
H = fillrb(Img, d, 2);
Fh = Ff .* H;
Fa = abs(ifft2(Fh));
Fa=uint8(255*mat2gray(Fa));
Fa = Fa(1:a, 1:b);
% Menggunakan citra yang ditapis untuk kepentingan inversi
Fi = fft2(Fa,p,q) ./ H;
Fb = abs(ifft2(Fi));
Fb=uint8(255*mat2gray(Fb));
Fb = Fb(1:a, 1:b);
% Tampilkan citra asli dan hasil pemrosesan
close all;
figure, imshow(Img);
figure, imshow(Fa);
figure, imshow(Fb);
Akhir Program
Fungsi inversi memerlukan fungsi lain yaitu fillrb, yang kodenya seperti
berikut.
Restorasi Citra 567
Program : fillrb.m
function H=fillrb(F, d0, n)
% FILLRB Digunakan untuk membentuk fungsi transfer
% filter lolos-rendah Butterworth.
% F = citra berskala keabuan
% d0 = ambang frekuensi (0 s/d 1)
% n = orde filter
[a, b] = size(F); %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
H = exp(-(D.^2) ./ (2 * ambang ^ 2));
Akhir Program
11.7 Filter Wiener
Contoh pada filter inversi di depan mengabaikan derau. Apabila derau
disertakan, Persamaan 11.35 perlu diubah menjadi
𝐺 = 𝐹.𝐻 + 𝐷 (11.37)
568 Pengolahan Citra Teori dan Aplikasi
dengan D adalah derau. Selanjutnya, persamaan di atas dapat ditulis menjadi
𝐹 =𝐺−𝐷
𝐻 (11.38)
Persamaan di atas menunjukkan bahwa persoalan untuk mendapatkan citra asli
tidak hanya melibatkan permasalahan pembagian dengan filter H tetapi juga
permasalahan untuk mengatasi derau. Kenyataannya, derau dapat membuat filter
inversi tidak berguna manakala derau mendominasi keluaran.
Untuk mengurangi sensitivitas derau pada filter inversi, berbagai
pendekatan untuk melakukan restorasi citra telah dilakukan. Secara umum,
pendekatan tersebut dinamakan sebagai filter least square. Salah satu filter yang
tergolong sebagai filter least square yaitu filter Wiener atau terkadang disebut
sebagai filter minimum mean square error.
Filter Wiener yang diusulkan pertama kali oleh N. Wiener pada tahun 1942
dilaksanakan dengan meminimumkan kesalahan kuadrat rerata antara citra ideal
dan citra terestorasi. Apabila f adalah citra ideal dan f̂ adalah citra terestorasi,
kesalahan kuadrat reratanya berupa
𝑀𝑆𝐸 = 𝐸[(𝑓(𝑖, 𝑗) − 𝑓(𝑖, 𝑗))2] ≈1
𝑀𝑁∑ ∑ (𝑓(𝑖, 𝑗) − 𝑓(𝑖, 𝑗))2𝑁
𝑗=1𝑀𝑖=1 (11.39)
dengan M adalah tinggi citra dan N adalah lebar citra. Solusi atas problem di atas
dikenal dengan nama filter Wiener. Dalam kawasan frekeuensi, solusi untuk filter
Wiener berupa (McAndrew, 2004):
𝐹(𝑖, 𝑗) ≈ [1
𝐻(𝑖,𝑗)
|𝐻(𝑖,𝑗)|2
|𝐻 (𝑖,𝑗)|2+𝐾] �̂�(𝑖, 𝑗) (11.40)
dengan K adalah suatu konstanta. Nilai konstanta tersebut dipakai untuk
melakukan hampiran terhadap derau. Sebagai contoh, jika varians (2) derau
diketahui, K dapat diisi dengan 2. Jika varians tidak diketahui, nilai K harus
dicoba-coba untuk mendapatkan hasil yang terbaik.
Restorasi Citra 569
Di Octave, Persamaan 11.40 dapat dihitung dengan mudah. Contoh
ditunjukkan pada skrip berikut.
Program : filwien.m
function [Fb] = filwien(berkas, d, k)
% FILWIEN Digunakan untuk melihat efek filter Wiener
% Argumen berkas adalah nama berkas yang diuji,
% d menentukan ambang frekuensi, dan k adalah
% kosntanta.
Img=imread(berkas);
[a,b] = size(Img);
% Peroleh ukuran untuk kepentingan perluasan citra
r = nextpow2(2 * max(a, b));
p = 2 ^ r;
q = p;
% Proses untuk memperoleh citra yang ditapis
Ff = fft2(Img,p,q);
H = fillrb(Img, d, 2);
Fh = Ff .* H;
Fa = abs(ifft2(Fh));
Fa = uint8(255*mat2gray(Fa));
Fa = Fa(1:a, 1:b);
% Menggunakan citra yang ditapis untuk kepentingan inversi
Fi = fft2(Fa,p,q) .* abs(H).^2 ./ (abs(H) .^ 2 + k) ./ H;
Fb = abs(ifft2(Fi));
Fb = uint8(255*mat2gray(Fb));
Fb = Fb(1:a, 1:b);
% Tampilkan citra asli dan hasil pemrosesan
close all;
figure, imshow(Img);
figure, imshow(Fa);
figure, imshow(Fb);
Akhir Program
Skrip di atas adalah hasil modifikasi atas inversi.m. Perbedaan pertama
terletak pada keberadaan argumen k. Perbedaan kedua terletak pada pernyataan
Fi = fft2(Fa,p,q) .* abs(H).^2 ./ (abs(H) .^ 2 + k) ./ H;
570 Pengolahan Citra Teori dan Aplikasi
Pernyataan di atas adalah implementasi Persamaan 11.40.
Contoh penggunaan fungsi filwien ditunjukkan di bawah ini:
>> filwien('C:\Image\pantai.png',0.17, 1);
Perhatikan bahwa dengan menggunakan nilai 0.17, filter inversi gagal melakukan
restorasi, tetapi filter Wiener dapat melakukan restorasi.
11.8 Ukuran Keberhasilan Penghilangan Derau
Pengamatan baik tidaknya suatu pendekatan untuk melakukan restorasi
citra biasa dilakukan dengan menggunakan mata. Namun, cara seperti itu bersifat
subjektif. Agar biasa diukur secara kuantitatif, keberhasilan penghilangan derau
dapat dilakukan dengan menggunakan
𝑀𝑆𝐸 =1
𝑀𝑁∑ ∑ (𝑓𝑎(𝑖, 𝑗) − 𝑓𝑏(𝑖, 𝑗))
2𝑁𝑗=1
𝑀𝑖=1 (11.41)
Dalam hal ini, fa adalah citra sebelum terkena derau dan fb adalah citra yang telah
direstorasi. Semakin kecil nilai MSE, kinerja restorasi citra semakin baik.
Contoh berikut adalah implementasi untuk menghitung MSE.
Program : msecitra.m
function [nilai] = msecitra(F1, F2)
% MSECITRA Digunakan untuk menghitung MSE (mean square error)
% citra F1 dan F2.
[a1, b1] = size(F1);
[a2, b2] = size(F2);
if (a1 == a2) || (b1 == b2)
Fa = double(F1); Fb = double(F2);
else
deltaA = abs(a1-a2);
deltaB = abs(b1-b2);
if rem(deltaA,2)==1 || rem(deltaB,2)==1
Restorasi Citra 571
error('Ukuran kedua citra tidak cocok');
end
deltaA = abs(floor((a1-a2) / 2));
deltaB = abs(floor((b1-b2) / 2));
if (a1-a2 > 0) && (b1-b2 > 0)
m = a2; n = b2;
Fa = double(F1(1+deltaA:a1-deltaA, …
1+deltaB:b1-deltaB));
Fb = double(F2);
else
m = a1; n = b1;
Fa = double(F1);
Fb = double(F2(1+deltaA:a2-deltaA, …
1+deltaB:b2-deltaB));
end
end
nilai = 0;
for i=1 : m
for j=1 : n
nilai = nilai + (Fa(i,j) - Fb(i,j))^2;
end
end
nilai = nilai / (m * n);
Akhir Program
Berikut adalah contoh untuk menghitung MSE citra asli dan citra hasil restorasi:
>> Img = imread('C:\Image\pantai.png');
>> G = drgaussian(Img,3,10);
>> K = filarithmean(G,3);
>> msecitra(Img,K)
ans = 140.39
>>
Contoh di atas digunakan untuk merestorasi citra pantai.png yang dikenai derau
Gaussian dengan jendela 3 x 3 dan = 10. Selanjutnya, citra yang ternau derau
tersebut ditapis dengan filter rerata aritmetik. Hasilnya (K) dibandingkan dengan
citra asli (Img).
572 Pengolahan Citra Teori dan Aplikasi
1. Jelaskan perbedaan antara peningkatan citra dengan restorasi citra.
2. Sebutkan empat jenis derau menurut kelas dan berikan penjelasan secara
singkat masing-masing.
3. Gambarkan fungsi kerapatan probabilitas untuk derau-derau berikut.
(a) Derau Gaussian
(b) Derau eksponensial negatif
(c) Derau Gamma
(d) Derau Raylight
4. Apa yang disebut dengan derau-derau berikut?
(a) Derau “Garam dan Merica”
(b) Derau periodis.
5. Gonzalez dan Wood mendefinisikan derau Gamma sebagai berikut
𝑝(𝑥) =𝑎𝑏𝑥𝑏−1
(𝑏−1)!𝑒−𝑎𝑥
Adapun Myler dan Weeks mendefinisikan sebagai:
𝑝(𝑥) =𝑥−1
( −1)! 𝑎𝑒−𝑥/𝑎
Tunjukkan bahwa kedua rumus tersebut sebenarnya sama saja.
6. Jelaskan bahwa derau eksponensial merupakan bentuk khusus untuk derau
Gamma, yakni jika b = 1.
Latihan
Restorasi Citra 573
7. Tunjukkan bahwa pernyataan berikut benar, “Filter Wiener tidak lain adalah
filter inversi jika K pada Persamaan 11.40 berupa nol”. Buktikan pula dengan
memberikan nilai K sama dengan nol pada saat menguji filtrwien.
8. Berikan derau Gaussian pada citra boneka.png dengan = 10 dan ukuran
jendela 3 x 3. Kemudian, cobalah hilangkan derau dengan menggunakan filter
median, max, min, titik tengah, rerata aritmetik, dan rerata Yp. Manakah yang
terbaik berdasarkan ukuran MSE?
9. Jelaskan bahwa pemanggilan
msecitra(Img,K)
dan
msecitra(K,Img)
memberikan hasil yang sama.
574 Pengolahan Citra Teori dan Aplikasi