SlideShare a Scribd company logo
1 of 78
Download to read offline
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

Isyarat asli + derau

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)
1
√2πœ‹πœŽ

0,607
√2πœ‹πœŽ

-



+

z

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:Imageinnsbruck.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.

(a) Citra Innsbruck.png

(c)  = 25

(b)  = 10

(d)  = 50

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

(a) Citra bangunan.png

(c)  = 150

(b)  = 10

(d)  = 150

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 =
theta =
derau =
derau =

sqrt(-2 * sigma * sigma * log(1 - rand));
rand * 1.9175345E-4 - 3.14159265;
derau * cos(theta);
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

(b) Probabilitas = 0,01

(d) Probabilitas = 0,2

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

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

507
508

Pengolahan Citra Teori dan Aplikasi

end
G = uint8(G);

Akhir Program

Contoh untuk menambahkan derau impuls pada citra:
>> Img = imread('C:Imageinnsbruck.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

Adapun bentuk PDF dapat dilihat pada Gambar 11.16.

(11.8)
Restorasi Citra

509

p(z)
1
π‘Ž

z

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:Imageinnsbruck.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

(b) a = 0,1

(d) a = 0,01

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

πœ‡=

𝑏

(11.11)

π‘Ž2

dan
𝜎2 =

𝑏

(11.12)

π‘Ž2

p(x)
𝐾
𝐾=

(b-1)/a

0,607π‘Ž(𝑏 βˆ’ 1) π‘βˆ’1 βˆ’(π‘βˆ’1)
𝑒
(𝑏 βˆ’ 1)!

x

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

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

513
514

Pengolahan Citra Teori dan Aplikasi

Contoh penggunaan fungsi drgamma:
>> Img = imread('C:Imageinnsbruck.png'); 
>> G = drgamma(Img, 1,20); imshow(G) 
>>

Beberapa contoh hasil penerapan derau gamma dapat dilihat pada Gambar 11.9.

(b) a = 1, b = 20

(a) Citra Innsbruck.png

(c) a = 4, b = 120

(d) a = 1, b = 50

Gambar 11.9 Contoh derau gamma
11.3.4 Derau Rayleigh
Derau Rayleigh mempunyai PDF seperti berikut:
Restorasi Citra

515

2

𝑝(π‘₯) = 𝑓(π‘₯) = {

2 /𝑏

(𝑧 βˆ’ π‘Ž)𝑒 βˆ’(π‘§βˆ’π‘Ž)
𝑏

, 𝑧β‰₯ π‘Ž

(11.14)

0, 𝑧 < 0

Dalam hal ini, x adalah nilai aras keabuan. Rerata dihitung dengan menggunakan
rumus
πœ‡ = βˆšπœ‹/(2π‘Ž)

(11.15)

dan varians berupa
𝜎2 =

𝑏(4βˆ’πœ‹)

(11.16)

4

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)
2
0,607
𝑏

x
𝑏
π‘Ž+
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:Imageinnsbruck.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

(b) a = 10, b = 90

(d) a = 10, b = 490

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
πœ‡=

π‘Ž+𝑏

(11.19)

2

Varians-nya berupa
𝜎2 =

(π‘βˆ’π‘Ž)2

(11.20)

12

Bentuk PDF ditunjukkan pada Gambar 11.12.
p(x)

1
π‘βˆ’ π‘Ž

π‘Ž

x
𝑏

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

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:Imageinnsbruck.png'); 
 G = druniform(Img, 1800, 0); imshow(G) 

519
520

Pengolahan Citra Teori dan Aplikasi



Beberapa contoh hasil penerapan derau uniform dapat dilihat pada Gambar 11.13.

(b) a = 10, b = 30

(a) Citra Innsbruck.png

(c) a = 10, b = 50

(d) a = 10, b = 100

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

(a) Citra pantai.png

(c) a = 10, bx = -3, by = 4

521

(b) a = 10, bx = 3, by = 4

(d) a = 20, bx = 10, by = 10

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:Imagepantai.png'); 
 G = drperiodik(Img, 20, 10, 10); imshow(G) 

Contoh berikut menggunakan pemanggilan fungsi drperiodik dua arah:
 Img = imread('C:imageabsam.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
1
𝐻 = 9 [1
1

1
1
1

1
1]
1

(a)

1
1
𝐻 = 10 [1
1

1
2
1

1
1]
1

(b)

1
[2
16
1

2
4
2

1
2]
1

(c)

𝐻=

1

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:Imageboneka.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

 G = drgaussian(Img, 5); 
 K = uint8(konvolusi(G,H)); imshow(K) 


Contoh hasil ditunjukkan pada Gambar 11.17(b).

525
526

Pengolahan Citra Teori dan Aplikasi

(a) Citra boneka.png yang telah
diberi derau Gaussian

1
[1
9
1

1
1
1

1
1]
1

(c)

1
[1
10
1

1
2
1

1
1]
1

(d)

1
[2
16
1

2
4
2

1
2]
1

(b)

1

1

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.
Μ‚
𝑓

g
x

x

7

7

3

2

6

1

y

5

4

7

2+6+7+4+1+3+7+5+7
9

y

=

42
9

5

= 4,6667 β‰ˆ 5

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:Imagepantai.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

(b) Filter rerata aritmetika 3 x 3

(d) Filter rerata aritmetika 9 x 9

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

(b) Filter rerata aritmetika 3 x 3

(d) Filter rerata aritmetika 9 x 9

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.

Μ‚
𝑓

g
x

x

7

7

3

2

6

1

y

5

4

7

1
+
6

1
+
7

y

9
1
2

1 1 1 1 1 1
+ + + + + +
4 1 3 7 5 7

3

= 3,1266 β‰ˆ 3

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:Imagepantai.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

(b) Filter rerata harmonik 3 x 3

(c) Filter rerata harmonik 5 x 5

(d) Filter rerata harmonik 9 x 9

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

(b) Filter rerata harmonik 3 x 3

(c) Filter rerata harmonik 5 x 5

(d) Filter rerata harmonik 9 x 9

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.

Μ‚
f

g
x

x

7

7

3

2

6

1

y

5

4

7

y

6

Q=1
22 +62 +72 +42 +12 +39 +72 +52 +72
2+6+7+4+1+3+7+5+7

=

238
42

= 5,6667 β‰ˆ 6

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:Imageboneka.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

(a) Citra boneka.png yang telah diberi
derau Gaussian,  = 10

(c) Filter rerata kontraharmonik 5 x 5
Orde = 2

537

(b) Filter rerata kontraharmonik 3 x 3
Orde = 2

(d) Filter rerata kontraharmonik 3 x 3
Orde = 10

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

(b) Filter rerata kontraharmonik 3 x 3
Orde = 2 (Menghilangkan merica)

(c) Filter rerata kontraharmonik 3 x 3
Orde = -2 (menghilangkan garam)

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:Imageinnsbruck.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

(b) Filter rerata Yp 3 x 3, Orde = 2

(c) Filter rerata Yp 5 x 5, Orde = 5

(d) Filter rerata Yp 9 x 9, Orde = -5

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.

Μ‚
f

g
x

x

7

7

3

2

6

1

y

5

4

7

y

5

Pengurutan
1, 2, 3, 4, 5, 6, 7, 7, 7
1 2 3 4 5 6 7 8 9

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

(b) Filter median 3 x 3

(c) Filter median 5 x 5

(d) Filter median 9 x 9

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:Imageinnsbruck.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.
Μ‚
f

g
x

x

7

7

3

2

6

1

y

5

4

7

y

7

Bilangan
terbesar

7
1 2 3 4 5 6 7 8 9

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:Imageinnsbruck.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

(b) Filter max 3 x 3

(d) Filter i 9 x 9

Gambar 11.32 Efek filter max pada citra yang diberi
derau impulsif (garam dan merica)
Restorasi Citra

549

(a) Citra boneka.png
Warna hitam
berkurang

(b) Filter max 3 x 3

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.

Μ‚
f

g
x

x

7

7

3

2

6

1

y

5

4

7

y

1

Bilangan
terkecil

1
1 2 3 4 5 6 7 8 9

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

%
%

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:Imageboneka.png'); 
 K = filmin(Img); imshow(K); 


Hasilnya ditunjukkan pada Gambar 11.35.
Ukuran jendela dapat ditentukan seperti berikut:
 K = filmin(G, 5); 

551
552

Pengolahan Citra Teori dan Aplikasi

(a) Citra boneka.tif
Warna hitam
bertambah

(b) Filter min 3 x 3

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:

Μ‚(𝑦, π‘₯) =
𝑓

π‘šπ‘Žπ‘₯(𝑝,π‘ž)βˆˆπ‘† 𝑦π‘₯ (𝑔(𝑝,π‘ž))+π‘šπ‘–π‘›(𝑝,π‘ž)βˆˆπ‘† 𝑦π‘₯ (𝑔(𝑝,π‘ž))

(11.30)

2

Sebagai contoh, perhitungan pada filter titik tengah ditunjukkan pada Gambar
11.36.

Μ‚
f

g
x

x

7

7

3

2

6

1

y

5

4

7

y

4

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:Imageinnsbruck.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

(b) Filter titik tengah 3 x 3

(c) Filter titik tengah 5 x 5

(d) Filter titik tengah 9 x 9

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

Amplitudo

Amplitudo

filter band-reject ditunjukkan pada Gambar 11.38).

Frekuensi

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

(b) Spektrum citra absam.png

(c) Citra diberi derau periodis

(d) Bintik cerah

(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:Imageabsam.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);
%
r
p
q

Menentukan ukuran baru untuk perluasan citra
= nextpow2(2 * max(a, b));
= 2 ^ r;
= p;

% Buat filter notch
H1 = filnotch(p, q,
H2 = filnotch(p, q,
H3 = filnotch(p, q,
H4 = filnotch(p, q,

10,
10,
10,
10,

1, 165);
165, 1);
1, 860);
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 masingmasing 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 Ynya. 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
(x4,y4)

(x4,y3)

Kuadran III

Frekuensi
(0,0)

(x0,y0) Kuadran II
p

(x2,y2)

(x1,y1)
Bintik cerah

q

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:Imagepantai.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

(b) Hasil penapisan dengan ambang
frekuensi = 0,3

(c) Hasil filter inversi gambar b

(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);
%
r
p
q

Peroleh ukuran untuk kepentingan perluasan citra
= nextpow2(2 * max(a, b));
= 2 ^ r;
= 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);
%
r
p
q

%Peroleh ukuran citra

Menentukan ukuran baru untuk perluasan citra
= nextpow2(2 * max(a, b));
= 2 ^ r;
= 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
𝑀𝑁

𝑀
𝑁
βˆ‘ 𝑖=1 βˆ‘ 𝑗=1(𝑓(𝑖, 𝑗) βˆ’ Μ‚(𝑖, 𝑗))2 (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):
2

|𝐻(𝑖,𝑗)|
1
𝐹(𝑖, 𝑗) β‰ˆ [ 𝐻(𝑖,𝑗) |𝐻(𝑖,𝑗)|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);
%
r
p
q

Peroleh ukuran untuk kepentingan perluasan citra
= nextpow2(2 * max(a, b));
= 2 ^ r;
= 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:Imagepantai.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
𝑀𝑁

𝑀
𝑁
βˆ‘ 𝑖=1 βˆ‘ 𝑗=1(π‘“π‘Ž (𝑖, 𝑗) βˆ’ 𝑓 𝑏 (𝑖, 𝑗))2

(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:Imagepantai.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

ο€Ώ Latihan
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.
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

More Related Content

What's hot

Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digital
Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra DigitalPertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digital
Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digitalahmad haidaroh
Β 
Bab 4 operasi-operasi dasar pengolahan citra dijital
Bab 4 operasi-operasi dasar pengolahan citra dijitalBab 4 operasi-operasi dasar pengolahan citra dijital
Bab 4 operasi-operasi dasar pengolahan citra dijitalSyafrizal
Β 
Animasi dalam multimedia
Animasi dalam multimediaAnimasi dalam multimedia
Animasi dalam multimediaWahyu NR
Β 
7. Algoritma Scheduling
7. Algoritma Scheduling7. Algoritma Scheduling
7. Algoritma SchedulingHaddad Sammir
Β 
Histogram - Citra Digital
Histogram - Citra DigitalHistogram - Citra Digital
Histogram - Citra Digitalahmad haidaroh
Β 
Image processing
Image processingImage processing
Image processingDrAang Danuri
Β 
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)KuliahKita
Β 
Bab 1 pengantar pengolahan citra
Bab 1 pengantar pengolahan citraBab 1 pengantar pengolahan citra
Bab 1 pengantar pengolahan citraSyafrizal
Β 
Pcd 02 - bidang pengolahan citra
Pcd   02 - bidang pengolahan citraPcd   02 - bidang pengolahan citra
Pcd 02 - bidang pengolahan citraFebriyani Syafri
Β 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)khaerul azmi
Β 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogramRoziq Bahtiar
Β 
Pcd dikawasan frekuensi
Pcd dikawasan frekuensiPcd dikawasan frekuensi
Pcd dikawasan frekuensidedidarwis
Β 
Data mining 5 klasifikasi decision tree dan random forest
Data mining 5   klasifikasi decision tree dan random forestData mining 5   klasifikasi decision tree dan random forest
Data mining 5 klasifikasi decision tree dan random forestIrwansyahSaputra1
Β 
Shortest Path Problem: Algoritma Dijkstra
Shortest Path Problem: Algoritma DijkstraShortest Path Problem: Algoritma Dijkstra
Shortest Path Problem: Algoritma DijkstraOnggo Wiryawan
Β 

