340 likes | 711 Views
Morfologi Citra. Computer Vision Materi 5. Eko Prasetyo Teknik Informatika UBHARA 2012. Konsep Morfologi. Kata morphology cabang ilmu biologi yang memelajari bentuk dan struktur hewan dan tumbuh-tumbuhan . Istilah yang sama - dalam konteks mathematical morphology
E N D
Morfologi Citra Computer Vision Materi 5 EkoPrasetyo TeknikInformatika UBHARA 2012
KonsepMorfologi • Kata morphology cabangilmubiologi yang memelajaribentukdanstrukturhewandantumbuh-tumbuhan. • Istilah yang sama - dalamkonteksmathematical morphology • sebagai tool untukpengekstrakankomponencitra yang bergunadalamrepresentasidandeskripsibentukdaerah, seperti boundaries, skeletons, dan convex hull. • Teknikmorfologijugadigunakanuntuk pre atau post-processing, • sepertimorfologi filtering, thinning dan pruning. • Operasidasardalampemrosesanmorfologiadalah: • DilasidanErosi, • Opening dan Closing
RefleksidanTranslasi • Refleksihimpunan B dinyatakandenganB’ didefinisikandengan: • Jika B adalahsekumpulanpiksel (titik-titik 2-D) yang merepresentasikanobyekdalamcitra, maka B’ adalahsekumpulantitikdalam B yang berkoordinat (x,y) yang telahdigantidengan (-x,-y) • Translasiadalahhimpunan B yang olehtitik z(z1, z2) dinyatakanoleh (B)z, didefinisikandengan: • (B)z = {c|c = b + z. untuk b B} • Jika B adalahhimpunanpiksel yang merepresentasikanobyekdalamcitra, maka (B)zadalahhimpunantitik-titikdalam B dimanakoordinat (x,y) telahdigantidengan (x + z1, y + z2)
Structure Element (STREL) • Streladalahhimpunan sub-image kecil yang digunakanuntukmeneliticitradalampembelajaranpropertinya. • Untukelemen yang menjadianggotastrel, origin strel, jugaharusditetapkan. • Origin daristrelditandaidengantandatitikhitam. • Jikatidakadatandatitikhitammakadiasumsikan origin beradadipusatsimetri • Origin tidakharusberadadipusat, jugabisaberadadipinggirstrel. Contohstrel
Dilasi • Prosesdalamdilasiadalah “penumbuhan” atau “penebalan” dalamcitrabiner. • Jika A dan B adalahanggota Z2, dilasiantara A dan B dinyatakan A B dandidefinisikandengan: • Persamaaninididasarkanpadaperefleksian B terhadaporiginnya, danpenggeseranrefleksioleh z. • Dilasi A oleh B adalahhimpunansemua displacement z, sebagaimana B dan A overlap oleh paling sedikitsatuelemen. • Dilasiinisangatbergunaketikaditerapkandalamobyek-obyek yang terputusdikarenakanhasilpengambilancitra yang tergangguoleh noise, kerusakanobyekfisik yang dijadikancitra digital, ataudisebabkanresolusi yang jelek, • misalnyatekspadakertas yang sudahagakrusaksehinggabentukhurufnyaterputus, dansebagainya
Toolbox MATLAB untukmembuatstrel: SE = strel(tipestrel, parameter) Cara pembuatanstrel >> SE1 = [0 1 0; 1 1 1; 0 1 0]; >> SE2 = [1 0 1; 0 1 0; 1 0 1]; >> SE3 = [1 1 1; 1 1 1; 1 1 1]; Dilasicitra f denganstrel SE1 >> j = imdilate(f,SE1); Dilasicitra f denganstrel SE2 >> j = imdilate(f,SE2); Dilasicitra f denganstrel SE3 >> j = imdilate(f,SE3); (a) Himpunanobyek; (b) Strel +; (c) Dilasi a oleh b; (d) Strelvertikal; (e) Dilasi a oleh d
Rectangle Arbitrary Octagon Periodicline Pair Diamond Square Disk Line
Citra asli Hasildilasidenganstrel: Hasildilasidenganstrel: Hasildilasidenganstrel:
Erosi • Erosimerupakanprosesmengecilkanataumenipiskanobyekcitrabiner • Jika A dan B himpunandalamZ’, erosi A oleh B dinyatakandengan A Ө B, didefinisikansebagai: • A Ө B = {z|(B)z A} • Persamaandiatasmenunjukkanbahwaerosi A oleh B adalahkumpulansemuatitikdimana B ditranslasikanoleh z didalamisi A.
Toolbox di MATLAB: >> A2 = imerode(A, B) (a) himpunanobyek; (b) strel +; (c) erosi a oleh b; (d) strelvertikal; (e) erosi a oleh d
>> SEdis1 = strel('disk',5); >> SEdis2 = strel('disk',10); >> SEdis3 = strel('disk',20); >> g1 = imerode(f, SEdis1); • >> g2 = imerode(f, SEdis2); • >> g3 = imerode(f, SEdis3); Citra asli Erosidenganstrel disk R=5 Erosidenganstrel disk R=10 Erosidenganstrel disk R=20
Opening dan Closing • Opening: • Menghaluskangaris-garisbentukobyek, • Menghilangkanbagian-bagian yang sempit, dan • Menghilangkanpenonjolan-penonjolan yang tipis. • Formula: • A ○ B = (A Ө B) B • Operasi opening A oleh B adalaherosi A oleh B, diikutidengandilasihasiltersebutdengan B • Padananfungsi: • A○ B = {(B)z|(B)z A}
Opening dan Closing • Closing cenderungmenghaluskangaris-garisbentuktetapikebalikandari opening, • Menolakpecahan-pecahansempitdanteluk yang panjangdantipis, • Menghilangkanlubangkecildan • Mengisi gap padagaris-garisbentuk (contour). • Formula: • A ● B = (A B) Ө B • Operasi closing A oleh B adalahdilasi A oleh B, diikutierosihasilnyadengan B.
Toolbox di MATLAB untukoperasi Opening dan Closing: >> A2 = imopen(A, B) >> A2 = imclose(A, B) Citra asli Hasil opening citra a denganstrel disk R=9 >> f = imread('openclose.tif'); >> SE = strel('disk', 9, 0) >> j = imopen(f, SE); >> figure, imshow(j); >> k = imclose(f, SE); >> figure, imshow(k); >> l = imclose(j, SE); >> figure, imshow(l); Hasil closing citra a denganstrel disk R=9 Hasil closing citra b denganstrel disk R=9
Transformasi Hit-or-Miss • Bergunauntukmengidentifikasikonfigurasipikseltertentu, • sepertipiksel foreground yang terisolasi, ataupiksel yang beradadiakhirgarissegmen. • Transformasi hit-or-miss A oleh B dinyatakanoleh A B. • B adalahpasanganstrel B = (B1, B2). • Transformasi hit-or-miss didefinisikandenganduastrelsebagai: • A ⊛ B = (A Ө B1) (Ac Ө B2) Contohpasanganstrel
Contoh Pasanganstrel yang digunakan Toolbox di MATLAB: >> C = bwhitmiss(A, B1, B2) Hasiltransformasi Hit or Miss
Contoh >> f = imread('square.tif'); >> B1 = strel([0 0 0; 1 1 0; 0 1 0]); >> B2 = strel([1 1 1; 0 0 1; 0 0 1]); >> j = bwhitmiss(f, B1, B2); Hasilprosestransformasi hit-or-miss >> f2 = imdilate(f,SE); >> figure, imshow(f2); >> k = bwhitmiss(f2, B1, B2); >> k2 = imdilate(k,SE); >> figure, imshow(k2); Citra asli Hasilprosestransformasi hit-or-miss citra yang sudahterdilasi Hasildilasicitraasli
g = bwmorph(f, operation, n) Toolbox operasimorfologi Operation adalah string yang menetapkanoperasi yang diinginkan, dan n adalah integer positif yang menetapkanjumlah (berapakalinya) operasidiulang. Argumen input n bersifatopsionaldandapatdiabaikanjikaoperasiingindilakukansatu kali. Jikadiberinilai “Inf” (tanpapetik) makaoperasiakandilakukansampaiobyekcitra yang dihasilkanstabil, misalnyapadaoperasi thinning danskeletonization, kestabilanobyekadalahsaatketebalanobyekmenjadisatupiksel.
Boundary Extraction • Boundary himpunan A dinyatakanoleh(A), bisadidapatkandenganpertamamengerosi A oleh B dankemudianmelakukanhimpunanperbedaan (pengurangan) antara A danhasilerosi. • Formula: • (A) = A – (A Ө B) • dimana B adalahstrel yang tepatuntukmengerosi A
Region Filling • Didasarkanpadasejumlahdilasi, komplementasi, daninterseksi. • Dimulaidengansebuahtitik p didalam boundary, tujuannyaadalahuntukmengisisemua region dengannilai 1. • Jikamengikutikonvensibahwasemuatitik non-boundary (background) diberinilai 0, maka p harusdiberinilai 1 untukmemulai. • Prosedurdibawahiniadalahuntukmengisi region dengannilai 1: • Xk = (Xk – 1 B) Ac k = 1, 2, 3, … • dimana X0 = p dan B adalahstrelsimetrik. • Algoritmaberhentipadaiterasilangkahke k jikaXk = Xk – 1. • Himpunan union dari X dan A mengisidaerahisiandan boundary-nya. • Toolbox: • Bentuk 1 : BW2 = imfill(BW,locations) • Bentuk 2 : BW2 = imfill(BW,'holes') • Bentuk 3 : BW2 = imfill(BW)
Toolbox: • Bentuk 1 : BW2 = imfill(BW,locations) • Bentuk 2 : BW2 = imfill(BW,'holes') • Bentuk 3 : BW2 = imfill(BW)
Citra asli Setelahdi region filling >> f = imread(‘ballbearing.tif’); >> j = imfill(f); >> figure, inshow(j);
Thinning (Penipisan) • Penipisanhimpunan A olehstrel B, yang dinyatakandengan A B, dapatdidefinisikandalamtransformasi hit-or-miss denganbentuk: • A B = A (A ⊛ B)c • A B = A – (A ⊛ B) • Prosesnyaadalah: • Menipiskan A olehsatulewatandengan B1, • kemudianmenipiskanhasilnyadengansatulewatan B2, • danseterusnya, sampai A ditipiskandengansatulewatan Bn. • Semuaprosesinidiulangsampaitidakadaperubahan yang terjadi. • Setiappenipisandilewatkandenganmenggunakanpersamaan A B = A (A ⊛ B)c
Citra biner Penipisan 1 kali Penipisan 2 kali Ditipiskansampaistabil >> f = imread('noisy_fingerprint.tif'); >> SE = strel('square',3); >> j = imclose(imopen(f,SE), SE); >> figure, imshow(j); >> k1 = bwmorph(j, 'thin', 1); >> k2 = bwmorph(j, 'thin', 2); >> kInf = bwmorph(j, 'thin', Inf); >> figure, imshow(k1); >> figure, imshow(k2); >> figure, imshow(kInf);
Skeletonization • Skeletonizationadalahcara lain untukmengurangiobyekcitrabinermenjadihimpunankerangkatipis yang menahaninformasipentingmengenaibentukasliobyek >> f = imread('legs_bone.tif'); >> j = bwmorph(f, 'skel', Inf); >> figure, imshow(f); >> figure, imshow(j); Citra biner Hasiloperasi skeleton
Rekonstruksi Citra Biner • Rekonstruksiadalahtransformasimorfologi yang melibatkanduacitradansebuahstrel (sebenarnyaadalahsebuahcitradansebuahstrel). • Citra yang satuadalahmarker, adalahstarting pointuntuktransformasi. • Citra yang lain adalahmask, yang merupakan constrain transformasi. Streldigunakanuntukmendefinisikankonektivitas. • Dalam sub-babini yang digunakanadalah 8-connectivity (default), • yang mengimplikasikanbahwa B adalahmatriks 3 x 3 bernilai 1, denganpusat yang didefinisikandikoordinat (2,2). • Jika g adalah mask dan f adalah marker, rekonstruksi g dari f, dinyatakanRg(f), didefinisikandenganproseduriteratifberikut: • Inisialisasi h1 menjadi marker citra f. • Buatstrel B = ones(3). • Ulangi hk+1 = (hk B) g • sampai hk+1 = hk • Marker f harusmenjadibagiandari g; maka: f g • Toolbox di MATLAB: • out = imreconstruct(marker, mask)
>> i = imread('empat_obyek.tif'); >> figure, imshow(i); >> SE = strel('square',3); >> jmarker = zeros(size(i)); >> jmarker(122:132,123:133) = 1; >> jmarker(175:185,149:159) = 1; >> figure, imshow(jmarker); >> h0 = jmarker2; Citra binerasli marker >> for x = 1:30 h1 = (imdilate(h0,SE)) & i; h0 = h1; end; >> figure, imshow(h1); >> out = imreconstruct(im2bw(jmarker),i); >> figure, imshow(out); Hasiliterasike 50 Hasiliterasike 30 Hasiliterasike 90 Hasilakhirrekonstruksi
Opening denganRekonstruksi • Dalammorfologi opening, • Erosibiasanyamenghilangkanobyekkecil. • Dilasinyacenderungmengembalikanbentukobyek yang tersisa. • Akurasidarirestorasiinitergantungkesamaanantarabentukobyekdenganstrel. • Metodeopening by reconstructionsecarapastimengembalikanbentukobyek yang tersisasetelaherosi. • Opening denganrekonstruksicitra f, menggunakanstrel B, didefinisikansebagaiRf(f Ө B)
>> f = imread('broken_text.tif); >> SE = ones(1,21); >> jerosi = imerode(f, SE); >> figure, imshow(jerosi); Citra aslibiner Hasilerosicitra a denganstrel line ukuran 21 Hasil opening citra a denganstrel line ukuran 21 Hasil opening denganrekonstruksi >> jerodil = imdilate(jerosi, SE); >> figure, imshow(jerodil); >> jopen = imreconstruct(jerosi, i); >> figure, imshow(jopen);
MembersihkanObyek yang menyentuh Border • Aplikasirekonstruksi lain yang bergunaadalahmenghilangkanobyek yang menyentuh border citra. • Kuncidalamaplikasiiniadalahmemilih marker dan mask citra yang tepatuntukmendapatkanefek yang diharapkan. • Digunakancitra original sebagai mask dan marker citra fm, didefinisikansebagai: • Toolbox di MATLAB; • g = imclearborder(f, conn) • dimana f adalahcitra input dan g adalahhasilnya. • Nilaiuntukconndapatdiberinilai 4 atau 8 (default). • Fungsiinimenekanstruktur yang lebihterangdaripadasekitarnyadan yang terhubungkecitra. • Input f bolehcitra grayscale ataubiner. • Citra output adalahcitra grayscale ataubinersesuaidenganinputnya
>> j = imclearborder(f,8); >> figure, imshow(j); Citra aslibiner Obyek yang menyentuh border Hasilrekonstruksicitraasli
To Be Continued … Materi 6 – Segmentasi Citra ANY QUESTION ?