• Tidak ada hasil yang ditemukan

BAB 11. Restorasi. Citra

N/A
N/A
Protected

Academic year: 2022

Membagikan "BAB 11. Restorasi. Citra"

Copied!
78
0
0

Teks penuh

(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)

11.1 Pengantar Restorasi Citra

Istilah restorasi mempunyai perbedaan makna dengan peningkatan citra.

Peningkatan citra (image enhancement) merupakan istilah yang menyatakan usaha untuk membuat gambar agar lebih baik dari sudut pandang pengolahnya. Hal ini dilakukan misalnya melalui pengubahan kontras dan kecerahan. Berbeda dengan peningkatan citra, restorasi citra merupakan proses untuk membuat citra yang kualitasnya turun akibat adanya tambahan derau agar menjadi mirip dengan keadaan aslinya. Itulah sebabnya, pembahasan restorasi akan dimulai dengan pembahasan derau.

11.2 Derau dalam Citra

Derau sesungguhnya adalah komponen dalam citra yang tidak dikehendaki. Dalam praktik, kehadiran derau tidak dapat dihindari. Sebagai contoh, derau Gaussian biasa muncul pada sebarang isyarat. Derau putih (white noise) biasa menyertai pada siaran televisi yang berasal dari stasiun pemancar yang lemah. Derau butiran biasa muncul dalam film-film fotografi. Derau yang dinamakan ‘garam dan merica’ sering mewarnai citra. Derau garam berwarna putih dan derau garam berwarna hitam. Gambar 11.1 menunjukkan efek derau dalam isyarat satu-dimensi.

Isyarat asli

Derau

Isyarat asli + derau

Gambar 11.1 Derau pada isyarat satu dimensi

(3)

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)

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𝜋 𝑒−(𝑧−𝜇)22𝜎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)

p(z)

+ z

-

1

√2𝜋𝜎

0,607

√2𝜋𝜎

Gambar 11.2 Fungsi kepadatan probabilitas derau Gaussian

Derau Gaussian dapat dilakukan dengan menggunakan fungsi pembangkit bilangan acak. Sebagai contoh, pada Octave terdapat fungsi bernama randn yang berguna untuk menghasilkan bilangan acak yang terdistribusi secara normal dengan nilai berkisar antara 0 dan 1. Nah, rumus untuk mendapatkan derau Gaussian yang acak dengan deviasi standar sebesar  dan rerata sama dengan 

adalah seperti berikut:

𝑑 = 𝑟𝑎𝑛𝑑𝑛 ∗ 𝜎 + 𝜇 (11.5)

Apabila  berupa nol, rumus di atas dapat disederhanakan menjadi d = randn * .

Contoh penambahan derau pada citra berskala keabuan ditunjukkan pada fungsi drgaussian. Argumen pertama berupa citra berskala keabuan. Argumen kedua bersifat opsional dan menyatakan nilai deviasi standar. Nilai bawaannya berupa 1. Argumen ketiga bersifat opsional dan menyatakan nilai rerata. Nilai bawaannya berupa 0.

(6)

Program : drgaussian.m

function [G] = drgaussian(F, sigma, mu)

% DRGAUSSIAN Menghasilkan citra yang telah diberi derau

% menggunakan Gaussian.

% F = citra berskala keabuan

% sigma = standar deviasi fungsi Gaussian

% mu = rerata fungsi Gaussian

if nargin < 3

mu = 0; % Nilai bawaan mu end

if nargin < 2

sigma = 1; % Nilai bawaan deviasi standar end

[m, n] = size(F);

F = double(F);

for i=1 : m for j=1 : nc

derau = randn * sigma + mu;

G(i,j) = round(F(i, j) + derau);

if G(i,j) > 255 G(i,j) = 255;

elseif G(i,j) < 0 G(i,j) = 0;

end end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi drgaussian ditunjukkan di bawah ini.

>> Img = imread('C:\Image\innsbruck.png'); 

>> imshow(Img) 

>> G = drgaussian(Img, 50); imshow(G) 

>>

(7)

Pada contoh di atas,  yang digunakan sebesar 50. Tiga contoh hasil penambahan derau Gaussian pada citra Innsbruck.png ditunjukkan pada Gambar 11.3.

(b)  = 10

(c)  = 25 (d)  = 50

(a) Citra Innsbruck.png

Gambar 11.3 Derau Gaussian untuk tiga nilai deviasi standar ()

Cara seperti di atas berlaku untuk citra berskala keabuan. Kalau dikehendaki, derau Gaussian juga dapat diterapkan pada citra berwarna. Dalam hal ini, derau perlu ditambahkan ke komponen R, G, dan B masing-masing. Contoh penerapan derau Gaussian ditunjukkan pada Gambar 11.4.

(8)

(b)  = 10

(c)  = 150 (d)  = 150

(a) Citra bangunan.png

Gambar 11.4 Derau Gaussian pada citra berwarna

Apabila tidak tersedia fungsi yang menghasilkan bilangan acak yang terdistribusi secara normal, fungsi pembangkit bilangan acak yang terdistribusi seragam dapat digunakan. Pada Octave dan MATLAB, tersedia fungsi seperti itu, yaitu rand. Adapun implementasinya seperti berikut.

Program : drgaussian2.m

