OPERASI SEGMENTASI DAN MORFOLOGI Mahasiswa memahami dan mampu menganilsa cara kerja teknik Image Segmentasi CS 3214
SUB BAB Pengantar Segmentasi Teknik Segmentasi Thresholding, Region Growing, Split dan Merge CS 3214
Segmentasi Citra Proses untuk memisahkan citra menjadi bagian-bagian pembentuknya (region) Merupakan fase penting dalam analisis citra otomatis pengenalan objek Pendekatan algoritma segmentasi: Berdasar discontinuity perubahan warna mendadak deteksi titik, garis, dan tepi Berdasar similarity Pengelompokan berdasar distribusi properti pixel (warna), contoh: thresholding Mencari region secara langsung berdasar ‘persamaan’ karakteristik suatu area, contoh: region growing, split & merge CS 3214
Thresholding Asumsi: antar objek yang akan dipisahkan memiliki intensitas warna yang berlainan masing-masing objek memiliki warna yang hampir seragam Operasi: menempatkan satu atau lebih threshold pada sumbu datar histogram untuk memisahkan kelompok warna pixel yang diduga sebagai penyusun objek CS 3214
Contoh thresholding dgn g(x,y)=konstanta CS 3214
Contoh thresholding dgn g(x,y)=rata-rata warna per cluster CS 3214
Jenis threshold Global T hanya tergantung dari f(x,y) f(x,y): gray level pada titik (x,y) p(x,y): properti lokal dari titik (x,y); misal: gray level rata-rata dari area ketetanggaan yang berpusat di (x,y) Global T hanya tergantung dari f(x,y) Local T dipengaruhi oleh f(x,y) dan p(x,y) Dynamic T tergantung dari koordinat spasial titik (x,y) CS 3214
Kelemahan thresholding Penentuan nilai threshold yang tepat Bermasalah jika kemunculan tiap warna dalam citra cenderung sama tidak bisa diprediksi batas antar objek CS 3214
Pendekatan lain dalam proses segmentasi Segmentasi berorientasi daerah (region) Jika R adalah daerah keseluruhan citra segmentasi membagi R menjadi R1, R2, …, Rn sedemikian sehingga tercapai syarat segmentasi: CS 3214
Region Growing Prosedur yang mengelompokkan pixel atau sub-region menjadi region yang lebih besar Pendekatan paling sederhana: pixel aggregation Mulai dengan sekumpulan titik ‘benih’ (seed) Dari titik-titik tsb region diperluas dengan menambahkan titik-titik tetangganya yang memiliki properti yang sama (misal: gray level, tekstur, warna) Jika tidak ada lagi titik tetangga yang dapat ditambahkan lagi, maka proses untuk region tersebut dihentikan CS 3214
Ilustrasi CS 3214
Masalah dg region growing Penentuan lokasi seeds yang tepat Tergantung aplikasi Misal: warna yang sering muncul, warna terang dll Penentuan properti yang tepat untuk mengelompokkan titik menjadi region Tergantung masalah dan data citra yang tersedia Misal: intensitas, tekstur, data multispektral dll Kondisi penghenti Dasar: jika tidak ada lagi titik tetangga yang memenuhi syarat Tambahan: ukuran region, bentuk dll CS 3214
Split & Merge Membagi citra menjadi sekumpulan region acak yang disjoin kemudian menggabungkan atau kembali membaginya hingga terpenuhi syarat segmentasi (a) – (e) Algoritma bersifat rekursif Memanfaatkan quadtree CS 3214
Ilustrasi CS 3214
Algoritma rekursif Bagi (split) setiap region Ri menjadi 4 quadran disjoin jika P(Ri)=FALSE Gabung (merge) setiap region Rj dg Rk jika P(Rj Rk)=TRUE Berhenti jika tidak ada split maupun merge yang bisa dilakukan CS 3214
Contoh Objek tunggal dg intensitas warna konstan Intensitas latar belakang konstan P(Ri)=TRUE jika semua pixel dalam Ri memiliki intensitas warna yang sama CS 3214
Aplikasi segmentasi: magic wand Fakultas Informatika IT Telkom CS 3214
TERIMA KASIH CS 3214
Pengertian Operasi Morfologi Operasi morfologi merupakan operasi yang umum dikenakan pada citra biner (hitam-putih) mengubah struktur bentuk objek yang terkandung dalam citra CS 3214
Contoh aplikasi morfologi citra Membentuk filter spasial. Memperoleh skeleton (rangka) objek. Menentukan letak objek di dalam citra. Memperoleh bentuk struktur objek
Tulang daun dapat dianggap sebagai bagian daun melalui morfologi CS 3214
Daun-daun yang bersinggungan dapat dipisahkan melalui morfologi, yang memperkecil ukurannya CS 3214
Operasi morfologi melibatkan dua larik piksel Larik pertama berupa citra yang akan dikenai operasi morfologi, Larik kedua dinamakan sebagai kernel atau structuring element (elemen penstruktur) (Shih, 2009). CS 3214
Contoh beberapa kernel CS 3214
Operasi kernel terhadap citra CS 3214
Operasi yang mendasari morfologi dilasi Erosi opening dan closing CS 3214
Matematika yang Melatarbelakangi morfologi citra CS 3214
CS 3214
…………………..2. Operasi Nalar didasarkan pada aljabar Boolean CS 3214
CS 3214
Contoh : % NALAR Contoh penggunaan NOT, AND, OR, XOR, dan % kombinasinya. Lingkaran = imread('C:\Image\lingkaran.png'); Persegi = imread('C:\Image\persegi.png'); close all; Citra1 = Lingkaran; subplot(3,3,1); imshow(Citra1, [0 1]); title('A'); Citra2 = Persegi; subplot(3,3,2); imshow(Citra2, [0 1]); title('B');
Citra3 = not(Lingkaran); subplot(3,3,3); imshow(Citra3, [0 1]); title('not(A)'); Citra4 = and(Lingkaran, Persegi); subplot(3,3,4); imshow(Citra4, [0 1]); title('and(A, B)'); Citra5 = xor(Lingkaran, Persegi); subplot(3,3,5); imshow(Citra5, [0 1]); title('xor(A, B)'); Citra6 = or(Lingkaran, Persegi); subplot(3,3,6); imshow(Citra6, [0 1]); title('or(A, B)'); Citra7 = not(and(Lingkaran, Persegi)); subplot(3,3,7); imshow(Citra7, [0 1]); title('not(and(A, B))'); Citra8 = not(xor(Lingkaran, Persegi)); subplot(3,3,8); imshow(Citra8, [0 1]); title('not(xor(A, B))'); Citra9 = not(or(Lingkaran, Persegi)); subplot(3,3,9); imshow(Citra9, [0 1]); title('not(or(A, B))');
1. Operasi Dilasi
A B = { (2,2) + (-1, 0) , (2,2) + (0, 0) + (2,2) + (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,3) } = { (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,3) } CS 3214
CS 3214
CS 3214
function G = dilasi(F, H, hotx, hoty) % DILASI Berguna untuk melaksanakan operasi dilasi. % Masukan: % F = citra yang akan dikenai dilasi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2); end Xh = []; Yh = []; jum_anggota = 0; % Menentukan koordinat piksel bernilai 1 pada H for baris = 1 : th for kolom = 1 : lh if H(baris, kolom) == 1 jum_anggota = jum_anggota + 1; Xh(jum_anggota) = -hotx + kolom; Yh(jum_anggota) = -hoty + baris; G = zeros(tf, lf); % Nolkan semua pada hasil dilasi % Memproses dilasi for baris = 1 : tf for kolom = 1 : lf for indeks = 1 : jum_anggota if F(baris, kolom) == 1 xpos = kolom + Xh(indeks); ypos = baris + Yh(indeks); if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) G(ypos, xpos) = 1; CS 3214
>> F = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0]; >> H = [0 1 0; 1 1 1; 0 1 0]; >> G = dilasi(F,H) G = 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 >> G = dilasi(F,H, 2, 1) >> close all; >> Bravo = imread('bravo.png'); >> BW = im2bw(Bravo, 0.5); >> H = ones(4); >> imshow(dilasi(BW, H)); CS 3214
CS 3214
Operasi Erosi CS 3214
Operasi erosi bersifat komutatif. Artinya, A B = B A Selain itu, operasi erosi bersifat asosiatif. Artinya, (A B) C = A (B C)
CS 3214 function G = erosi(F, H, hotx, hoty) % EROSI Berguna untuk melaksanakan operasi erosi. % Masukan: % F = citra yang akan dikenai dilasi % H = elemen pentruksur % (hy, hx) koordinat pusat piksel [th, lh]=size(H); [tf, lf]=size(F); if nargin < 3 hotx = round(lh/2); hoty = round(th/2); end Xh = []; Yh = []; jum_anggota = 0; % Menentukan koordinat piksel bernilai 1 pada H for baris = 1 : th for kolom = 1 : lh if H(baris, kolom) == 1 jum_anggota = jum_anggota + 1; Xh(jum_anggota) = -hotx + kolom; Yh(jum_anggota) = -hoty + baris; G = zeros(tf, lf); % Nolkan semua pada hasil erosi % Memproses erosi for baris = 1 : tf for kolom = 1 : lf cocok = true; for indeks = 1 : jum_anggota xpos = kolom + Xh(indeks); ypos = baris + Yh(indeks); if (xpos >= 1) && (xpos <= lf) && ... (ypos >= 1) && (ypos <= tf) if F(ypos, xpos) ~= 1 cocok = false; break; else if cocok G(baris, kolom) = 1; CS 3214
>> Daun = imread('dedaunan.png'); >> BW = im2bw(Daun, 0.1); >> H = ones(4); >> G = erosi(BW, H); >> imshow(G, [0 1]) CS 3214
Contoh penggunaan fungsi erosi dapat dilihat berikut : 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0]; H = [0 1 0 0 1 0 0 1 0]; G = erosi(F, H)
CS 3214
>> Img = imread('C:\Image\daun_gray.png'); Operasi erosi dapat dimanfaatkan untuk memperoleh tepi objek. Sebagai contoh, kode berikut dapat dicoba: >> Img = imread('C:\Image\daun_gray.png'); >> BW = im2bw(Img, 0.65); >> BW = not(BW); …… perintah komplemen >> imshow(BW); ATAU >> H = ones(5); >> G = erosi(BW, H); >> Ap = BW - G; >> imshow(Ap); Ap = A – (A B) CS 3214
Bentuk dan Ukuran Elemen Penstruktur Bentuk yang umum digunakan pada operasi morfologi adalah cakram atau lingkaran. Efek yang diberikan merata pada segala arah CS 3214
ukuran elemen penstruktur menentukan hasil operasi dilasi. Selain ukuran, bentuk elemen penstruktur juga menentukan hasil operasi morfologi. Bentuk yang umum digunakan pada operasi morfologi adalah cakram atau lingkaran. Efek yang diberikan merata pada segala arah
CS 3214
Memperoleh elemen penstruktur >> strel('disk', 8) >> H = getnhood(strel('disk', 8)) Dengan cara seperti itu, H dapat digunakan pada fungsi erosi atau dilasi. Contoh: >> G=erosi(BW, H); >> imshow(G, [0 1]); >> CS 3214
Contoh strel untuk membuat berbagai bentuk elemen penstruktur Penentu Bentuk Contoh ‘disk’ (berbentuk cakaram) strel(‘disk’, 4) radius 4 ‘diamond’ (berbentuk belah ketupat) strel(‘diamond’, 4) radius 4 ‘line’ (berbentuk garis) strel(‘line’, 3, 0) panjang 3 dan sudut 0 derajat (datar) strel(‘line’, 3, 45) panjang 3 dan sudut 45 derajat (datar) ‘octagon’ (berbentuk segi delapan) strel(‘octagon’, 6) Argumen kedua harus kelipatan 3 ‘rectangle’ (berbentuk persegi panjang) strel(‘rectangle’, [4 2]) 4 baris 2 kolom ‘square’ (berbentuk bujur sangkar) strel(‘square’, 4) bujur sangkar 4 x 4 CS 3214
>> Img = imread('C:\Image\struktur.png'); Octave dan MATLAB mendukung fungsi untuk kepentingan dilasi bernama imdilate dan untuk erosi bernama erode. Contoh penggunaannya seperti berikut: >> Img = imread('C:\Image\struktur.png'); >> BW = im2bw(Img, 0.1); >> H = ones(11,11); >> H(1,1)=0;H(1,2)=0;H(2,1)=0; >> H(10,1)=0;H(10,2)=0;H(11,1)=0; >> H(1,10)=0;H(1,11)=0;H(2,11)=0; >> H(10,11)=0;H(11,10)=0;H(11,11)=0; >> G = imerode(BW,H); >> imshow(G, [0 1]); Fakultas Informatika IT Telkom CS 3214
3. Operasi Opening Operasi opening adalah operasi erosi yang diikuti dengan dilasi dengan menggunakan elemen penstruktur yang sama berguna untuk menghaluskan kontur objek dan menghilangkan seluruh piksel di area yang terlalu kecil untuk ditempati oleh elemen penstruktur. CS 3214
Definisi operasi opening seperti berikut: A B = (A B) B A B = (A B) B Contoh efek opening dapat diperoleh dengan memberikan perintah berikut: >> Img = imread('C:\Image\struktur.png'); >>BW = im2bw(Img, 0.1); CS 3214
>> Img = imread('struktur.png'); >> BW = im2bw(Img, 0.1); >> H = [ 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 ]; >> G = dilasi(BW, H); >> M = erosi(G, H); >> imshow(M,[0 1]) CS 3214
CS 3214
filter lolos-rendah (low-pass): A Bh; Operasi opening sering dikatakan sebagai idempotent. Artinya, jika suatu citra telah dikenai operasi opening, pengenaan opening dengan elemen penstruktur yang sama tidak membawa efek apapun. Sifat ini dapat dituliskan secara matematis seperti berikut: (A B) B = (A B) Operator opening dapat dimanfaatkan sebagai filter lolos-rendah, filter lolos-tinggi, maupun sebagai tapis lolos-bidang apabila elemen penstruktur yang digunakan berupa cakram (Shih, 2009). filter lolos-rendah (low-pass): A Bh; filter lolos-tinggi (high-pass): A – (A Bh); filter lolos-bidang (band-pass): (A Bh1)- (A Bh2), dengan diameter Bh1 < Bh2. CS 3214
4. Operasi Closing Operasi closing berguna untuk menghaluskan kontur dan menghilangkan lubang-lubang kecil A B = (A B) B operasi closing dilaksanakan dengan melakukan operasi dilasi terlebih dahulu dan kemudian diikuti dengan operasi erosi. Contoh berikut menunjukkan efek penutupan lubang pada daun: >> Img = imread('C:\Image\daun_gray.png'); >> BW = im2bw(Img, 0.65); >> BW = not(BW); >> imshow(BW, [0 1] ) CS 3214
>> Img = imread('C:\Image\daun_gray.png'); >> BW = im2bw(Img, 0.65); >> BW = not(BW); >> H = ones(5); >> G = dilasi(BW, H); >> M = erosi(G, H); >> imshow(M,[0 1]) CS 3214
Transformasi Hit-or-Miss CS 3214
>> and(erosi(Citra, H1) , erosi(not(Citra), not(H1))) interseksi diperoleh dengan menggunakan AND. Jadi, solusi THM secara lengkap sebagai berikut: >> and(erosi(Citra, H1) , erosi(not(Citra), not(H1))) Untuk keperluan menangani transformasi Hit-or-Miss, Octave dan MATLAB menyediakan fungsi bernama bwhitmiss. Bentuk pemakaiannya: bwhitmiss(Citra, SE1, SE2) Dalam hal ini, argumen pertama menyatakan citra dan SE1 serta SE2 menyatakan elemen penstruktur yang merupakan pola untuk pencarian. CS 3214
% THM Digunakan untuk menangani transformasi Hit-or-Miss function G = thm(F, H) % THM Digunakan untuk menangani transformasi Hit-or-Miss % F adalah citra yang akan dikenai operasi % H adalah elemen penstruktur [tinggi, lebar] = size(H); H1 = H; H2 = not(H1); G = and(erosi(F, H1) , erosi(not(F), H2)); >> Kunci = imread('C:\Image\kunci.png'); >> H = [0 1 1; 0 1 1; 0 1 1]; >> G = thm(Kunci, H); imshow(G) >> H = [ 0 0 0; 1 1 1 ; 1 1 1]; CS 3214
4. Skeleton bentuk unik suatu objek, yang menyerupai rangka suatu objek. Skeleton mempunyai tiga karakteristik seperti berikut (Young, dkk., 1998): ketebalannya 1 piksel, melewati tengah objek, dan menyatakan topologi objek.
Contoh gambar yang tidak dapat dipenuhi oleh skeleton (Sumber: Young, dkk., 1998) Skeleton digunakan untuk representasi dan pengenalan tulisan tangan, pola sidik jari, struktur sel biologis, diagram rangkaian, gambar teknik, rencana jalur robot, dan semacam itu (Shih, 2009). Terkadang istilah skeletonisasi objek disebut sebagai Medial Axis Transform (Myler & Weeks, 1993). CS 3214
thinning(A, B) = A B = A ^ B Salah satu cara untuk mendapatkan skeleton adalah melalui thinning. Thinning (pengurusan) adalah operasi morfologi yang digunakan untuk memperkecil ukuran geometrik objek dengan hasil akhir berupa skeleton atau rangka, dengan definisinya sebagai berikut: thinning(A, B) = A B = A ^ B = A – hit_or_miss(A, B) = A (hit_or_miss)c A adalah citra biner dan B adalah delapan elemen penstruktur B1..Bn. Satu fase perhitungan thinning dilakukan dengan menggunakan delapan elemen penstruktur. CS 3214
Contoh 8 elemen penstruktur untuk melakukan operasi thinning Fase pertama operasi thinning dilakukan sebagai berikut: A B = ((((((((A B1) B2) B3) B4) B5) B6) B7) B8) CS 3214
5, Thickening Thickening (penebalan) adalah operasi yang berkebalikan dengan thinning. Fungsinya adalah memperbesar ukuran geometris objek. Operasi ini didefinisikan sebagai berikut: A B = A hit_or_miss(A, B) CS 3214
A adalah citra biner dan B adalah delapan elemen penstruktur B1..Bn. Satu fase perhitungan thickening dilakukan dengan menggunakan delapan elemen penstruktur. Contoh kedelapan elemen penstruktur disajikan pada Gambar 7.36. Gambar 7.36 Contoh 8 elemen penstruktur untuk operasi thickening Fase pertama operasi thickening dilakukan sebagai berikut: A B = ((((((((A B1) B2) B3) B4) B5) B6) B7) B8) CS 3214
Convex Hull Himpunan konveks (cembung) adalah himpunan yang mencakup semua titik yang menghubungkan dua titik yang berada di dalam himpunan. Adapun convex hull adalah bentuk poligon terkecil yang dapat melingkupi objek. Poligon ini dapat dibayangkan sebagai gelang elastis yang dapat melingkupi tepi objek, diperlukan untuk kepentingan mengenali objek, dengan menghilangkan tepian objek yang cekung. CS 3214
Convex hull diperoleh dengan melibatkan transformasi Hit_or_Miss (THM) dengan elemen-elemen penstruktur yang dirotasi sebesar 90o. Contoh elemen penstruktur ditunjukkan pada Gambar 7.38 CS 3214
Proses pembentukan convex hull