SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
BAB 7
Morfologi untuk
Pengolahan Citra
Setelah bab ini berakhir, diharapkan pembaca memahami
berbagai hal berikut dan mampu mempraktikkannya.
Pengertian operasi morfologi
Matematika yang melatarbelakangi
Operasi dilasi
Operasi erosi
Bentuk dan ukuran elemen penstruktur
Operasi opening
Operasi closing
Transformasi Hit-or-Miss
Skeleton
Thickening
Convex hull
Transformasi Top-Hat
Transformasi Bottom-Hat
210

Pengolahan Citra, Teori dan Aplikasi

7.1 Pengertian Operasi Morfologi
Operasi morfologi merupakan operasi yang umum dikenakan pada citra
biner (hitam-putih) untuk mengubah struktur bentuk objek yang terkandung dalam
citra.Sebagai contoh, lubang pada daun dapat ditutup melalui operasi morfologi
sebagaimana ditunjukkan pada Gambar 7.1.Objek-objek daun yang saling
berhimpitan pun dapat dipisahkan melalui morfologi, sebagaimana ditunjukkan
pada Gambar 7.2. Beberapa contoh lainaplikasi morfologi adalah sebagai berikut.
•

Membentuk filter spasial, seperti yang telah dibahas pada Bab 6.

•

Memperoleh skeleton (rangka) objek.

•

Menentukan letak objek di dalam citra.

•

Memperoleh bentuk struktur objek.

Gambar 7.1Tulang daun dapat dianggap sebagai bagian daun
melalui morfologi
Morfologi untuk Pengolahan Citra

211

Gambar 7.2 Daun-daun yang bersinggungan dapat dipisahkan
melalui morfologi, yang memperkecil ukurannya

Operasi morfologi sesungguhnya juga dapat dikenakan pada
citra aras keabuan. Pembicaraan mengenai hal ini dilakukan di
bagian akhir di bab ini.

Inti operasi morfologi melibatkan dua larik piksel. Larik pertama berupa
citra yang akan dikenai operasi morfologi, sedangkan larik kedua dinamakan
sebagai kernel atau structuring element (elemen penstruktur) (Shih, 2009). Contoh
kernel ditunjukkan pada Gambar 7.3. Pada contoh tersebut, piksel pusat (biasa
diberi nama hotspot) ditandai dengan warna abu-abu. Piksel pusat ini yang
menjadi

pusat

dalam

melakukan

operasi

terhadap

citra,

sebagaimana

diilustrasikan pada Gambar 7.4.

0

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

0

1

1

1

1
1

1

1

1

1

1

1

1

1

1

Gambar 7.3Contoh beberapa kernel

1
212

Pengolahan Citra, Teori dan Aplikasi

Hotspot

0

0

1

1

1

0

Citra

1

1

0

Kernel

Gambar 7.4Operasi kernel terhadap citra

Dua operasi yang mendasari morfologi yaitu dilasi dan erosi. Dua operasi
lain yang sangat berguna dalam pemrosesan citra adalahopening dan closing
dibentuk melalui dua operasi dasar itu.
7.2 Matematika yang Melatarbelakangi
Untuk memahami operasi morfologi, pemahaman terhadap operasi
himpunan seperti interseksi dan gabungan mutlak diperlukan. Selain itu,
pemahaman terhadap operasi logika, seperti “atau” dan ‘dan” juga diperlukan.
7.2.1 Teori Himpunan
Misalkan, terdapat himpunan A yang berada di dalam bidang Z2
(berdimensi dua). Apabila a=(a1, a2) adalah suatu elemen atau anggota di dalam
A, adapat ditulis menjadi
ܽ∈‫ܣ‬

(7.1)

Arti notasi di atas, a adalah anggota himpunan A. kebalikannya, jika a bukan
anggota himpunan A, a ditulis seperti berikut:
ܽ	∉	‫ܣ‬

(7.2)
Morfologi untuk Pengolahan Citra

213

Sebagai contoh, s = (1, 2) dan t = (1, 4), sedangkan himpunan A berisi seperti
berikut:

A = { (1,1), (1,2), (1, 3), (2, 1), (2, 2) }

Pada contoh tersebut, A memiliki 5 anggota. Berdasarkan contoh tersebut, dapat
dituliskan fakta berikut:
‫ܣ∈ݏ‬

‫ܣ	∉ݐ‬

Perlu diketahui, setiap elemen hanya dapat menjadi anggota himpunan satu kali.
Dengan demikian,
A = {(1,1), (1,1), (2,1), (2,3), (2,1)}
sesungguhnya hanya mempunyai 3 anggota,yaitu
A = {(1,1), (2,1), (2,3)}
Notasi φ biasa terdapat dalam pembicaraan himpunan. Simbol tersebut
menyatakan himpunan kosong, yaitu himpunan yang tidak memiliki anggota
sama sekali.
Apabila A dan B adalah himpunan dan setiap anggota himpunan B
merupakan anggota himpunan A, dikatakan bahwa B adalah subhimpunan A.
Notasi yang biasa digunakan untuk kepentingan ini:
B⊆A

(7.3)

Union adalah penggabungan dari dua buah himpunan. Misalnya:
C = A ∪B

(7.4)
214

Pengolahan Citra, Teori dan Aplikasi

yangmenyatakan bahwa C memiliki anggota berupa semua anggota A ditambah
dengan semua anggota B. Gambar 7.5 memperlihatkan contoh nilai-nilai piksel
penyusun dua citra biner dan menunjukkan hasil operasi union. Semua nilai 1
pada citra tersebut menyatakan anggota himpunan baru, yang cenderung meluas.

1

2

3

4

5

1

2

3

4

5

1

0

1

0

0

0

1

1

0

0

0

2

0

1

1

0

0

0

1

0

0

0

3

0

1

1

1

0

0

0

1

0

0

4

0

1

1

0

0

0

1

0

0

0

5

0

1

0

0

0

1

0

0

0

0

A={(1,2), (2,2), (2,3),
(3,2), (3,3), (3,4),
(4,2), (4,3), (5,2)}

B={(1,1), (2,1), (2,2),
(3,3), (4,2), (5,1)}

C=A∪B
1

1

0

0

0

0

1

1

0

0

0

1

1

1

0

0

1

1

0

0

1

1

0

0

0

C={(1,1), (1,2), (2,2), (2,3), (3,2), (3,3),(3,4)
(4,2), (4,3), (5,1), (5,2)}

Gambar 7.5Operasi union pada citra biner

Interseksimenyatakan operasi yang menghasilkan himpunan semua
anggota yang terdapat di kedua himpunan. Misalnya:
C = A∩B

(7.5)

berarti bahwa C berisi anggota-anggota yang ada di himpunan A dan juga terdapat
di himpunan B. Hasilnya cenderung menyempit. Contoh dapat dilihat pada
Gambar 7.6.
Morfologi untuk Pengolahan Citra

215

1

2

3

4

5

1

2

3

4

5

1

0

1

0

0

0

1

1

0

0

0

2

0

1

1

0

0

0

1

0

0

0

3

0

1

1

1

0

0

0

1

0

0

4

0

1

1

0

0

0

1

0

0

0

5

0

1

0

0

0

1

0

0

0

0

A={(1,2), (2,2), (2,3),
(3,2), (3,3), (3,4),
(4,2), (4,3), (5,2)}

B={(1,1), (2,1), (2,2),
(3,3), (4,2), (5,1)}

C=A∩B
1

1

0

0

0

0

1

1

0

0

0

1

1

1

0

0

1

1

0

0

1

1

0

0

0

C={(1,2), (2,2), (3,3), (4,1)}

Gambar 7.6Operasi interseksi pada citra biner
Komplemen himpunanA biasa dinotasikan dengan Ac dan menyatakan
semua elemen yang tidak terdapat pada A. Secara matematis, komplemen ditulis
seperti berikut:
Ac = { w | w ∉ A }

(7.6)

Notasi di atas dibaca “semua elemen yang tidak menjadi anggota A”.
Komplemen atau juga disebut inversi dapat dibayangkan seperti saling
menukarkan warna hitam dan putih.Nilai yang semula berupa nol diganti satu dan
nilai satu diganti dengan nol. Contoh dapat dilihat di Gambar 7.7.Di bidang
fotografi dengan film, inversi menghasilkan gambar negatif. Istilah komplemen
juga berarti ”pelengkap”, karena bila A digabung dengan operasi union akan
menyempurnakan citra menjadi citra yang semua pikselnya bernilai 1.
216

Pengolahan Citra, Teori dan Aplikasi

1

2

3

4

5

1

2

3

4

5

1

0

1

0

0

0

1

0

1

1

1

2

0

1

1

0

0

1

0

0

1

1

3

0

1

1

1

0

1

0

0

0

1

4

0

1

1

0

0

1

0

0

1

1

5

0

1

0

0

0

1

0

1

1

1

A={(1,2), (2,2), (2,3),
(3,2), (3,3), (3,4),
(4,2), (4,3), (5,2)}

Ac = {(1,1), (1,3), (1,4),
(1,5), (2,1), (2,4),
(2,5), (3,1), (3,5),
(4,1), (4,4), (4,5),
(5,1), (5,3), (5,4), (5,5)}

Gambar 7.7Operasi komplemen

Operasi selisih dua himpunan dapat ditulis seperti berikut:
A – B = { w | w ∈ A, w ∉ B } = A ∩Bc
Contoh ditunjukkan di Gambar 7.8.

(7.7)
Morfologi untuk Pengolahan Citra

217

1

2

3

4

5

1

2

3

4

5

1

0

1

0

0

0

1

1

0

0

0

2

0

1

1

0

0

0

1

0

0

0

3

0

1

1

1

0

0

0

1

0

0

4

0

1

1

0

0

0

1

0

0

0

5

0

1

0

0

0

1

0

0

0

0

A={(1,2), (2,2), (2,3),
(3,2), (3,3), (3,4),
(4,2), (4,3), (5,2)}

B={(1,1), (2,1), (2,2),
(3,3), (4,2), (5,1)}

C=A-B

C=B-A

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

0

C = { (2,3), (3,4),
(4,3), (5,2) }

C = { (1,1), (5,1) }

Gambar 7.8Contoh selisih dua himpunan

Contoh di atas menunjukkan bahwa A – B ≠ B – A.

෠
Refleksi B dinotasikan dengan ‫ܤ‬dan didefinisikan sebagai berikut:
෠
‫ = ܤ‬ሼ‫ܤ ∈ 	ܾ	݇ݑݐ݊ݑ ,ܾ− = ݓ|ݓ‬ሽ

(7.8)

Refleksi sebenarnya menyatakan percerminan terhadap piksel pusat. Contoh
ditunjukkan pada Gambar 7.9. Bayangan cermin 2-D terjadi melalui pencerminan
pada arah x dan dilanjutkan pada arah y. namun, ternyata hasilnya sama dengan
pemutaran di bidang citra 180o.
218

Pengolahan Citra, Teori dan Aplikasi

1

2

3

4

5

1

2

3

4

5

1

0

0

0

0

0

0

0

0

0

0

2

0

1

1

0

0

0

0

0

0

0

3

0

1

1

1

0

0

1

1

1

0

4

0

0

0

0

0

0

0

1

1

0

5

0

0

0

0

0

0

0

0

0

0

A={(2,2), (2,3), (3,2),
(3,3), (3,4)}

መ
‫,)4,3( ,)3,3( ,)2,3({ = ܣ‬
(4,3), (4,4)}

Gambar 7.9Contoh refleksi

Translasi himpunan A terhadap titik z=(z1, z2) disimbolkan dengan (A)z.
Definisinya sebagai berikut:
(‫)ܣ‬௭ = ሼܿ|ܿ = ܽ + ‫ܣ ∈ ܽ	݇ݑݐ݊ݑ ,ݖ‬ሽ

(7.9)

Contoh dapat dilihat pada Gambar 7.10.

1

2

3

4

5

1

2

3

4

5

1

0

0

0

0

0

0

0

0

0

0

2

0

1

1

0

0

0

0

0

0

0

3

0

1

1

1

0

0

0

0

0

0

4

0

0

0

0

0

0

0

1

1

0

5

0

0

0

0

0

0

0

1

1

1

A={(2,2), (2,3), (3,2),
(3,3), (3,4)}

(A)(2,1) = {(4,3), (4,4), (5,3),
(5,4), (5,5)}

Gambar 7.10Contoh translasi satu pikselke kanan dan
dua piksel ke bawah
7.2.2 Operasi Nalar
Operator nalar didasarkan pada aljabar Boolean.Sebagaimana diketahui,
aljabar Boolean adalah pendekatan matematis yang berhubungan dengan nilai
kebenaran (benar atau salah). Ada tiga operator nalar dasar yang akan dibahas,
Morfologi untuk Pengolahan Citra

219

yaitu AND, OR, serta NOT. Tabel kebenaran ketiga operator tersebut dapat dilihat
pada Tabel 7.1 dan 7.2.
Operasi AND melibatkan dua masukan dan mempunyai sifat bahwa hasil
operasinya bernilai 1 hanya jika kedua masukan bernilai 1. Pada operasi OR, hasil
berupa 1 kalau ada masukan yang bernilai 1. Berbeda dengan AND dan OR,
operasi NOT hanya melibatkan satu masukan. Hasil NOT berupa 1 kalau masukan
berupa 0 dan sebaliknya akan menghasilkan nilai 0 kalau masukan berupa 1.

Tabel 7.1Tabel kebenaran AND dan OR
Masukan 1
0
0
1
1

Masukan 2
0
1
0
1

AND
0
0
0
1

OR
0
1
1
1

Tabel 7.2Tabel kebenaran NOT
Masukan

Keluaran

0

1

1

0

Selain ketiga operator yang disebut di depan, operator lain yang kadangkadang digunakan adalah XOR dan NAND. Sifat XOR dan NAND ditunjukkan
pada Tabel 7.3.
Tabel 7.3Tabel kebenaran XOR dan NAND
Masukan 1
0
0
1
1

Masukan 2
0
1
0
1

XOR
0
1
1
0

NAND
1
1
1
0
220

Pengolahan Citra, Teori dan Aplikasi

Berbagai efek operasi AND, OR, NOT, XOR, dan NAND ditunjukkan
pada Gambar 7.11. Adapun program yang digunakan untuk membentuk operasi
tersebut dapat dilihat pada nalar.m.

Gambar 7.1 Hasil-hasil operasi nalar atas dua buah citra A dan B
Program : nalar.m

% NALAR Contoh penggunaan NOT, AND, OR, XOR, dan
%
kombinasinya.
Lingkaran = imread('C:Imagelingkaran.png');
Persegi = imread('C:Imagepersegi.png');
close all;
Citra1 = Lingkaran;
subplot(3,3,1); imshow(Citra1, [0 1]);
title('A');
Citra2 = Persegi;
subplot(3,3,2); imshow(Citra2, [0 1]);
title('B');
Morfologi untuk Pengolahan Citra

221

Citra3 = not(Lingkaran);
subplot(3,3,3); imshow(Citra3, [0 1]);
title('not(A)');
Citra4 = and(Lingkaran, Persegi);
subplot(3,3,4); imshow(Citra4, [0 1]);
title('and(A, B)');
Citra5 = xor(Lingkaran, Persegi);
subplot(3,3,5); imshow(Citra5, [0 1]);
title('xor(A, B)');
Citra6 = or(Lingkaran, Persegi);
subplot(3,3,6); imshow(Citra6, [0 1]);
title('or(A, B)');
Citra7 = not(and(Lingkaran, Persegi));
subplot(3,3,7); imshow(Citra7, [0 1]);
title('not(and(A, B))');
Citra8 = not(xor(Lingkaran, Persegi));
subplot(3,3,8); imshow(Citra8, [0 1]);
title('not(xor(A, B))');
Citra9 = not(or(Lingkaran, Persegi));
subplot(3,3,9); imshow(Citra9, [0 1]);
title('not(or(A, B))');

Akhir Program

7.3Operasi Dilasi
Operasi dilasi biasa dipakai untuk mendapatkan efek pelebaran terhadap
piksel yang bernilai 1. Operasi ini dirumuskan seperti berikut (Gonzales &
Woods, 2002):
෠
A⊕B = ቄ‫ |ݖ‬ቂ൫‫ܤ‬൯௭ ∩ ‫ܣ‬ቃ ∁	‫ܣ‬ቅ
Dalam hal ini,
෠
a) ‫ = ܤ‬ሼ‫ܤ ∈ ܾ	݇ݑݐ݊ݑ ,ܾ− = ݓ|ݓ‬ሽ

b) ሺ‫ܤ‬ሻ௭ = ሼܿ|ܿ = ܽ + ‫ܣ ∈ ܽ	݇ݑݐ݊ݑ ,ݖ‬ሽ

c) z=(z1, z2)

(7.10)
222

Pengolahan Citra, Teori dan Aplikasi

Burger & Burge (2008) mendefinisikan operasi dilasi sebagai berikut:
A⊕B = ሼ‫ ,ܾ + ܽ = ݖ|ݖ‬dengan	ܽ	 ∈ ‫ܤ ∈ 	ܾ	݊ܽ݀	ܣ‬ሽ

(7.11)

Hasil dilasi berupa penjumlahan seluruh pasangan koordinat dari I dan H.
Contoh operasi dilasi dengan menggunakan Persamaan 7.11dapat dilihat
pada Gambar 7.11. Pada contoh tersebut,
A = { (2,2), (2,3), (2,4), (3,2), (3,3), (3,4), (4,3) }
B = { (-1, 0), (0,0), (1,0) }
Dengan demikian,
A⊕B = { (2,2) + (-1, 0) , (2,2) + (0, 0) + (2,2) + (1, 0),
(2,3) + (-1, 0) , (2,3) + (0, 0) + (2,3) + (1, 0),
(2,4) + (-1, 0) , (2,4) + (0, 0) + (2,4) + (1, 0),
(3,2) + (-1, 0) , (3,2) + (0, 0) + (3,2) + (1, 0),
(3,3) + (-1, 0) , (3,3) + (0, 0) + (3,3) + (1, 0),
(3,4) + (-1, 0) , (3,4) + (0, 0) + (3,4) + (1, 0),
(4,3) + (-1, 0) , (4,3) + (0, 0) + (4,3) + (1, 0) }
= { (1,2), (2,2), (3,2), (1,3), (2,3), (3,3),
(1,4), (2,4), (3,3), (2,2), (3,2), (4,2),
(2,3), (3,3), (4,3), (2,4), (3,4), (4,4),
(3,3), (4,3), (5,3) }
= { (1,2), (1,3), (1,4), (2,2), (2,3), (2,4),
(3,2), (3,3), (3,4), (4,2), (4,3), (4,4), (5,3) }
Morfologi untuk Pengolahan Citra

1

2

3

4

223

5

-1

1

0

3

1

-1

2

0

1

4
5
A

B
Hotspot vertikal
Penambahan piksel akibat dilasi

A⊕B

Gambar 7.11Efek dilasi dengan hotspot vertikal

Operasi dilasi bersifat komutatif. Artinya,
A⊕B = B⊕A
Selain itu, operasi dilasi bersifat asosiatif. Artinya,
(A⊕B) ⊕C = A⊕ (B ⊕C)

Algoritma untuk melakukan operasi dilasi berdasar Persamaan 7.11
ditunjukkan berikut ini.
224

Pengolahan Citra, Teori dan Aplikasi

ALGORITMA 7.1 – Operasi dilasi

Masukan:
•

f (citra berukuran m x n)

•

h (elemen penstruktur berukuran s x t)

•

hoty (ordinat hotspot -> nomor baris)

•

hotx (absis hotpsot -> nomor kolom)

Keluaran:
•

g (citra berukuran m x n yang menyatakan hasil operasi
dilasi)

1. g(i,j)

nol (untuk semua i dan j)

2. Cari nilai r sehingga memenuhi 2r> 2m – 1
3. p

2q

4. q

2q

Implementasi dalam bentuk program dapat dilihat berikut ini.
Program : dilasi.m