What's hot (20)

Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digital
Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra DigitalPertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digital
Pertemuan 2 - Digital Image Processing - Image Enhancement - Citra Digital
Β 
Bab 4 operasi-operasi dasar pengolahan citra dijital
Bab 4 operasi-operasi dasar pengolahan citra dijitalBab 4 operasi-operasi dasar pengolahan citra dijital
Bab 4 operasi-operasi dasar pengolahan citra dijital
Β 
Pcd 8
Pcd 8Pcd 8
Pcd 8
Β 
Pcd 10
Pcd 10Pcd 10
Pcd 10
Β 
Chap 5 peningkatan kualitas citra
Chap 5 peningkatan kualitas citraChap 5 peningkatan kualitas citra
Chap 5 peningkatan kualitas citra
Β 
Animasi dalam multimedia
Animasi dalam multimediaAnimasi dalam multimedia
Animasi dalam multimedia
Β 
7. Algoritma Scheduling
7. Algoritma Scheduling7. Algoritma Scheduling
7. Algoritma Scheduling
Β 
Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)
Β 
Histogram - Citra Digital
Histogram - Citra DigitalHistogram - Citra Digital
Histogram - Citra Digital
Β 
Image processing
Image processingImage processing
Image processing
Β 
Pcd 9
Pcd 9Pcd 9
Pcd 9
Β 
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Β 
Bab 6 filtering
Bab 6 filteringBab 6 filtering
Bab 6 filtering
Β 
Bab 1 pengantar pengolahan citra
Bab 1 pengantar pengolahan citraBab 1 pengantar pengolahan citra
Bab 1 pengantar pengolahan citra
Β 
Pcd 02 - bidang pengolahan citra
Pcd   02 - bidang pengolahan citraPcd   02 - bidang pengolahan citra
Pcd 02 - bidang pengolahan citra
Β 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
Β 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogram
Β 
Pcd dikawasan frekuensi
Pcd dikawasan frekuensiPcd dikawasan frekuensi
Pcd dikawasan frekuensi
Β 
Data mining 5 klasifikasi decision tree dan random forest
Data mining 5   klasifikasi decision tree dan random forestData mining 5   klasifikasi decision tree dan random forest
Data mining 5 klasifikasi decision tree dan random forest
Β 
Shortest Path Problem: Algoritma Dijkstra
Shortest Path Problem: Algoritma DijkstraShortest Path Problem: Algoritma Dijkstra
Shortest Path Problem: Algoritma Dijkstra
Β 

