MORFOLOGI UNTUK PENGOLA
HAN CITRA
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) Dilasi (Dilation)
Operasi Gabungan (Compound Operations)
■ Beberapa manfaat dari aplikasi morfologi adalah sebagai berikut. –
Memisahkan objek yang saling berhimpitan.
manfaat dari aplikasi morfologi
Remove Noise
Small Object
manfaat dari aplikasi morfologi
Inti operasi morfologi melibatkan dua larik piksel. Larik pertama berupa citra
yang akan dikenai operasi morfologi, sedangkan larik kedua dinamakan
seba-gai 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=(a
1, a
2)
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:
■
Union himpunan A dan B,dinyatakan dengan C = A∪B, adalah hi
mpunan dari semua elemen anggota A, B, atau keduanya
■
Irisan A dan B, dinyatakan dengan
C = A
B
adalah himpunan dari semua elem
en yang merupakan anggota A dan B.
■
Komplemen himpunan A adalah himpunan elemen yang bukan anggota A
A
c=
{
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 dua himpunan dapat ditulis seperti berikut:
A – B =
{
w | w
A, w
B
}
= A
B
cContoh menunjukkan bahwa A – B
B – A.
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 180
o■
Translasi himpunan A terhadap titik z=(z
1, z
2) disimbolkan dengan (A)
z. Definisinya
sebagai berikut:
■
Contoh translasi satu piksel
ke kanan dan
dua piksel ke bawah
Translasi
Operasi Nalar
■ Berbagai efek operasi AND, OR, NOT, XOR, dan NAND ditunjukkan pada Gamba
r.
%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
%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
%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
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.
20
Disk
Diamond
Arbitrary
Line
Octagon
Pair
Periodicline
Rectangle
Toolbox MATLAB untuk membuat strel: SE = strel(tipestrel, parameter)
Tipe
Format fungsi
Arbitrary
SE = strel(‘arbitrary’,
NHOOD)
Diamond
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)
Perlu diketahui, fungsi
strel
memberikan berbagai pilihan dalam
mem-buat elemen penstruktur
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) }
CONTOH DILASI
S
A
D
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
%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
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
=
(a) himpunan obyek; (b) strel +; (c) erosi a oleh b; (d) strel
vertikal; (e) erosi a oleh d
Toolbox di MATLAB:
CONTOH EROSI
D
S
A
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
)
S
xy(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)
}
%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
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:
Perbandingan operasi erosi,
opening
, dan
closing
Gambar menunjukkan bahwa operasi erosi
membuat objek mengecil dan bahkan ada
yang hilang. Adapun operasi
opening
%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
[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
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
%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
[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
Mat-lab
■ 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?
■ Perhatikan citra berikut:
Perlihatkan hasilnya jika dikenai operasi
di-lasi 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