function G = dilasi(F, H, hotx, hoty)
% DILASI Berguna untuk melaksanakan operasi dilasi.
%
Masukan:
%
F = citra yang akan dikenai dilasi
%
H = elemen pentruksur
%
(hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
Morfologi untuk Pengolahan Citra

225

end
Xh = [];
Yh = [];
jum_anggota = 0;
% Menentukan koordinat piksel bernilai 1 pada H
for baris = 1 : th
for kolom = 1 : lh
if H(baris, kolom) == 1
jum_anggota = jum_anggota + 1;
Xh(jum_anggota) = -hotx + kolom;
Yh(jum_anggota) = -hoty + baris;
end
end
end
G = zeros(tf, lf); % Nolkan semua pada hasil dilasi
% Memproses dilasi
for baris = 1 : tf
for kolom = 1 : lf
for indeks = 1 : jum_anggota
if F(baris, kolom) == 1
xpos = kolom + Xh(indeks);
ypos = baris + Yh(indeks);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
G(ypos, xpos) = 1;
end
end
end
end
end

Akhir Program

Contoh penggunaan fungsi dilasi ditunjukkan di bawah ini.
>> F = [ 0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

0];
226

Pengolahan Citra, Teori dan Aplikasi

>> H = [0 1 0; 1 1 1; 0 1 0];
>> G = dilasi(F,H)
G =
0

0

0

0

0

0

0

0

0

1

1

1

1

0

0

1

1

1

1

1

1

0

1

1

1

1

1

1

0

0

1

1

1

1

1

0

1

1

1

1

1

0

1

1

1

1

0

0

0

0

1

1

0

0

0

0

>>

Contoh pada Gambar 7.11 diproses dengan cara seperti berikut:

>> F = [ 0 0 0 0 0;
0 1 1 1 0;
0 1 1 1 0;
0 1 0 0 0;
0 0 0 0 0];
>> H = [0 1 0
0 1 0
0 1 0];
>> G = dilasi(F,H)
G =
0

1

1

1

0

0

1

1

1

0

0

1

1

1

0

0

1

1

1

0

0

1

0

0

0
Morfologi untuk Pengolahan Citra

227

>>

Dengan menggunakan data F dan H di atas, perintah berikut dapat dicoba:

>> G = dilasi(F,H, 2, 1)
G =
0

0

0

0

0

0

1

1

1

0

0

1

1

1

0

0

1

1

1

0

0

1

1

1

0

>>

Angka 2 dan 1 pada argumen fungsi dilasi menyatakan bahwa hotspot pada H
terletak pada kolom kedua dan baris pertama.Jadi, yang berfungsi sebagai hotspot
adalah nilai 1 pada H yang terletak paling atas, bukan yang di tengah.Mengapa
hasilnya seperti itu? Cobalah untuk menganalisisnya. Perlu diketahui, pada saat
menentukan posisi hotspot, pemetaan seperti pada Gambar 7.12 harus digunakan.
1

2

3

1
2
3

Hotspot dengan:
hx = 2
hy = 1

Gambar 7.12Penentuan hotspot menggunakan acuan
angka 1 untuk pojok kiri atas kernel
228

Pengolahan Citra, Teori dan Aplikasi

Untuk melihat efek dilasi pada citra, kode berikut dapat dicoba.

>>close all;
>>Bravo = imread('C:imagebravo.png');
>> BW = im2bw(Bravo, 0.5);
>> H = ones(4);
>> imshow(dilasi(BW, H));
>>

Gambar asli dan hasil operasi dilasi dapat dilihat pada Gambar 7.13.
Gambar 7.13(a) menyatakan gambar asli. Gambar 7.13(b) adalah hasil konversi
ke bentuk biner dengan menggunakan fungsi bawaan bernama im2bw. Gambar
7.13(c) adalah hasil dilasi melalui perintah di depan. Hasil tersebut diperoleh
dengan menggunakan struktur elemen berukuran 4 x 4 yang keseluruhan bernilai
1. Hal itu diperoleh melalui ones(4). Adapun Gambar 7.13(d) adalah hasil kalau
elemen penstruktur yang digunakan (H) berukuran 7x7 dengan seluruh elemen
bernilai 1.
Morfologi untuk Pengolahan Citra

229

Gambar 7.13Contoh operasi dilasi pada citra
7.4 Operasi Erosi
Operasi erosi mempunyai efek memperkecil struktur citra. Operasi ini
dirumuskan seperti berikut (Gonzalez & Woods, 2002).
A ΘB = ሼ‫|ݖ‬ሺ‫ܤ‬ሻ௭	 ⊆	‫ܣ‬ሽ

(7.12)
230

Pengolahan Citra, Teori dan Aplikasi

Adapun Burger & Burge (2008) mendefinisikan erosi sebagai berikut:
AΘB = ሼ‫ ܼ ∈ ݌‬ଶ |	(ܽ + ܾ) 	 ∈ ‫ܤ ∈ 	ܾ	݌ܽ݅ݐ݁ݏ	݇ݑݐ݊ݑ ,ܫ‬ሽ

(7.13)

Makna yang tersirat padaPersamaan 7.12 dan 7.13sebenarnya sama. Berdasarkan
Persamaan 7.13, posisi p terdapat pada AΘB jika seluruh nilai 1 di B terkandung
di posisi p tersebut.Implementasi fungsi erosi berikut didasarkan makna di atas.

Program : erosi.m

function G = erosi(F, H, hotx, hoty)
% EROSI Berguna untuk melaksanakan operasi erosi.
%
Masukan:
%
F = citra yang akan dikenai dilasi
%
H = elemen pentruksur
%
(hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
Xh = [];
Yh = [];
jum_anggota = 0;
% Menentukan koordinat piksel bernilai 1 pada H
for baris = 1 : th
for kolom = 1 : lh
if H(baris, kolom) == 1
jum_anggota = jum_anggota + 1;
Xh(jum_anggota) = -hotx + kolom;
Yh(jum_anggota) = -hoty + baris;
end
end
end
G = zeros(tf, lf); % Nolkan semua pada hasil erosi
% Memproses erosi
for baris = 1 : tf
for kolom = 1 : lf
cocok = true;
for indeks = 1 : jum_anggota
Morfologi untuk Pengolahan Citra

231

xpos = kolom + Xh(indeks);
ypos = baris + Yh(indeks);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
if F(ypos, xpos) ~= 1
cocok = false;
break;
end
else
cocok = false;
end
end
if cocok
G(baris, kolom) = 1;
end
end
end

Akhir Program

Contoh penggunaan fungsi erosi dapat dilihat berikut ini.
>> F =[ 0

0

0

0

0

1

1

1

0

0

1

1

1

0

0

1

0

0

0

0

0

0

0

0

0];

>>H = [0

1

0

1

0

0

1

0

0];

>> G = erosi(F, H)
G =
0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0
>>

0

0

0

0

0
232

Pengolahan Citra, Teori dan Aplikasi

Gambar berikut memperlihatkan bentuk visual untuk contoh di atas.

Hanya ini yang cocok dengan
elemen penstruktur
A

B

AΘB

Gambar 7.14 Contoh visualisasi operasi erosi

Operasi erosi bersifat komutatif. Artinya,
AΘB = BΘA
Selain itu, operasi erosi bersifat asosiatif. Artinya,
(AΘB) ΘC = AΘ (B ΘC)

Contoh penggunaan operasi erosi pada citra dapat dicoba dengan
menggunakan perintah berikut:

>> Daun=imread('C:imagededaunan.png');
>> BW=im2bw(Daun, 0.1);
Morfologi untuk Pengolahan Citra

233

>> H=ones(4);
>> G=erosi(BW, H);
>> imshow(G, [0 1])

Citra asli dan hasil pemrosesan dengan operasi erosi dapat dilihat pada Gambar
7.15. Terlihat bahwa dengan menggunakan elemen penstruktur
1
‫1ۍ‬
‫1ێ‬
‫ێ=ܪ‬
‫1ێ‬
‫1ێ‬
‫1ۏ‬

1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
1‫ې‬
1‫ۑ‬
‫ۑ‬
1‫ۑ‬
1‫ۑ‬
1‫ے‬

yang diperoleh melalui H = ones(6), semua daun yang bersinggungandapat
dipisahkan. Namun, sebagai konsekuensinya, bentuk beberapa daun agak berubah.
234

Pengolahan Citra, Teori dan Aplikasi

(a) Citra asli daun.png

(c) Erosi dengan H = ones(4)

(b) Hasil konversi ke citra biner

(d) Erosi dengan H = ones(6)

Gambar 7.15Contoh operasi erosi pada citra

Operasi erosi dapat dimanfaatkan untuk memperoleh tepi objek. Sebagai
contoh, kode berikut dapat dicoba:

>> Img=imread('C:Imagedaun_gray.png');
>> BW=im2bw(Img, 0.65);
>> BW = not(BW);
>> imshow(BW);

Hasilnya ditunjukkan pada Gambar 7.16(a).
Morfologi untuk Pengolahan Citra

235

Perintah
BW = not(BW);
digunakan untuk melakukan operasi komplemen. Hal ini perlu dilakukan
mengingat latarbelakang gambar asli berwarna putih. Selanjutnya, perintah
berikut dapat dicoba:

>>H = ones(5);
>> G=erosi(BW, H);
>>Ap =BW - G;
>> imshow(Ap);

Hasilnya ditunjukkan pada Gambar 7.16(b). Kuncinya sangat sederhana. Tepi
objek sesungguhnya dapat diperoleh melalui:

Ap = A – (A ΘB)

(7.14)
236

Pengolahan Citra, Teori dan Aplikasi

(a) Hasil konversi ke biner

(b) Hasil operasi perolehan tepi

Gambar 7.16Contoh erosi untuk mendapatkan tepi objek
7.5 Bentuk dan Ukuran Elemen Penstruktur
Berdasarkan contoh pada Gambar 7.13, terlihat bahwa ukuran elemen
penstruktur menentukan hasil operasi dilasi. Selain ukuran, bentuk elemen
penstruktur juga menentukan hasil operasi morfologi.
Bentuk yang umum digunakan pada operasi morfologi adalah cakram atau
lingkaran. Efek yang diberikan merata pada segala arah. Bentuk dua buah cakram
dapat dilihat pada Gambar 7.17.
Morfologi untuk Pengolahan Citra

237

Gambar 7.17Dua bentuk elemen penstrukturberbentuk cakram

Bentuk elemen penstruktur yang lain yaitu belah ketupat, garis, persegi
panjang, bujur sangkar, dan oktagon. Gambar 7.18 menunjukkan contoh bentukbentuk tersebut.
238

Pengolahan Citra, Teori dan Aplikasi

Gambar 7.18Berbagai bentuk elemen penstruktur

Untuk

kepentingan

memperoleh

elemen

penstruktur,

MATLAB

menyediakan fungsi bernama strel.Sayangnya, fungsi seperti ini belum
diimplementasikan pada Octave. Sebagai contoh, elemen penstruktur berbentuk
cakram dengan radius 8 diperoleh dengan menggunakan perintah seperti berikut:

>>strel('disk', 8)

ans =
Morfologi untuk Pengolahan Citra

239

Flat STREL object containing 185 neighbors.
Decomposition: 4 STREL objects containing a total of 24 neighbors

Neighborhood:
0

0

0

0

1

1

1

1

1

1

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

1

0

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

0

0

0

0

>>

Agar hasil streldapat dimanfaatkan untuk fungsi erosi ataupun dilasi,
elemen penstruktur dapat diperoleh dengan memberikan perintah semacam
berikut:

>> H = getnhood(strel('disk', 8))

Dengan cara seperti itu, H dapat digunakan pada fungsi erosi atau dilasi. Contoh:

>> G=erosi(BW, H);
240

Pengolahan Citra, Teori dan Aplikasi

>> imshow(G, [0 1]);
>>

Hasilnya dapat dilihat di Gambar 7.19(b).
Gambar 7.19 juga sekaligus memperlihatkan efek berbagai ukuran elemen
penstruktur. Terlihat bahwa dengan menggunakan erosi, objek tertentu (yang
ukurannya lebih kecil daripada elemen penstruktur) akan hilang. Hasil pada
gambar tersebut juga menunjukkan bahwa semakin besar ukuran elemen
penstruktur, objek semakin mengecil.

Gambar 7.19Contoh penggunaan elemen penstruktur
yang bersumberstrel dan dikenakan pada erosi
Morfologi untuk Pengolahan Citra

241

Perlu diketahui, fungsi strel memberikan berbagai pilihan dalam membuat
elemen penstruktur. Tabel 7.4 memperlihatkan beberapa contoh.

Tabel 7.4Contoh strel untuk membuat berbagai bentuk
elemen penstruktur
Penentu Bentuk
Contoh
‘disk’ (berbentuk cakaram)

strel(‘disk’, 4) → radius 4

‘diamond’ (berbentuk belah

strel(‘diamond’, 4) → radius 4

ketupat)
‘line’ (berbentuk garis)

strel(‘line’, 3, 0) → panjang 3 dan sudut
0 derajat (datar)
strel(‘line’, 3, 45) → panjang 3 dan
sudut 45 derajat (datar)

‘octagon’ (berbentuk segi

strel(‘octagon’, 6)

delapan)

Argumen kedua harus kelipatan 3

‘rectangle’ (berbentuk

strel(‘rectangle’, [4 2]) → 4 baris 2

persegi panjang)

kolom

‘square’ (berbentuk bujur

strel(‘square’, 4) → bujur sangkar 4 x 4

sangkar)

Perlu juga diketahui, Octave dan MATLAB mendukung fungsi untuk
kepentingan dilasi bernama imdilate dan untuk erosi bernama erode. Contoh
penggunaannya seperti berikut:
>> Img=imread('C:Imagestruktur.png');
>> BW=im2bw(Img, 0.1);
>> H = ones(11,11);
>> H(1,1)=0;H(1,2)=0;H(2,1)=0;
>> H(10,1)=0;H(10,2)=0;H(11,1)=0;
>> H(1,10)=0;H(1,11)=0;H(2,11)=0;
>> H(10,11)=0;H(11,10)=0;H(11,11)=0;
242

Pengolahan Citra, Teori dan Aplikasi

>> G=imerode(BW,H);
>> imshow(G, [0 1]);
>>

Perintah
H = ones(11,11);
H(1,1)=0;H(1,2)=0;H(2,1)=0;
H(10,1)=0;H(10,2)=0;H(11,1)=0;
H(1,10)=0;H(1,11)=0;H(2,11)=0;
H(10,11)=0;H(11,10)=0;H(11,11)=0;
identik dengan perintah MATLAB
strel('disk', 6)

Hasilnya dapat dilihat pada Gambar 7.20.

(a) Citra struktur.png

(b) Hasil imerode dengan strel(‘disk’, 6)

Gambar 7.20Erosi dengan fungsi erode
7.6 Operasi Opening
Operasi openingadalah operasi erosi yang diikuti dengan dilasi dengan
menggunakan elemen penstruktur yang sama. Operasi ini berguna untuk
Morfologi untuk Pengolahan Citra

243

menghaluskan kontur objek dan menghilangkan seluruh piksel di area yang terlalu
kecil untuk ditempati oleh elemen penstruktur.Dengan kata lain, semua struktur
latardepan yang berukuran lebih kecil daripada elemen penstruktur akan
tereliminasi oleh erosi dan kemudian penghalusan dilakukan melalui dilasi.
Definisi operasi opening seperti berikut:
AοB = (AΘB) ⊕B

(7.15)

Contoh efek openingdapat diperoleh dengan memberikan perintah berikut:
>>Img = imread('C:Imagestruktur.png');
>>BW=im2bw(Img, 0.1);
>> H = [
0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

0 ];

>> G=dilasi(BW, H);
>>M=erosi(G, H);
>>imshow(M,[0 1])
>>

Hasilnya dapat dilihat pada Gambar 7.21(c).
244

Pengolahan Citra, Teori dan Aplikasi

Gambar 7.21Perbandingan operasi erosi, opening, dan closing

Gambar 7.21 menunjukkan bahwa operasi erosi membuat objek mengecil
dan bahkan ada yang hilang. Adapun operasi opening membuat ukuran objek
relatif tetap sama, walaupun juga menghilangkan objek yang berukuran kecil
(kurus). Namun, perlu diketahui, operasi opening membuat penghalusan di bagian
tepi. Perhatikan, ujung segitiga tidak tajam setelah dikenai operasi opening.
Sebagai pembanding, Gambar 7.21(d) menunjukkan hasil penggunaan operasi
closing, yang akan dibahas sesudah subbab ini.
Morfologi untuk Pengolahan Citra

245

.
Operasi opening sering dikatakan sebagai idempotent. Artinya, jika suatu
citra telah dikenai operasi opening, pengenaan opening dengan elemen
penstruktur yang sama tidak membawa efek apapun. Sifat ini dapat dituliskan
secara matematis seperti berikut:

(AοB)οB = (A
(AοB)

(7.16)

Operator opening dapat dimanfaatkan sebagai filter lolos
lolos-rendah, filter
lolos-tinggi, maupun sebagai tapis lolos-bidang apabila elemen penstruktur yang
tinggi,
digunakan berupa cakram (Shih, 2009). Berikut adalah rumusannya:
.

•

filter lolos-rendah (low-pass): AοBh;
rendah

•

filter lolos-tinggi (high-pass): A – (AοBh);

•

filter lolos-bidang (band-pass): (AοBh1)- (AοBh2), dengan diameter Bh1 < Bh2.
bidang

Skrip berikut digunakan untuk menangani operasi opening:

Program : opening.m

function G = opening (F, H)
% OPENING Melakukan operasi opening.
G = dilasi(erosi(F, H), H);

Akhir Program

7.7 Operasi Closing
Operasi closing berguna untuk menghaluskan kontur dan menghilangkan
sing
lubang-lubang kecil. Definisinya seperti berikut:
lubang

)
A•B = (A⊕B) ΘB

(7.17)
246

Pengolahan Citra, Teori dan Aplikasi

Jadi, operasi closing dilaksanakan dengan melakukan operasi dilasi terlebih
dahulu dan kemudian diikuti dengan operasi erosi.
Contoh berikut menunjukkan efek penutupan lubang pada daun:
>> Img= imread('C:Imagedaun_gray.png');
>> BW=im2bw(Img, 0.65);
>> BW = not(BW);
>> imshow(BW, [0 1] )
Perintah di atas menampilkan hasil seperti terlihat pada Gambar 7.22(a).
Selanjutnya, perintah berikut dapat dicoba:
>> Img = imread('C:Imagedaun_gray.png');
>> BW = im2bw(Img, 0.65);
>> BW = not(BW);
>> H = ones(5);
>> G=dilasi(BW, H);
>> M=erosi(G, H);
>> imshow(M,[0 1])
Hasilnya ditunjukkan pada Gambar 7.22(b).
Morfologi untuk Pengolahan Citra

(a) Hasil konversi ke biner

247

(b) Hasil operasi closing

Gambar 7.22 Lubang kecil tertutup oleh operasi closing

Berikut adalah implementasi operasi closing:
Program : closing.m

function G = closing (F, H)
% CLOSING Melakukan operasi opening.
G = erosi(dilasi(F, H), H);

Akhir Program
248

Pengolahan Citra, Teori dan Aplikasi

7.8 TransformasiHit-or-Miss
Transformasi Hit-or-Miss (THM) pada citra biner A didefinisikan sebagai
berikut:
‫ = ܤ*	ܣ‬ሺ‫ܣ‬Θ‫ܤ‬ଵ ሻ∩(‫̅ܣ‬Θ‫ܤ‬ଶ)

(7.18)

തതത
Dalam hal ini, biasanya B2 = ‫ܤ‬ଵ. Morfologi seperti itu dipakai untuk pemrosesan

dan pengenalan bentuk pada citra biner.

•

Transformasi Hit-or-Miss terkadang disebut Hit-and-Miss
(Efford, 2000).

•

THM merupakan dasar untuk skeleton, thinning, dan pruning.

Sebagai contoh, terdapat pola seperti terlihat pada Gambar 7.23(a). Target
yang dikehendaki adalah menemukan pola tersebut pada citra yang terlihat pada
Gambar 7.23(b).

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

0

0

1

0

0

1

0

0

0

0

0

1

1

1

1

1

0

0

1

0

1

1

1

1

0

1

0

0

0

0

0

0

1

1

1

1

1

0

1

1

1

1

0

1

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

1

0

1

1

1

1

0

0

0

1

0

0

0

1

1

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

1

(a) Target

(b) Citra yang berisi target

Gambar 7.23 Contoh target dan citra yang berisi target

Secara manual dapatdilihat bahwa target yang dicari ada tiga buah. Untuk
menemukan posisinya, dapatdigunakan operasi erosi. Penyelesaiannya seperti
berikut:
Morfologi untuk Pengolahan Citra

249

>>H1 = [1 0 0 0
1 0 0 1
1 1 1 1
0 0 0 1
0 0 0 1 ];
>>Citra = [ 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 1 0 0 0 0 0
1 0 0 1 0 1 1 1 1 0 1 0 0 0
1 1 1 1 0 1 1 1 1 0 1 0 0 1
0 0 0 1 0 0 0 0 1 0 1 1 1 1
0 0 0 1 0 0 0 1 1 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1];
>> G = erosi(Citra, H1)

Terlihat bahwa ada tiga elemen pada G yang bernilai 1. Pada posisi itulah target
ditemukan. Gambar 7.24 memperlihatkan isi G. Elemen yang bernilai 1 ditandai
dengan arsiran yang agak gelap. Arsiran yang agak terang digunakan untuk
menandai keberadaan target.

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Gambar 7.24Hasil erosi. Arsiran dimaksudkan untuk menunjukkan letak
target yang dicari
Nah, sekarang digunakan komplemen atas target yang dicari. Dalam hal ini,

തത
തത
H2 = ‫ܪ‬ଵ . Jadi,

>> H2 = not(H1)
250

Pengolahan Citra, Teori dan Aplikasi

H2 =
0

1

1

1

0

1

1

0

0

0

0

0

1

1

1

0

1

1

1

0

>>

Gambar 7.25 menunjukkan keadaan H2 dan komplemen citra.

0

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

0

1

1

0

1

1

1

1

1

0

1

1

0

1

1

1

1

1

0

0

0

0

0

1

1

0

1

0

0

0

0

1

0

1

1

1

1

1

1

0

0

0

0

0

1

0

0

0

0

1

0

1

1

0

1

1

1

0

1

1

1

0

1

1

1

1

0

1

0

0

0

0

1

1

1

0

1

1

1

0

0

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

0

ഥ
(a) ‫1ܪ = 2ܪ‬

(b) Komplemen citra

Gambar 7.25Mencari kebalikan target H1 pada komplemen citra

Pencarian seperti pada Gambar 7.25 dapat dilakukan dengan menggunakan:
>>erosi(not(Citra), not(H1))
Hasilnya ditunjukkan pada Gambar 7.26.
Morfologi untuk Pengolahan Citra

251

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

1

0

0

0

0

0

0

0

0

ഥ
(a) ‫1ܪ = 2ܪ‬

(b) Komplemen citra

Gambar 7.26Hasil pencarian kebalikan H1 pada komplemen citra
dengan menggunakan erosi

Hasil THM diperoleh dengan melakukan interseksi antara hasil yang terletak pada
7.24 dan 7.26. Secara visual terlihat bahwa

interseksi kedua hasil tersebut

menghasilkan satu nilai saja, yaitu pada posisi yang terlihat pada Gambar 7.27.
Hasil THM
0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Gambar 7.27 Hasil THM
Hasil di atas menyatakan bahwa pola yang dicari hanya ditemukan satu kali pada
citra dengan posisi seperti yang ditunjukkan oleh angka 1. Bagian yang diarsir
lebih terang menyatakan pola yang dicari.Dalam hal ini, interseksi diperoleh
dengan menggunakan AND. Jadi, solusi THM secara lengkap sebagai berikut:
>>and(erosi(Citra, H1) , erosi(not(Citra), not(H1)))

THM yang dikupas di atas mempunyai kelemahan, yakni perbedaan satu
piksel saja akan membuat pola tidak dikenal. Dalam praktik, terkadang
252

Pengolahan Citra, Teori dan Aplikasi

dikehendaki agar THM bersifat sedikit pemaaf, sehingga pola yang sedikit
berbeda dalam citra tetap dianggap sama dengan target. Pembahasan mengenai hal
itu dapat dilihat pada Solomon & Breckon (2011).

Untuk keperluan menangani transformasi Hit-or-Miss, Octave
dan MATLAB menyediakan fungsi bernama bwhitmiss. Bentuk
pemakaiannya:
bwhitmiss(Citra, SE1, SE2)
Dalam hal ini, argumen pertama menyatakan citra dan SE1
serta SE2 menyatakan elemen penstruktur yang merupakan
pola untuk pencarian.

Untuk kepentingan memudahkan implementasi yang melibatkan THM,
sebuah fungsi bernama thmditunjukkan berikut ini.

Program : thm.m

function G = thm(F, H)
% THM Digunakan untuk menangani transformasi Hit-or-Miss
%
F adalah citra yang akan dikenai operasi
%
H adalah elemen penstruktur
[tinggi, lebar] = size(H);
H1 = H;
H2 = not(H1);
G = and(erosi(F, H1) , erosi(not(F), H2));

Akhir Program

Contoh berikut menunjukkan cara menemukan batas kiri objek kunci
dengan memanfaatkan fungsi thm:
Morfologi untuk Pengolahan Citra

253

>> Kunci = imread('C:Imagekunci.png');
>> H = [0 1 1; 0 1 1; 0 1 1];
>> G = thm(Kunci, H); imshow(G)

Pada contoh di atas, elemen pentruktur yang digunakan untuk memperoleh batas
kiri objek berupa:

0

1

1

0

1

1

0

1

1

Gambar 7.28 Elemen penstruktur untuk
memperoleh batas kiri kunci
Hasilnya ditunjukkan pada Gambar 7.29(b).

Adapun perintah berikut

memberikan hasil seperti terlihat pada Gambar 7.29(c).

>> H = [ 0 0 0; 1 1 1 ; 1 1 1];
>> G = thm(Kunci, H); imshow(G)

(a) Citra kunci.png

(b) Batas kiri kunci

(c) Batas atas kunci

Gambar 7.29Contoh memperoleh batas kiri dan batas atas kunci

Pada beberapa kasus, elemen penstruktur yang digunakan untuk
melakukan THM melibatkan bit-bit yang disebut dengan istilah “don’t care”
(dampak nilai 1 atau 0 sama saja). Contoh:
254

Pengolahan Citra, Teori dan Aplikasi

1
‫ = ܤ‬൥1
1

‫ݔ‬
0
‫ݔ‬

‫ݔ‬
‫ݔ‬൩
‫ݔ‬

(7.19)

Pada contoh di atas, x menyatakan “don’t care” atau bebas (0 atau 1). Nah, untuk
menangani kasus seperti itu,

dapat dibuat transformasi Hit_or_Miss seperti

berikut.

Program : thm2.html

function G = thm2(F, H)
% THM2 Digunakan untuk menangani transformasi Hit-or-Miss
%
F adalah citra yang akan dikenai operasi
%
H adalah elemen penstruktur
%
H bisa mengandung nilai -1 untuk menyatakan
%
don't care
[tinggi, lebar] = size(H);
% Membentuk H1
% Periksa nilai don't care (yaitu -1) dan gantilah dengan nol
H1 = H;
for baris = 1 : tinggi
for kolom = 1 : lebar
if H1(baris, kolom) == -1
H1(baris, kolom) = 0;
end
end
end
% Membentuk H2 sebagai komplemen H1
% Periksa nilai don't care (yaitu -1) dan gantilah dengan nol
for baris = 1 : tinggi
for kolom = 1 : lebar
if H(baris, kolom) == -1
H2(baris, kolom) = 0;
else
H2(baris, kolom) = not(H(baris, kolom));
end
end
end
G = and(erosi(F, H1) , erosi(not(F), H2));
return
Morfologi untuk Pengolahan Citra

255

Akhir Program

Secara prinsip, bagian yang bernilai -1 (“don’t care”) selalu diubah menjadi nol.
Ketika dikomplemenkan, nilai -1 juga menghasilkan nilai 0. Dengan demikian,
H1 AND H2 akan selalu menghasilkan nilai 0 pada setiap elemen. Contoh
penggunaan thm2akan diberikan ketika membahas convex hull.
7.9Skeleton
Ada beberapa cara yang digunakan untuk membentuk skeleton.Skeleton
merupakan

bentuk

unik

suatu

objek,

yang

menyerupai

rangka

suatu

objek.Skeleton mempunyai tiga karakteristik seperti berikut (Young, dkk., 1998):
1) ketebalannya 1 piksel,
2) melewati tengah objek, dan
3) menyatakan topologi objek.
Namun, dalam praktik, ada kasus tertentu yang tidak dapat dipenuhi oleh skeleton.
Contoh ditunjukkan pada Gambar 7.35.