Viewers also liked

7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman strukturRoziq Bahtiar
Β 
Techarea company profile
Techarea company profileTecharea company profile
Techarea company profileRoziq Bahtiar
Β 
Mengurutkan bilangan dari yang terkecil ke yang terbesar
Mengurutkan bilangan dari yang terkecil ke yang terbesarMengurutkan bilangan dari yang terkecil ke yang terbesar
Mengurutkan bilangan dari yang terkecil ke yang terbesardony12005161
Β 
Pertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspamPertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspamRoziq Bahtiar
Β 
Open GL 09 scan conversion
Open GL 09 scan conversionOpen GL 09 scan conversion
Open GL 09 scan conversionRoziq Bahtiar
Β 
Open GL T0074 56 sm1
Open GL T0074 56 sm1Open GL T0074 56 sm1
Open GL T0074 56 sm1Roziq Bahtiar
Β 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointerRoziq Bahtiar
Β 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajenRoziq Bahtiar
Β 
Pengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra DigitalPengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra DigitalNur Fadli Utomo
Β 

Viewers also liked (14)

7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
Β 
Techarea company profile
Techarea company profileTecharea company profile
Techarea company profile
Β 
Mengurutkan bilangan dari yang terkecil ke yang terbesar
Mengurutkan bilangan dari yang terkecil ke yang terbesarMengurutkan bilangan dari yang terkecil ke yang terbesar
Mengurutkan bilangan dari yang terkecil ke yang terbesar
Β 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
Β 
Pertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspamPertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspam
Β 
Open GL 09 scan conversion
Open GL 09 scan conversionOpen GL 09 scan conversion
Open GL 09 scan conversion
Β 
Open GL T0074 56 sm1
Open GL T0074 56 sm1Open GL T0074 56 sm1
Open GL T0074 56 sm1
Β 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointer
Β 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajen
Β 
Pcd 4
Pcd 4Pcd 4
Pcd 4
Β 
Matlab
MatlabMatlab
Matlab
Β 
Pengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra DigitalPengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra Digital
Β 
Active Filter (Low Pass)
Active Filter (Low Pass)Active Filter (Low Pass)
Active Filter (Low Pass)
Β 
Filters
FiltersFilters
Filters
Β 

