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