Gambar 7.30Contoh gambar yang tidak dapat dipenuhi oleh skeleton
(Sumber: Young, dkk., 1998)
Skeleton digunakan untuk representasi dan pengenalan tulisan tangan, pola
sidik jari, struktur sel biologis, diagram rangkaian, gambar teknik, rencana jalur
256

Pengolahan Citra, Teori dan Aplikasi

robot, dan semacam itu (Shih, 2009). Terkadang istilah skeletonisasi objek disebut
sebagai Medial Axis Transform (Myler & Weeks, 1993).
Salah satu cara untuk mendapatkan skeleton adalah melaluithinning.
Thinning (pengurusan) adalah operasi morfologi yang digunakan untuk
memperkecil ukuran geometrik objek dengan hasil akhir berupa skeleton atau
rangka, dengan definisinya sebagai berikut:
thinning(A, B) = A ⊗ B = A ^ B
= A – hit_or_miss(A, B) = A∩ (hit_or_miss)c (7.20)
Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur
B1..Bn. Satu fase perhitungan thinning dilakukan dengan menggunakan delapan
elemen penstruktur.Beberapa fase diperlukan sampai diperoleh hasil yang tidak
lagi mengubah struktur citra.

Operasi thinningmenyerupai erosi. Perbedaannya, thinning tidak
akan

membuat

komponen

objek

terputus,

melainkan

mengecilkan hingga hasil akhirnya berupa rangka dengan
ketebalan 1 piksel.

B1

B2

B3

B4

0

0

0

1

1

1

0

1

1

1

1

0

1

1

1

1

1

1

0

1

1

1

1

0

1

1

1

0

0

0

0

1

1

1

1

0

B5

B6

B7

B8

1

0

0

1

1

1

1

1

1

0

0

1

1

1

0

0

1

1

1

1

0

0

1

1

1

1

1

0

0

1

1

0

0

1

1

1

Gambar 7.31Contoh 8 elemen penstruktur
untuk melakukan operasi thinning
Morfologi untuk Pengolahan Citra

257

Contoh delapanelemen penstruktur yang digunakan untuk thinning
ditunjukkan pada Gambar 7.28 (Meyer dan Weeks, 1993).Fase pertama operasi
thinning dilakukan sebagai berikut:
A ⊗ B = ((((((((A ⊗ B1) ⊗ B2) ⊗ B3) ⊗ B4) ⊗ B5) ⊗ B6) ⊗ B7) ⊗ B8)

(7.21)

Implementasi thinning ditunjukkan berikut ini.

Program : thinning.m

function G = thinning(F, fase)
% THINNING Untuk melakukan operasi thinning terhadap citra F
%
Argumen fase menentukan hasil thinning untuk
%
fase tersebut. Jika fase tidak disebutkaan,
%
operasi thinning dilakukan sampai cstruktur citra
%
tidak berubah lagi
if nargin == 1
% Kalau fase tidak disebutkan
fase = 1000000000; % Isi dengan bilangan yang besar
end
% Elemen
H1 = [ 0
H2 = [ 1
H3 = [ 0
H4 = [ 1
H5 = [ 1
H6 = [ 1
H7 = [ 1
H8 = [ 0

penstruktur
0 0; 1 1 1;
1 1; 1 1 1;
1 1; 0 1 1;
1 0; 1 1 0;
0 0; 1 1 0;
1 1; 0 1 1;
1 1; 1 1 0;
0 1; 0 1 1;

1
0
0
1
1
0
1
1

1
0
1
1
1
0
0
1

1
0
1
0
1
1
0
1

];
];
];
];
];
];
];
];

[tinggi, lebar] = size(F);
C = F;
for p = 1 : fase
C1 = C;
C = and(C, not(thm(C,H1)));
C = and(C, not(thm(C,H2)));
C = and(C, not(thm(C,H3)));
C = and(C, not(thm(C,H4)));
C = and(C, not(thm(C,H5)));
C = and(C, not(thm(C,H6)));
C = and(C, not(thm(C,H7)));
C = and(C, not(thm(C,H8)));
% Periksa hasil C1 dan C sama atau tidak
sama = true;
258

Pengolahan Citra, Teori dan Aplikasi

for baris = 1 : tinggi
for kolom = 1 : lebar
if C1(baris, kolom) ~= C(baris, kolom)
sama = false;
break;
end
end
if sama == false
break;
end
end
if sama == true
break; % Akhiri kalang
end
end
G = C;

Akhir Program

Contoh penggunaan fungsi thinning:
>> F=im2bw(imread('C:Imagebentuk.png'), 0.5);
>> G=thinning(F); imshow(G)

Hasilnya ditunjukkan pada Gambar 7.32.

(a) Berbagai bentuk objek

(b) Skeleton morfologi

Gambar 7.32Citra yang berisi berbagai bentuk dan
hasil akhir setelah mengalami operasi thinning
Morfologi untuk Pengolahan Citra

259

Adapun contoh berikut menunjukkan pengenaan elemen penstruktur untuk
fase kedua:

>> G=thinning(F,2); imshow(G)

Hasilnya ditunjukkan pada Gambar 7.33(a). Hasil fase keenam diperoleh dengan
menggunakan perintah berikut:

>> G=thinning(F,6); imshow(G)

Hasilnya ditunjukkan pada Gambar 7.33(b).

Gambar 7.33Hasil thinning pada berbagai fase
260

Pengolahan Citra, Teori dan Aplikasi

Skeleton juga dapat diperoleh melalui morfologi, seperti yang diajukan
oleh Serra (1982). Definisi skeletondijelaskan berikut ini.Misalnya, A menyatakan
citra biner dengan 1 menyatakan piksel objek dan 0 menyatakan piksel-piksel
latarbelakang.Skeleton A diperoleh dengan menggunakan rumus:
ܵሺ‫ܣ‬ሻ = ⋃௄ ܵ௞ (‫)ܣ‬
௞ୀ଴

(7.22)