function [G] = drgaussian2(F, sigma, mu)

% DRGAUSSIAN Menghasilkan citra yang telah diberi derau

% menggunakan Gaussian.

%

% Berdasarkan kode

% Harley R. Myler dan Arthur R. Weeks, 1993

%

% F = citra berskala keabuan

% sigma = standar deviasi fungsi Gaussian

% mu = rerata

if nargin < 3 mu = 0;

(9)

end

if nargin < 2 sigma = 10;

end

[m, n] = size(F);

F = double(F);

for i=1 : m for j=1 : n

derau = sqrt(-2 * sigma * sigma * log(1 - rand));

theta = rand * 1.9175345E-4 - 3.14159265;

derau = derau * cos(theta);

derau = derau + mu;

G(i,j) = round(F(i, j) + derau);

if G(i,j) > 255 G(i,j) = 255;

elseif G(i,j) < 0 G(i,j) = 0;

end end end

G = uint8(G);

Akhir Program

11.3.2 Derau Garam dan Merica (Salt & Pepper Noise)

Derau garam dan merica biasa dinamakan sebagai derau impuls positif dan negatif, derau tembakan, atau derau biner. Derau ini biasa disebabkan oleh gangguan yang tiba-tiba dan tajam pada proses perolehan isyarat citra. Bentuknya berupa bintik-bintik hitam atau putih di dalam citra. Gambar 11.5 menunjukkan contoh derau garam dan merica dengan berbagai nilai densitas derau. Derau garam dan merica, sering muncul pada citra yang diperoleh melalui kamera.

(10)

(a) Citra Innsbruck.png

(c) Probabilitas = 0,05 (d) Probabilitas = 0,2 (b) Probabilitas = 0,01

Gambar 11.5 Contoh derau garam dan merica untuk berbagai nilai probabilitas

Algoritma untuk membangkitkan derau garam dan merica dapat dilihat di bawah ini.

ALGORITMA 1.1 – Membangkitkan derau garam dan merica Masukan:

 f : Citra berskala keabuan berukuran M x N

 p : Probabilitas pembangkitan derau (0 s/d 1) Keluaran:

 g : Citra yang telah ditambahi dengan derau derauImpuls(f, p):

1. Salin citra f ke g

(11)

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

(12)

end

G = uint8(G);

Akhir Program

Contoh untuk menambahkan derau impuls pada citra:

>> Img = imread('C:\Image\innsbruck.png'); 

>> imshow(Img) 

>> G = drimpuls(Img, 0.005); imshow(G) 

>> imshow(Img) 

>>

11.3.3 Derau Eksponensial

Derau eksponensial (terkadang dinamakan derau eksponensial negatif) merupakan jenis derau yang dihasilkan oleh laser yang koheren ketika citra diperoleh. Oleh karena itu, derau ini sering disebut sebagai bercak laser (Myler and Weeks, 1993). PDF-nya berupa