Similar to Pcd 11

Pcd topik4 - image restoration01
Pcd   topik4 - image restoration01Pcd   topik4 - image restoration01
Pcd topik4 - image restoration01Syafrizal
Β 
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfPengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfHendroGunawan8
Β 
Peningkatan Kualitas Citra Spasial.pdf
Peningkatan Kualitas Citra Spasial.pdfPeningkatan Kualitas Citra Spasial.pdf
Peningkatan Kualitas Citra Spasial.pdfAdam Superman
Β 
10-Image-Enhancement-Bagian3-2021.pptx
10-Image-Enhancement-Bagian3-2021.pptx10-Image-Enhancement-Bagian3-2021.pptx
10-Image-Enhancement-Bagian3-2021.pptxnyomans1
Β 
Operasi_Ketetanggaan_Piksel.pptx
Operasi_Ketetanggaan_Piksel.pptxOperasi_Ketetanggaan_Piksel.pptx
Operasi_Ketetanggaan_Piksel.pptxRizal682472
Β 
Interpolasi lagrange dan newton
Interpolasi lagrange dan newtonInterpolasi lagrange dan newton
Interpolasi lagrange dan newtonYuni Dwi Utami
Β 
Bab vi perbaikan kualitas citra
Bab vi perbaikan kualitas citraBab vi perbaikan kualitas citra
Bab vi perbaikan kualitas citrakhaerul azmi
Β 
Tugas Photosop vs Matlab
Tugas  Photosop vs MatlabTugas  Photosop vs Matlab
Tugas Photosop vs MatlabCacak_Deik
Β 
Slide Pengolahan Citra 4
Slide Pengolahan Citra 4Slide Pengolahan Citra 4
Slide Pengolahan Citra 4Sita Anggraeni
Β 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)khaerul azmi
Β 
08-Image-Enhancement-Bagian1.pptx
08-Image-Enhancement-Bagian1.pptx08-Image-Enhancement-Bagian1.pptx
08-Image-Enhancement-Bagian1.pptxnyomans1
Β 
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-bBuku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-btribudi20
Β 
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-bBuku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-bTri Budi Santoso
Β 

Similar to Pcd 11 (18)

Pcd topik4 - image restoration01
Pcd   topik4 - image restoration01Pcd   topik4 - image restoration01
Pcd topik4 - image restoration01
Β 
Pcd 4
Pcd 4Pcd 4
Pcd 4
Β 
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfPengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
Β 
Pcd 2
Pcd 2Pcd 2
Pcd 2
Β 
Peningkatan Kualitas Citra Spasial.pdf
Peningkatan Kualitas Citra Spasial.pdfPeningkatan Kualitas Citra Spasial.pdf
Peningkatan Kualitas Citra Spasial.pdf
Β 
10-Image-Enhancement-Bagian3-2021.pptx
10-Image-Enhancement-Bagian3-2021.pptx10-Image-Enhancement-Bagian3-2021.pptx
10-Image-Enhancement-Bagian3-2021.pptx
Β 
Operasi_Ketetanggaan_Piksel.pptx
Operasi_Ketetanggaan_Piksel.pptxOperasi_Ketetanggaan_Piksel.pptx
Operasi_Ketetanggaan_Piksel.pptx
Β 
Bab 07b
Bab 07bBab 07b
Bab 07b
Β 
Interpolasi lagrange dan newton
Interpolasi lagrange dan newtonInterpolasi lagrange dan newton
Interpolasi lagrange dan newton
Β 
Bab vi perbaikan kualitas citra
Bab vi perbaikan kualitas citraBab vi perbaikan kualitas citra
Bab vi perbaikan kualitas citra
Β 
Tugas Photosop vs Matlab
Tugas  Photosop vs MatlabTugas  Photosop vs Matlab
Tugas Photosop vs Matlab
Β 
LN s04-machine vision-s2
LN s04-machine vision-s2LN s04-machine vision-s2
LN s04-machine vision-s2
Β 
Slide Pengolahan Citra 4
Slide Pengolahan Citra 4Slide Pengolahan Citra 4
Slide Pengolahan Citra 4
Β 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
Β 
08-Image-Enhancement-Bagian1.pptx
08-Image-Enhancement-Bagian1.pptx08-Image-Enhancement-Bagian1.pptx
08-Image-Enhancement-Bagian1.pptx
Β 
Tugas2 20914009
Tugas2 20914009Tugas2 20914009
Tugas2 20914009
Β 
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-bBuku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Β 
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-bBuku speech processing_subp_pengkodean-sinyal-wicara-b
Buku speech processing_subp_pengkodean-sinyal-wicara-b
Β 