Dalam hal ini,
ܵ௞ ሺ‫ܣ‬ሻ = (‫	ܣ‬Θ		݇‫ − ܤ‬ሺ‫ܣ‬Θ		݇‫ܤ‬ሻ°	‫ܤ‬

(7.23)

B adalah elemen penstruktur dan K adalah bilangan terbesar sebelum membuat A
tererosi menjadi himpunan kosong. Kondisi pada K tersebut dapat ditulis secara
matematis seperti berikut:
‫ = ܭ‬maxሺ݇|‫	ܣ‬Θ		݇‫∅	 ≠ 	ܤ‬ሻ

(7.24)

Perlu diketahui,
‫	ܣ‬Θ		݇‫ = ܤ‬൫ሺ(‫	ܣ‬Θ		‫ܤ‬ሻΘ		‫ܤ‬൯ … )Θ		‫ܤ‬

(7.25)

yang menyatakan bahwa hasil erosi dierosiulang sampai terjadi k erosi.
Contoh yang menunjukkan proses pembuatan skeleton suatu objek dengan
cara di atas ditunjukkan pada Gambar 7.36. Pada contoh tersebut, S2(A) berupa
himpunan kosong mengingat semua elemen bernilai nol. Dengan demikian, K = 1
atau S(A) = S1(A).
Morfologi untuk Pengolahan Citra

261

0

1

1

1

0

0

0

0

1

1

1

0

1

1

1

0

0

0

0

1

1

1

0

1

1

1

0

0

0

0

1

1

1

0

1

1

1

0

0

0

0

0

1

1

1

1

1

1

0

0

1

1

1

1

1

1

0

0

1

1

1

1

1

1

0

0

0

0

0

0

0

0

0

B

A
0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

AΘB

(A Θ B) ° B

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

S1(A) = (A Θ B) - (A Θ B) ° B

S2(A)

Gambar 7.34Skeleton secara morfologis
Namun,cara seperti itu tidak menjamin terjadinya skeleton yang titik-titiknya
terkoneksi. Hal ini telah diutarakan oleh Gonzalez dan Woods (2002).
DiOctave dan MATLAB, skeleton dapat diperoleh dengan menggunakan
fungsi bwmorph. Contoh:
>> Img=imread('C:Imagebentuk.png');
262

Pengolahan Citra, Teori dan Aplikasi

>> Img = im2bw(Img, 0.5);
>> G=bwmorph(Img, 'skel', inf);
>> imshow(G)
Perlu diketahui, im2bwdigunakan untuk memperoleh citra biner. Setelah itu, Img
dapat diproses oleh bwmorph. Argumen ‘skel’ menyatakan bahwa hasil yang
diharapkan adalah skeleton. Argumen inf menyatakan nilai yang tak berhingga,
yang digunakan untuk menyatakan jumlah pengulangan maksimal dalam
membentuk skeleton. Hasil operasi di depan ditunjukkan pada Gambar 7.35.

Gambar 7.35Hasil bwmorph untuk memperoleh skeleton
Morfologi untuk Pengolahan Citra

263

7.10 Thickening
Thickening (penebalan) adalah operasi yang berkebalikan dengan thinning.
Fungsinya adalah memperbesar ukuran geometris objek. Operasi ini didefinisikan
sebagai berikut:

A

B = A ∪hit_or_miss(A, B)

(7.26)

Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur
B1..Bn. Satu fase perhitungan thickening dilakukan dengan menggunakan delapan
elemen penstruktur. Contoh kedelapan elemen penstruktur disajikan pada Gambar
7.36.

B1

B2

B3

B4

1

1

1

0

0

0

1

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

1

0

0

0

1

1

1

1

0

0

0

0

1

B5

B6

B7

B8

0

1

1

0

0

0

0

0

0

1

1

0

0

0

1

1

0

0

0

0

1

1

0

0

0

0

0

1

1

0

0

1

1

0

0

0

Gambar 7.36Contoh 8 elemen penstruktur
untuk operasi thickening
Fase pertama operasi thickening dilakukan sebagai berikut:

A

B = ((((((((A

B1)

B2)

B3)

B4)

Implementasi thickening ditunjukkan berikut ini.

B5)

B6)

B7)

B8)(7.27)
264

Pengolahan Citra, Teori dan Aplikasi

Program : thickening.m

function G = thickening(F, n_iterasi)
% THICKENING Digunakan untuk menebalkan objek yang terdapat pada
%
citra F.
%
Argumen n_iterasi menyatakan jumlah iterasi atau
%
fase yang dikehendaki untuk melakukan
%
penebalan objek'
H1
H2
H3
H4
H5
H6
H7
H8

=
=
=
=
=
=
=
=

[
[
[
[
[
[
[
[

C = F;
for p =
C =
C =
C =
C =
C =
C =
C =
C =
end

1
0
1
0
0
0
0
1

1
0
0
0
1
0
0
1

1;
0;
0;
1;
1;
0;
0;
0;

0
0
1
0
0
1
0
1

0
0
0
0
0
0
0
0

0;
0;
0;
1;
1;
0;
1;
0;

0
1
1
0
0
1
0
0

0
1
0
0
0
1
1
0

0
1
0
1
0
0
1
0

];
];
];
];
];
];
];
];

% Salin citra F ke C
1 : n_iterasi
or(C, thm(C,H1));
or(C, thm(C,H2));
or(C, thm(C,H3));
or(C, thm(C,H4));
or(C, thm(C,H5));
or(C, thm(C,H6));
or(C, thm(C,H7));
or(C, thm(C,H8));

G = C;

Akhir Program

Contoh
>>F = imread(’C:Imagemorfo.png’);
>>G=thickening(F,1); imshow(G)
Hasil untuk berbagai fase ditunjukkan pada Gambar 7.37.
Morfologi untuk Pengolahan Citra

265

Gambar 7.37Contoh operasi thickening
7.11 Convex Hull
Himpunan konveks(cembung) adalah himpunan yang mencakup semua
titik yang menghubungkan dua titik yang berada di dalam himpunan.Adapun
convex hull adalah bentuk poligon terkecil yang dapat melingkupi objek.Poligon
ini dapat dibayangkan sebagai gelang elastis yang dapat melingkupi tepi objek,
Hal seperti itu kadang diperlukan untuk kepentingan mengenali objek, dengan
menghilangkan tepian objek yang cekung.
266

Pengolahan Citra, Teori dan Aplikasi

Convex hull diperoleh dengan melibatkan transformasi Hit_or_Miss
(THM) dengan elemen-elemen penstruktur yang dirotasi sebesar 90o. Contoh
elemen penstruktur ditunjukkan pada Gambar 7.38.

B1

B2

B3

B4

1

x

x

1

1

1

x

x

1

x

x

x

1

0

x

x

0

x

x

0

1

x

0

x

1

x

x

x

x

x

x

x

1

1

1

1

Gambar 7.38Empat elemen penstruktur untuk membentuk convex hull

Pada contoh di atas, x menyatakan “don’t care”.
Langkah awal untuk melakukan perhitungan convex hull dilaksanakan
dengan memberikan X01 = A, dengan A adalah citra yang akan diproses.
Selanjutnya, dilakukan perhitungan sebagai berikut:
௜
ܺ௞ = ‫ݐ‬ℎ݉൫ܺ௞ିଵ , ‫ ܤ‬௜ ൯ ∪ ‫… ,3,2,1 = ݇	݊ܽ݀	4,3,2,1 = ݅		ܣ‬

(7.28)

௜
௜
௜
Konvergensi tercapai ketika ܺ௞ = ܺ௞ିଵ . Nah, bila Di = ܺ௞௢௡௩௘௥௚௘௡ , convex hull A

berupa

‫ܥ‬ሺ‫ܣ‬ሻ = ⋃ସ ‫ ܦ‬௜
௜ୀଵ

(7.29)

Contoh untuk memperoleh convex hull ditunjukkan pada Gambar 7.39.

௜
௜
௜
௜
Pada contoh tersebut, hasil setelah konvergen untuk ܺ௞ , ܺ௞ ,ܺ௞ , ܺ௞ diperlihatkan.
Morfologi untuk Pengolahan Citra

267

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

1

0

0

0

0

1

1

1

0

1

0

0

0

0

1

1

0

1

1

0

0

0

0

1

1

1

1

1

1

0

0

0

0

1

1

1

0

0

0

0

0

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

1

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1
ܺ݇‫3= ݒ݊݋‬

A
0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

1

0

0

0

0

1

1

0

0

1

0

0

0

0

1

1

0

1

1

0

0

0

0

1

1

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

1

0

0

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2
ܺ݇‫1= ݒ݊݋‬

3
ܺ݇‫2= ݒ݊݋‬

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

4
ܺ݇‫4= ݒ݊݋‬

‫)ܣ(ܥ‬

Gambar 7.39Proses pembentukanconvex hull
268

Pengolahan Citra, Teori dan Aplikasi

Implementasi pembentukan convex hull dituangkan pada fungsi bernama
convhull, dengan kode sebagai berikut.

Program : convhull.m

function G = convhull(A)
% CONVHULL Untuk melakukan operasi convex hull terhadap citra A
%
dengan menggunakan 4 elemen penstruktur
%
G = Convex hull
[tinggi, lebar] = size(A);
% Elemen penstruktur
H1 = [ 1 -1 -1; 1 0 -1; 1 -1 -1
H2 = [ 1 1 1; -1 0 -1; -1 -1 -1
H3 = [ -1 -1 1; -1 0 1; -1 -1 1
H4 = [ -1 -1 -1; -1 0 -1; 1 1 1
C
C
C
C
C

=
=
=
=
=

];
];
];
];

zeros(tinggi, lebar);
or(C, chull(A, H1));
or(C, chull(A, H2));
or(C, chull(A, H3));
or(C, chull(A, H4));

G = C;
function [G, k] = chull(A, B)
%
A = Citra
%
B = elemen penstruktur
%
G = Hasil yang konvergen
%
k = iterasi hingga korvergen
[tinggi, lebar] = size(A);
k=1;
Ckmin1 = A;
while (true)
Ck = or(Ckmin1, thm2(Ckmin1,B));
% Cek Ckmin1 apa sama dengan Ck
sama = true;
for baris = 1 : tinggi
for kolom = 1 : lebar
if Ckmin1(baris, kolom) ~= Ck(baris, kolom)
sama = false;
break;
end
end
if sama == false
Morfologi untuk Pengolahan Citra

269

break;
end
end
if sama == true
break; % Berarti sudah konvergen
end
% Ke iterasi berikutnya
k = k + 1;
Ckmin1 = Ck;
end
k = k-1;
G = Ckmin1;

Akhir Program

Contoh penggunaan fungsi convhull:
>> Garpu=im2bw(imread('C:imagefork-3.png'), 0.5);
>> G=convhull(Garpu); imshow(G)

Hasilnya ditunjukkan pada Gambar 7.40(b).
Gambar 7.40(c) menunjukkan keadaan yang dinamakan defisiensi konveks.
Defisiensi konveks menyatakan selisih antara convex hull dan citra asli. Hasil
tersebut diperoleh melalui:
>> imshow(G – Garpu)

(a) Citra fork-3.png

(b) Convex hull

(c) Convex hull – Citra asli

Gambar 7.40Hasil convex hull dan defisiensi konveks
Bentuk convex hulldapat diubah agar tidak berbentuk kotak. Sebagai
contoh, terdapat delapan elemen penstruktur seperti terlihat pada Gambar 7.41.
270

Pengolahan Citra, Teori dan Aplikasi

B1

B2

B3

B4

1

1

1

1

1

x

1

x

x

x

x

x

1

0

x

1

0

x

1

0

x

1

0

x

x

x

x

1

x

x

1

1

x

1

1

1

B5

B6

B7

B8

x

x

x

x

x

1

x

1

1

1

1

1

x

0

1

x

0

1

x

0

1

x

0

1

1

1

1

x

1

1

x

x

1

x

x

x

Gambar 7.41 Contoh 8 elemen penstruktur
untuk melakukan operasi convex hull
Dengan menggunakan delapan elemen penstruktur tersebut, diperoleh hasil seperti
terlihat pada Gambar 7.42.

(a) Convex hull

(b) Convex hull – Citra asli

Gambar 7.42Convex hull dan defisiensi konveks yang melibatkan
delapan elemen penstruktur
7.12 Morfologi Aras Keabuan
Sejauh ini, pembicaraan mengenai morfologi terbatas pada citra biner.
Sesungguhnya, morfologi juga dapat dikenakan pada citra beraras keabuan.
Namun, tentu saja terdapat perbedaan dalam melakukan operasi morfologi
ini.Beberapa operasi morfologi untuk citra beraras keabuan dibahas di subbab ini.
Morfologi untuk Pengolahan Citra

271

7.12.1 Dilasi Beraras Keabuan
Dilasi pada aras keabuan didefinisikan sebagai berikut (Gonzalez &
Woods, 2002):
൫‫⊕	ܣ‬௚ 	‫ܤ‬൯ሺ‫ݒ ,ݑ‬ሻ = ݉ܽ‫(ݔ‬௜,௝)∈ு (A(u-i,v-j)+B(i,j))

(7.30)

dengan A adalah citra dan B adalah elemen penstruktur. Jadi, nilai yang dihasilkan
berupa nilai terbesar antara A+B,dengan proses penambahan dilakukan seperti
yang terjadi pada konvolusi citra. Simbol g sesudah tanda ⊕ menyatakan bahwa
operasi dilasi tersebut berlaku untuk citra beraras keabuan.
Ilustrasi dilasi beraras keabuan dapat dilihat pada Gambar 7.43. Pada
contoh tersebut, nilai terbesar A+B adalah25. Nilai tersebut dijadikan sebagai nilai
dalam A⊕gB.

A (Citra)
11

12

Himpunan hasil

B
13

11+4

15

17

18

16

⊕

2

7

6

9

13+5

14+6

15+7

16+2

18+3

19+1

8

5

14

3

12+9

17+8

1

4

19

Diputar
180o
4

9

6

7

2

8

3

1

Terbesar =
25

5

+

Hasil

25

Gambar 7.43Contoh penentuan nilai dalam dilasi beraras keabuan
272

Pengolahan Citra, Teori dan Aplikasi

Implementasi dilasi dapa dilihat pada program berikut.
dapat

Program : gdilasi.m

function G = gdilasi(F, H, hotx, hoty)
% GDILASI Berguna untuk melaksanakan operasi dilasi pada
%
citra beraras keabuan.
%
Masukan:
%
F = citra yang akan dikenai dilasi
%
H = elemen pentruksur
%
(hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
G = zeros(tf, lf); % Nolkan semua pada hasil dilasi
% Memproses dilasi
for baris = 1 : tf
for kolom = 1 : lf
terbesar = 0;
for p=1:th
for q=1:lh
ypos = baris - (p - hoty);
xpos = kolom - (q - hotx);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
nilai = F(ypos, xpos) + H(p, q);
if terbesar < nilai
terbesar = nilai;
end
end
end
end
% Potong nilai terbesar kalau melebihi 255
if terbesar > 255
terbesar = 255;
end
% Berikan nilai terbesar ke G
G(baris, kolo
kolom) = terbesar;
end
end
Morfologi untuk Pengolahan Citra

273

G = uint8(G);

Akhir Program

Pada contoh di atas, fungsi uint8 digunakan untuk memastikan bahwa hasil
perhitungan dilasi berkisar antara 0 sampai dengan 255.
Contoh berikut menunjukkan penggunaan fungsi gdilasi yang
dikenakan pada citra mandrill.png dengan menggunakan elemen penstruktur
berukuran 9x9 dengan bentuk cakram.

>> Img=imread('C:Imagemandrill.png');
>>H = [
0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

0 ];

>> G=gdilasi(Img, H); imshow(G)

Hasilnya dapat dilihat pada Gambar 7.44.
274

Pengolahan Citra, Teori dan Aplikasi

(a) Citra mandrill.png

(c) Dilasi dengan elemen struktur
berukuran 3x3 dan seluruhnya
bernilai 1

(b) Dilasi dengan elemen struktur
berukuran 3x3 dan seluruhnya
bernilai 0

(d) Dilasi dengan elemen struktur
berukuran 9x9 dan berbentuk bola

Gambar 7.44Efek dilasi pada citra beraras keabuan
7.12.2 Erosi Beraras Keabuan
Erosi pada citra beraras keabuan didefinisikan sebagai berikut:
൫‫	ܣ‬Θ௚ 	‫ܤ‬൯ሺ‫ݒ ,ݑ‬ሻ = ݉݅݊(௜,௝)∈ு (A(u+i,v+j)-B(i,j))

(7.31)

dengan A adalah citra dan B adalah elemen penstruktur. Simbol g sesudah tanda Θ
menyatakan bahwa operasi dilasi tersebut berlaku untuk citra beraras keabuan.
Morfologi untuk Pengolahan Citra

275

Jadi, nilai yang dihasilkan berupa nilai terkecil antara A
A-B. Contoh perhitungan
ontoh
erosi ditunjukkan pada Gambar 7.45.

A (Citra)
11

12

Himpunan hasil

B
13

11-2

15

17

18

16

Θ

2

7

6

9

13-8
13

14-2

15-7

16-6
16

18-9

19-4
19

8

5

14

3

12-3

17-5

1

4

19

Terkecil = 5
Hasil

5

Gambar 7.45Contoh penentuan nilai dalam erosi beraras keabuan

Implementasi erosi pada citra beraras keabuan diwujudkankan dengan
diwujudkan
fungsi bernama gerosi Kodenya seperti berikut.
gerosi.

Program : gerosi.m

function G = gerosi(F, H, hotx, hoty)
% GEROSI Berguna untuk melaksanakan operasi dilasi
%
citra beraras keabuan.
%
Masukan:
%
F = citra yang akan dikenai erosi
%
H = elemen pentruksur
%
(hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
276

Pengolahan Citra, Teori dan Aplikasi

G = zeros(tf, lf); % Nolkan semua pada hasil erosi
% Memproses erosi
for baris = 1 : tf
for kolom = 1 : lf
terkecil = 255;
for p=1:th
for q=1:lh
ypos = baris + p - hoty;
xpos = kolom + q - hotx;
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
nilai = F(ypos, xpos) + H(p, q);
if terkecil > nilai
terkecil = nilai;
end
end
end
end
% Berikan nilai ke G
if terkecil < 0
terkecil = 0;
end
G(baris, kolom) = terkecil;
end
end
G = uint8(G);

Akhir Program

Contoh penggunaan gerosi seperti berikut:
>> Img=imread('C:Imagemandrill.png');
>>H = [
0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

0
Morfologi untuk Pengolahan Citra

0

0

1

277

1

1

1

1

0

0 ];

>> G=gerosi(Img, H); imshow(G)

Hasilnya dapat dilihat pada Gambar 7.46.

(a) ) Citra mandrill.tif

(c) Erosi dengan elemen struktur

berukuran 3x3 dan
seluruhnya bernilai 1

(b) Erosi dengan elemen penstruktur
berukuran 3x3 dan seluruhnya
bernilai 0

(d) Erosi dengan elemen struktur
berukuran 9x9 dan berbentuk
bola

Gambar 7.46Efek erosi pada citra beraras keabuan
278

Pengolahan Citra, Teori dan Aplikasi

Aplikasi erosi dan dilasi pada citra beraras keabuan adalah untuk
memperoleh gradien morfologis. Dalam hal ini, gradien morfologis diperoleh
dengan melakukan pengurangan hasil dilasi dengan nilai hasil erosi. Contoh:
>>
>>
>>
>>

Img = imread('C:Imageboneka.png');
X = gdilasi(Img, ones(3));
Y = gerosi(Img, ones(3));
imshow(X-Y)

Hasilnya dapat dilihat pada Gambar 7.47(d). Adapun hasil pemrosesan dilasi dan
erosi secara berturutan dapat dilihat pada Gambar 7.47(b) dan 7.47(c).

(a) Citra boneka.png

(c) Erosi dengan elemen struktur
berukuran 3x3 dan seluruhnya
bernilai 1

(b) Dilasi dengan elemen struktur
berukuran 3x3 dan seluruhnya
bernilai 1

(d) Hasil dilasi – hasil erosi

Gambar 7.47Gradien morofologis melalui pengurangan dilasi
dengan erosi pada citra beraras keabuan
Morfologi untuk Pengolahan Citra

279

7.12.3 Opening dan Closing
Secara prinsip, operasi opening dan closing pada citra beraras keabuan
serupa pada citra biner. Definisinya sebagai berikut.
Opening:

AοgB = (AΘgB) ⊕gB

(7.32)

Closing:

A•gB = (A⊕gB) ΘgB

(7.33)

Contoh perbedaan hasil operasi opening dan closing pada citra beraras
keabuan dapat dilihat pada Gambar 7.48. Terlihat bahwa operasi opening
berkecenderungan menghilangkan bagian yang cerah tetapi berukuran kecil
(perhatikan pada bagian mata pada hasil opening). Adapun operasi closing
mempertahankan objek kecil yang berwarna terang.

Gambar 7.48Operasi opening dan closing pada citra beraras keabuan
menggunakan elemen penstruktur 5x5 yang seluruhnya bernilai 0
280

Pengolahan Citra, Teori dan Aplikasi

Untuk kepentingan kemudah dalam mencoba operasi opening
kemudahan
openingpada citra
berskala keabuan, dapatdig
dapatdigunakan fungsi bernama gopening. Kodenya sebagai
berikut.

Program : gopening.m

function G = gopening(F, H)
% GOPENING berguna untuk melaksanakan operasi opening
%
citra beraras keabuan
%
Masukan:
%
F = citra yang akan dikenai erosi
%
H = elemen pentruksur
G = gdilasi(gerosi(F, H), H);

Akhir Program

Untuk kepentingan kemudah dalam mencoba operasi closing pada citra
kemudahan
berskala keabuan, dapat di
digunakan fungsi bernama gclosing. Kodenya sebagai
berikut.

Program : gclosing.m

function G = gclosing(F, H)
% GCLOSING Berguna untuk melaksanakan operasi closing
%
citra beraras keabuan.
%
Masukan:
%
F = citra yang akan dikenai erosi
%
H = elemen pentruksur
G = gerosi(gdilasi(F, H), H);

Akhir Program
Morfologi untuk Pengolahan Citra

281

Contoh berikut menunjukkan penggunaan gopening:
>> Img = imread('C:Imagelena256.png');
>> G = gopening(Img, ones(5));
>> imshow(G)
Adapun contoh berikut menunjukkan penggunaan gclosing:
>> Img = imread('C:Imagelena256.png');
>> G = gclosing(Img, ones(5));
>> imshow(G)
7.13 Transformasi Top-Hat
TransformasiTop-Hat didefinisikan sebagai perbedaan antara citra dan citra
setelah mengalami operasi opening (Solomon & Breckon, 2011) atau dapat
disajikan secara matematis seperti berikut:
TTH(A, B)= A-(A°gB)

(7.34)

Pada rumus di atas, A menyatakan citra dan B sebagai elemen penstruktur. Simbol
g menyatakan bahwa operasi tersebut berlaku untuk citra beraras keabuan.
Transformasi ini berguna untuk mendapatkan bentuk global suatu objek
yang mempunyai intensitas yang bervariasi. Sebagai contoh, perhatikan Gambar
7.49(a). Pada citra tersebut, butiran-butiran nasi memiliki intensitas yang tidak
seragam. Melalui opening, diperoleh hasil seperti terlihat pada Gambar 7.49(b).
Hasil transformasi Top-Hat ditunjukkan pada Gambar 7.49(c). Perhatikan bahwa
hasil butiran nasi pada Gambar 7.49(c) terlihat memiliki intensitas yang lebih
seragam dibandingkan pada citra asal.
282

Pengolahan Citra, Teori dan Aplikasi

(a) Citra rice.png

(b) Hasil Opening

(c) ) Hasil Top-Hat

Gambar 7.49Transformasi Top-Hat menggunakan elemen penstruktur
berukuran 9x9 berbentuk cakram
Pada contoh berikut, TH menyatakan hasil transformasi Top-Hat:
>> Img=imread('C:Imagerice.png');
>>H = [
0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

0 ];

>> G=gopening(Img, H);
>> TH=Img-G;
>>imshow(TH)

File

rice.png tidak disediakan di CD yang disertakan

bersama buku. File tersebut adalah milik MATLAB.

Hasil transformasi Top-Hat pada contoh seperti di atasakan menghasilkan
citra biner yang lebih baik daripada kalau citra biner diperoleh secara langsung
Morfologi untuk Pengolahan Citra

283

dari citra asal. Sebagai gambaran, Gambar 7.50 memberikan contoh hasil konversi
ke citra biner menggunakan citra rice.png dan hasil konversi citra biner
menggunakan hasil transformasi Top-Hat.

(a) Citra rice.png

(b) ) Konversi citra biner
melalui rice.png secara
langsung

(c) Konversi citra biner
melalui hasil Top-Hat

Gambar 7.50Efek transformasi Top-Hat untuk memperoleh citra biner

Perhatikan bahwa jumlah butir padi pada Gambar 7.50(c) bagian bawah lebih
banyak daripada pada Gambar 7.50(b).
7.14 Transformasi Bottom-Hat
Transformasi Bottom-Hat didefinisikan sebagai berikut:

TBH(A, B) = (A •g B) - A
Secara prinsip, operasi ini memperbesar warna putih melalui dilasi,

(7.35)

diikuti

dengan pengecilan warna putih melalui erosi dan kemudian dikurangi dengan citra
asal. Dilasi yang diikuti dengan erosi memberikan efek berupa objek-objek yang
berdekatan menjadi semakin dekat. Pengurangan oleh citra asal membuat
penghubung antarobjek menjadi hasil yang tersisa. Dengan kata lain, hasil yang
tersisa adalah piksel-piksel yang digunakan untuk mengisi “lubang”, atau
“penghubung objek”.
284

Pengolahan Citra, Teori dan Aplikasi

Latihan
1. Terdapat dua buah himpunan seperti berikut:
A = {(1,1), (1,2), (2,1), (2,3), (2,1)}
B = {(1,1), (1,3), (2,2), (2,3), (3,1)}

Berapa hasil operasi berikut?
(a) A ∪ B
(b) A ∩ B

2. Perhatikan gambar berikut:

0

0

0

0

0

0

1

1

0

0

0

1

1

1

0

0

0

1

0

0

0

1

0

0

0

(a) Bagaimana bentuk komplemen citra tersebut?
(b) Bagaimana bentuk refleksinya?

3. Jelaskan kegunaan operasi dilasi.

4. Perhatikan citra berikut:

0

0

0

0

0

0

1

1

0

0

0

1

1

1

0

0

0

1

0

0

0

1

0

0

0
Morfologi untuk Pengolahan Citra

285

Perlihatkan hasilnya jika dikenai operasi dilasi dengan elemen penstruktur
seperti berikut?

1

1

Dalam hal ini, yang diarsir adalah hotspot.
Hitung soal di atas secara manual dan kemudian bandingkan dengan hasil
kalau menggunakan fungsi bernama erosi.

Bagaimana hasilnya kalau hotspot justru terletak yang kanan? Lakukan secara
manual dan juga melalui komputasi dengan fungsi erosi.

5. Jelaskan bahwa hasil operasi erosi sebenarnya menyatakan letak elemen
penstruktur di dalam citra yang dikenai operasi tersebut.

6. Jelaskan hubungan operasi berikut terhadap operasi dilasi dan erosi:
(a) operasi opening
(b) operasi closing

7. Operasi opening sering dikatakan idempotent. Apa maksudnya?

8. Jelaskan kegunaan operasi thinning?

9. Cobalah memodifikasi operasi pada thinning.m dengan menggunakan elemen
penstruktur seperti berikut:
286

Pengolahan Citra, Teori dan Aplikasi

B1

B2

B3

B4

0

0

0

1

0

0

1

1

0

1

1

1

1

1

1

1

1

1

1

1

0

1

1

0

1

1

1

1

1

1

1

1

0

1

0

0

B5

B6

B7

B8

1

1

1

1

1

1

0

1

1

0

0

1

1

1

1

0

1

1

0

1

1

0

1

1

0

0

0

0

0

1

0

1

1

1

1

1

Kenakan pada citra bentuk.png. Perhatikan bahwa elemen-elemen
penstruktur di atas sama dengan elemen-elemen penstruktur pada contoh
di depan, tetapi letaknya dipertukarkan. Bandingkan hasilnya dengan
contoh pada Gambar 7.32.
10. Cobalah untuk mengimplementasikan convex hull yang melibatkan delapan
elemen penstruktur.

11. Buatlah fungsi bernama tth yang berguna untuk melaksanakan operasi
transformasi Top-Hat. Lalu, ujilah fungsi tersebut untuk menapis rice.png.

Más contenido relacionado

La actualidad más candente

Contoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksiContoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksimuhamadaulia3
 
Sistem Berbasis Pengetahuan dan Sistem Pakar
Sistem Berbasis Pengetahuan dan Sistem PakarSistem Berbasis Pengetahuan dan Sistem Pakar
Sistem Berbasis Pengetahuan dan Sistem PakarDian Aditya
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
 
LAPORAN 15 SISTEM OPERASI Manajemen User dan Group
LAPORAN 15 SISTEM OPERASI Manajemen User dan GroupLAPORAN 15 SISTEM OPERASI Manajemen User dan Group
LAPORAN 15 SISTEM OPERASI Manajemen User dan GroupIbrahim Naki
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalNur Fadli Utomo
 
Pohon(tree) matematika diskrit
Pohon(tree) matematika diskritPohon(tree) matematika diskrit
Pohon(tree) matematika diskritsaid zulhelmi
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01KuliahKita
 