𝑝(𝑧) = {𝑎𝑒−𝑎𝑧, 𝑢𝑛𝑡𝑢𝑘 0 ≤ 𝑧 < ~

0, 𝑧 < 0 (11.6)

Dalam hal ini, z adalah nilai aras keabuan I dan a>0. Reratanya berupa 𝜇 =1

𝑎 (11.7)

dan varians berupa 𝜎2 = 1

𝑎2 (11.8)

Adapun bentuk PDF dapat dilihat pada Gambar 11.16.

(13)

p(z)

z 1

𝑎

Gambar 11.6 Fungsi kepadatan probabilitas derau eksponensial negatif

Pembangkit derau eksponensial dilakukan dengan menggunakan rumus (Gonzalez, dkk., 2004):

𝑑 = −1

𝑎ln (1 − 𝑟𝑎𝑛𝑑) (11.9)

Dalam hal ini, rand adalah pembangkit bilangan acak yang bersifat seragam.

Implementasinya dapat dilihat di bawah ini.

Program : dreksponensial.m

function [G] = dreksponensial(F, a)

% DREKSPONENSIAL Menghasilkan citra yang telah diberi derau

% menggunakan fungsi eksponensial negatif.

%

% Berdasarkan kode

% Rafael C. Gonzales, Richard E. Woods, dan

(14)

% Steven L. Eddins, 2004

%

% F = citra berskala keabuan

% varians = varians yang dikehendaki

if nargin ~= 2

error('Penggunaan: dreksponensial(F, a)');

end

if a <= 0

error('Parameter berupa sebarang bilangan > 0');

end

[m, n] = size(F);

F = double(F);

G = zeros(m, n);

for i=1 : m for j=1 : n

derau = -1/a * log(1 - rand);

G(i,j) = round(F(i,j) + derau);

if G(i,j) > 255 G(i,j) = 255;

end end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi dreksponensial:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = dreksponensial(Img, 100); imshow(G) 

>>

Beberapa contoh hasil penerapan derau eksponensial negatif dapat dilihat pada Gambar 11.17.

(15)

(a) Citra Innsbruck.tif

(c) a = 0,07 (d) a = 0,01

(b) a = 0,1

Gambar 11.7 Contoh derau eksponensial negatif

11.3.4 Derau Gamma

Derau gamma (atau kadang disebut Erlang) merupakan efek penapisan lolos-rendah terhadap citra yang mengandung derau eksponensial sebagai hasil pengambilan citra yang teriluminasi oleh laser yang koheren (Myler dan Weeks, 1993). PDF derau Gamma didefinisikan sebagai berikut (Gonzalez dan Woods, 2002):

𝑝(𝑥) = 𝑎𝑏𝑥𝑏 −1

(𝑏−1) !𝑒−𝑎𝑥 (11.10)

Dalam hal ini, x adalah nilai aras keabuan, a>0, b berupa bilangan bulat positif, dan tanda ! menyatakan faktorial. Rerata dan varians berupa:

(16)

𝜇 = 𝑏

𝑎2 (11.11)

dan

𝜎2 = 𝑏

𝑎2 (11.12)

p(x)

(b-1)/a x 𝐾

𝐾 =0,607𝑎(𝑏 − 1)𝑏−1

(𝑏 − 1)! 𝑒−(𝑏−1)

Gambar 11.8 Fungsi kepadatan probabilitas derau Gamma

Pembangkit bilangan acak untuk membangkitkan derau gamma berupa (Gonzalez, dkk., 2004):

𝑥 = 𝐸1+ 𝐸2+ ⋯ + 𝐸𝑏 (11.13)

Dalam hal ini, E adalah bilangan random eksponensial dengan parameter a.

Implementasinya dapat dilihat berikut ini.

(17)

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

(18)

Contoh penggunaan fungsi drgamma:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drgamma(Img, 1,20); imshow(G) 

>>

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

(a) Citra Innsbruck.png

(c) a = 4, b = 120 (d) a = 1, b = 50

(b) a = 1, b = 20

Gambar 11.9 Contoh derau gamma 11.3.4 Derau Rayleigh

Derau Rayleigh mempunyai PDF seperti berikut:

(19)

𝑝(𝑥) = 𝑓(𝑥) = {

2

𝑏(𝑧 − 𝑎)𝑒−(𝑧−𝑎)2/𝑏, 𝑧 ≥ 𝑎

0, 𝑧 < 0 (11.14)

Dalam hal ini, x adalah nilai aras keabuan. Rerata dihitung dengan menggunakan rumus

𝜇 = √𝜋/(2𝑎) (11.15)

dan varians berupa

𝜎2 = 𝑏(4−𝜋)

4 (11.16)

Bentuk PDF-nya dapat dilihat pada Gambar 11.10. Derau Rayleigh biasa muncul pada jangkauan radar dan citra bergerak (Myler dan Weeks, 1993).

p(x)

x

0,607 2

𝑏

𝑎 + 𝑏

2

Gambar 11.10 Fungsi kepadatan probabilitas derau Rayleigh

Pembangkit bilangan acak diperoleh melalui (Gonzales, dkk., 2004):

(20)

𝑧 = 𝑎 + √𝑏 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)

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drrayleigh(Img, 10, 90); imshow(G) 

>>

Beberapa contoh hasil penerapan derau Rayleigh dapat dilihat pada Gambar 11.11.

(a) Citra Innsbruck.png

(c) a = 1, b = 300 (d) a = 10, b = 490

(b) a = 10, b = 90

Gambar 11.11 Contoh derau Rayleigh

11.3.6 Derau Uniform

Derau uniform yaitu dengan peluang sama tinggi memiliki PDF seperti berikut:

𝑝(𝑥) = {

1

𝑏−𝑎, 𝑗𝑖𝑘𝑎 𝑎 ≤ 𝑥 ≤ 𝑏

𝑥, 𝑢𝑛𝑡𝑢𝑘 𝑙𝑎𝑖𝑛𝑛𝑦𝑎 (11.18)

(22)

Rerata pada fungsi tersebut berupa 𝜇 =𝑎 +𝑏

2 (11.19)

Varians-nya berupa 𝜎2= (𝑏−𝑎)2

12 (11.20)

Bentuk PDF ditunjukkan pada Gambar 11.12.

p(x)

x 1

𝑏 − 𝑎

𝑎 𝑏

Gambar 11.12 Fungsi kepadatan probabilitas derau uniform

Pembangkit bilangan acak dapat dihitung melalui rumus (Gonzalez, dkk., 2004):

𝑧 = 𝑎 + (𝑏 − 𝑎) ∗ 𝑟𝑎𝑛𝑑 (11.21)

Implementasi untuk membangkitkan derau uniform dapat dilihat di bawah ini.

(23)

Program : druniform.m

function [G] = druniform(F, a, b)

% DRRAYLEIGH Menghasilkan citra yang telah diberi derau

% uniform.

%

% Berdasarkan kode

% Rafael C. Gonzales, Richard E. Woods, dan

% Steven L. Eddins, 2004

%

% F = citra berskala keabuan

% a dan b = paramater untuk menentukan fungsi Rayleigh

if nargin ~= 3

error('Penggunaan: drrayleigh(F, a, b)');

end

if a <= 0 || b <= 0

error('Parameter a atau b berupa sebarang bilangan > 0');

end

[m, n] = size(F);

F = double(F);

G = zeros(m, n);

for i=1 : m for j=1 : n

derau = a + (b-a) * rand;

G(i,j) = round(F(i,j) + derau);

if G(i,j) > 255 G(i,j) = 255;

elseif G(i,j) < 0 G(i,j) = 0;

end end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi druniform:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = druniform(Img, 1800, 0); imshow(G) 

(24)

>>

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

(a) Citra Innsbruck.png

(c) a = 10, b = 50 (d) a = 10, b = 100

(b) a = 10, b = 30

Gambar 11.13 Contoh derau uniform

11.3.7 Derau Periodis

Derau periodis biasa terjadi karena interferensi listrik maupun elektromekanis selama citra diakuisisi. Derau ini biasanya berbentuk sinusoidal.

Sifat periodis dapat berbentuk statisioner yaitu memiliki amplitudo, frekuensi, dan fase yang tetap, tetapi dapat juga nonstasioner dengan nilai amplitudo, frekuensi, dan fase berubah di sepanjang area citra.

(25)

(a) Citra pantai.png

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

Gambar 11.14 Citra dengan derau berupa gelombang sinus

Gambar 11.14 menunjukkan contoh citra yang telah diberi tambahan derau periodis berbentuk sinus. Tambahan derau seperti itu dapat dilakukan dengan menggunakan fungsi drperiodik. Implementasi fungsi tersebut dapat dilihat di bawah ini.

Program : drperiodik.m

function [G] = drperiodik(F, a, bx, by)

% DRPERIODIK Menghasilkan citra yang teklah ditambahi

% derau periodis.

%

% F = Citra berskala keabuan

% b = penegas derau (1, 2, 3, ...)

% ax dan ay menentukan kemiringan derau

(26)

if nargin < 4

a = 3; bx = 3; by = 5;

end

[m, n] = size(F);

for i=1:m for j=1:n

X(i,j) = j;

Y(i,j) = i;

end end

derau = a * sin(X/bx + Y/by) + 1;

G = uint8(double(F) + derau);

Akhir Program

Contoh penggunaan fungsi drperiodik:

>> Img = imread('C:\Image\pantai.png'); 

>> G = drperiodik(Img, 20, 10, 10); imshow(G) 

>>

Contoh berikut menggunakan pemanggilan fungsi drperiodik dua arah:

>> Img = imread('C:\image\absam.png'); 

>> G = drperiodik(Img,10,1,50000); 

>> G = drperiodik(G,10,50000,1); imshow(G) 

>>

(27)

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)

berukuran 3x3. Contoh ditunjukkan pada Gambar 11.16. Pada cadar tersebut, semua koefisien telah dinormalisasi sehingga total nilai koefisien adalah 1. Cadar pada Gambar 11.16(b) dan 11.16(c) adalah contoh cadar yang memiliki tanggapan impuls seperti berikut:

𝐻 = [

1 𝑏 1

𝑏 𝑏2 𝑏

1 𝑏 1

] (11.22)

𝐻 =1

9[

1 1 1 1 1 1 1 1 1

] (a)

𝐻 = 1

10[

1 1 1 1 2 1 1 1 1

] (b)

𝐻 = 1

16[

1 2 1 2 4 2 1 2 1

] (c)

Gambar 11.16 Cadar filter lolos-rendah

Contoh pengenaan filter lolos-rendah pada citra yang telah diberi derau ditunjukkan pada Gambar 11.17. Pelaksanaan penapisan dapat dilakukan dengan melakukan konvolusi antara citra dan cadar. Contoh untuk melakukan operasi penghilangan derau Gaussian dengan menggunakan cadar filter lolos-rendah ditunjukkan berikut ini.

>> Img = imread('C:\Image\boneka.png'); 

>> H = [1 1 1; 1 1 1; 1 1 1] / 9

H =

0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111

(29)

>> G = drgaussian(Img, 5); 

>> K = uint8(konvolusi(G,H)); imshow(K) 

>>

Contoh hasil ditunjukkan pada Gambar 11.17(b).

(30)

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

(b) 1

9[

1 1 1 1 1 1 1 1 1 ]

(c) 1

10[

1 1 1 1 2 1 1 1 1 ]

(d) 1

16[

1 2 1 2 4 2 1 2 1 ]

Gambar 11.17 Contoh efek filter lolos-rendah pada citra boneka yang mengandung derau Gaussian 11.4.2 Filter Rerata Aritmetik

Filter rerata aritmetik (arithmetic mean filter) dilakukan dengan melakukan perhitungan rerata nilai pada suatu jendela berukuran m x n dan

(31)

hasilnya digunakan sebagai nilai piksel pada citra keluaran. Dengan demikian, jika g menyatakan citra yang terkena derau dan 𝑓̂ adalah citra yang deraunya telah dihilangkan, hubungan kedua fungsi tersebut dapat ditulis menjadi

𝑓̂(𝑦, 𝑥) = 1

𝑚𝑛(𝑝,𝑞)∈𝑆 𝑔(𝑝, 𝑞)

𝑦𝑥 (11.23)

Filter ini cocok untuk menghilangkan derau uniform dan Gaussian, tetapi akan sedikit mengaburkan citra.

Dalam praktik, pendekatan rerata di atas dapat dilakukan melalui konvolusi antar g dan cadar H ataupun tanpa konvolusi. Dalam hal ini, semua koefisien dalam cadar H bernilai 1

𝑚𝑛. Filter rerata aritmetik tidak lain adalah filter pemerataan yang dibahas di Bagian 4.3.2. Gambar 11.18 menunjukkan gambaran perhitungan untuk memperoleh nilai rerata yang diberikan ke 𝑓̂(𝑦, 𝑥). Adapun Gambar 11.19 menunjukkan contoh citra yang telah diberi derau dan hasil pemrosesan dengan rerata aritmetik.

7 5

3 2

1 4

7 6 7

5

g 𝑓̂

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

9 = 42

9 = 4,6667 ≈ 5

y y

x x

Gambar 11.18 Contoh pemrosesan dengan filter rerata aritmetik

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter rerata aritmetik.

(32)

Program : filarithmean.m

function [G] = filarithmean(F, ukuran)

% FILARITHMEAN Melakukan penghilangan derau dengan

% menggunakan filter rerata aritmetik

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

F = double(F);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah jum = 0;

for p = -setengah : setengah for q = -setengah : setengah jum = jum + F(i+p, j+q);

end end

G(i-setengah, j-setengah) = jum / (ukuran * ukuran);

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filarithmean:

>> Img = imread('C:\Image\pantai.png'); 

>> G = drgaussian(Img, 10); 

>> K = filarithmean(G); imshow(K); 

>>

Ukuran jendela dapat ditentukan secara bebas dan terarah, misalnya, seperti berikut:

(33)

>> K = filarithmean(G, 5);

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek pererataan dengan filter rerata aritmetik diperlihatkan pada Gambar 11.19 dan Gambar 11.20. Gambar 11.20 menunjukkan bahwa filter rerata aritmetik gagal mengatasi derau merica jika ukuran jendela yang digunakan kecil.

(a) Citra pantai.png yang telah diberi derau Gaussian dengan  = 10

(c) Filter rerata aritmetika 5 x 5 (d) Filter rerata aritmetika 9 x 9 (b) Filter rerata aritmetika 3 x 3

Gambar 11.19 Contoh efek filter rerata aritmetik pada citra yang telah diberi derau Gaussian

(34)

(a) Citra pantai.png yang telah diberi derau garam dan merica, p = 0,01

(c) Filter rerata aritmetika 5 x 5 (d) Filter rerata aritmetika 9 x 9 (b) Filter rerata aritmetika 3 x 3

Gambar 11.20 Contoh efek filter rerata aritmetik pada citra yang telah diberi derau garam dan merica 11.4.3 Filter Rerata Harmonik

Filter rerata harmonik (harmonic mean filter), yang termasuk dalam golongan filter nonlinear, biasa digunakan untuk mengatasi derau Gaussian. Pada derau garam dan merica, filter ini dapat digunakan untuk menghilangkan derau garam, tetapi akan gagal kalau diterapkan pada derau merica (Gonzalez dan Woods, 2002).

Operasi dengan filter ini dilakukan dengan menggunakan rumus

𝑓̂(𝑦, 𝑥) = 𝑚𝑛

1

𝑔(𝑝,𝑞) (𝑝,𝑞)∈𝑆𝑦𝑥

(11.24)

(35)

Sebagai contoh, perhitungan dengan rumus di atas ditunjukkan pada Gambar 11.21.

7 5

3 2

1 4

7 6 7

3

g 𝑓̂

9

1 2 + 1

6 + 1

7 + 1

4 + 1

1 + 1

3 + 1

7 + 1

5 +1

7

= 3,1266 ≈ 3

x x

y y

Gambar 11.21 Contoh perhitungan dengan filter rerata harmonik

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter rerata harmonik.

Program : filharmonik.m

function [G] = filharmonik(F, ukuran)

% FILHARMONIK Melakukan penghilangan derau dengan

% menggunakan filter rerata harmonik

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

F = double(F);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah

(36)

for j=1+setengah: n-setengah jum = 0;

for p = -setengah : setengah for q = -setengah : setengah jum = jum + 1 / F(i+p, j+q);

end end

G(i-setengah, j-setengah) = (ukuran * ukuran) / jum;

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filharmonik:

>> Img = imread('C:\Image\pantai.png'); 

>> G = drgaussian(Img, 10); 

>> K = filharmonik(G); imshow(K); 

>>

Ukuran jendela dapat ditentukan, misalnya, seperti berikut:

>> K = filharmonik(G, 5); 

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek filter rerata harmonik diperlihatkan pada Gambar 11.22 dan Gambar 11.23. Gambar 11.23 menunjukkan bahwa filter rerata harmonik tidak dapat mengatasi derau merica. Bintik warna putih dapat dihilangkan, tetapi bintik warna hitam justru lebih ditonjolkan.

(37)

(a) Citra kartun.tif yang telah diberi derau Gaussian,  = 10

(c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9 (b) Filter rerata harmonik 3 x 3

Gambar 11.22 Contoh efek filter rerata harmonik pada citra yang diberi derau Gaussian

(38)

(a) Citra kartun.png yang telah diberi derau garam dan merica, p = 0,01

(c) Filter rerata harmonik 5 x 5 (d) Filter rerata harmonik 9 x 9 (b) Filter rerata harmonik 3 x 3

Gambar 11.23 Contoh efek filter rerata harmonik pada citra yang diberi derau garam dan merica 11.4.4 Filter Rerata Kontraharmonik

Penapisan dengan filter rerata kontraharmonik (contraharmonic mean filter) dilaksanakan dengan menggunakan rumus berikut:

𝑓̂(𝑦, 𝑥) = 𝑔(𝑝,𝑞)

(𝑝,𝑞)∈𝑆𝑦𝑥 𝑄+1

(𝑝,𝑞)∈𝑆𝑦𝑥 𝑔(𝑝,𝑞 )𝑄 (11.25)

Dalam hal ini, Q dinamakan orde filter.

Filter rerata kontraharmonik cocok digunakan untuk menghilangkan derau garam dan merica, tetapi tidak dapat dilakukan sekaligus. Dalam hal ini, nilai Q positif berguna untuk menghilangkan derau merica dan nilai Q negatif berguna

(39)

untuk membuang derau garam (Gonzalez dan Woods, 2002). Sebagai contoh, perhitungan pada filter rerata kontraharmonik ditunjukkan pada Gambar 11.24.

7 5

3 2

1 4

7 6 7

6

g f̂

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

42 = 5,6667 ≈ 6

y y

x x

Q=1

Gambar 11.24 Ilustrasi perhitungan dengan filter rerata kontraharmonik

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter rerata kontraharmonik.

Program : filkontra.m

function [G] = filkontra(F, ukuran, orde)

% FILKONTRA Melakukan penghilangan derau dengan

% menggunakan filter rerata kontraharmonik

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% orde = orde filter

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

if nargin < 3 orde = 2;

end

[m, n] = size(F);

(40)

setengah = floor(ukuran / 2);

F = double(F);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah atas = 0;

bawah = 0;

for p = -setengah : setengah for q = -setengah : setengah

atas = atas + F(i+p, j+q)^orde;

bawah = bawah + F(i+p, j+q)^(orde-1);

end end

G(i-setengah, j-setengah) = atas / bawah;

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filkontra:

>> Img = imread('C:\Image\boneka.png'); 

>> G = drgaussian(Img, 5); 

>> K = filkontra(G,3); imshow(K); 

>>

Ukuran jendela dapat ditentukan. Misalnya, seperti berikut:

>> K = filkontra(G, 5); 

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek pererataan dengan filter rerata kontraharmonik diperlihatkan pada Gambar 11.25 dan Gambar 11.26. Pada Gambar 11.26, salah satu derau garam atau merica dapat dihilangkan dengan mengatur nilai orde filter berupa bilangan positif atau negatif.

(41)

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

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

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

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

Gambar 11.25 Contoh efek filter rerata kontraharmonik pada citra boneka yang diberi derau Gaussian

(42)

(a) Citra boneka.png yang telah diberi derau garam dan merica, p =0,01

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

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

Gambar 11.26 Contoh efek filter rerata kontraharmonik pada citra boneka yang diberi derau garam dan merica 11.4.5 Filter Rerata Yp

Filter rerata Yp (Yp mean filter) adalah jenis filter nonlinear yang didefinisikan sebagai berikut (Myler dan Weeks, 1993):

𝑓̂(𝑦, 𝑥) = √(𝑝,𝑞)∈𝑆𝑦𝑥 𝑔(𝑝,𝑞)𝑄 𝑚 𝑛 1/𝑄

(11.26)

Dalam hal ini, parameter Q menentukan orde filter, m dan n menyatakan ukuran jendela. Filter ini berguna untuk menghilangkan derau Gaussian.

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter rerata Yp.

(43)

Program : filyp.m

function [G] = filyp(F, ukuran, orde)

% FILYP Melakukan penghilangan derau dengan

% menggunakan filter rerata Yp

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% orde = orde filter

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

if nargin < 3 orde = 2;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

F = double(F);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah jum = 0;

for p = -setengah : setengah for q = -setengah : setengah

jum = jum + F(i+p, j+q)^orde / (ukuran * ukuran);

end end

G(i-setengah, j-setengah) = jum ^ (1/orde);

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filyp:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drgaussian(Img, 10); 

>> K = filyp(G,3,2); imshow(K); 

(44)

>>

Ukuran jendela dapat ditentukan, misalnya seperti berikut:

>> K = filyp(G, 5);

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek pererataan dengan filter rerata Yp diperlihatkan pada Gambar 11.27.

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

(c) Filter rerata Yp 5 x 5, Orde = 5 (d) Filter rerata Yp 9 x 9, Orde = -5 (b) Filter rerata Yp 3 x 3, Orde = 2

Gambar 11.27 Contoh efek filter rerata Yp pada citra yang diberi derau Gaussian 11.4.6 Filter Median

Sebagaimana telah dijelaskan pada Bagian 4.3.3, filter median dapat dipakai untuk menghilangkan derau dalam citra. Filter ini menggunakan nilai

(45)

median piksel-piksel di dalam jendela sebagai keluaran 𝑓̂. Jadi, filter median dapat ditulis sebagai berikut:

𝑓̂(𝑦, 𝑥) = 𝑚𝑒𝑑𝑖𝑎𝑛(𝑝,𝑞 )∈𝑆

𝑦𝑥(𝑔(𝑝, 𝑞)) (11.27)

Ilustrasi filter median ditunjukkan pada Gambar 11.28.

7 5

3 2

1 4

7 6 7

5

g f̂

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

y y

x x

Pengurutan

Indeks

Median (di tengah) Gambar 11.28 Contoh filter median

Filter median cocok dipakai untuk menghilangkan derau impuls dan derau eksponensial negatif. Contoh diperlihatkan pada Gambar 11.29.

(46)

(a) Citra innsbruck.png yang telah diberi derau garam dan merica, = 10

(c) Filter median 5 x 5 (d) Filter median 9 x 9 (b) Filter median 3 x 3

Gambar 11.29 Efek penghilangan derau impuls menggunakan filter median

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter median.

Program : filmed.m

function [G] = filmed(F, ukuran)

% FILMED Melakukan penghilangan derau dengan

% menggunakan filter median.

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% orde = orde filter

% G = Citra hasil pemrosesan

(47)

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)

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filmed:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drimpuls(Img, 0.01); imshow(G) 

>> K = filmed(G); imshow(K); 

>>

Ukuran jendela dapat ditentukan seperti berikut:

>> K = filmed(G, 5); 

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Contoh filter median pada citra yang tidak diberi derau dapat dilihat pada Gambar 11.30. Tampak bahwa tekstur agak melembut. Sebagai akibatnya, detail pada citra agak tersamarkan.

(49)

(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)

𝑓̂(𝑦, 𝑥) = 𝑚𝑎𝑥(𝑝,𝑞 )∈𝑆

𝑦𝑥(𝑔(𝑝, 𝑞)) (11.28)

Filter max berguna untuk mendapatkan bagian cerah pada citra. Sebagai akibatnya, dengan menggunakan filter ini, derau merica dapat disingkirkan.

Sebagai contoh, perhitungan pada filter max diberikan pada Gambar 11.31.

7 5

3 2

1 4

7 6 7

7

g f̂

7

1 2 3 4 5 6 7 8 9

y y

x x

Bilangan terbesar

Gambar 11.31 Ilustrasi filter max

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter max.

Program : filmax.m

function [G] = filmax(F, ukuran)

% FILMAX Melakukan penghilangan derau dengan

% menggunakan filter max.

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% orde = orde filter

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

(51)

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah maks = 0;

for p = -setengah : setengah for q = -setengah : setengah if F(i+p,j+q) > maks maks = F(i+p,j+q);

end end end

G(i-setengah, j-setengah) = maks;

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filmax:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drimpuls(Img, 0.01); 

>> K = filmax(G); imshow(K); 

>>

Ukuran jendela dapat ditentukan seperti berikut:

>> K = filmax(G, 5); 

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek filter max terhadap citra yang mengandung derau garam dan merica diperlihatkan pada Gambar 11.32. Penerapan filter max terhadap citra yang tidak diberi efek derau ditunjukkan pada Gambar 11.33.

(52)

(a) Citra innsbruck.png yang telah diberi derau garam dan merica,  = 10

(c) Filter max 5 x 5 (d) Filter i 9 x 9

(b) Filter max 3 x 3

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

(53)

(a) Citra boneka.png

(b) Filter max 3 x 3 Warna hitam berkurang

Gambar 11.33 Efek filter max pada citra yang tidak diberi derau

(54)

11.4.8 Filter Min

Filter min atau filter minimum adalah filter yang mencari nilai terendah pada jendela dan menggunakannya sebagai nilai untuk citra keluaran. Rumusnya sebagai berikut:

𝑓̂(𝑦, 𝑥) = 𝑚𝑖𝑛(𝑝,𝑞 )∈𝑆

𝑦𝑥(𝑔(𝑝, 𝑞)) (11.29)

Filter min berguna untuk mendapatkan bagian tergelap dalam citra. Sebagai hasilnya, dengan menggunakan filter ini, derau garam dapat disingkirkan. Sebagai contoh, perhitungan pada filter min ditunjukkan pada Gambar 11.34.

7 5

3 2

1 4

7 6 7

1

g f̂

1

1 2 3 4 5 6 7 8 9

y y

x x

Bilangan terkecil

Gambar 11.34 Ilustrasi filter min

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter min.

Program : filmin.m

function [G] = filmin(F, ukuran)

% FILMIN Melakukan penghilangan derau dengan

% menggunakan filter min.

% F = Citra berskala keabuan

% ukuran = ukuran jendela

(55)

% orde = orde filter

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah terkecil = 255;

for p = -setengah : setengah for q = -setengah : setengah if terkecil > F(i+p,j+q) terkecil = F(i+p,j+q);

end end end

G(i-setengah, j-setengah) = terkecil;

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filmin:

>> Img = imread('C:\Image\boneka.png'); 

>> K = filmin(Img); imshow(K); 

>>

Hasilnya ditunjukkan pada Gambar 11.35.

Ukuran jendela dapat ditentukan seperti berikut:

>> K = filmin(G, 5); 

(56)

(a) Citra boneka.tif

(b) Filter min 3 x 3 Warna hitam bertambah

Gambar 11.35 Efek filter min pada citra yang tidak diberi derau

(57)

11.4.9 Filter Titik-Tengah

Filter titik-tengah (midpoint filter) adalah filter yang mencari nilai tengah pada jendela dan menggunakannya sebagai nilai keluaran. Filter cocok untuk menangani derau Gaussian ataupun uniform. Rumusnya sebagai berikut:

𝑓̂(𝑦, 𝑥) = 𝑚𝑎𝑥(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞 ))+𝑚𝑖𝑛(𝑝,𝑞)∈𝑆𝑦𝑥(𝑔(𝑝,𝑞 ))

