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: BA 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=AB 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 AB 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 AB 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? AB AB 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