b75cc sessi 7 morfologi untuk pengolahan citra

MORFOLOGI UNTUK PENGOLA
HAN CITRA
STMIK PPKIA Pradnya Paramita
Sigit Setyowibowo, ST., MMSI

Pengertian Operasi Morfologi

■Operasi morfologi merupakan operasi yang umum dik
enakan pada citra biner (hitam-putih) untuk menguba
h struktur bentuk objek yang terkandung dalam citra .
■ Operasi morfologi :


Erosi (Erosion)



Operasi Gabungan (Compound Operations)




Dilasi (Dilation)

■ 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 dikenai operasi morfologi, sedangkan larik kedua dinamakan sebagai kernel atau structuring element (strel) (Shih, 2009).

Operasi strel terhadap citra

Teori Himpunan

■ Misalkan,
terdapat himpunan A yang berada di dalam bidang Z 2 (berdimensi dua). Apa
 
bila 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 ditul
iskan fakta berikut:

■ Perlu diketahui, setiap elemen hanya dapat menjadi anggota himpunan satu kali. De
ngan 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 angg
ota himpunan A, dikatakan bahwa B adalah subhimpunan A. Notasi yang biasa digu
nakan untuk kepentingan ini:
 

B  A

Operasi union

■ Union himpunan A dan B,dinyatakan dengan C = A∪B, adalah hi
mpunan dari semua elemen anggota A, B, atau keduanya

Operasi interseksi/irisan

■ Irisan A dan B, dinyatakan dengan C = A  B adalah himpunan dari semua elem
en yang merupakan anggota A dan B.

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 menukarka
n warna hitam dan putih

Operasi selisih
Operasi selisih dua himpunan dapat ditulis seperti berikut:
A – B = { w | w  A, w  B } = A  Bc

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 ditu
njukkan pada Gambar . Bayangan cermin 2-D terjadi melalui pencerminan pada a
rah x dan dilanjutkan pada arah y. namun, ternyata hasilnya sama dengan pemut
aran di bidang citra 180o

Translasi

 
Translasi
himpunan A terhadap titik z=(z1, z2) disimbolkan dengan (A)z. Definisinya
sebagai berikut:
 

Himpunan A digeser pada arah z1 dan z2 sesuai
dengan nilai z yang diberikan


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 Gamba
r.

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
citra P dan Q
Citra_nor(n,m)=~(xor(P(n,m),Q(n,m))); % operasi NXOR antara setiap pixel
citra 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 ya
ng 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 penggesera
n 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 membuat elemen penstruktur

Contoh strel untuk membuat berbagai bentuk
elemen penstruktur

Efek dilasi dengan hotspot vertikal

Contoh operasi dilasi dengan menggunakan Persamaan diatas dapat dilihat pada Gambar berikut Pa
da 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),

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
konversi 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 o
bjek. Area atau objek yang dimaksud adalah yang memiliki intersitas putih. Op
erasi ini dirumuskan seperti berikut (Gonzalez & Woods, 2002).
 

A  B =
 

Adapun Burger & Burge (2008) mendefinisikan erosi sebagai berikut:
 

A  B =

Toolbox di MATLAB:
>> A2 = imerode(A, B)

(a) himpunan obyek; (b) strel +; (c) erosi a oleh b; (d) strel
vertikal; (e) erosi a oleh d

Contoh visualisasi operasi erosi

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

D
S

Posisi
poros
((x,y) Є A
)

Sxy

(0,0)

{(0,0),(0,1),
(1,0)}

(0,1)

{(0,1),(0,2),
(1,1)}

(0,2)

A

{(0,2),(0,3),
(1,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’,konversi
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 i
ni berguna untuk menghaluskan kontur objek dan menghilangk
an seluruh piksel di area yang terlalu kecil untuk ditempati oleh
elemen penstruktur. Dengan kata lain, semua struktur latardep
an yang berukuran lebih kecil daripada elemen penstruktur aka
n 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
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 (d) menunjukkan 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’,konversi
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
Matlab
figure(3), imshow((Citra_opening1));
% tampilkan citra hasil opening Matlab

Operasi Closing

■ Operasi closing berguna untuk menghaluskan kontur dan meng
hilangkan lubang-lubang kecil. Definisinya seperti berikut:
 

A  B = (A  B)  B

■ Jadi, operasi closing dilaksanakan dengan melakukan operasi d
ilasi 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’,konversi
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_dilasi
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));
%
opeasi logika AND
erosi= bitand(erosi,bit_erosi);
%
opeasi 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 Matlab
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:

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


Jelaskan kegunaan operasi dilasi.

■ Perhatikan citra berikut:

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


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



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