Kebutuhan perangkat lunak
Kebutuhan perangkat lunakKebutuhan perangkat lunak
Kebutuhan perangkat lunakAinul Yaqin
 
Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Endang Retnoningsih
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunanFajar Istiqomah
 
Sistem berkas dan keamana data
Sistem berkas dan keamana dataSistem berkas dan keamana data
Sistem berkas dan keamana dataDavid Rigan
 
Server autentikasi
Server autentikasiServer autentikasi
Server autentikasiIqbal Iqbal
 
Makalah Algoritma kruskal
Makalah Algoritma kruskalMakalah Algoritma kruskal
Makalah Algoritma kruskalzaenal mustofa
 
Operasi matriks
Operasi matriksOperasi matriks
Operasi matriksagung8463
 
OOP - Exception
OOP - ExceptionOOP - Exception
OOP - ExceptionKuliahKita
 
Algoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchAlgoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchKuliahKita
 

La actualidad más candente (20)

Contoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksiContoh soal dan penyelesaian metode biseksi
Contoh soal dan penyelesaian metode biseksi
 
Operasi himpunan
Operasi himpunanOperasi himpunan
Operasi himpunan
 
Sistem Berbasis Pengetahuan dan Sistem Pakar
Sistem Berbasis Pengetahuan dan Sistem PakarSistem Berbasis Pengetahuan dan Sistem Pakar
Sistem Berbasis Pengetahuan dan Sistem Pakar
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
LAPORAN 15 SISTEM OPERASI Manajemen User dan Group
LAPORAN 15 SISTEM OPERASI Manajemen User dan GroupLAPORAN 15 SISTEM OPERASI Manajemen User dan Group
LAPORAN 15 SISTEM OPERASI Manajemen User dan Group
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi Digital
 
Pohon(tree) matematika diskrit
Pohon(tree) matematika diskritPohon(tree) matematika diskrit
Pohon(tree) matematika diskrit
 
Matriks elementer
Matriks elementerMatriks elementer
Matriks elementer
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
Matematika Diskrit - 05 rekursi dan relasi rekurens - 01
 
Kebutuhan perangkat lunak
Kebutuhan perangkat lunakKebutuhan perangkat lunak
Kebutuhan perangkat lunak
 
Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunan
 
Sistem berkas dan keamana data
Sistem berkas dan keamana dataSistem berkas dan keamana data
Sistem berkas dan keamana data
 
Server autentikasi
Server autentikasiServer autentikasi
Server autentikasi
 
Makalah Algoritma kruskal
Makalah Algoritma kruskalMakalah Algoritma kruskal
Makalah Algoritma kruskal
 
Operasi matriks
Operasi matriksOperasi matriks
Operasi matriks
 
OOP - Exception
OOP - ExceptionOOP - Exception
OOP - Exception
 
Met num 2
Met num 2Met num 2
Met num 2
 
Algoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchAlgoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential Search
 
01 02-pseudocode
01 02-pseudocode01 02-pseudocode
01 02-pseudocode
 

Similar a Pcd 7

Similar a Pcd 7 (20)

Himpunan
HimpunanHimpunan
Himpunan
 
1. relasi dan fungsi
1. relasi dan fungsi1. relasi dan fungsi
1. relasi dan fungsi
 
Komposisi dua-fungsi
Komposisi dua-fungsiKomposisi dua-fungsi
Komposisi dua-fungsi
 
Komposisi Fungsi dan Fungsi Invers
Komposisi Fungsi dan Fungsi InversKomposisi Fungsi dan Fungsi Invers
Komposisi Fungsi dan Fungsi Invers
 
02 fungsi
02 fungsi02 fungsi
02 fungsi
 
Relasidanfungsi 130408013733-phpapp02
Relasidanfungsi 130408013733-phpapp02Relasidanfungsi 130408013733-phpapp02
Relasidanfungsi 130408013733-phpapp02
 
2 relasi-dan-fungsi
2 relasi-dan-fungsi2 relasi-dan-fungsi
2 relasi-dan-fungsi
 
1. relasi dan fungsi
1. relasi dan fungsi1. relasi dan fungsi
1. relasi dan fungsi
 
Aljabar 3-struktur-aljabar
Aljabar 3-struktur-aljabarAljabar 3-struktur-aljabar
Aljabar 3-struktur-aljabar
 
ringkasan buku teori bilangan
ringkasan buku teori bilangan ringkasan buku teori bilangan
ringkasan buku teori bilangan
 
Fungsi 1
Fungsi 1Fungsi 1
Fungsi 1
 
RELASI KELAS 8.ppt
RELASI KELAS 8.pptRELASI KELAS 8.ppt
RELASI KELAS 8.ppt
 
Matdis-Relasi Fungsi
Matdis-Relasi FungsiMatdis-Relasi Fungsi
Matdis-Relasi Fungsi
 
BAB 1-FUNGSI.pptx
BAB 1-FUNGSI.pptxBAB 1-FUNGSI.pptx
BAB 1-FUNGSI.pptx
 
Himpunan dan sistem bilangan (pertemuan 1)
Himpunan dan sistem bilangan (pertemuan 1)Himpunan dan sistem bilangan (pertemuan 1)
Himpunan dan sistem bilangan (pertemuan 1)
 
Pcd 8
Pcd 8Pcd 8
Pcd 8
 
Fungsi1
Fungsi1 Fungsi1
Fungsi1
 
Fungsi1
Fungsi1 Fungsi1
Fungsi1
 
FUNGSI (gita permata sari)
FUNGSI (gita permata sari)FUNGSI (gita permata sari)
FUNGSI (gita permata sari)
 
Diskret V Relasi Fungsi
Diskret V Relasi FungsiDiskret V Relasi Fungsi
Diskret V Relasi Fungsi
 

Más de Roziq Bahtiar

Techarea company profile
Techarea company profileTecharea company profile
Techarea company profileRoziq 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
 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajenRoziq Bahtiar
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman strukturRoziq Bahtiar
 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointerRoziq 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
 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogramRoziq Bahtiar
 

Más de Roziq Bahtiar (20)

Techarea company profile
Techarea company profileTecharea company profile
Techarea company profile
 
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
 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajen
 
Pcd 10
Pcd 10Pcd 10
Pcd 10
 
Pcd 11
Pcd 11Pcd 11
Pcd 11
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
 
6. pemrograman pointer
6. pemrograman pointer6. pemrograman pointer
6. pemrograman pointer
 
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 5
Pcd 5Pcd 5
Pcd 5
 
Pcd 4
Pcd 4Pcd 4
Pcd 4
 
Eigen
EigenEigen
Eigen
 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogram
 

Último

AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptxAKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptxnursariheldaseptiana
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfAndiCoc
 
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptxSusanSanti20
 
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTX
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTXAKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTX
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTXIksanSaputra6
 
Aksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdfAksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdfEniNuraeni29
 
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptx
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptxPPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptx
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptxriscacriswanda
 
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANwawan479953
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...pipinafindraputri1
 
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024ssuser0bf64e
 
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfModul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfKartiniIndasari
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...Kanaidi ken
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptnabilafarahdiba95
 
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
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanAdePutraTunggali
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfJarzaniIsmail
 
Regresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptxRegresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptxRizalAminulloh2
 
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfSalinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfWidyastutyCoyy
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxRIMA685626
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfAkhyar33
 

Último (20)

AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptxAKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
 
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTX
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTXAKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTX
AKSI NYATA TOPIK 1 MERDEKA BELAJAR. PPTX
 
Aksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdfAksi Nyata PMM Topik Refleksi Diri (1).pdf
Aksi Nyata PMM Topik Refleksi Diri (1).pdf
 
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptx
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptxPPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptx
PPT MODUL 6 DAN 7 PDGK4105 KELOMPOK.pptx
 
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
 
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfModul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
 
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - Perencanaan
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
 
Regresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptxRegresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptx
 
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfSalinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
 