More from Roziq Bahtiar

static and dynamic routing
static and dynamic routingstatic and dynamic routing
static and dynamic routingRoziq Bahtiar
Β 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemRoziq Bahtiar
Β 
Pengantar algoritma pemrograman
Pengantar algoritma pemrogramanPengantar algoritma pemrograman
Pengantar algoritma pemrogramanRoziq Bahtiar
Β 
Flowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatFlowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatRoziq Bahtiar
Β 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_stringRoziq Bahtiar
Β 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsiRoziq Bahtiar
Β 
3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrogramanRoziq Bahtiar
Β 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrogramanRoziq Bahtiar
Β 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_dataRoziq Bahtiar
Β 
2 pengolahan_citra
 2 pengolahan_citra 2 pengolahan_citra
2 pengolahan_citraRoziq Bahtiar
Β 
Open GL T0074 56 sm3
Open GL T0074 56 sm3Open GL T0074 56 sm3
Open GL T0074 56 sm3Roziq Bahtiar
Β 
Open GL T0074 56 sm2
Open GL T0074 56 sm2Open GL T0074 56 sm2
Open GL T0074 56 sm2Roziq Bahtiar
Β 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgosRoziq Bahtiar
Β 
Open GL T0074 56 sm4
Open GL T0074 56 sm4Open GL T0074 56 sm4
Open GL T0074 56 sm4Roziq Bahtiar
Β 
Open GL Tutorial06
Open GL Tutorial06Open GL Tutorial06
Open GL Tutorial06Roziq Bahtiar
Β 

More from Roziq Bahtiar (18)

static and dynamic routing
static and dynamic routingstatic and dynamic routing
static and dynamic routing
Β 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating Sistem
Β 
Pengantar algoritma pemrograman
Pengantar algoritma pemrogramanPengantar algoritma pemrograman
Pengantar algoritma pemrograman
Β 
Flowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatFlowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulat
Β 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
Β 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
Β 
3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman
Β 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman
Β 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data
Β 
Alpro tutor
Alpro tutorAlpro tutor
Alpro tutor
Β 
Pcd 7
Pcd 7Pcd 7
Pcd 7
Β 
Eigen
EigenEigen
Eigen
Β 
2 pengolahan_citra
 2 pengolahan_citra 2 pengolahan_citra
2 pengolahan_citra
Β 
Open GL T0074 56 sm3
Open GL T0074 56 sm3Open GL T0074 56 sm3
Open GL T0074 56 sm3
Β 
Open GL T0074 56 sm2
Open GL T0074 56 sm2Open GL T0074 56 sm2
Open GL T0074 56 sm2
Β 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgos
Β 
Open GL T0074 56 sm4
Open GL T0074 56 sm4Open GL T0074 56 sm4
Open GL T0074 56 sm4
Β 
Open GL Tutorial06
Open GL Tutorial06Open GL Tutorial06
Open GL Tutorial06
Β 

Recently uploaded

power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"baimmuhammad71
Β 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfAkhyar33
Β 
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi SelatanSosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatanssuser963292
Β 
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfMAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfChananMfd
Β 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxNurindahSetyawati1
Β 
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...MuhammadSyamsuryadiS
Β 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMIGustiBagusGending
Β 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfCandraMegawati
Β 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxDEAAYUANGGREANI
Β 
Integrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ikaIntegrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
Β 
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...Kanaidi ken
Β 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
Β 
Lingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.pptLingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.pptimamshadiqin2
Β 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7IwanSumantri7
Β 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxdpp11tya
Β 
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024editwebsitesubdit
Β 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxSlasiWidasmara1
Β 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdfanitanurhidayah51
Β 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxssuser50800a
Β 

Recently uploaded (20)

power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
Β 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Β 
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi SelatanSosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Sosialisasi PPDB SulSel tahun 2024 di Sulawesi Selatan
Β 
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfMAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
Β 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docx
Β 
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Β 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
Β 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Β 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptx
Β 
Integrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ikaIntegrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ika
Β 
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
Β 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
Β 
Lingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.pptLingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.ppt
Β 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
Β 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
Β 
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Β 
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Β 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
Β 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
Β 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Β 

