Morfologi untuk Pengolahan Citra

advertisement
MORFOLOGI UNTUK
PENGOLAHAN CITRA
STMIK PPKIA Pradnya Paramita
Sigit Setyowibowo, ST., MMSI
Pengertian Operasi Morfologi
■ Operasi morfologi merupakan operasi yang umum
dikenakan pada citra biner (hitam-putih) untuk
mengubah struktur bentuk objek yang terkandung
dalam citra.
■ Operasi morfologi :
 Erosi (Erosion)
 Dilasi (Dilation)
 Operasi Gabungan (Compound Operations)
■ Beberapa manfaat dari aplikasi morfologi adalah sebagai berikut.
– Memisahkan objek yang saling berhimpitan.
– Memperoleh skeleton (rangka) sebuah objek.
– Memperoleh struktur bentuk objek.
manfaat dari aplikasi morfologi

Remove Noise
 Small Object

Fill Holes
manfaat dari aplikasi morfologi

Memisahkan objek yang saling berhimpitan
KOMPONEN OPERASI MORFOLOGI
Inti operasi morfologi melibatkan dua larik piksel. Larik pertama berupa citra yang akan diken
ai operasi morfologi, sedangkan larik kedua dinamakan sebagai kernel atau structuring eleme
nt (strel) (Shih, 2009).
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
1
Hotspot
Citra
0
1
0
1
1
1
0
1
0
Kernel
Operasi strel terhadap citra
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, a dapat ditulis menjadi
𝑎∈𝐴
■ Arti notasi di atas, a adalah anggota himpunan A. kebalikannya, jika a bukan anggota himpunan
A, a ditulis seperti berikut:
𝑎𝐴
■ 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
Operasi union
■ Union himpunan A dan B,dinyatakan dengan C = A∪B, adalah himpunan dari
semua elemen anggota A, B, atau keduanya
1
2
3
4
5
1
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)}
2
3
4
5
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)}
Operasi interseksi/irisan
■ Irisan A dan B, dinyatakan dengan C = A  B adalah himpunan dari semua elemen yang
merupakan anggota A dan B.
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
B={(1,1), (2,1), (2,2),
(3,3), (4,2), (5,1)}
A={(1,2), (2,2), (2,3),
(3,2), (3,3), (3,4),
(4,2), (4,3), (5,2)}
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)}
Operasi komplemen/inversi
■ Komplemen himpunan A adalah himpunan elemen yang bukan anggota A
Ac = { w | w  A }
■ 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
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)}
Operasi selisih
Operasi selisih dua himpunan dapat ditulis seperti berikut:
A – B = { w | w  A, w  B } = A  Bc
1
2
3
4
5
1
0
1
0
0
0
2
0
1
1
0
3
0
1
1
4
0
1
5
0
1
1
2
3
4
1
1
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
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)}
5
B={(1,1), (2,1), (2,2),
(3,3), (4,2), (5,1)}
C=A-B
C=B-A
0
0
0
0
0
0
0
1
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) }
Contoh menunjukkan bahwa A – B  B – A.
Contoh refleksi
Refleksi B dinotasikan dengan 𝐵 dan didefinisikan sebagai berikut:
𝐵 = 𝑤|𝑤 = −𝑏, 𝑢𝑛𝑡𝑢𝑘 𝑏 ∈ 𝐵
Refleksi sebenarnya menyatakan percerminan terhadap piksel pusat. Contoh ditunjukkan
pada Gambar . 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
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)}
𝐴 = {(3,2), (3,3), (3,4),
(4,3), (4,4)}
Translasi
Translasi himpunan A terhadap titik z=(z1, z2) disimbolkan dengan (A)z. Definisinya sebagai
berikut:
(𝐴)𝑧 = 𝑐|𝑐 = 𝑎 + 𝑧, 𝑢𝑛𝑡𝑢𝑘 𝑎 ∈ 𝐴
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)}
Himpunan A digeser pada arah z1 dan z2 sesuai dengan nila
i z yang diberikan
(A)(2,1) = {(4,3), (4,4), (5,3),
(5,4), (5,5)}
Contoh translasi satu piksel ke kanan dan
dua piksel ke bawah
Operasi Nalar
Tabel kebenaran
■
Berbagai efek operasi AND, OR, NOT, XOR, dan NAND ditunjukkan pada
Gambar.
Hasil-hasil operasi nalar atas dua buah citra A dan B
%program andnand.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Program Operasi Logika AND dan NAND antara dua citra digunakan untuk citra biner %%%%%%%%%%%%%
%%% Sarifuddin Madenda untuk buku "Pengolahan Citra dan Video Digital: Teori, Aplikasi
%%%
%%% dan Pemrograman Matlab",2015.
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
% kosongkan semua variabel dalam sistim memori
P=imread('D:\Materi Ngajar\Image\biner1.bmp'); % baca file citra 'biner1.bmp', simpan dalam matriks P
figure(1), imshow(P,[]); % tampilkan citra P
Q=imread('D:\Materi Ngajar\Image\biner2.bmp'); % baca file citra 'biner2.bmp', simpan dalam matriks Q
figure(2), imshow(Q,[]); % tampilkan citra Q
[N, M] = size(P);
% baca ukuran citra P (ukuran citra Q = P)
for n = 1 : N,
for m = 1 : M,
Citra_and(n,m)=P(n,m) & Q(n,m);
% operasi AND antara setiap pixel citra P dan Q
Citra_nand(n,m)=~(P(n,m) & Q(n,m)); % operasi NAND antara setiap pixel citra P dan Q
end
end
figure(3), imshow( Citra_and);
% tampilkan citra hasil operasi AND
figure(4), imshow(Citra_nand);
% tampilkan citra hasil operasi NAND
%program ornor.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Program Operasi Logika OR dan NOR antara dua citra digunakan untuk citra biner
%%% Sarifuddin Madenda untuk buku "Pengolahan Citra dan Video Digital: Teori, Aplikasi
%%% dan Pemrograman Matlab",2015.
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%
%%%
clear all;
% kosongkan semua variabel dalam sistim memori
P=imread('D:\Materi Ngajar\Image\biner1.bmp');
figure(1), imshow(P,[]);
% tampilkan citra P
Q=imread('D:\Materi Ngajar\Image\biner2.bmp');
figure(2), imshow(Q,[]);
% tampilkan citra Q
[N, M] = size(P);
% baca ukuran citra P (ukuran citra Q = P)
for n = 1 : N,
for m = 1 : M,
Citra_or(n,m)=P(n,m) | Q(n,m);
% operasi OR antara setiap pixel citra
P dan Q
Citra_nor(n,m)=~(P(n,m) | Q(n,m)); % operasi NOR antara setiap pixel citra
P dan Q
end
end
figure(3), imshow( Citra_or);
% tampilkan citra hasil operasi OR
figure(4), imshow(Citra_nor);
% tampilkan citra hasil operasi NOR
%Progrmam xorxnor.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Program Operasi Logika XOR dan XNOR antara dua citra %%%
%%% digunakan untuk citra biner
%%%%%%%%%%%%%
%%% Sarifuddin Madenda untuk buku "Pengolahan
%%%
%%% Citra dan Video Digital: Teori, Aplikasi
%%%
%%% dan Pemrograman Matlab",2015.
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
% kosongkan semua variabel dalam sistim memori
P=imread('D:\Materi Ngajar\Image\biner1.bmp');
figure(1), imshow(P,[]);
% tampilkan citra P
Q=imread('D:\Materi Ngajar\Image\biner2.bmp');
figure(2), imshow(Q,[]);
% tampilkan citra Q
[N, M] = size(P);
% baca ukuran citra P (ukuran citra Q = P)
for n = 1 : N,
for m = 1 : M,
Citra_or(n,m)=xor(P(n,m),Q(n,m));
% operasi XOR antara setiap pixel ci
tra P dan Q
Citra_nor(n,m)=~(xor(P(n,m),Q(n,m))); % operasi NXOR antara setiap pixel c
itra P dan Q
end
end
figure(3), imshow( Citra_or);
% tampilkan citra hasil operasi XOR
figure(4), imshow(Citra_nor);
% tampilkan citra hasil operasi XNOR
Operasi Dilasi
■ Dilasi adalah operasi morphologi yang akan menambahkan pixel pada batas antar objek
dalam suatu citra digital.
■ Operasi dilasi biasa dipakai untuk mendapatkan efek pelebaran terhadap piksel yang
bernilai 1. Operasi ini dirumuskan seperti berikut (Gonzales & Woods, 2002):
A  B = 𝑧| 𝐵
𝑧
∩𝐴 ∁𝐴
■ Himpunan B disebut “structuring element” dalam dilasi.
■ Persamaan ini didasarkan pada perefleksian B terhadap originnya, dan penggeseran
refleksi oleh z.
Rectangle
Arbitrary
Diamond
Octagon
Pair
Periodicline
Square
Disk
Line
20
(a) Himpunan obyek; (b) Strel +; (c) Dilasi a oleh b; (d) Strel vertikal;
(e) Dilasi a oleh d
Toolbox MATLAB untuk membuat strel:
SE = strel(tipestrel, parameter)
Tipe
Arbitrary
Format fungsi
Diamond
SE = strel(‘arbitrary’,
NHOOD)
SE = strel('diamond',R)
Disk
SE = strel('disk',R,N)
Line
SE = strel('line',LEN,DEG)
Octagon
SE = strel('octagon',R)
pair
SE = strel('pair',OFFSET)
periodicline
SE = strel('periodicline',P,V)
rectangle
SE = strel('rectangle',MN)
square
SE = strel('square',W)
Perlu diketahui, fungsi strel memberikan berbagai pilihan dalam memb
uat elemen penstruktur
Contoh strel untuk membuat berbagai bentuk
elemen penstruktur
Efek dilasi dengan hotspot vertikal
1
2
3
4
5
-1
1
-1
2
0
3
1
0
1
4
5
A
B
Hotspot vertikal
Penambahan piksel akibat dilasi
AB
Contoh operasi dilasi dengan menggunakan Persamaan diatas dapat dilihat pada Gambar berikut
Pada contoh tersebut,
A = { (2,2), (2,3), (2,4), (3,2), (3,3), (3,4), (4,2) }
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,2) }
= { (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,2) }
CONTOH DILASI
S
= {(0,0),(0,1),(1,0)}
A = {(0,0),(0,1),(0,2),
(1,0),(1,1),(1,2),
(2,0),(2,1),(2,2)}
S
A
D
Posisi poros
((x,y) Є A )
Sxy
(0,0)
{(0,0),(0,1),(1,0)}
(0,1)
{(0,1),(0,2),(1,1)}
(0,2)
{(0,2),(0,3),(1,2)
}
......
......
(2,2)
{(2,2),(2,3),(3,2)
D
%program dilasi.m
clear all;
% kosongkan semua variabel dalam sistim memori
f=im2bw(imread('D:\Materi Ngajar\Image\biner3.bmp'));
% baca citra ‘biner3.bmp’, dan kon
versi menjadi citra biner
B=[1 1 1; 1 1 1; 1 1 1];
% Set matriks B dengan elemen 8 connectivity
figure(1), imshow(f);
% tampilkan citra biner f
[N,M] = size(f);
% baca ukuran citra f
[I,J] = size(B);
% baca ukuran matriks B
I=floor(I/2);
J=floor(J/2);
for n = I+1 : N-I,
% loop proses baris citra
for m = J+1 : M-J,
% loop proses kolom citra
dilasi=0;
% Inisalisasi nilai dilasi
for i= -I:I
% loop proses dilasi
for j= -J:J
bit_dilasi= bitand(B(I+1+i,J+1+j),f(n+i,m+j)); % opeasi logika AND
dilasi= bitor(dilasi,bit_dilasi);
% operasi logika OR
end
end
Citra_dilasi(n,m) = dilasi; % simpan hasil dilasi kedalam matriks citra_dilasi
end
end
figure(2), imshow((Citra_dilasi)); % tampilkan citra hasil dilasi
Citra_dilasi1 = imdilate(f,B);
% Citra dilasi menggunakan fungsi dilasi pada Matlab
figure(3), imshow(Citra_dilasi1);
% tampilkan citra hasil dilasi.
Operasi Erosi
Operasi erosi mempunyai efek memperkecil luas permukaan suatu area atau objek.
Area atau objek yang dimaksud adalah yang memiliki intersitas putih. Operasi ini
dirumuskan seperti berikut (Gonzalez & Woods, 2002).
A  B = 𝑧| 𝐵
𝑧
𝐴
Adapun Burger & Burge (2008) mendefinisikan erosi sebagai berikut:
A  B = 𝑝 ∈ 𝑍 2 | (𝑎 + 𝑏) ∈ 𝐼, 𝑢𝑛𝑡𝑢𝑘 𝑠𝑒𝑡𝑖𝑎𝑝 𝑏 ∈ 𝐵
Toolbox di MATLAB:
>> A2 = imerode(A, B)
(a) himpunan obyek; (b) strel +; (c) erosi a oleh b; (d) strel vertikal; (e) e
rosi a oleh d
Contoh visualisasi operasi erosi
Hanya ini yang cocok dengan
elemen penstruktur
A
B
AB
CONTOH EROSI
S
= {(0,0),(0,1),(1,0)}
A = {(0,0),(0,1),(0,2),
(1,0),(1,1),(1,2),
(2,0),(2,1),(2,2)}
Posisi poros
((x,y) Є A )
D
S
A
Sxy
(0,0)
{(0,0),(0,1),(1,0)}
(0,1)
{(0,1),(0,2),(1,1)}
(0,2)
{(0,2),(0,3),(1,2)
}
......
......
(2,2)
{(2,2),(2,3),(3,2)
}
D
%program erosi.m
clear all;
% kosongkan semua variabel dalam sistim memori
f=im2bw(imread('D:\Materi Ngajar\Image\biner3.bmp'));
% baca citra ‘biner3.bmp’,konvers
i ke citra biner
B=[1 1 1; 1 1 1; 1 1 1];
% Set matriks B dengan elemen 8 connectivity
figure(1), imshow(f);
% tampilkan citra biner f
[N,M] = size(f);
% baca ukuran citra f
[I,J] = size(B);
% baca ukuran matriks B
I=floor(I/2);
J=floor(J/2);
for n = I+1 : N-I,
% loop proses baris citra
for m = J+1 : M-J,
% loop proses kolom citra
erosi=1;
% Inisalisasi nilai erosi
for i= -I:I
% loop proses erosi
for j= -J:J
bit_erosi= bitand(B(I+1+i,J+1+j),f(n+i,m+j));
% opeasi logika AND
erosi= bitand(erosi,bit_erosi);
% operasi logika AND
end
end
Citra_erosi(n,m) = erosi;
% simpan hasil erosi kedalam matriks citra_erosi
end
end
figure(2), imshow((Citra_erosi));
% tampilkan citra hasil erosi
Citra_erosi1 = imerode (f,B);
% Citra erosi menggunakan fungsi erosi pada Matlab
figure(3), imshow(Citra_erosi1);
% tampilkan citra hasil erosi.
Operasi Opening
■ Operasi opening adalah operasi erosi yang diikuti dengan dilasi dengan
menggunakan elemen penstruktur yang sama. Operasi ini berguna
untuk 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
Contoh Opening
Gambar menunjukkan bahwa operasi erosi
membuat objek mengecil dan bahkan ada
yang hilang. Adapun operasi opening me
mbuat ukuran objek relatif tetap sama, wal
aupun juga menghilangkan objek yang ber
ukuran kecil (kurus). Namun, perlu diketa
hui, operasi opening membuat penghalusa
n di bagian tepi. Perhatikan, ujung segitiga
tidak tajam setelah dikenai operasi openin
g. Sebagai pembanding, Gambar (d) menu
njukkan hasil penggunaan operasi closing,
Perbandingan operasi erosi, opening, dan closing
%program opening.m
clear all;
% kosongkan semua variabel dalam sistim memori
f=im2bw(imread('D:\Materi Ngajar\Image\biner4.png'));
% baca citra ‘Image.bmp’,konvers
i ke citra biner
K=5;
% Set ukuran matriks B
B=ones(K,K);
% Set matriks B KxK dengan elemen K*K - 1 connectivity
figure(1), imshow(f);
% tampilkan citra biner f
[N,M] = size(f);
% baca ukuran citra f
[I,J] = size(B);
% baca ukuran matriks B
I=floor(I/2);
J=floor(J/2);
for n = I+1 : N-I,
% loop proses baris citra
for m = J+1 : M-J,
% loop proses kolom citra
erosi=1;
% Inisalisasi nilai erosi
for i= -I:I
% loop proses erosi
for j= -J:J
bit_erosi= bitand(B(I+1+i,J+1+j),f(n+i,m+j)); % opeasi logika AND
erosi= bitand(erosi,bit_erosi);
% operasi logika AND
end
end
Citra_erosi(n,m) = erosi;
% simpan hasil erosi kedalam matriks citra_erosi
end
end
% akhir proses erosi
[N,M] = size(Citra_erosi);
% baca ukuran citra hasil erosi
for n = I+1 : N-I,
% mulai proses dilasi
for m = J+1 : M-J,
dilasi=0;
for i=-I:I
for j=-J:J
bit_dilasi= bitand(B(I+1+i,J+1+j),Citra_erosi(n+i,m+j));
%
opeasi logika AND
dilasi= bitor(dilasi,bit_dilasi);
%
opeasi logika OR
end
end
Citra_opening(n,m) = dilasi;
end
end
% akhir proses dilasi
figure(2), imshow((Citra_opening));
% tampilkan citra hasil opening
Citra_opening1 =
imopen(f,B);
% hirung citra opening menggunakan Ma
tlab
figure(3), imshow((Citra_opening1));
% tampilkan citra hasil opening Matla
b
Operasi Closing
■ Operasi closing berguna untuk menghaluskan kontur dan
menghilangkan lubang-lubang kecil. Definisinya seperti berikut:
A  B = (A  B)  B
■ Jadi, operasi closing dilaksanakan dengan melakukan operasi dilasi
terlebih dahulu dan kemudian diikuti dengan operasi erosi.
Contoh Closing
%program closing.m
clear all;
% kosongkan semua variabel dalam sistim memori
f=im2bw(imread('D:\Materi Ngajar\Image\biner4.png'));
% baca citra ‘Image.bmp’,konvers
i ke citra biner
K=5;
% Set ukuran matriks B
B=ones(K,K);
% Set matriks B KxK dengan elemen K*K - 1 connectivity
figure(1), imshow(f);
% tampilkan citra biner f
[N,M] = size(f);
% baca ukuran citra f
[I,J] = size(B);
% baca ukuran matriks B
I=floor(I/2);
J=floor(J/2);
for n = I+1 : N-I,
% loop proses baris citra
for m = J+1 : M-J,
% loop proses kolom citra
dilasi=0;
% Inisalisasi nilai dilasi
for i= -I:I
% loop proses dilasi
for j= -J:J
bit_dilasi= bitand(B(I+1+i,J+1+j),f(n+i,m+j));
% opeasi logika AND
dilasi= bitor(dilasi,bit_dilasi);
% operasi logika OR
end
end
Citra_dilasi(n,m) = dilasi;
% simpan hasil dilasi kedalam matriks citra_dilas
i
end
end
% proses dilasi selesai
[N,M] = size(Citra_dilasi);
% baca ukuran citra hasil dilasi
for n = I+1 : N-I,
% mulai proses erosi
for m = J+1 : M-J,
erosi=1;
for i=-I:I
for j=-J:J
bit_erosi= bitand(B(I+1+i,J+1+j),Citra_dilasi(n+i,m+j));
% ope
asi logika AND
erosi= bitand(erosi,bit_erosi);
% ope
asi logika AND
end
end
Citra_closing(n,m) = erosi;
end
end
% proses erosi selesai
figure(2), imshow((Citra_closing));
% tampilkan citra hasil closing
Citra_closing1 = imclose(f,B);
% hitung citra closing menggunakan Matl
ab
figure(3), imshow(Citra_closing1);
% tampilkan citra hasil closing Matlab
■
Latihan
■
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)}
■
gambarkan bentuk citranya
■
Berapa hasil operasi berikut?
AB
AB
A–B
B-A
■
■
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?
•
Jelaskan kegunaan operasi dilasi.
■
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
Perlihatkan hasilnya jika dikenai operasi dila
si dengan elemen penstruktur seperti berikut?
1
Jelaskan bahwa hasil operasi erosi sebenarnya menyatakan letak elemen penstruktur di dalam citra yang
dikenai operasi tersebut.
•
1
Jelaskan hubungan operasi berikut terhadap operasi dilasi dan erosi:
(a) operasi opening
(b) operasi closing
Download