2 (11.30)

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

7 5

3 2

1 4

7 6 7

4

g f̂

y y

x x

Maksimum = 7 Minimum = 1

Titik tengah = (maksimum + minimum) / 2 = 4

Gambar 11.36 Ilustrasi filter titik tengah

Contoh berikut merupakan perwujudan untuk melakukan penapisan dengan filter titik tengah.

Program : filmid.m

(58)

f function [G] = filmid(F, ukuran)

% FILMID Melakukan penghilangan derau dengan

% menggunakan filter titik tengah.

% F = Citra berskala keabuan

% ukuran = ukuran jendela

% orde = orde filter

% G = Citra hasil pemrosesan

if nargin < 2 ukuran = 3;

end

[m, n] = size(F);

setengah = floor(ukuran / 2);

G = zeros(m-2*setengah, n-2*setengah);

for i=1+setengah : m-setengah for j=1+setengah: n-setengah terkecil = 255;

terbesar = 0;

for p = -setengah : setengah for q = -setengah : setengah if terkecil > F(i+p,j+q) terkecil = F(i+p,j+q);

end

if terbesar < F(i+p,j+q) terbesar = F(i+p,j+q);

end end end

G(i-setengah, j-setengah) = round(...

(terbesar + terkecil) / 2);

end end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi filmid:

>> Img = imread('C:\Image\innsbruck.png'); 

>> G = drgaussian(Img, 10); 

>> K = filmid(G,3,2); imshow(K); 

>>

(59)

Ukuran jendela dapat ditentukan seperti berikut:

>> K = filmid(G, 5); 

Pada contoh di atas, ukuran jendela adalah 5 x 5.

Efek filter titik tengah diperlihatkan pada Gambar 11.37.

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

(c) Filter titik tengah 5 x 5 (d) Filter titik tengah 9 x 9 (b) Filter titik tengah 3 x 3

Gambar 11.37 Contoh efek filter titik tengah

11.5 Penghilangan Derau di Kawasan Frekuensi

Derau periodis dapat dihilangkan atau dikurangi dengan menggunakan penapisan di kawasan frekuensi. Dalam hal ini, filter yang dapat digunakan yaitu band-reject, band-pass, dan notch (Gonzalez dan Woods, 2002). Namun, dari ketiga filter tersebut, filter notch mempunyai karakteristik yang menarik, karena

(60)

dapat dipakai untuk menghapus derau periodis pada citra. Filter notch berguna untuk menolak atau meloloskan frekuensi-frekuensi pada suatu frekuensi pusat.

Filter ini sebenarnya adalah filter band-reject yang memiliki pita sempit (bentuk filter band-reject ditunjukkan pada Gambar 11.38).