Pcd 11

  • 1. 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
  • 2. 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 Isyarat asli + derau Derau Gambar 11.1 Derau pada isyarat satu dimensi
  • 3. 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.
  • 4. 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.
  • 5. Restorasi Citra 501 p(z) 1 √2πœ‹πœŽ 0,607 √2πœ‹πœŽ -  + z 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.
  • 6. 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:Imageinnsbruck.png');  >> imshow(Img)  >> G = drgaussian(Img, 50); imshow(G)  >>
  • 7. 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. (a) Citra Innsbruck.png (c)  = 25 (b)  = 10 (d)  = 50 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.
  • 8. 504 Pengolahan Citra Teori dan Aplikasi (a) Citra bangunan.png (c)  = 150 (b)  = 10 (d)  = 150 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;
  • 9. 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 = theta = derau = derau = sqrt(-2 * sigma * sigma * log(1 - rand)); rand * 1.9175345E-4 - 3.14159265; derau * cos(theta); 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.
  • 10. 506 Pengolahan Citra Teori dan Aplikasi (a) Citra Innsbruck.png (c) Probabilitas = 0,05 (b) Probabilitas = 0,01 (d) Probabilitas = 0,2 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
  • 11. Restorasi Citra 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 507
  • 12. 508 Pengolahan Citra Teori dan Aplikasi end G = uint8(G); Akhir Program Contoh untuk menambahkan derau impuls pada citra: >> Img = imread('C:Imageinnsbruck.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 Adapun bentuk PDF dapat dilihat pada Gambar 11.16. (11.8)
  • 13. Restorasi Citra 509 p(z) 1 π‘Ž z 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
  • 14. 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:Imageinnsbruck.png');  >> G = dreksponensial(Img, 100); imshow(G)  >> Beberapa contoh hasil penerapan derau eksponensial negatif dapat dilihat pada Gambar 11.17.
  • 15. Restorasi Citra 511 (a) Citra Innsbruck.tif (c) a = 0,07 (b) a = 0,1 (d) a = 0,01 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:
  • 16. 512 Pengolahan Citra Teori dan Aplikasi πœ‡= 𝑏 (11.11) π‘Ž2 dan 𝜎2 = 𝑏 (11.12) π‘Ž2 p(x) 𝐾 𝐾= (b-1)/a 0,607π‘Ž(𝑏 βˆ’ 1) π‘βˆ’1 βˆ’(π‘βˆ’1) 𝑒 (𝑏 βˆ’ 1)! x 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.
  • 17. Restorasi Citra 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 513
  • 18. 514 Pengolahan Citra Teori dan Aplikasi Contoh penggunaan fungsi drgamma: >> Img = imread('C:Imageinnsbruck.png');  >> G = drgamma(Img, 1,20); imshow(G)  >> Beberapa contoh hasil penerapan derau gamma dapat dilihat pada Gambar 11.9. (b) a = 1, b = 20 (a) Citra Innsbruck.png (c) a = 4, b = 120 (d) a = 1, b = 50 Gambar 11.9 Contoh derau gamma 11.3.4 Derau Rayleigh Derau Rayleigh mempunyai PDF seperti berikut:
  • 19. Restorasi Citra 515 2 𝑝(π‘₯) = 𝑓(π‘₯) = { 2 /𝑏 (𝑧 βˆ’ π‘Ž)𝑒 βˆ’(π‘§βˆ’π‘Ž) 𝑏 , 𝑧β‰₯ π‘Ž (11.14) 0, 𝑧 < 0 Dalam hal ini, x adalah nilai aras keabuan. Rerata dihitung dengan menggunakan rumus πœ‡ = βˆšπœ‹/(2π‘Ž) (11.15) dan varians berupa 𝜎2 = 𝑏(4βˆ’πœ‹) (11.16) 4 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) 2 0,607 𝑏 x 𝑏 π‘Ž+ 2 Gambar 11.10 Fungsi kepadatan probabilitas derau Rayleigh Pembangkit bilangan acak diperoleh melalui (Gonzales, dkk., 2004):
  • 20. 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:
  • 21. Restorasi Citra 517 Img = imread('C:Imageinnsbruck.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 (b) a = 10, b = 90 (d) a = 10, b = 490 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)
  • 22. 518 Pengolahan Citra Teori dan Aplikasi Rerata pada fungsi tersebut berupa πœ‡= π‘Ž+𝑏 (11.19) 2 Varians-nya berupa 𝜎2 = (π‘βˆ’π‘Ž)2 (11.20) 12 Bentuk PDF ditunjukkan pada Gambar 11.12. p(x) 1 π‘βˆ’ π‘Ž π‘Ž x 𝑏 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.
  • 23. Restorasi Citra 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:Imageinnsbruck.png');  G = druniform(Img, 1800, 0); imshow(G)  519
  • 24. 520 Pengolahan Citra Teori dan Aplikasi Beberapa contoh hasil penerapan derau uniform dapat dilihat pada Gambar 11.13. (b) a = 10, b = 30 (a) Citra Innsbruck.png (c) a = 10, b = 50 (d) a = 10, b = 100 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.
  • 25. Restorasi Citra (a) Citra pantai.png (c) a = 10, bx = -3, by = 4 521 (b) a = 10, bx = 3, by = 4 (d) a = 20, bx = 10, by = 10 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
  • 26. 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:Imagepantai.png');  G = drperiodik(Img, 20, 10, 10); imshow(G)  Contoh berikut menggunakan pemanggilan fungsi drperiodik dua arah: Img = imread('C:imageabsam.png');  G = drperiodik(Img,10,1,50000);  G = drperiodik(G,10,50000,1); imshow(G) 
  • 27. 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)
  • 28. 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 1 𝐻 = 9 [1 1 1 1 1 1 1] 1 (a) 1 1 𝐻 = 10 [1 1 1 2 1 1 1] 1 (b) 1 [2 16 1 2 4 2 1 2] 1 (c) 𝐻= 1 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:Imageboneka.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
  • 29. Restorasi Citra G = drgaussian(Img, 5);  K = uint8(konvolusi(G,H)); imshow(K)  Contoh hasil ditunjukkan pada Gambar 11.17(b). 525
  • 30. 526 Pengolahan Citra Teori dan Aplikasi (a) Citra boneka.png yang telah diberi derau Gaussian 1 [1 9 1 1 1 1 1 1] 1 (c) 1 [1 10 1 1 2 1 1 1] 1 (d) 1 [2 16 1 2 4 2 1 2] 1 (b) 1 1 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
  • 31. 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. Μ‚ 𝑓 g x x 7 7 3 2 6 1 y 5 4 7 2+6+7+4+1+3+7+5+7 9 y = 42 9 5 = 4,6667 β‰ˆ 5 Gambar 11.18 Contoh pemrosesan dengan filter rerata aritmetik Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter rerata aritmetik.
  • 32. 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:Imagepantai.png');  G = drgaussian(Img, 10);  K = filarithmean(G); imshow(K);  Ukuran jendela dapat ditentukan secara bebas dan terarah, misalnya, seperti berikut:
  • 33. 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 (b) Filter rerata aritmetika 3 x 3 (d) Filter rerata aritmetika 9 x 9 Gambar 11.19 Contoh efek filter rerata aritmetik pada citra yang telah diberi derau Gaussian
  • 34. 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 (b) Filter rerata aritmetika 3 x 3 (d) Filter rerata aritmetika 9 x 9 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)
  • 35. Restorasi Citra 531 Sebagai contoh, perhitungan dengan rumus di atas ditunjukkan pada Gambar 11.21. Μ‚ 𝑓 g x x 7 7 3 2 6 1 y 5 4 7 1 + 6 1 + 7 y 9 1 2 1 1 1 1 1 1 + + + + + + 4 1 3 7 5 7 3 = 3,1266 β‰ˆ 3 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
  • 36. 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:Imagepantai.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.
  • 37. Restorasi Citra 533 (a) Citra kartun.tif yang telah diberi derau Gaussian,  = 10 (b) Filter rerata harmonik 3 x 3 (c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9 Gambar 11.22 Contoh efek filter rerata harmonik pada citra yang diberi derau Gaussian
  • 38. 534 Pengolahan Citra Teori dan Aplikasi (a) Citra kartun.png yang telah diberi derau garam dan merica, p = 0,01 (b) Filter rerata harmonik 3 x 3 (c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9 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
  • 39. Restorasi Citra 535 untuk membuang derau garam (Gonzalez dan Woods, 2002). Sebagai contoh, perhitungan pada filter rerata kontraharmonik ditunjukkan pada Gambar 11.24. Μ‚ f g x x 7 7 3 2 6 1 y 5 4 7 y 6 Q=1 22 +62 +72 +42 +12 +39 +72 +52 +72 2+6+7+4+1+3+7+5+7 = 238 42 = 5,6667 β‰ˆ 6 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);
  • 40. 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:Imageboneka.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.
  • 41. Restorasi Citra (a) Citra boneka.png yang telah diberi derau Gaussian,  = 10 (c) Filter rerata kontraharmonik 5 x 5 Orde = 2 537 (b) Filter rerata kontraharmonik 3 x 3 Orde = 2 (d) Filter rerata kontraharmonik 3 x 3 Orde = 10 Gambar 11.25 Contoh efek filter rerata kontraharmonik pada citra boneka yang diberi derau Gaussian
  • 42. 538 Pengolahan Citra Teori dan Aplikasi (a) Citra boneka.png yang telah diberi derau garam dan merica, p =0,01 (b) Filter rerata kontraharmonik 3 x 3 Orde = 2 (Menghilangkan merica) (c) Filter rerata kontraharmonik 3 x 3 Orde = -2 (menghilangkan garam) 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.
  • 43. 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:Imageinnsbruck.png');  G = drgaussian(Img, 10);  K = filyp(G,3,2); imshow(K); 
  • 44. 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 (b) Filter rerata Yp 3 x 3, Orde = 2 (c) Filter rerata Yp 5 x 5, Orde = 5 (d) Filter rerata Yp 9 x 9, Orde = -5 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
  • 45. 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. Μ‚ f g x x 7 7 3 2 6 1 y 5 4 7 y 5 Pengurutan 1, 2, 3, 4, 5, 6, 7, 7, 7 1 2 3 4 5 6 7 8 9 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.
  • 46. 542 Pengolahan Citra Teori dan Aplikasi (a) Citra innsbruck.png yang telah diberi derau garam dan merica,  = 10 (b) Filter median 3 x 3 (c) Filter median 5 x 5 (d) Filter median 9 x 9 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
  • 47. 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
  • 48. 544 Pengolahan Citra Teori dan Aplikasi G = uint8(G); Akhir Program Contoh penggunaan fungsi filmed: Img = imread('C:Imageinnsbruck.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.
  • 49. 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:
  • 50. 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. Μ‚ f g x x 7 7 3 2 6 1 y 5 4 7 y 7 Bilangan terbesar 7 1 2 3 4 5 6 7 8 9 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);
  • 51. 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:Imageinnsbruck.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.
  • 52. 548 Pengolahan Citra Teori dan Aplikasi (a) Citra innsbruck.png yang telah diberi derau garam dan merica,  = 10 (c) Filter max 5 x 5 (b) Filter max 3 x 3 (d) Filter i 9 x 9 Gambar 11.32 Efek filter max pada citra yang diberi derau impulsif (garam dan merica)
  • 53. Restorasi Citra 549 (a) Citra boneka.png Warna hitam berkurang (b) Filter max 3 x 3 Gambar 11.33 Efek filter max pada citra yang tidak diberi derau
  • 54. 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. Μ‚ f g x x 7 7 3 2 6 1 y 5 4 7 y 1 Bilangan terkecil 1 1 2 3 4 5 6 7 8 9 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
  • 55. Restorasi Citra % % 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:Imageboneka.png');  K = filmin(Img); imshow(K);  Hasilnya ditunjukkan pada Gambar 11.35. Ukuran jendela dapat ditentukan seperti berikut: K = filmin(G, 5);  551
  • 56. 552 Pengolahan Citra Teori dan Aplikasi (a) Citra boneka.tif Warna hitam bertambah (b) Filter min 3 x 3 Gambar 11.35 Efek filter min pada citra yang tidak diberi derau
  • 57. 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: Μ‚(𝑦, π‘₯) = 𝑓 π‘šπ‘Žπ‘₯(𝑝,π‘ž)βˆˆπ‘† 𝑦π‘₯ (𝑔(𝑝,π‘ž))+π‘šπ‘–π‘›(𝑝,π‘ž)βˆˆπ‘† 𝑦π‘₯ (𝑔(𝑝,π‘ž)) (11.30) 2 Sebagai contoh, perhitungan pada filter titik tengah ditunjukkan pada Gambar 11.36. Μ‚ f g x x 7 7 3 2 6 1 y 5 4 7 y 4 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
  • 58. 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:Imageinnsbruck.png');  G = drgaussian(Img, 10);  K = filmid(G,3,2); imshow(K); 
  • 59. 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 (b) Filter titik tengah 3 x 3 (c) Filter titik tengah 5 x 5 (d) Filter titik tengah 9 x 9 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
  • 60. 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 Amplitudo Amplitudo filter band-reject ditunjukkan pada Gambar 11.38). Frekuensi 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).
  • 61. Restorasi Citra 557 (a) Citra absam.png (b) Spektrum citra absam.png (c) Citra diberi derau periodis (d) Bintik cerah (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.
  • 62. 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
  • 63. 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:Imageabsam.png'); [a, b] = size(Img); % Kenakan derau vertikal dan horizontal CitraBerderau = drperiodik(Img,10,1,10000000);
  • 64. 560 Pengolahan Citra Teori dan Aplikasi CitraBerderau = drperiodik(CitraBerderau,10,100000,-1); % Tampilkan citra yang berderau figure, imshow(CitraBerderau); % r p q Menentukan ukuran baru untuk perluasan citra = nextpow2(2 * max(a, b)); = 2 ^ r; = p; % Buat filter notch H1 = filnotch(p, q, H2 = filnotch(p, q, H3 = filnotch(p, q, H4 = filnotch(p, q, 10, 10, 10, 10, 1, 165); 165, 1); 1, 860); 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);
  • 65. 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 masingmasing 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 Ynya. Pada Octave, letakkan penunjuk mouse pada bintik cerah. Dengan sendirinya, nilai X dan Y ditampilkan di bagian bawah.
  • 66. 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)
  • 67. Restorasi Citra 563 Perhitungan untuk mendapatkan pusat frekuensi pada kuadran IV sebagai berikut: π‘₯Μ… = π‘₯1 + π‘ž Μ… = 𝑦1 + 𝑝 𝑦 (11.34) Kuadran IV Kuadran I (x4,y4) (x4,y3) Kuadran III Frekuensi (0,0) (x0,y0) Kuadran II p (x2,y2) (x1,y1) Bintik cerah q 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:
  • 68. 564 Pengolahan Citra Teori dan Aplikasi inversi('C:Imagepantai.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.
  • 69. Restorasi Citra 565 (a) Citra pantai.png (b) Hasil penapisan dengan ambang frekuensi = 0,3 (c) Hasil filter inversi gambar b (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.
  • 70. 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); % r p q Peroleh ukuran untuk kepentingan perluasan citra = nextpow2(2 * max(a, b)); = 2 ^ r; = 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.
  • 71. 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); % r p q %Peroleh ukuran citra Menentukan ukuran baru untuk perluasan citra = nextpow2(2 * max(a, b)); = 2 ^ r; = 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)
  • 72. 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 𝑀𝑁 𝑀 𝑁 βˆ‘ 𝑖=1 βˆ‘ 𝑗=1(𝑓(𝑖, 𝑗) βˆ’ Μ‚(𝑖, 𝑗))2 (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): 2 |𝐻(𝑖,𝑗)| 1 𝐹(𝑖, 𝑗) β‰ˆ [ 𝐻(𝑖,𝑗) |𝐻(𝑖,𝑗)|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.
  • 73. 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); % r p q Peroleh ukuran untuk kepentingan perluasan citra = nextpow2(2 * max(a, b)); = 2 ^ r; = 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;
  • 74. 570 Pengolahan Citra Teori dan Aplikasi Pernyataan di atas adalah implementasi Persamaan 11.40. Contoh penggunaan fungsi filwien ditunjukkan di bawah ini: filwien('C:Imagepantai.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 𝑀𝑁 𝑀 𝑁 βˆ‘ 𝑖=1 βˆ‘ 𝑗=1(π‘“π‘Ž (𝑖, 𝑗) βˆ’ 𝑓 𝑏 (𝑖, 𝑗))2 (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
  • 75. 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:Imagepantai.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).
  • 76. 572 Pengolahan Citra Teori dan Aplikasi ο€Ώ Latihan 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.
  • 77. 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.