Pcd 7

  • 1. BAB 7 Morfologi untuk Pengolahan Citra Setelah bab ini berakhir, diharapkan pembaca memahami berbagai hal berikut dan mampu mempraktikkannya. Pengertian operasi morfologi Matematika yang melatarbelakangi Operasi dilasi Operasi erosi Bentuk dan ukuran elemen penstruktur Operasi opening Operasi closing Transformasi Hit-or-Miss Skeleton Thickening Convex hull Transformasi Top-Hat Transformasi Bottom-Hat
  • 2. 210 Pengolahan Citra, Teori dan Aplikasi 7.1 Pengertian Operasi Morfologi Operasi morfologi merupakan operasi yang umum dikenakan pada citra biner (hitam-putih) untuk mengubah struktur bentuk objek yang terkandung dalam citra.Sebagai contoh, lubang pada daun dapat ditutup melalui operasi morfologi sebagaimana ditunjukkan pada Gambar 7.1.Objek-objek daun yang saling berhimpitan pun dapat dipisahkan melalui morfologi, sebagaimana ditunjukkan pada Gambar 7.2. Beberapa contoh lainaplikasi morfologi adalah sebagai berikut. • Membentuk filter spasial, seperti yang telah dibahas pada Bab 6. • Memperoleh skeleton (rangka) objek. • Menentukan letak objek di dalam citra. • Memperoleh bentuk struktur objek. Gambar 7.1Tulang daun dapat dianggap sebagai bagian daun melalui morfologi
  • 3. Morfologi untuk Pengolahan Citra 211 Gambar 7.2 Daun-daun yang bersinggungan dapat dipisahkan melalui morfologi, yang memperkecil ukurannya Operasi morfologi sesungguhnya juga dapat dikenakan pada citra aras keabuan. Pembicaraan mengenai hal ini dilakukan di bagian akhir di bab ini. Inti operasi morfologi melibatkan dua larik piksel. Larik pertama berupa citra yang akan dikenai operasi morfologi, sedangkan larik kedua dinamakan sebagai kernel atau structuring element (elemen penstruktur) (Shih, 2009). Contoh kernel ditunjukkan pada Gambar 7.3. Pada contoh tersebut, piksel pusat (biasa diberi nama hotspot) ditandai dengan warna abu-abu. Piksel pusat ini yang menjadi pusat dalam melakukan operasi terhadap citra, sebagaimana diilustrasikan pada Gambar 7.4. 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Gambar 7.3Contoh beberapa kernel 1
  • 4. 212 Pengolahan Citra, Teori dan Aplikasi Hotspot 0 0 1 1 1 0 Citra 1 1 0 Kernel Gambar 7.4Operasi kernel terhadap citra Dua operasi yang mendasari morfologi yaitu dilasi dan erosi. Dua operasi lain yang sangat berguna dalam pemrosesan citra adalahopening dan closing dibentuk melalui dua operasi dasar itu. 7.2 Matematika yang Melatarbelakangi Untuk memahami operasi morfologi, pemahaman terhadap operasi himpunan seperti interseksi dan gabungan mutlak diperlukan. Selain itu, pemahaman terhadap operasi logika, seperti “atau” dan ‘dan” juga diperlukan. 7.2.1 Teori Himpunan Misalkan, terdapat himpunan A yang berada di dalam bidang Z2 (berdimensi dua). Apabila a=(a1, a2) adalah suatu elemen atau anggota di dalam A, adapat ditulis menjadi ܽ∈‫ܣ‬ (7.1) Arti notasi di atas, a adalah anggota himpunan A. kebalikannya, jika a bukan anggota himpunan A, a ditulis seperti berikut: ܽ ∉ ‫ܣ‬ (7.2)
  • 5. Morfologi untuk Pengolahan Citra 213 Sebagai contoh, s = (1, 2) dan t = (1, 4), sedangkan himpunan A berisi seperti berikut: A = { (1,1), (1,2), (1, 3), (2, 1), (2, 2) } Pada contoh tersebut, A memiliki 5 anggota. Berdasarkan contoh tersebut, dapat dituliskan fakta berikut: ‫ܣ∈ݏ‬ ‫ܣ ∉ݐ‬ Perlu diketahui, setiap elemen hanya dapat menjadi anggota himpunan satu kali. Dengan demikian, A = {(1,1), (1,1), (2,1), (2,3), (2,1)} sesungguhnya hanya mempunyai 3 anggota,yaitu A = {(1,1), (2,1), (2,3)} Notasi φ biasa terdapat dalam pembicaraan himpunan. Simbol tersebut menyatakan himpunan kosong, yaitu himpunan yang tidak memiliki anggota sama sekali. Apabila A dan B adalah himpunan dan setiap anggota himpunan B merupakan anggota himpunan A, dikatakan bahwa B adalah subhimpunan A. Notasi yang biasa digunakan untuk kepentingan ini: B⊆A (7.3) Union adalah penggabungan dari dua buah himpunan. Misalnya: C = A ∪B (7.4)
  • 6. 214 Pengolahan Citra, Teori dan Aplikasi yangmenyatakan bahwa C memiliki anggota berupa semua anggota A ditambah dengan semua anggota B. Gambar 7.5 memperlihatkan contoh nilai-nilai piksel penyusun dua citra biner dan menunjukkan hasil operasi union. Semua nilai 1 pada citra tersebut menyatakan anggota himpunan baru, yang cenderung meluas. 1 2 3 4 5 1 2 3 4 5 1 0 1 0 0 0 1 1 0 0 0 2 0 1 1 0 0 0 1 0 0 0 3 0 1 1 1 0 0 0 1 0 0 4 0 1 1 0 0 0 1 0 0 0 5 0 1 0 0 0 1 0 0 0 0 A={(1,2), (2,2), (2,3), (3,2), (3,3), (3,4), (4,2), (4,3), (5,2)} B={(1,1), (2,1), (2,2), (3,3), (4,2), (5,1)} C=A∪B 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 C={(1,1), (1,2), (2,2), (2,3), (3,2), (3,3),(3,4) (4,2), (4,3), (5,1), (5,2)} Gambar 7.5Operasi union pada citra biner Interseksimenyatakan operasi yang menghasilkan himpunan semua anggota yang terdapat di kedua himpunan. Misalnya: C = A∩B (7.5) berarti bahwa C berisi anggota-anggota yang ada di himpunan A dan juga terdapat di himpunan B. Hasilnya cenderung menyempit. Contoh dapat dilihat pada Gambar 7.6.
  • 7. Morfologi untuk Pengolahan Citra 215 1 2 3 4 5 1 2 3 4 5 1 0 1 0 0 0 1 1 0 0 0 2 0 1 1 0 0 0 1 0 0 0 3 0 1 1 1 0 0 0 1 0 0 4 0 1 1 0 0 0 1 0 0 0 5 0 1 0 0 0 1 0 0 0 0 A={(1,2), (2,2), (2,3), (3,2), (3,3), (3,4), (4,2), (4,3), (5,2)} B={(1,1), (2,1), (2,2), (3,3), (4,2), (5,1)} C=A∩B 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 C={(1,2), (2,2), (3,3), (4,1)} Gambar 7.6Operasi interseksi pada citra biner Komplemen himpunanA biasa dinotasikan dengan Ac dan menyatakan semua elemen yang tidak terdapat pada A. Secara matematis, komplemen ditulis seperti berikut: Ac = { w | w ∉ A } (7.6) Notasi di atas dibaca “semua elemen yang tidak menjadi anggota A”. Komplemen atau juga disebut inversi dapat dibayangkan seperti saling menukarkan warna hitam dan putih.Nilai yang semula berupa nol diganti satu dan nilai satu diganti dengan nol. Contoh dapat dilihat di Gambar 7.7.Di bidang fotografi dengan film, inversi menghasilkan gambar negatif. Istilah komplemen juga berarti ”pelengkap”, karena bila A digabung dengan operasi union akan menyempurnakan citra menjadi citra yang semua pikselnya bernilai 1.
  • 8. 216 Pengolahan Citra, Teori dan Aplikasi 1 2 3 4 5 1 2 3 4 5 1 0 1 0 0 0 1 0 1 1 1 2 0 1 1 0 0 1 0 0 1 1 3 0 1 1 1 0 1 0 0 0 1 4 0 1 1 0 0 1 0 0 1 1 5 0 1 0 0 0 1 0 1 1 1 A={(1,2), (2,2), (2,3), (3,2), (3,3), (3,4), (4,2), (4,3), (5,2)} Ac = {(1,1), (1,3), (1,4), (1,5), (2,1), (2,4), (2,5), (3,1), (3,5), (4,1), (4,4), (4,5), (5,1), (5,3), (5,4), (5,5)} Gambar 7.7Operasi komplemen Operasi selisih dua himpunan dapat ditulis seperti berikut: A – B = { w | w ∈ A, w ∉ B } = A ∩Bc Contoh ditunjukkan di Gambar 7.8. (7.7)
  • 9. Morfologi untuk Pengolahan Citra 217 1 2 3 4 5 1 2 3 4 5 1 0 1 0 0 0 1 1 0 0 0 2 0 1 1 0 0 0 1 0 0 0 3 0 1 1 1 0 0 0 1 0 0 4 0 1 1 0 0 0 1 0 0 0 5 0 1 0 0 0 1 0 0 0 0 A={(1,2), (2,2), (2,3), (3,2), (3,3), (3,4), (4,2), (4,3), (5,2)} B={(1,1), (2,1), (2,2), (3,3), (4,2), (5,1)} C=A-B C=B-A 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 C = { (2,3), (3,4), (4,3), (5,2) } C = { (1,1), (5,1) } Gambar 7.8Contoh selisih dua himpunan Contoh di atas menunjukkan bahwa A – B ≠ B – A. ෠ Refleksi B dinotasikan dengan ‫ܤ‬dan didefinisikan sebagai berikut: ෠ ‫ = ܤ‬ሼ‫ܤ ∈ ܾ ݇ݑݐ݊ݑ ,ܾ− = ݓ|ݓ‬ሽ (7.8) Refleksi sebenarnya menyatakan percerminan terhadap piksel pusat. Contoh ditunjukkan pada Gambar 7.9. Bayangan cermin 2-D terjadi melalui pencerminan pada arah x dan dilanjutkan pada arah y. namun, ternyata hasilnya sama dengan pemutaran di bidang citra 180o.
  • 10. 218 Pengolahan Citra, Teori dan Aplikasi 1 2 3 4 5 1 2 3 4 5 1 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 3 0 1 1 1 0 0 1 1 1 0 4 0 0 0 0 0 0 0 1 1 0 5 0 0 0 0 0 0 0 0 0 0 A={(2,2), (2,3), (3,2), (3,3), (3,4)} መ ‫,)4,3( ,)3,3( ,)2,3({ = ܣ‬ (4,3), (4,4)} Gambar 7.9Contoh refleksi Translasi himpunan A terhadap titik z=(z1, z2) disimbolkan dengan (A)z. Definisinya sebagai berikut: (‫)ܣ‬௭ = ሼܿ|ܿ = ܽ + ‫ܣ ∈ ܽ ݇ݑݐ݊ݑ ,ݖ‬ሽ (7.9) Contoh dapat dilihat pada Gambar 7.10. 1 2 3 4 5 1 2 3 4 5 1 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 3 0 1 1 1 0 0 0 0 0 0 4 0 0 0 0 0 0 0 1 1 0 5 0 0 0 0 0 0 0 1 1 1 A={(2,2), (2,3), (3,2), (3,3), (3,4)} (A)(2,1) = {(4,3), (4,4), (5,3), (5,4), (5,5)} Gambar 7.10Contoh translasi satu pikselke kanan dan dua piksel ke bawah 7.2.2 Operasi Nalar Operator nalar didasarkan pada aljabar Boolean.Sebagaimana diketahui, aljabar Boolean adalah pendekatan matematis yang berhubungan dengan nilai kebenaran (benar atau salah). Ada tiga operator nalar dasar yang akan dibahas,
  • 11. Morfologi untuk Pengolahan Citra 219 yaitu AND, OR, serta NOT. Tabel kebenaran ketiga operator tersebut dapat dilihat pada Tabel 7.1 dan 7.2. Operasi AND melibatkan dua masukan dan mempunyai sifat bahwa hasil operasinya bernilai 1 hanya jika kedua masukan bernilai 1. Pada operasi OR, hasil berupa 1 kalau ada masukan yang bernilai 1. Berbeda dengan AND dan OR, operasi NOT hanya melibatkan satu masukan. Hasil NOT berupa 1 kalau masukan berupa 0 dan sebaliknya akan menghasilkan nilai 0 kalau masukan berupa 1. Tabel 7.1Tabel kebenaran AND dan OR Masukan 1 0 0 1 1 Masukan 2 0 1 0 1 AND 0 0 0 1 OR 0 1 1 1 Tabel 7.2Tabel kebenaran NOT Masukan Keluaran 0 1 1 0 Selain ketiga operator yang disebut di depan, operator lain yang kadangkadang digunakan adalah XOR dan NAND. Sifat XOR dan NAND ditunjukkan pada Tabel 7.3. Tabel 7.3Tabel kebenaran XOR dan NAND Masukan 1 0 0 1 1 Masukan 2 0 1 0 1 XOR 0 1 1 0 NAND 1 1 1 0
  • 12. 220 Pengolahan Citra, Teori dan Aplikasi Berbagai efek operasi AND, OR, NOT, XOR, dan NAND ditunjukkan pada Gambar 7.11. Adapun program yang digunakan untuk membentuk operasi tersebut dapat dilihat pada nalar.m. Gambar 7.1 Hasil-hasil operasi nalar atas dua buah citra A dan B Program : nalar.m % NALAR Contoh penggunaan NOT, AND, OR, XOR, dan % kombinasinya. Lingkaran = imread('C:Imagelingkaran.png'); Persegi = imread('C:Imagepersegi.png'); close all; Citra1 = Lingkaran; subplot(3,3,1); imshow(Citra1, [0 1]); title('A'); Citra2 = Persegi; subplot(3,3,2); imshow(Citra2, [0 1]); title('B');
  • 13. Morfologi untuk Pengolahan Citra 221 Citra3 = not(Lingkaran); subplot(3,3,3); imshow(Citra3, [0 1]); title('not(A)'); Citra4 = and(Lingkaran, Persegi); subplot(3,3,4); imshow(Citra4, [0 1]); title('and(A, B)'); Citra5 = xor(Lingkaran, Persegi); subplot(3,3,5); imshow(Citra5, [0 1]); title('xor(A, B)'); Citra6 = or(Lingkaran, Persegi); subplot(3,3,6); imshow(Citra6, [0 1]); title('or(A, B)'); Citra7 = not(and(Lingkaran, Persegi)); subplot(3,3,7); imshow(Citra7, [0 1]); title('not(and(A, B))'); Citra8 = not(xor(Lingkaran, Persegi)); subplot(3,3,8); imshow(Citra8, [0 1]); title('not(xor(A, B))'); Citra9 = not(or(Lingkaran, Persegi)); subplot(3,3,9); imshow(Citra9, [0 1]); title('not(or(A, B))'); Akhir Program 7.3Operasi Dilasi Operasi dilasi biasa dipakai untuk mendapatkan efek pelebaran terhadap piksel yang bernilai 1. Operasi ini dirumuskan seperti berikut (Gonzales & Woods, 2002): ෠ A⊕B = ቄ‫ |ݖ‬ቂ൫‫ܤ‬൯௭ ∩ ‫ܣ‬ቃ ∁ ‫ܣ‬ቅ Dalam hal ini, ෠ a) ‫ = ܤ‬ሼ‫ܤ ∈ ܾ ݇ݑݐ݊ݑ ,ܾ− = ݓ|ݓ‬ሽ b) ሺ‫ܤ‬ሻ௭ = ሼܿ|ܿ = ܽ + ‫ܣ ∈ ܽ ݇ݑݐ݊ݑ ,ݖ‬ሽ c) z=(z1, z2) (7.10)
  • 14. 222 Pengolahan Citra, Teori dan Aplikasi Burger & Burge (2008) mendefinisikan operasi dilasi sebagai berikut: A⊕B = ሼ‫ ,ܾ + ܽ = ݖ|ݖ‬dengan ܽ ∈ ‫ܤ ∈ ܾ ݊ܽ݀ ܣ‬ሽ (7.11) Hasil dilasi berupa penjumlahan seluruh pasangan koordinat dari I dan H. Contoh operasi dilasi dengan menggunakan Persamaan 7.11dapat dilihat pada Gambar 7.11. Pada contoh tersebut, A = { (2,2), (2,3), (2,4), (3,2), (3,3), (3,4), (4,3) } B = { (-1, 0), (0,0), (1,0) } Dengan demikian, A⊕B = { (2,2) + (-1, 0) , (2,2) + (0, 0) + (2,2) + (1, 0), (2,3) + (-1, 0) , (2,3) + (0, 0) + (2,3) + (1, 0), (2,4) + (-1, 0) , (2,4) + (0, 0) + (2,4) + (1, 0), (3,2) + (-1, 0) , (3,2) + (0, 0) + (3,2) + (1, 0), (3,3) + (-1, 0) , (3,3) + (0, 0) + (3,3) + (1, 0), (3,4) + (-1, 0) , (3,4) + (0, 0) + (3,4) + (1, 0), (4,3) + (-1, 0) , (4,3) + (0, 0) + (4,3) + (1, 0) } = { (1,2), (2,2), (3,2), (1,3), (2,3), (3,3), (1,4), (2,4), (3,3), (2,2), (3,2), (4,2), (2,3), (3,3), (4,3), (2,4), (3,4), (4,4), (3,3), (4,3), (5,3) } = { (1,2), (1,3), (1,4), (2,2), (2,3), (2,4), (3,2), (3,3), (3,4), (4,2), (4,3), (4,4), (5,3) }
  • 15. Morfologi untuk Pengolahan Citra 1 2 3 4 223 5 -1 1 0 3 1 -1 2 0 1 4 5 A B Hotspot vertikal Penambahan piksel akibat dilasi A⊕B Gambar 7.11Efek dilasi dengan hotspot vertikal Operasi dilasi bersifat komutatif. Artinya, A⊕B = B⊕A Selain itu, operasi dilasi bersifat asosiatif. Artinya, (A⊕B) ⊕C = A⊕ (B ⊕C) Algoritma untuk melakukan operasi dilasi berdasar Persamaan 7.11 ditunjukkan berikut ini.
  • 16. 224 Pengolahan Citra, Teori dan Aplikasi ALGORITMA 7.1 – Operasi dilasi Masukan: • f (citra berukuran m x n) • h (elemen penstruktur berukuran s x t) • hoty (ordinat hotspot -> nomor baris) • hotx (absis hotpsot -> nomor kolom) Keluaran: • g (citra berukuran m x n yang menyatakan hasil operasi dilasi) 1. g(i,j) nol (untuk semua i dan j) 2. Cari nilai r sehingga memenuhi 2r> 2m – 1 3. p 2q 4. q 2q Implementasi dalam bentuk program dapat dilihat berikut ini. Program : dilasi.m function G = dilasi(F, H, hotx, hoty) % DILASI Berguna untuk melaksanakan operasi dilasi. % Masukan: % F = citra yang akan dikenai dilasi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2);
  • 17. Morfologi untuk Pengolahan Citra 225 end Xh = []; Yh = []; jum_anggota = 0; % Menentukan koordinat piksel bernilai 1 pada H for baris = 1 : th for kolom = 1 : lh if H(baris, kolom) == 1 jum_anggota = jum_anggota + 1; Xh(jum_anggota) = -hotx + kolom; Yh(jum_anggota) = -hoty + baris; end end end G = zeros(tf, lf); % Nolkan semua pada hasil dilasi % Memproses dilasi for baris = 1 : tf for kolom = 1 : lf for indeks = 1 : jum_anggota if F(baris, kolom) == 1 xpos = kolom + Xh(indeks); ypos = baris + Yh(indeks); if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) G(ypos, xpos) = 1; end end end end end Akhir Program Contoh penggunaan fungsi dilasi ditunjukkan di bawah ini. >> F = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0];
  • 18. 226 Pengolahan Citra, Teori dan Aplikasi >> H = [0 1 0; 1 1 1; 0 1 0]; >> G = dilasi(F,H) G = 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 >> Contoh pada Gambar 7.11 diproses dengan cara seperti berikut: >> F = [ 0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 0 0 0; 0 0 0 0 0]; >> H = [0 1 0 0 1 0 0 1 0]; >> G = dilasi(F,H) G = 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0
  • 19. Morfologi untuk Pengolahan Citra 227 >> Dengan menggunakan data F dan H di atas, perintah berikut dapat dicoba: >> G = dilasi(F,H, 2, 1) G = 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 >> Angka 2 dan 1 pada argumen fungsi dilasi menyatakan bahwa hotspot pada H terletak pada kolom kedua dan baris pertama.Jadi, yang berfungsi sebagai hotspot adalah nilai 1 pada H yang terletak paling atas, bukan yang di tengah.Mengapa hasilnya seperti itu? Cobalah untuk menganalisisnya. Perlu diketahui, pada saat menentukan posisi hotspot, pemetaan seperti pada Gambar 7.12 harus digunakan. 1 2 3 1 2 3 Hotspot dengan: hx = 2 hy = 1 Gambar 7.12Penentuan hotspot menggunakan acuan angka 1 untuk pojok kiri atas kernel
  • 20. 228 Pengolahan Citra, Teori dan Aplikasi Untuk melihat efek dilasi pada citra, kode berikut dapat dicoba. >>close all; >>Bravo = imread('C:imagebravo.png'); >> BW = im2bw(Bravo, 0.5); >> H = ones(4); >> imshow(dilasi(BW, H)); >> Gambar asli dan hasil operasi dilasi dapat dilihat pada Gambar 7.13. Gambar 7.13(a) menyatakan gambar asli. Gambar 7.13(b) adalah hasil konversi ke bentuk biner dengan menggunakan fungsi bawaan bernama im2bw. Gambar 7.13(c) adalah hasil dilasi melalui perintah di depan. Hasil tersebut diperoleh dengan menggunakan struktur elemen berukuran 4 x 4 yang keseluruhan bernilai 1. Hal itu diperoleh melalui ones(4). Adapun Gambar 7.13(d) adalah hasil kalau elemen penstruktur yang digunakan (H) berukuran 7x7 dengan seluruh elemen bernilai 1.
  • 21. Morfologi untuk Pengolahan Citra 229 Gambar 7.13Contoh operasi dilasi pada citra 7.4 Operasi Erosi Operasi erosi mempunyai efek memperkecil struktur citra. Operasi ini dirumuskan seperti berikut (Gonzalez & Woods, 2002). A ΘB = ሼ‫|ݖ‬ሺ‫ܤ‬ሻ௭ ⊆ ‫ܣ‬ሽ (7.12)
  • 22. 230 Pengolahan Citra, Teori dan Aplikasi Adapun Burger & Burge (2008) mendefinisikan erosi sebagai berikut: AΘB = ሼ‫ ܼ ∈ ݌‬ଶ | (ܽ + ܾ) ∈ ‫ܤ ∈ ܾ ݌ܽ݅ݐ݁ݏ ݇ݑݐ݊ݑ ,ܫ‬ሽ (7.13) Makna yang tersirat padaPersamaan 7.12 dan 7.13sebenarnya sama. Berdasarkan Persamaan 7.13, posisi p terdapat pada AΘB jika seluruh nilai 1 di B terkandung di posisi p tersebut.Implementasi fungsi erosi berikut didasarkan makna di atas. Program : erosi.m function G = erosi(F, H, hotx, hoty) % EROSI Berguna untuk melaksanakan operasi erosi. % Masukan: % F = citra yang akan dikenai dilasi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2); end Xh = []; Yh = []; jum_anggota = 0; % Menentukan koordinat piksel bernilai 1 pada H for baris = 1 : th for kolom = 1 : lh if H(baris, kolom) == 1 jum_anggota = jum_anggota + 1; Xh(jum_anggota) = -hotx + kolom; Yh(jum_anggota) = -hoty + baris; end end end G = zeros(tf, lf); % Nolkan semua pada hasil erosi % Memproses erosi for baris = 1 : tf for kolom = 1 : lf cocok = true; for indeks = 1 : jum_anggota
  • 23. Morfologi untuk Pengolahan Citra 231 xpos = kolom + Xh(indeks); ypos = baris + Yh(indeks); if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) if F(ypos, xpos) ~= 1 cocok = false; break; end else cocok = false; end end if cocok G(baris, kolom) = 1; end end end Akhir Program Contoh penggunaan fungsi erosi dapat dilihat berikut ini. >> F =[ 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0]; >>H = [0 1 0 1 0 0 1 0 0]; >> G = erosi(F, H) G = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 >> 0 0 0 0 0
  • 24. 232 Pengolahan Citra, Teori dan Aplikasi Gambar berikut memperlihatkan bentuk visual untuk contoh di atas. Hanya ini yang cocok dengan elemen penstruktur A B AΘB Gambar 7.14 Contoh visualisasi operasi erosi Operasi erosi bersifat komutatif. Artinya, AΘB = BΘA Selain itu, operasi erosi bersifat asosiatif. Artinya, (AΘB) ΘC = AΘ (B ΘC) Contoh penggunaan operasi erosi pada citra dapat dicoba dengan menggunakan perintah berikut: >> Daun=imread('C:imagededaunan.png'); >> BW=im2bw(Daun, 0.1);
  • 25. Morfologi untuk Pengolahan Citra 233 >> H=ones(4); >> G=erosi(BW, H); >> imshow(G, [0 1]) Citra asli dan hasil pemrosesan dengan operasi erosi dapat dilihat pada Gambar 7.15. Terlihat bahwa dengan menggunakan elemen penstruktur 1 ‫1ۍ‬ ‫1ێ‬ ‫ێ=ܪ‬ ‫1ێ‬ ‫1ێ‬ ‫1ۏ‬ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1‫ې‬ 1‫ۑ‬ ‫ۑ‬ 1‫ۑ‬ 1‫ۑ‬ 1‫ے‬ yang diperoleh melalui H = ones(6), semua daun yang bersinggungandapat dipisahkan. Namun, sebagai konsekuensinya, bentuk beberapa daun agak berubah.
  • 26. 234 Pengolahan Citra, Teori dan Aplikasi (a) Citra asli daun.png (c) Erosi dengan H = ones(4) (b) Hasil konversi ke citra biner (d) Erosi dengan H = ones(6) Gambar 7.15Contoh operasi erosi pada citra Operasi erosi dapat dimanfaatkan untuk memperoleh tepi objek. Sebagai contoh, kode berikut dapat dicoba: >> Img=imread('C:Imagedaun_gray.png'); >> BW=im2bw(Img, 0.65); >> BW = not(BW); >> imshow(BW); Hasilnya ditunjukkan pada Gambar 7.16(a).
  • 27. Morfologi untuk Pengolahan Citra 235 Perintah BW = not(BW); digunakan untuk melakukan operasi komplemen. Hal ini perlu dilakukan mengingat latarbelakang gambar asli berwarna putih. Selanjutnya, perintah berikut dapat dicoba: >>H = ones(5); >> G=erosi(BW, H); >>Ap =BW - G; >> imshow(Ap); Hasilnya ditunjukkan pada Gambar 7.16(b). Kuncinya sangat sederhana. Tepi objek sesungguhnya dapat diperoleh melalui: Ap = A – (A ΘB) (7.14)
  • 28. 236 Pengolahan Citra, Teori dan Aplikasi (a) Hasil konversi ke biner (b) Hasil operasi perolehan tepi Gambar 7.16Contoh erosi untuk mendapatkan tepi objek 7.5 Bentuk dan Ukuran Elemen Penstruktur Berdasarkan contoh pada Gambar 7.13, terlihat bahwa ukuran elemen penstruktur menentukan hasil operasi dilasi. Selain ukuran, bentuk elemen penstruktur juga menentukan hasil operasi morfologi. Bentuk yang umum digunakan pada operasi morfologi adalah cakram atau lingkaran. Efek yang diberikan merata pada segala arah. Bentuk dua buah cakram dapat dilihat pada Gambar 7.17.
  • 29. Morfologi untuk Pengolahan Citra 237 Gambar 7.17Dua bentuk elemen penstrukturberbentuk cakram Bentuk elemen penstruktur yang lain yaitu belah ketupat, garis, persegi panjang, bujur sangkar, dan oktagon. Gambar 7.18 menunjukkan contoh bentukbentuk tersebut.
  • 30. 238 Pengolahan Citra, Teori dan Aplikasi Gambar 7.18Berbagai bentuk elemen penstruktur Untuk kepentingan memperoleh elemen penstruktur, MATLAB menyediakan fungsi bernama strel.Sayangnya, fungsi seperti ini belum diimplementasikan pada Octave. Sebagai contoh, elemen penstruktur berbentuk cakram dengan radius 8 diperoleh dengan menggunakan perintah seperti berikut: >>strel('disk', 8) ans =
  • 31. Morfologi untuk Pengolahan Citra 239 Flat STREL object containing 185 neighbors. Decomposition: 4 STREL objects containing a total of 24 neighbors Neighborhood: 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 >> Agar hasil streldapat dimanfaatkan untuk fungsi erosi ataupun dilasi, elemen penstruktur dapat diperoleh dengan memberikan perintah semacam berikut: >> H = getnhood(strel('disk', 8)) Dengan cara seperti itu, H dapat digunakan pada fungsi erosi atau dilasi. Contoh: >> G=erosi(BW, H);
  • 32. 240 Pengolahan Citra, Teori dan Aplikasi >> imshow(G, [0 1]); >> Hasilnya dapat dilihat di Gambar 7.19(b). Gambar 7.19 juga sekaligus memperlihatkan efek berbagai ukuran elemen penstruktur. Terlihat bahwa dengan menggunakan erosi, objek tertentu (yang ukurannya lebih kecil daripada elemen penstruktur) akan hilang. Hasil pada gambar tersebut juga menunjukkan bahwa semakin besar ukuran elemen penstruktur, objek semakin mengecil. Gambar 7.19Contoh penggunaan elemen penstruktur yang bersumberstrel dan dikenakan pada erosi
  • 33. Morfologi untuk Pengolahan Citra 241 Perlu diketahui, fungsi strel memberikan berbagai pilihan dalam membuat elemen penstruktur. Tabel 7.4 memperlihatkan beberapa contoh. Tabel 7.4Contoh strel untuk membuat berbagai bentuk elemen penstruktur Penentu Bentuk Contoh ‘disk’ (berbentuk cakaram) strel(‘disk’, 4) → radius 4 ‘diamond’ (berbentuk belah strel(‘diamond’, 4) → radius 4 ketupat) ‘line’ (berbentuk garis) strel(‘line’, 3, 0) → panjang 3 dan sudut 0 derajat (datar) strel(‘line’, 3, 45) → panjang 3 dan sudut 45 derajat (datar) ‘octagon’ (berbentuk segi strel(‘octagon’, 6) delapan) Argumen kedua harus kelipatan 3 ‘rectangle’ (berbentuk strel(‘rectangle’, [4 2]) → 4 baris 2 persegi panjang) kolom ‘square’ (berbentuk bujur strel(‘square’, 4) → bujur sangkar 4 x 4 sangkar) Perlu juga diketahui, Octave dan MATLAB mendukung fungsi untuk kepentingan dilasi bernama imdilate dan untuk erosi bernama erode. Contoh penggunaannya seperti berikut: >> Img=imread('C:Imagestruktur.png'); >> BW=im2bw(Img, 0.1); >> H = ones(11,11); >> H(1,1)=0;H(1,2)=0;H(2,1)=0; >> H(10,1)=0;H(10,2)=0;H(11,1)=0; >> H(1,10)=0;H(1,11)=0;H(2,11)=0; >> H(10,11)=0;H(11,10)=0;H(11,11)=0;
  • 34. 242 Pengolahan Citra, Teori dan Aplikasi >> G=imerode(BW,H); >> imshow(G, [0 1]); >> Perintah H = ones(11,11); H(1,1)=0;H(1,2)=0;H(2,1)=0; H(10,1)=0;H(10,2)=0;H(11,1)=0; H(1,10)=0;H(1,11)=0;H(2,11)=0; H(10,11)=0;H(11,10)=0;H(11,11)=0; identik dengan perintah MATLAB strel('disk', 6) Hasilnya dapat dilihat pada Gambar 7.20. (a) Citra struktur.png (b) Hasil imerode dengan strel(‘disk’, 6) Gambar 7.20Erosi dengan fungsi erode 7.6 Operasi Opening Operasi openingadalah operasi erosi yang diikuti dengan dilasi dengan menggunakan elemen penstruktur yang sama. Operasi ini berguna untuk
  • 35. Morfologi untuk Pengolahan Citra 243 menghaluskan kontur objek dan menghilangkan seluruh piksel di area yang terlalu kecil untuk ditempati oleh elemen penstruktur.Dengan kata lain, semua struktur latardepan yang berukuran lebih kecil daripada elemen penstruktur akan tereliminasi oleh erosi dan kemudian penghalusan dilakukan melalui dilasi. Definisi operasi opening seperti berikut: AοB = (AΘB) ⊕B (7.15) Contoh efek openingdapat diperoleh dengan memberikan perintah berikut: >>Img = imread('C:Imagestruktur.png'); >>BW=im2bw(Img, 0.1); >> H = [ 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 ]; >> G=dilasi(BW, H); >>M=erosi(G, H); >>imshow(M,[0 1]) >> Hasilnya dapat dilihat pada Gambar 7.21(c).
  • 36. 244 Pengolahan Citra, Teori dan Aplikasi Gambar 7.21Perbandingan operasi erosi, opening, dan closing Gambar 7.21 menunjukkan bahwa operasi erosi membuat objek mengecil dan bahkan ada yang hilang. Adapun operasi opening membuat ukuran objek relatif tetap sama, walaupun juga menghilangkan objek yang berukuran kecil (kurus). Namun, perlu diketahui, operasi opening membuat penghalusan di bagian tepi. Perhatikan, ujung segitiga tidak tajam setelah dikenai operasi opening. Sebagai pembanding, Gambar 7.21(d) menunjukkan hasil penggunaan operasi closing, yang akan dibahas sesudah subbab ini.
  • 37. Morfologi untuk Pengolahan Citra 245 . Operasi opening sering dikatakan sebagai idempotent. Artinya, jika suatu citra telah dikenai operasi opening, pengenaan opening dengan elemen penstruktur yang sama tidak membawa efek apapun. Sifat ini dapat dituliskan secara matematis seperti berikut: (AοB)οB = (A (AοB) (7.16) Operator opening dapat dimanfaatkan sebagai filter lolos lolos-rendah, filter lolos-tinggi, maupun sebagai tapis lolos-bidang apabila elemen penstruktur yang tinggi, digunakan berupa cakram (Shih, 2009). Berikut adalah rumusannya: . • filter lolos-rendah (low-pass): AοBh; rendah • filter lolos-tinggi (high-pass): A – (AοBh); • filter lolos-bidang (band-pass): (AοBh1)- (AοBh2), dengan diameter Bh1 < Bh2. bidang Skrip berikut digunakan untuk menangani operasi opening: Program : opening.m function G = opening (F, H) % OPENING Melakukan operasi opening. G = dilasi(erosi(F, H), H); Akhir Program 7.7 Operasi Closing Operasi closing berguna untuk menghaluskan kontur dan menghilangkan sing lubang-lubang kecil. Definisinya seperti berikut: lubang ) A•B = (A⊕B) ΘB (7.17)
  • 38. 246 Pengolahan Citra, Teori dan Aplikasi Jadi, operasi closing dilaksanakan dengan melakukan operasi dilasi terlebih dahulu dan kemudian diikuti dengan operasi erosi. Contoh berikut menunjukkan efek penutupan lubang pada daun: >> Img= imread('C:Imagedaun_gray.png'); >> BW=im2bw(Img, 0.65); >> BW = not(BW); >> imshow(BW, [0 1] ) Perintah di atas menampilkan hasil seperti terlihat pada Gambar 7.22(a). Selanjutnya, perintah berikut dapat dicoba: >> Img = imread('C:Imagedaun_gray.png'); >> BW = im2bw(Img, 0.65); >> BW = not(BW); >> H = ones(5); >> G=dilasi(BW, H); >> M=erosi(G, H); >> imshow(M,[0 1]) Hasilnya ditunjukkan pada Gambar 7.22(b).
  • 39. Morfologi untuk Pengolahan Citra (a) Hasil konversi ke biner 247 (b) Hasil operasi closing Gambar 7.22 Lubang kecil tertutup oleh operasi closing Berikut adalah implementasi operasi closing: Program : closing.m function G = closing (F, H) % CLOSING Melakukan operasi opening. G = erosi(dilasi(F, H), H); Akhir Program
  • 40. 248 Pengolahan Citra, Teori dan Aplikasi 7.8 TransformasiHit-or-Miss Transformasi Hit-or-Miss (THM) pada citra biner A didefinisikan sebagai berikut: ‫ = ܤ* ܣ‬ሺ‫ܣ‬Θ‫ܤ‬ଵ ሻ∩(‫̅ܣ‬Θ‫ܤ‬ଶ) (7.18) തതത Dalam hal ini, biasanya B2 = ‫ܤ‬ଵ. Morfologi seperti itu dipakai untuk pemrosesan dan pengenalan bentuk pada citra biner. • Transformasi Hit-or-Miss terkadang disebut Hit-and-Miss (Efford, 2000). • THM merupakan dasar untuk skeleton, thinning, dan pruning. Sebagai contoh, terdapat pola seperti terlihat pada Gambar 7.23(a). Target yang dikehendaki adalah menemukan pola tersebut pada citra yang terlihat pada Gambar 7.23(b). 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (a) Target (b) Citra yang berisi target Gambar 7.23 Contoh target dan citra yang berisi target Secara manual dapatdilihat bahwa target yang dicari ada tiga buah. Untuk menemukan posisinya, dapatdigunakan operasi erosi. Penyelesaiannya seperti berikut:
  • 41. Morfologi untuk Pengolahan Citra 249 >>H1 = [1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 ]; >>Citra = [ 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1]; >> G = erosi(Citra, H1) Terlihat bahwa ada tiga elemen pada G yang bernilai 1. Pada posisi itulah target ditemukan. Gambar 7.24 memperlihatkan isi G. Elemen yang bernilai 1 ditandai dengan arsiran yang agak gelap. Arsiran yang agak terang digunakan untuk menandai keberadaan target. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Gambar 7.24Hasil erosi. Arsiran dimaksudkan untuk menunjukkan letak target yang dicari Nah, sekarang digunakan komplemen atas target yang dicari. Dalam hal ini, തത തത H2 = ‫ܪ‬ଵ . Jadi, >> H2 = not(H1)
  • 42. 250 Pengolahan Citra, Teori dan Aplikasi H2 = 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 >> Gambar 7.25 menunjukkan keadaan H2 dan komplemen citra. 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ഥ (a) ‫1ܪ = 2ܪ‬ (b) Komplemen citra Gambar 7.25Mencari kebalikan target H1 pada komplemen citra Pencarian seperti pada Gambar 7.25 dapat dilakukan dengan menggunakan: >>erosi(not(Citra), not(H1)) Hasilnya ditunjukkan pada Gambar 7.26.
  • 43. Morfologi untuk Pengolahan Citra 251 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 ഥ (a) ‫1ܪ = 2ܪ‬ (b) Komplemen citra Gambar 7.26Hasil pencarian kebalikan H1 pada komplemen citra dengan menggunakan erosi Hasil THM diperoleh dengan melakukan interseksi antara hasil yang terletak pada 7.24 dan 7.26. Secara visual terlihat bahwa interseksi kedua hasil tersebut menghasilkan satu nilai saja, yaitu pada posisi yang terlihat pada Gambar 7.27. Hasil THM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Gambar 7.27 Hasil THM Hasil di atas menyatakan bahwa pola yang dicari hanya ditemukan satu kali pada citra dengan posisi seperti yang ditunjukkan oleh angka 1. Bagian yang diarsir lebih terang menyatakan pola yang dicari.Dalam hal ini, interseksi diperoleh dengan menggunakan AND. Jadi, solusi THM secara lengkap sebagai berikut: >>and(erosi(Citra, H1) , erosi(not(Citra), not(H1))) THM yang dikupas di atas mempunyai kelemahan, yakni perbedaan satu piksel saja akan membuat pola tidak dikenal. Dalam praktik, terkadang
  • 44. 252 Pengolahan Citra, Teori dan Aplikasi dikehendaki agar THM bersifat sedikit pemaaf, sehingga pola yang sedikit berbeda dalam citra tetap dianggap sama dengan target. Pembahasan mengenai hal itu dapat dilihat pada Solomon & Breckon (2011). Untuk keperluan menangani transformasi Hit-or-Miss, Octave dan MATLAB menyediakan fungsi bernama bwhitmiss. Bentuk pemakaiannya: bwhitmiss(Citra, SE1, SE2) Dalam hal ini, argumen pertama menyatakan citra dan SE1 serta SE2 menyatakan elemen penstruktur yang merupakan pola untuk pencarian. Untuk kepentingan memudahkan implementasi yang melibatkan THM, sebuah fungsi bernama thmditunjukkan berikut ini. Program : thm.m function G = thm(F, H) % THM Digunakan untuk menangani transformasi Hit-or-Miss % F adalah citra yang akan dikenai operasi % H adalah elemen penstruktur [tinggi, lebar] = size(H); H1 = H; H2 = not(H1); G = and(erosi(F, H1) , erosi(not(F), H2)); Akhir Program Contoh berikut menunjukkan cara menemukan batas kiri objek kunci dengan memanfaatkan fungsi thm:
  • 45. Morfologi untuk Pengolahan Citra 253 >> Kunci = imread('C:Imagekunci.png'); >> H = [0 1 1; 0 1 1; 0 1 1]; >> G = thm(Kunci, H); imshow(G) Pada contoh di atas, elemen pentruktur yang digunakan untuk memperoleh batas kiri objek berupa: 0 1 1 0 1 1 0 1 1 Gambar 7.28 Elemen penstruktur untuk memperoleh batas kiri kunci Hasilnya ditunjukkan pada Gambar 7.29(b). Adapun perintah berikut memberikan hasil seperti terlihat pada Gambar 7.29(c). >> H = [ 0 0 0; 1 1 1 ; 1 1 1]; >> G = thm(Kunci, H); imshow(G) (a) Citra kunci.png (b) Batas kiri kunci (c) Batas atas kunci Gambar 7.29Contoh memperoleh batas kiri dan batas atas kunci Pada beberapa kasus, elemen penstruktur yang digunakan untuk melakukan THM melibatkan bit-bit yang disebut dengan istilah “don’t care” (dampak nilai 1 atau 0 sama saja). Contoh:
  • 46. 254 Pengolahan Citra, Teori dan Aplikasi 1 ‫ = ܤ‬൥1 1 ‫ݔ‬ 0 ‫ݔ‬ ‫ݔ‬ ‫ݔ‬൩ ‫ݔ‬ (7.19) Pada contoh di atas, x menyatakan “don’t care” atau bebas (0 atau 1). Nah, untuk menangani kasus seperti itu, dapat dibuat transformasi Hit_or_Miss seperti berikut. Program : thm2.html function G = thm2(F, H) % THM2 Digunakan untuk menangani transformasi Hit-or-Miss % F adalah citra yang akan dikenai operasi % H adalah elemen penstruktur % H bisa mengandung nilai -1 untuk menyatakan % don't care [tinggi, lebar] = size(H); % Membentuk H1 % Periksa nilai don't care (yaitu -1) dan gantilah dengan nol H1 = H; for baris = 1 : tinggi for kolom = 1 : lebar if H1(baris, kolom) == -1 H1(baris, kolom) = 0; end end end % Membentuk H2 sebagai komplemen H1 % Periksa nilai don't care (yaitu -1) dan gantilah dengan nol for baris = 1 : tinggi for kolom = 1 : lebar if H(baris, kolom) == -1 H2(baris, kolom) = 0; else H2(baris, kolom) = not(H(baris, kolom)); end end end G = and(erosi(F, H1) , erosi(not(F), H2)); return
  • 47. Morfologi untuk Pengolahan Citra 255 Akhir Program Secara prinsip, bagian yang bernilai -1 (“don’t care”) selalu diubah menjadi nol. Ketika dikomplemenkan, nilai -1 juga menghasilkan nilai 0. Dengan demikian, H1 AND H2 akan selalu menghasilkan nilai 0 pada setiap elemen. Contoh penggunaan thm2akan diberikan ketika membahas convex hull. 7.9Skeleton Ada beberapa cara yang digunakan untuk membentuk skeleton.Skeleton merupakan bentuk unik suatu objek, yang menyerupai rangka suatu objek.Skeleton mempunyai tiga karakteristik seperti berikut (Young, dkk., 1998): 1) ketebalannya 1 piksel, 2) melewati tengah objek, dan 3) menyatakan topologi objek. Namun, dalam praktik, ada kasus tertentu yang tidak dapat dipenuhi oleh skeleton. Contoh ditunjukkan pada Gambar 7.35. Gambar 7.30Contoh gambar yang tidak dapat dipenuhi oleh skeleton (Sumber: Young, dkk., 1998) Skeleton digunakan untuk representasi dan pengenalan tulisan tangan, pola sidik jari, struktur sel biologis, diagram rangkaian, gambar teknik, rencana jalur
  • 48. 256 Pengolahan Citra, Teori dan Aplikasi robot, dan semacam itu (Shih, 2009). Terkadang istilah skeletonisasi objek disebut sebagai Medial Axis Transform (Myler & Weeks, 1993). Salah satu cara untuk mendapatkan skeleton adalah melaluithinning. Thinning (pengurusan) adalah operasi morfologi yang digunakan untuk memperkecil ukuran geometrik objek dengan hasil akhir berupa skeleton atau rangka, dengan definisinya sebagai berikut: thinning(A, B) = A ⊗ B = A ^ B = A – hit_or_miss(A, B) = A∩ (hit_or_miss)c (7.20) Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur B1..Bn. Satu fase perhitungan thinning dilakukan dengan menggunakan delapan elemen penstruktur.Beberapa fase diperlukan sampai diperoleh hasil yang tidak lagi mengubah struktur citra. Operasi thinningmenyerupai erosi. Perbedaannya, thinning tidak akan membuat komponen objek terputus, melainkan mengecilkan hingga hasil akhirnya berupa rangka dengan ketebalan 1 piksel. B1 B2 B3 B4 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 B5 B6 B7 B8 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 Gambar 7.31Contoh 8 elemen penstruktur untuk melakukan operasi thinning
  • 49. Morfologi untuk Pengolahan Citra 257 Contoh delapanelemen penstruktur yang digunakan untuk thinning ditunjukkan pada Gambar 7.28 (Meyer dan Weeks, 1993).Fase pertama operasi thinning dilakukan sebagai berikut: A ⊗ B = ((((((((A ⊗ B1) ⊗ B2) ⊗ B3) ⊗ B4) ⊗ B5) ⊗ B6) ⊗ B7) ⊗ B8) (7.21) Implementasi thinning ditunjukkan berikut ini. Program : thinning.m function G = thinning(F, fase) % THINNING Untuk melakukan operasi thinning terhadap citra F % Argumen fase menentukan hasil thinning untuk % fase tersebut. Jika fase tidak disebutkaan, % operasi thinning dilakukan sampai cstruktur citra % tidak berubah lagi if nargin == 1 % Kalau fase tidak disebutkan fase = 1000000000; % Isi dengan bilangan yang besar end % Elemen H1 = [ 0 H2 = [ 1 H3 = [ 0 H4 = [ 1 H5 = [ 1 H6 = [ 1 H7 = [ 1 H8 = [ 0 penstruktur 0 0; 1 1 1; 1 1; 1 1 1; 1 1; 0 1 1; 1 0; 1 1 0; 0 0; 1 1 0; 1 1; 0 1 1; 1 1; 1 1 0; 0 1; 0 1 1; 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 ]; ]; ]; ]; ]; ]; ]; ]; [tinggi, lebar] = size(F); C = F; for p = 1 : fase C1 = C; C = and(C, not(thm(C,H1))); C = and(C, not(thm(C,H2))); C = and(C, not(thm(C,H3))); C = and(C, not(thm(C,H4))); C = and(C, not(thm(C,H5))); C = and(C, not(thm(C,H6))); C = and(C, not(thm(C,H7))); C = and(C, not(thm(C,H8))); % Periksa hasil C1 dan C sama atau tidak sama = true;
  • 50. 258 Pengolahan Citra, Teori dan Aplikasi for baris = 1 : tinggi for kolom = 1 : lebar if C1(baris, kolom) ~= C(baris, kolom) sama = false; break; end end if sama == false break; end end if sama == true break; % Akhiri kalang end end G = C; Akhir Program Contoh penggunaan fungsi thinning: >> F=im2bw(imread('C:Imagebentuk.png'), 0.5); >> G=thinning(F); imshow(G) Hasilnya ditunjukkan pada Gambar 7.32. (a) Berbagai bentuk objek (b) Skeleton morfologi Gambar 7.32Citra yang berisi berbagai bentuk dan hasil akhir setelah mengalami operasi thinning
  • 51. Morfologi untuk Pengolahan Citra 259 Adapun contoh berikut menunjukkan pengenaan elemen penstruktur untuk fase kedua: >> G=thinning(F,2); imshow(G) Hasilnya ditunjukkan pada Gambar 7.33(a). Hasil fase keenam diperoleh dengan menggunakan perintah berikut: >> G=thinning(F,6); imshow(G) Hasilnya ditunjukkan pada Gambar 7.33(b). Gambar 7.33Hasil thinning pada berbagai fase
  • 52. 260 Pengolahan Citra, Teori dan Aplikasi Skeleton juga dapat diperoleh melalui morfologi, seperti yang diajukan oleh Serra (1982). Definisi skeletondijelaskan berikut ini.Misalnya, A menyatakan citra biner dengan 1 menyatakan piksel objek dan 0 menyatakan piksel-piksel latarbelakang.Skeleton A diperoleh dengan menggunakan rumus: ܵሺ‫ܣ‬ሻ = ⋃௄ ܵ௞ (‫)ܣ‬ ௞ୀ଴ (7.22) Dalam hal ini, ܵ௞ ሺ‫ܣ‬ሻ = (‫ ܣ‬Θ ݇‫ − ܤ‬ሺ‫ܣ‬Θ ݇‫ܤ‬ሻ° ‫ܤ‬ (7.23) B adalah elemen penstruktur dan K adalah bilangan terbesar sebelum membuat A tererosi menjadi himpunan kosong. Kondisi pada K tersebut dapat ditulis secara matematis seperti berikut: ‫ = ܭ‬maxሺ݇|‫ ܣ‬Θ ݇‫∅ ≠ ܤ‬ሻ (7.24) Perlu diketahui, ‫ ܣ‬Θ ݇‫ = ܤ‬൫ሺ(‫ ܣ‬Θ ‫ܤ‬ሻΘ ‫ܤ‬൯ … )Θ ‫ܤ‬ (7.25) yang menyatakan bahwa hasil erosi dierosiulang sampai terjadi k erosi. Contoh yang menunjukkan proses pembuatan skeleton suatu objek dengan cara di atas ditunjukkan pada Gambar 7.36. Pada contoh tersebut, S2(A) berupa himpunan kosong mengingat semua elemen bernilai nol. Dengan demikian, K = 1 atau S(A) = S1(A).
  • 53. Morfologi untuk Pengolahan Citra 261 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 B A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AΘB (A Θ B) ° B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 S1(A) = (A Θ B) - (A Θ B) ° B S2(A) Gambar 7.34Skeleton secara morfologis Namun,cara seperti itu tidak menjamin terjadinya skeleton yang titik-titiknya terkoneksi. Hal ini telah diutarakan oleh Gonzalez dan Woods (2002). DiOctave dan MATLAB, skeleton dapat diperoleh dengan menggunakan fungsi bwmorph. Contoh: >> Img=imread('C:Imagebentuk.png');
  • 54. 262 Pengolahan Citra, Teori dan Aplikasi >> Img = im2bw(Img, 0.5); >> G=bwmorph(Img, 'skel', inf); >> imshow(G) Perlu diketahui, im2bwdigunakan untuk memperoleh citra biner. Setelah itu, Img dapat diproses oleh bwmorph. Argumen ‘skel’ menyatakan bahwa hasil yang diharapkan adalah skeleton. Argumen inf menyatakan nilai yang tak berhingga, yang digunakan untuk menyatakan jumlah pengulangan maksimal dalam membentuk skeleton. Hasil operasi di depan ditunjukkan pada Gambar 7.35. Gambar 7.35Hasil bwmorph untuk memperoleh skeleton
  • 55. Morfologi untuk Pengolahan Citra 263 7.10 Thickening Thickening (penebalan) adalah operasi yang berkebalikan dengan thinning. Fungsinya adalah memperbesar ukuran geometris objek. Operasi ini didefinisikan sebagai berikut: A B = A ∪hit_or_miss(A, B) (7.26) Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur B1..Bn. Satu fase perhitungan thickening dilakukan dengan menggunakan delapan elemen penstruktur. Contoh kedelapan elemen penstruktur disajikan pada Gambar 7.36. B1 B2 B3 B4 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 B5 B6 B7 B8 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 Gambar 7.36Contoh 8 elemen penstruktur untuk operasi thickening Fase pertama operasi thickening dilakukan sebagai berikut: A B = ((((((((A B1) B2) B3) B4) Implementasi thickening ditunjukkan berikut ini. B5) B6) B7) B8)(7.27)
  • 56. 264 Pengolahan Citra, Teori dan Aplikasi Program : thickening.m function G = thickening(F, n_iterasi) % THICKENING Digunakan untuk menebalkan objek yang terdapat pada % citra F. % Argumen n_iterasi menyatakan jumlah iterasi atau % fase yang dikehendaki untuk melakukan % penebalan objek' H1 H2 H3 H4 H5 H6 H7 H8 = = = = = = = = [ [ [ [ [ [ [ [ C = F; for p = C = C = C = C = C = C = C = C = end 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1; 0; 0; 1; 1; 0; 0; 0; 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0; 0; 0; 1; 1; 0; 1; 0; 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 ]; ]; ]; ]; ]; ]; ]; ]; % Salin citra F ke C 1 : n_iterasi or(C, thm(C,H1)); or(C, thm(C,H2)); or(C, thm(C,H3)); or(C, thm(C,H4)); or(C, thm(C,H5)); or(C, thm(C,H6)); or(C, thm(C,H7)); or(C, thm(C,H8)); G = C; Akhir Program Contoh >>F = imread(’C:Imagemorfo.png’); >>G=thickening(F,1); imshow(G) Hasil untuk berbagai fase ditunjukkan pada Gambar 7.37.
  • 57. Morfologi untuk Pengolahan Citra 265 Gambar 7.37Contoh operasi thickening 7.11 Convex Hull Himpunan konveks(cembung) adalah himpunan yang mencakup semua titik yang menghubungkan dua titik yang berada di dalam himpunan.Adapun convex hull adalah bentuk poligon terkecil yang dapat melingkupi objek.Poligon ini dapat dibayangkan sebagai gelang elastis yang dapat melingkupi tepi objek, Hal seperti itu kadang diperlukan untuk kepentingan mengenali objek, dengan menghilangkan tepian objek yang cekung.
  • 58. 266 Pengolahan Citra, Teori dan Aplikasi Convex hull diperoleh dengan melibatkan transformasi Hit_or_Miss (THM) dengan elemen-elemen penstruktur yang dirotasi sebesar 90o. Contoh elemen penstruktur ditunjukkan pada Gambar 7.38. B1 B2 B3 B4 1 x x 1 1 1 x x 1 x x x 1 0 x x 0 x x 0 1 x 0 x 1 x x x x x x x 1 1 1 1 Gambar 7.38Empat elemen penstruktur untuk membentuk convex hull Pada contoh di atas, x menyatakan “don’t care”. Langkah awal untuk melakukan perhitungan convex hull dilaksanakan dengan memberikan X01 = A, dengan A adalah citra yang akan diproses. Selanjutnya, dilakukan perhitungan sebagai berikut: ௜ ܺ௞ = ‫ݐ‬ℎ݉൫ܺ௞ିଵ , ‫ ܤ‬௜ ൯ ∪ ‫… ,3,2,1 = ݇ ݊ܽ݀ 4,3,2,1 = ݅ ܣ‬ (7.28) ௜ ௜ ௜ Konvergensi tercapai ketika ܺ௞ = ܺ௞ିଵ . Nah, bila Di = ܺ௞௢௡௩௘௥௚௘௡ , convex hull A berupa ‫ܥ‬ሺ‫ܣ‬ሻ = ⋃ସ ‫ ܦ‬௜ ௜ୀଵ (7.29) Contoh untuk memperoleh convex hull ditunjukkan pada Gambar 7.39. ௜ ௜ ௜ ௜ Pada contoh tersebut, hasil setelah konvergen untuk ܺ௞ , ܺ௞ ,ܺ௞ , ܺ௞ diperlihatkan.
  • 59. Morfologi untuk Pengolahan Citra 267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ܺ݇‫3= ݒ݊݋‬ A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 ܺ݇‫1= ݒ݊݋‬ 3 ܺ݇‫2= ݒ݊݋‬ 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 ܺ݇‫4= ݒ݊݋‬ ‫)ܣ(ܥ‬ Gambar 7.39Proses pembentukanconvex hull
  • 60. 268 Pengolahan Citra, Teori dan Aplikasi Implementasi pembentukan convex hull dituangkan pada fungsi bernama convhull, dengan kode sebagai berikut. Program : convhull.m function G = convhull(A) % CONVHULL Untuk melakukan operasi convex hull terhadap citra A % dengan menggunakan 4 elemen penstruktur % G = Convex hull [tinggi, lebar] = size(A); % Elemen penstruktur H1 = [ 1 -1 -1; 1 0 -1; 1 -1 -1 H2 = [ 1 1 1; -1 0 -1; -1 -1 -1 H3 = [ -1 -1 1; -1 0 1; -1 -1 1 H4 = [ -1 -1 -1; -1 0 -1; 1 1 1 C C C C C = = = = = ]; ]; ]; ]; zeros(tinggi, lebar); or(C, chull(A, H1)); or(C, chull(A, H2)); or(C, chull(A, H3)); or(C, chull(A, H4)); G = C; function [G, k] = chull(A, B) % A = Citra % B = elemen penstruktur % G = Hasil yang konvergen % k = iterasi hingga korvergen [tinggi, lebar] = size(A); k=1; Ckmin1 = A; while (true) Ck = or(Ckmin1, thm2(Ckmin1,B)); % Cek Ckmin1 apa sama dengan Ck sama = true; for baris = 1 : tinggi for kolom = 1 : lebar if Ckmin1(baris, kolom) ~= Ck(baris, kolom) sama = false; break; end end if sama == false
  • 61. Morfologi untuk Pengolahan Citra 269 break; end end if sama == true break; % Berarti sudah konvergen end % Ke iterasi berikutnya k = k + 1; Ckmin1 = Ck; end k = k-1; G = Ckmin1; Akhir Program Contoh penggunaan fungsi convhull: >> Garpu=im2bw(imread('C:imagefork-3.png'), 0.5); >> G=convhull(Garpu); imshow(G) Hasilnya ditunjukkan pada Gambar 7.40(b). Gambar 7.40(c) menunjukkan keadaan yang dinamakan defisiensi konveks. Defisiensi konveks menyatakan selisih antara convex hull dan citra asli. Hasil tersebut diperoleh melalui: >> imshow(G – Garpu) (a) Citra fork-3.png (b) Convex hull (c) Convex hull – Citra asli Gambar 7.40Hasil convex hull dan defisiensi konveks Bentuk convex hulldapat diubah agar tidak berbentuk kotak. Sebagai contoh, terdapat delapan elemen penstruktur seperti terlihat pada Gambar 7.41.
  • 62. 270 Pengolahan Citra, Teori dan Aplikasi B1 B2 B3 B4 1 1 1 1 1 x 1 x x x x x 1 0 x 1 0 x 1 0 x 1 0 x x x x 1 x x 1 1 x 1 1 1 B5 B6 B7 B8 x x x x x 1 x 1 1 1 1 1 x 0 1 x 0 1 x 0 1 x 0 1 1 1 1 x 1 1 x x 1 x x x Gambar 7.41 Contoh 8 elemen penstruktur untuk melakukan operasi convex hull Dengan menggunakan delapan elemen penstruktur tersebut, diperoleh hasil seperti terlihat pada Gambar 7.42. (a) Convex hull (b) Convex hull – Citra asli Gambar 7.42Convex hull dan defisiensi konveks yang melibatkan delapan elemen penstruktur 7.12 Morfologi Aras Keabuan Sejauh ini, pembicaraan mengenai morfologi terbatas pada citra biner. Sesungguhnya, morfologi juga dapat dikenakan pada citra beraras keabuan. Namun, tentu saja terdapat perbedaan dalam melakukan operasi morfologi ini.Beberapa operasi morfologi untuk citra beraras keabuan dibahas di subbab ini.
  • 63. Morfologi untuk Pengolahan Citra 271 7.12.1 Dilasi Beraras Keabuan Dilasi pada aras keabuan didefinisikan sebagai berikut (Gonzalez & Woods, 2002): ൫‫⊕ ܣ‬௚ ‫ܤ‬൯ሺ‫ݒ ,ݑ‬ሻ = ݉ܽ‫(ݔ‬௜,௝)∈ு (A(u-i,v-j)+B(i,j)) (7.30) dengan A adalah citra dan B adalah elemen penstruktur. Jadi, nilai yang dihasilkan berupa nilai terbesar antara A+B,dengan proses penambahan dilakukan seperti yang terjadi pada konvolusi citra. Simbol g sesudah tanda ⊕ menyatakan bahwa operasi dilasi tersebut berlaku untuk citra beraras keabuan. Ilustrasi dilasi beraras keabuan dapat dilihat pada Gambar 7.43. Pada contoh tersebut, nilai terbesar A+B adalah25. Nilai tersebut dijadikan sebagai nilai dalam A⊕gB. A (Citra) 11 12 Himpunan hasil B 13 11+4 15 17 18 16 ⊕ 2 7 6 9 13+5 14+6 15+7 16+2 18+3 19+1 8 5 14 3 12+9 17+8 1 4 19 Diputar 180o 4 9 6 7 2 8 3 1 Terbesar = 25 5 + Hasil 25 Gambar 7.43Contoh penentuan nilai dalam dilasi beraras keabuan
  • 64. 272 Pengolahan Citra, Teori dan Aplikasi Implementasi dilasi dapa dilihat pada program berikut. dapat Program : gdilasi.m function G = gdilasi(F, H, hotx, hoty) % GDILASI Berguna untuk melaksanakan operasi dilasi pada % citra beraras keabuan. % Masukan: % F = citra yang akan dikenai dilasi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2); end G = zeros(tf, lf); % Nolkan semua pada hasil dilasi % Memproses dilasi for baris = 1 : tf for kolom = 1 : lf terbesar = 0; for p=1:th for q=1:lh ypos = baris - (p - hoty); xpos = kolom - (q - hotx); if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) nilai = F(ypos, xpos) + H(p, q); if terbesar < nilai terbesar = nilai; end end end end % Potong nilai terbesar kalau melebihi 255 if terbesar > 255 terbesar = 255; end % Berikan nilai terbesar ke G G(baris, kolo kolom) = terbesar; end end
  • 65. Morfologi untuk Pengolahan Citra 273 G = uint8(G); Akhir Program Pada contoh di atas, fungsi uint8 digunakan untuk memastikan bahwa hasil perhitungan dilasi berkisar antara 0 sampai dengan 255. Contoh berikut menunjukkan penggunaan fungsi gdilasi yang dikenakan pada citra mandrill.png dengan menggunakan elemen penstruktur berukuran 9x9 dengan bentuk cakram. >> Img=imread('C:Imagemandrill.png'); >>H = [ 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 ]; >> G=gdilasi(Img, H); imshow(G) Hasilnya dapat dilihat pada Gambar 7.44.
  • 66. 274 Pengolahan Citra, Teori dan Aplikasi (a) Citra mandrill.png (c) Dilasi dengan elemen struktur berukuran 3x3 dan seluruhnya bernilai 1 (b) Dilasi dengan elemen struktur berukuran 3x3 dan seluruhnya bernilai 0 (d) Dilasi dengan elemen struktur berukuran 9x9 dan berbentuk bola Gambar 7.44Efek dilasi pada citra beraras keabuan 7.12.2 Erosi Beraras Keabuan Erosi pada citra beraras keabuan didefinisikan sebagai berikut: ൫‫ ܣ‬Θ௚ ‫ܤ‬൯ሺ‫ݒ ,ݑ‬ሻ = ݉݅݊(௜,௝)∈ு (A(u+i,v+j)-B(i,j)) (7.31) dengan A adalah citra dan B adalah elemen penstruktur. Simbol g sesudah tanda Θ menyatakan bahwa operasi dilasi tersebut berlaku untuk citra beraras keabuan.
  • 67. Morfologi untuk Pengolahan Citra 275 Jadi, nilai yang dihasilkan berupa nilai terkecil antara A A-B. Contoh perhitungan ontoh erosi ditunjukkan pada Gambar 7.45. A (Citra) 11 12 Himpunan hasil B 13 11-2 15 17 18 16 Θ 2 7 6 9 13-8 13 14-2 15-7 16-6 16 18-9 19-4 19 8 5 14 3 12-3 17-5 1 4 19 Terkecil = 5 Hasil 5 Gambar 7.45Contoh penentuan nilai dalam erosi beraras keabuan Implementasi erosi pada citra beraras keabuan diwujudkankan dengan diwujudkan fungsi bernama gerosi Kodenya seperti berikut. gerosi. Program : gerosi.m function G = gerosi(F, H, hotx, hoty) % GEROSI Berguna untuk melaksanakan operasi dilasi % citra beraras keabuan. % Masukan: % F = citra yang akan dikenai erosi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2); end
  • 68. 276 Pengolahan Citra, Teori dan Aplikasi G = zeros(tf, lf); % Nolkan semua pada hasil erosi % Memproses erosi for baris = 1 : tf for kolom = 1 : lf terkecil = 255; for p=1:th for q=1:lh ypos = baris + p - hoty; xpos = kolom + q - hotx; if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) nilai = F(ypos, xpos) + H(p, q); if terkecil > nilai terkecil = nilai; end end end end % Berikan nilai ke G if terkecil < 0 terkecil = 0; end G(baris, kolom) = terkecil; end end G = uint8(G); Akhir Program Contoh penggunaan gerosi seperti berikut: >> Img=imread('C:Imagemandrill.png'); >>H = [ 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0
  • 69. Morfologi untuk Pengolahan Citra 0 0 1 277 1 1 1 1 0 0 ]; >> G=gerosi(Img, H); imshow(G) Hasilnya dapat dilihat pada Gambar 7.46. (a) ) Citra mandrill.tif (c) Erosi dengan elemen struktur berukuran 3x3 dan seluruhnya bernilai 1 (b) Erosi dengan elemen penstruktur berukuran 3x3 dan seluruhnya bernilai 0 (d) Erosi dengan elemen struktur berukuran 9x9 dan berbentuk bola Gambar 7.46Efek erosi pada citra beraras keabuan
  • 70. 278 Pengolahan Citra, Teori dan Aplikasi Aplikasi erosi dan dilasi pada citra beraras keabuan adalah untuk memperoleh gradien morfologis. Dalam hal ini, gradien morfologis diperoleh dengan melakukan pengurangan hasil dilasi dengan nilai hasil erosi. Contoh: >> >> >> >> Img = imread('C:Imageboneka.png'); X = gdilasi(Img, ones(3)); Y = gerosi(Img, ones(3)); imshow(X-Y) Hasilnya dapat dilihat pada Gambar 7.47(d). Adapun hasil pemrosesan dilasi dan erosi secara berturutan dapat dilihat pada Gambar 7.47(b) dan 7.47(c). (a) Citra boneka.png (c) Erosi dengan elemen struktur berukuran 3x3 dan seluruhnya bernilai 1 (b) Dilasi dengan elemen struktur berukuran 3x3 dan seluruhnya bernilai 1 (d) Hasil dilasi – hasil erosi Gambar 7.47Gradien morofologis melalui pengurangan dilasi dengan erosi pada citra beraras keabuan
  • 71. Morfologi untuk Pengolahan Citra 279 7.12.3 Opening dan Closing Secara prinsip, operasi opening dan closing pada citra beraras keabuan serupa pada citra biner. Definisinya sebagai berikut. Opening: AοgB = (AΘgB) ⊕gB (7.32) Closing: A•gB = (A⊕gB) ΘgB (7.33) Contoh perbedaan hasil operasi opening dan closing pada citra beraras keabuan dapat dilihat pada Gambar 7.48. Terlihat bahwa operasi opening berkecenderungan menghilangkan bagian yang cerah tetapi berukuran kecil (perhatikan pada bagian mata pada hasil opening). Adapun operasi closing mempertahankan objek kecil yang berwarna terang. Gambar 7.48Operasi opening dan closing pada citra beraras keabuan menggunakan elemen penstruktur 5x5 yang seluruhnya bernilai 0
  • 72. 280 Pengolahan Citra, Teori dan Aplikasi Untuk kepentingan kemudah dalam mencoba operasi opening kemudahan openingpada citra berskala keabuan, dapatdig dapatdigunakan fungsi bernama gopening. Kodenya sebagai berikut. Program : gopening.m function G = gopening(F, H) % GOPENING berguna untuk melaksanakan operasi opening % citra beraras keabuan % Masukan: % F = citra yang akan dikenai erosi % H = elemen pentruksur G = gdilasi(gerosi(F, H), H); Akhir Program Untuk kepentingan kemudah dalam mencoba operasi closing pada citra kemudahan berskala keabuan, dapat di digunakan fungsi bernama gclosing. Kodenya sebagai berikut. Program : gclosing.m function G = gclosing(F, H) % GCLOSING Berguna untuk melaksanakan operasi closing % citra beraras keabuan. % Masukan: % F = citra yang akan dikenai erosi % H = elemen pentruksur G = gerosi(gdilasi(F, H), H); Akhir Program
  • 73. Morfologi untuk Pengolahan Citra 281 Contoh berikut menunjukkan penggunaan gopening: >> Img = imread('C:Imagelena256.png'); >> G = gopening(Img, ones(5)); >> imshow(G) Adapun contoh berikut menunjukkan penggunaan gclosing: >> Img = imread('C:Imagelena256.png'); >> G = gclosing(Img, ones(5)); >> imshow(G) 7.13 Transformasi Top-Hat TransformasiTop-Hat didefinisikan sebagai perbedaan antara citra dan citra setelah mengalami operasi opening (Solomon & Breckon, 2011) atau dapat disajikan secara matematis seperti berikut: TTH(A, B)= A-(A°gB) (7.34) Pada rumus di atas, A menyatakan citra dan B sebagai elemen penstruktur. Simbol g menyatakan bahwa operasi tersebut berlaku untuk citra beraras keabuan. Transformasi ini berguna untuk mendapatkan bentuk global suatu objek yang mempunyai intensitas yang bervariasi. Sebagai contoh, perhatikan Gambar 7.49(a). Pada citra tersebut, butiran-butiran nasi memiliki intensitas yang tidak seragam. Melalui opening, diperoleh hasil seperti terlihat pada Gambar 7.49(b). Hasil transformasi Top-Hat ditunjukkan pada Gambar 7.49(c). Perhatikan bahwa hasil butiran nasi pada Gambar 7.49(c) terlihat memiliki intensitas yang lebih seragam dibandingkan pada citra asal.
  • 74. 282 Pengolahan Citra, Teori dan Aplikasi (a) Citra rice.png (b) Hasil Opening (c) ) Hasil Top-Hat Gambar 7.49Transformasi Top-Hat menggunakan elemen penstruktur berukuran 9x9 berbentuk cakram Pada contoh berikut, TH menyatakan hasil transformasi Top-Hat: >> Img=imread('C:Imagerice.png'); >>H = [ 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 ]; >> G=gopening(Img, H); >> TH=Img-G; >>imshow(TH) File rice.png tidak disediakan di CD yang disertakan bersama buku. File tersebut adalah milik MATLAB. Hasil transformasi Top-Hat pada contoh seperti di atasakan menghasilkan citra biner yang lebih baik daripada kalau citra biner diperoleh secara langsung
  • 75. Morfologi untuk Pengolahan Citra 283 dari citra asal. Sebagai gambaran, Gambar 7.50 memberikan contoh hasil konversi ke citra biner menggunakan citra rice.png dan hasil konversi citra biner menggunakan hasil transformasi Top-Hat. (a) Citra rice.png (b) ) Konversi citra biner melalui rice.png secara langsung (c) Konversi citra biner melalui hasil Top-Hat Gambar 7.50Efek transformasi Top-Hat untuk memperoleh citra biner Perhatikan bahwa jumlah butir padi pada Gambar 7.50(c) bagian bawah lebih banyak daripada pada Gambar 7.50(b). 7.14 Transformasi Bottom-Hat Transformasi Bottom-Hat didefinisikan sebagai berikut: TBH(A, B) = (A •g B) - A Secara prinsip, operasi ini memperbesar warna putih melalui dilasi, (7.35) diikuti dengan pengecilan warna putih melalui erosi dan kemudian dikurangi dengan citra asal. Dilasi yang diikuti dengan erosi memberikan efek berupa objek-objek yang berdekatan menjadi semakin dekat. Pengurangan oleh citra asal membuat penghubung antarobjek menjadi hasil yang tersisa. Dengan kata lain, hasil yang tersisa adalah piksel-piksel yang digunakan untuk mengisi “lubang”, atau “penghubung objek”.
  • 76. 284 Pengolahan Citra, Teori dan Aplikasi Latihan 1. Terdapat dua buah himpunan seperti berikut: A = {(1,1), (1,2), (2,1), (2,3), (2,1)} B = {(1,1), (1,3), (2,2), (2,3), (3,1)} Berapa hasil operasi berikut? (a) A ∪ B (b) A ∩ B 2. Perhatikan gambar berikut: 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 (a) Bagaimana bentuk komplemen citra tersebut? (b) Bagaimana bentuk refleksinya? 3. Jelaskan kegunaan operasi dilasi. 4. Perhatikan citra berikut: 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0
  • 77. Morfologi untuk Pengolahan Citra 285 Perlihatkan hasilnya jika dikenai operasi dilasi dengan elemen penstruktur seperti berikut? 1 1 Dalam hal ini, yang diarsir adalah hotspot. Hitung soal di atas secara manual dan kemudian bandingkan dengan hasil kalau menggunakan fungsi bernama erosi. Bagaimana hasilnya kalau hotspot justru terletak yang kanan? Lakukan secara manual dan juga melalui komputasi dengan fungsi erosi. 5. Jelaskan bahwa hasil operasi erosi sebenarnya menyatakan letak elemen penstruktur di dalam citra yang dikenai operasi tersebut. 6. Jelaskan hubungan operasi berikut terhadap operasi dilasi dan erosi: (a) operasi opening (b) operasi closing 7. Operasi opening sering dikatakan idempotent. Apa maksudnya? 8. Jelaskan kegunaan operasi thinning? 9. Cobalah memodifikasi operasi pada thinning.m dengan menggunakan elemen penstruktur seperti berikut:
  • 78. 286 Pengolahan Citra, Teori dan Aplikasi B1 B2 B3 B4 0 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 B5 B6 B7 B8 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 Kenakan pada citra bentuk.png. Perhatikan bahwa elemen-elemen penstruktur di atas sama dengan elemen-elemen penstruktur pada contoh di depan, tetapi letaknya dipertukarkan. Bandingkan hasilnya dengan contoh pada Gambar 7.32. 10. Cobalah untuk mengimplementasikan convex hull yang melibatkan delapan elemen penstruktur. 11. Buatlah fungsi bernama tth yang berguna untuk melaksanakan operasi transformasi Top-Hat. Lalu, ujilah fungsi tersebut untuk menapis rice.png.