Amplitudo

Frekuensi

Amplitudo

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)

(a) Citra absam.png

(c) Citra diberi derau periodis (d) Bintik cerah (b) Spektrum citra absam.png

(e) Hasil penapisan (f) Bintik cerah dihapus

Gambar 11.39 Ilustrasi penghilangan derau periodis di kawasan frekuensi Fungsi bernama filnotch berikut berguna untuk mendapatkan fungsi transfer yang akan melakukan penghapusan pada frekuensi tertentu.

Gambar

Gambar  11.5 Contoh  derau  garam  dan  merica  untuk  berbagai  nilai  probabilitas
Gambar  11.7 Contoh  derau  eksponensial negatif
Gambar  11.8 Fungsi  kepadatan  probabilitas  derau  Gamma
Gambar  11.9 Contoh  derau  gamma  11.3.4 Derau Rayleigh
+7

Referensi

Dokumen terkait

Berdasarkan hasil uji hipotesis terlihat bahwa variabel independen yang berpengaruh paling besar terhadap kebijakan hutang berturut-turut adalah: ROA dengan koefisien beta

Oleh karena itu, dalam penelitian ini peneliti menggunakan model pembelajaran Cooperative Script untuk menciptakan proses pembelajaran yang lebih berpusat pada

Kasein merupakan hasil pengolahan susu yang larut dalam larutan alkali dan asam pekat, mengendap dalam asam lemak, dan tidak larut dalam air, digunakan dalam

Penelitian ini bertujuan mengetahui beberapa aspek biologi ikan petek yang meliputi pertumbuhan (hubungan panjang-berat), faktor kondisi, jenis makanan, dan biologi reproduksi di

efektif sebesar (55,00%); 4) pemanfaatan laboratorium dalam pembelajaran dalam kategori cukup efektif sebesar (55,71%); 5) kendala yang dihadapi guru dalam

Berdasar pada aktifitas dan kebutuhan fasilitas rekreasi maka diperlukan ruang sebagi fasailitas rekreasi dengan mengimplementasikan legenda Kamandaka yang marnpu

Dari penelitian penulis juga menyimpulkan faktor-faktor yang membuat mengapa peran manajerial PR yang dilakukan bidang komunikasi korporat PT PLN Persero tidak