Morfologi Citra Pengolahan Citra Digital Materi 6 Eko

  • Slides: 34
Download presentation
Morfologi Citra Pengolahan Citra Digital Materi 6 Eko Prasetyo Teknik Informatika Universitas Muhamamdiyah Gresik

Morfologi Citra Pengolahan Citra Digital Materi 6 Eko Prasetyo Teknik Informatika Universitas Muhamamdiyah Gresik 2011

Konsep Morfologi � Kata morphology cabang ilmu biologi yang memelajari bentuk dan struktur hewan

Konsep Morfologi � Kata morphology cabang ilmu biologi yang memelajari bentuk dan struktur hewan dan tumbuhan. � Istilah yang sama - dalam konteks mathematical morphology ◦ sebagai tool untuk pengekstrakan komponen citra yang berguna dalam representasi dan deskripsi bentuk daerah, seperti boundaries, skeletons, dan convex hull. � Teknik morfologi juga digunakan untuk pre atau postprocessing, ◦ seperti morfologi filtering, thinning dan pruning. � Operasi dasar dalam pemrosesan morfologi adalah: ◦ Dilasi dan Erosi, ◦ Opening dan Closing 2

Refleksi dan Translasi � Refleksi himpunan B dinyatakan dengan didefinisikan dengan: ◦ Jika B

Refleksi dan Translasi � Refleksi himpunan B dinyatakan dengan didefinisikan dengan: ◦ Jika B adalah sekumpulan piksel (titik-titik 2 -D) yang merepresentasikan obyek dalam citra, maka adalah sekumpulan titik dalam B yang berkoordinat (x, y) yang telah diganti dengan (x, -y) � Translasi adalah himpunan B yang oleh titik z(z 1, z 2) dinyatakan oleh (B)z, didefinisikan dengan: ◦ (B)z = {c|c = b + z. untuk b B} ◦ Jika B adalah himpunan piksel yang merepresentasikan obyek dalam citra, maka (B)z adalah himpunan titik-titik dalam B di mana koordinat (x, y) telah diganti dengan (x + z 1, y + z 2) 3

Structure Element (STREL) � Strel adalah himpunan sub-image kecil yang digunakan untuk meneliti citra

Structure Element (STREL) � Strel adalah himpunan sub-image kecil yang digunakan untuk meneliti citra dalam pembelajaran propertinya. � Untuk elemen yang menjadi anggota strel, origin strel, juga harus ditetapkan. � Origin dari strel ditandai dengan tanda titik hitam. ◦ Jika tidak ada tanda titik hitam maka diasumsikan origin berada di pusat simetri ◦ Karena origin tidak harus berada di pusat, tetapi juga bisa berada di pinggir strel. Contoh strel 4

Dilasi Proses dalam dilasi adalah “penumbuhan” atau “penebalan” dalam citra biner. � Jika A

Dilasi Proses dalam dilasi adalah “penumbuhan” atau “penebalan” dalam citra biner. � Jika A dan B adalah anggota Z 2, dilasi antara A dan B dinyatakan A B dan didefinisikan dengan: � ◦ Persamaan ini didasarkan pada perefleksian B terhadap originnya, dan penggeseran refleksi oleh z. ◦ Dilasi A oleh B adalah himpunan semua displacement z, sebagaimana B dan A overlap oleh paling sedikit satu elemen. � Dilasi ini sangat berguna ketika diterapkan dalam obyek yang terputus dikarenakan hasil pengambilan citra yang terganggu oleh noise, kerusakan obyek fisik yang dijadikan citra digital, atau disebabkan resolusi yang jelek, ◦ misalnya teks pada kertas yang sudah agak rusak sehingga bentuk hurufnya terputus, dan sebagainya 5

Toolbox MATLAB untuk membuat strel: SE = strel(tipestrel, parameter) Tipe Arbitrary Format fungsi SE

Toolbox MATLAB untuk membuat strel: SE = strel(tipestrel, parameter) Tipe Arbitrary Format fungsi 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) Cara pembuatan periodicline SE =strel >> SE 1 = [0 1 0; 1 1 1; 0 1 0]; strel('periodicline', P, V) >> SE 2 = [1 0 1; 0 1 0; 1 0 1]; rectangle = 1 1 1; 1 1 1]; >> SE 3 = [1 SE 1 1; strel('rectangle', MN) Dilasi citra f dengan strel SE 1 square SE = strel('square', W) >> j = imdilate(f, SE 1); Dilasi citra f dengan strel SE 2 >> j = imdilate(f, SE 2); Dilasi citra f dengan strel SE 3 >> j = imdilate(f, SE 3); (a) Himpunan obyek; (b) Strel +; (c) Dilasi a oleh b; (d) Strel vertikal; (e) Dilasi a oleh d 6

Rectangle Arbitrary Diamond Octagon Pair Periodicline Square Disk Line 7

Rectangle Arbitrary Diamond Octagon Pair Periodicline Square Disk Line 7

Citra asli Hasil dilasi dengan strel: 0 1 1 1 0 Hasil dilasi dengan

Citra asli Hasil dilasi dengan strel: 0 1 1 1 0 Hasil dilasi dengan strel: 1 0 1 0 1 1 1 1 1 8

Erosi �Erosi merupakan proses mengecilkan atau menipiskan obyek citra biner �Jika A dan B

Erosi �Erosi merupakan proses mengecilkan atau menipiskan obyek citra biner �Jika A dan B himpunan dalam Z 2, erosi A oleh B dinyatakan dengan A Ө B, didefinisikan sebagai: ◦ A Ө B = {z|(B)z A} ◦ Persamaan di atas menunjukkan bahwa erosi A oleh B adalah kumpulan semua titik di mana B ditranslasikan oleh z di dalam isi A. 9

Toolbox di MATLAB: >> A 2 = imerode(A, B) (a) himpunan obyek; (b) strel

Toolbox di MATLAB: >> A 2 = imerode(A, B) (a) himpunan obyek; (b) strel +; (c) erosi a oleh b; (d) strel vertikal; (e) erosi a oleh d 10

>> SEdis 1 = strel('disk', 5); >> SEdis 2 = strel('disk', 10); >> SEdis

>> SEdis 1 = strel('disk', 5); >> SEdis 2 = strel('disk', 10); >> SEdis 3 = strel('disk', 20); >> g 1 = imerode(f, SEdis 1); >> g 2 = imerode(f, SEdis 2); >> g 3 = imerode(f, SEdis 3); Citra asli Erosi dengan strel disk R=5 Erosi dengan strel disk R=10 Erosi dengan strel disk R=20 11

Opening dan Closing � Opening: ◦ Menghaluskan garis-garis bentuk obyek, ◦ Menghilangkan bagian-bagian yang

Opening dan Closing � Opening: ◦ Menghaluskan garis-garis bentuk obyek, ◦ Menghilangkan bagian-bagian yang sempit, dan ◦ Menghilangkan penonjolan-penonjolan yang tipis. � Formula: ◦ A ○ B = (A Ө B) B ◦ Operasi opening A oleh B adalah erosi A oleh B, diikuti dengan dilasi hasil tersebut dengan B � Padanan fungsi: ◦ A○ B = {(B)z|(B)z A} 12

Opening dan Closing � Closing cenderung menghaluskan garis-garis bentuk tetapi kebalikan dari opening, ◦

Opening dan Closing � Closing cenderung menghaluskan garis-garis bentuk tetapi kebalikan dari opening, ◦ Menolak pecahan-pecahan sempit dan teluk yang panjang dan tipis, ◦ Menghilangkan lubang kecil dan ◦ Mengisi gap pada garis-garis bentuk (contour). � Formula: ◦ A ● B = (A B) Ө B ◦ Operasi closing A oleh B adalah dilasi A oleh B, diikuti erosi hasilnya dengan B. 13

Toolbox di MATLAB untuk operasi Opening dan Closing: >> A 2 = imopen(A, B)

Toolbox di MATLAB untuk operasi Opening dan Closing: >> A 2 = imopen(A, B) >> A 2 = imclose(A, B) Citra asli Hasil opening citra a dengan strel disk R=9 >> >> Hasil closing citra a dengan strel 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 b dengan strel disk R=9 14

Transformasi Hit-or-Miss � Berguna tertentu, untuk mengidentifikasi konfigurasi piksel ◦ seperti piksel foreground yang

Transformasi Hit-or-Miss � Berguna tertentu, untuk mengidentifikasi konfigurasi piksel ◦ seperti piksel foreground yang terisolasi, atau piksel yang berada di akhir garis segmen. � Transformasi hit-or-miss A oleh B dinyatakan oleh A B. � B adalah pasangan strel B = (B 1, B 2). � Transformasi hit-or-miss didefinisikan dengan dua strel sebagai: ◦ A ⊛ B = (A Ө B 1) (Ac Ө B 2) Contoh pasangan strel 15

Contoh Pasangan strel yang digunakan Toolbox di MATLAB: >> C = bwhitmiss(A, B 1,

Contoh Pasangan strel yang digunakan Toolbox di MATLAB: >> C = bwhitmiss(A, B 1, B 2) Hasil transformasi Hit or Miss 16

Contoh >> >> Citra asli Hasil dilasi citra asli Hasil proses transformasi hitor-miss citra

Contoh >> >> Citra asli Hasil dilasi citra asli Hasil proses transformasi hitor-miss citra yang sudah terdilasi >> >> >> f = imread('square. tif'); B 1 = strel([0 0 0; 1 1 0; 0 1 0]); B 2 = strel([1 1 1; 0 0 1]); j = bwhitmiss(f, B 1, B 2); f 2 = imdilate(f, SE); figure, imshow(f 2); k = bwhitmiss(f 2, B 1, B 2); k 2 = imdilate(k, SE); figure, imshow(k 2); 17

Toolbox operasi morfologig = bwmorph(f, operation, n) Operation Penjelasan bothat “Bottom-hat” operasi yang menggunakan

Toolbox operasi morfologig = bwmorph(f, operation, n) Operation Penjelasan bothat “Bottom-hat” operasi yang menggunakan strel 3 x 3; gunakan imbothat untuk strel yang lain bridge Menghubungkan piksel-piksel yang dipisahkan oleh gap piksel tunggal clean Menghilangkan piksel foreground yang terisolasi close Closing menggunakan strel 3 x 3; gunakan imclose untuk strel yang lain diag Mengisi sekitar piksel foreground yang terhubung secara diagonal dilate Dilasi menggunakan strel 3 x 3; gunakan imdilate untuk strel yang lain erode Erosi menggunakan strel 3 x 3; gunakan imerode untuk strel yang lain fill Mengisi lubang (piksel background di sekitar piksel foreground) piksel tunggal; gunakan imfill untuk mengisi lbang yang lebih besar hbreak Menghilangkan H-connected piksel foreground majority Membuat piksel p piksel foreground jika paling sedikit 5 piksel dalam N 8(p) adalah piksel foreground; jika sebaliknya maka p adalah piksel background open Opening menggunakan strel 3 x 3; gunakan imopen untuk strel yang lain remove Menghilangkan piksel “interior” (piksel foreground yang tidak punya tetangg background shrink Menipiskan obyek dengan tanpa lubang; menipiskan obyek berlubang menjadi ring skel Men-skeleton citra spur Menghilangkan piksel spur thicken Menebalkan obyek tanpa menggabungkan obyek yang tidak terkoneksi Operation adalah string. Menipiskan yang menetapkan operasi diinginkan, danhubungan n adalah integer positif secara yang minimal thin obyek tanpayang lubang menjadi kerangka menetapkan jumlah (berapa kalinya) operasi diulang. Operasi strel 3 ingin x 3; dilakukan gunakan imtophat Argumentophat input n bersifat opsional“top-hat” dan dapatmenggunakan diabaikan jika operasi satu kali. Jikauntuk diberi strel nilai “Inf” (tanpa petik) maka operasi akan yang laindilakukan sampai obyek citra yang dihasilkan stabil, misalnya pada operasi thinning dan skeletonization, kestabilan obyek adalah saat ketebalan obyek menjadi satu piksel. 18

Boundary Extraction himpunan A dinyatakan oleh (A), bisa didapatkan dengan pertama mengerosi A oleh

Boundary Extraction himpunan A dinyatakan oleh (A), bisa didapatkan dengan pertama mengerosi A oleh B dan kemudian melakukan himpunan perbedaan (pengurangan) antara A dan hasil erosi. � Formula: � Boundary ◦ (A) = A – (A Ө B) ◦ di mana B adalah strel yang tepat untuk mengerosi A 19

Region Filling Didasarkan pada sejumlah dilasi, komplementasi, dan interseksi. � Dimulai dengan sebuah titik

Region Filling Didasarkan pada sejumlah dilasi, komplementasi, dan interseksi. � Dimulai dengan sebuah titik p di dalam boundary, tujuannya adalah untuk mengisi semua region dengan nilai 1. � Jika mengikuti konvensi bahwa semua titik non-boundary (background) diberi nilai 0, maka p harus diberi nilai 1 untuk memulai. � Prosedur di bawah ini adalah untuk mengisi region dengan nilai 1: � ◦ Xk = (Xk – 1 B) Ac k = 1, 2, 3, … ◦ di mana X 0 = p dan B adalah strel simetrik. Algoritma berhenti pada iterasi langkah ke k jika Xk = Xk – 1. ◦ Himpunan union dari X dan A mengisi daerah isian dan boundary-nya. � Toolbox: ◦ Bentuk 1 : BW 2 = imfill(BW, locations) ◦ Bentuk 2 : BW 2 = imfill(BW, 'holes') ◦ Bentuk 3 : BW 2 = imfill(BW) 20

Toolbox: Bentuk 1 : BW 2 = imfill(BW, locations) Bentuk 2 : BW 2

Toolbox: Bentuk 1 : BW 2 = imfill(BW, locations) Bentuk 2 : BW 2 = imfill(BW, 'holes') Bentuk 3 : BW 2 = imfill(BW) 21

Citra asli Setelah di region filling >> f = imread(‘ballbearing. tif’); >> j =

Citra asli Setelah di region filling >> f = imread(‘ballbearing. tif’); >> j = imfill(f); >> figure, inshow(j); 22

Thinning (Penipisan) � Penipisan himpunan A oleh strel B, yang dinyatakan dengan A B,

Thinning (Penipisan) � Penipisan himpunan A oleh strel B, yang dinyatakan dengan A B, dapat didefinisikan dalam transformasi hit-or-miss dengan bentuk: ◦ A B = A (A ⊛ B)c ◦ A B = A – (A ⊛ B) � Prosesnya adalah: ◦ Menipiskan A oleh satu lewatan dengan B 1, ◦ kemudian menipiskan hasilnya dengan satu lewatan B 2, ◦ dan seterusnya, sampai A ditipiskan dengan satu lewatan Bn. ◦ Semua proses ini diulang sampai tidak ada perubahan yang terjadi. ◦ Setiap penipisan dilewatkan dengan menggunakan persamaan A B = A (A ⊛ B)c 23

24

24

25

25

Citra biner Penipisan 2 kali >> >> >> Penipisan 1 kali Ditipiskan sampai stabil

Citra biner Penipisan 2 kali >> >> >> Penipisan 1 kali Ditipiskan sampai stabil f = imread('noisy_fingerprint. tif'); SE = strel('square', 3); j = imclose(imopen(f, SE); figure, imshow(j); k 1 = bwmorph(j, 'thin', 1); k 2 = bwmorph(j, 'thin', 2); k. Inf = bwmorph(j, 'thin', Inf); figure, imshow(k 1); figure, imshow(k 2); figure, imshow(k. Inf); 26

Skeletonization � Skeletonization adalah cara lain untuk mengurangi obyek citra biner menjadi himpunan kerangka

Skeletonization � Skeletonization adalah cara lain untuk mengurangi obyek citra biner menjadi himpunan kerangka tipis yang menahan informasi penting mengenai bentuk asli obyek >> >> Citra biner f = imread('legs_bone. tif'); j = bwmorph(f, 'skel', Inf); figure, imshow(j); Hasil operasi skeleton 27

Rekonstruksi Citra Biner � Rekonstruksi adalah transformasi morfologi yang melibatkan dua citra dan sebuah

Rekonstruksi Citra Biner � Rekonstruksi adalah transformasi morfologi yang melibatkan dua citra dan sebuah strel (sebenarnya adalah sebuah citra dan sebuah strel). ◦ Citra yang satu adalah marker, adalah starting point untuk transformasi. ◦ Citra yang lain adalah mask, yang merupakan constrain transformasi. Strel digunakan untuk mendefinisikan konektivitas. � Dalam sub-bab ini yang digunakan adalah 8 -connectivity (default), ◦ yang mengimplikasikan bahwa B adalah matriks 3 x 3 bernilai 1, dengan pusat yang didefinisikan di koordinat (2, 2). � Jika g adalah mask dan f adalah marker, rekonstruksi g dari f, dinyatakan Rg(f), didefinisikan dengan prosedur iteratif berikut: ◦ ◦ Inisialisasi h 1 menjadi marker citra f. Buat strel B = ones(3). Ulangi hk+1 = (hk B) g sampai hk+1 = hk Marker f harus menjadi bagian dari g; maka: f g � Toolbox di MATLAB: � ◦ out = imreconstruct(marker, mask) 28

Citra biner asli Hasil iterasi ke 30 Hasil iterasi ke 90 marker Hasil iterasi

Citra biner asli Hasil iterasi ke 30 Hasil iterasi ke 90 marker Hasil iterasi ke 50 >> >> 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); h 0 = jmarker 2; >> for x = 1: 30 h 1 = (imdilate(h 0, SE)) & i; h 0 = h 1; end; >> figure, imshow(h 1); >> out = imreconstruct(im 2 bw(jmarker), i); >> figure, imshow(out); Hasil akhir rekonstruksi 29

Opening dengan Rekonstruksi �Dalam morfologi opening, ◦ Erosi biasanya menghilangkan obyek kecil. ◦ Dilasinya

Opening dengan Rekonstruksi �Dalam morfologi opening, ◦ Erosi biasanya menghilangkan obyek kecil. ◦ Dilasinya cenderung mengembalikan bentuk obyek yang tersisa. �Bagaimanapun akurasi dari restorasi ini tergantung kesamaan antara bentuk obyek dengan strel. �Metode opening by reconstruction secara pasti mengembalikan bentuk obyek yang tersisa setelah erosi. �Opening dengan rekonstruksi citra f, menggunakan strel B, didefinisikan sebagai Rf(f Ө B) 30

>> f = imread('broken_text. tif); >> SE = ones(1, 21); >> jerosi = imerode(f,

>> f = imread('broken_text. tif); >> SE = ones(1, 21); >> jerosi = imerode(f, SE); >> figure, imshow(jerosi); Citra asli biner Hasil opening citra a dengan strel line ukuran 21 Hasil erosi citra a dengan strel line ukuran 21 Hasil opening dengan rekonstruksi >> jerodil = imdilate(jerosi, SE); >> figure, imshow(jerodil); >> jopen = imreconstruct(jerosi, i); >> figure, imshow(jopen); 31

Membersihkan Obyek yang menyentuh Border � Aplikasi rekonstruksi lain yang berguna adalah menghilangkan obyek

Membersihkan Obyek yang menyentuh Border � Aplikasi rekonstruksi lain yang berguna adalah menghilangkan obyek yang menyentuh border citra. ◦ Kunci dalam aplikasi ini adalah memilih marker dan mask citra yang tepat untuk mendapatkan efek yang diharapkan. � Digunakan citra original sebagai mask dan marker citra fm, didefinisikan sebagai: � Toolbox di MATLAB; ◦ ◦ g = imclearborder(f, conn) di mana f adalah citra input dan g adalah hasilnya. Nilai untuk conn dapat diberi nilai 4 atau 8 (default). Fungsi ini menekan struktur yang lebih terang daripada sekitarnya dan yang terhubung ke citra. ◦ Input f boleh citra grayscale atau biner. C ◦ itra output adalah citra grayscale atau biner sesuai dengan inputnya 32

>> j = imclearborder(f, 8); >> figure, imshow(j); Citra asli biner Obyek yang menyentuh

>> j = imclearborder(f, 8); >> figure, imshow(j); Citra asli biner Obyek yang menyentuh border Hasil rekonstruksi citra asli 33

To Be Continued … Materi 7 – Segmentasi Citra ANY QUESTION ? 34

To Be Continued … Materi 7 – Segmentasi Citra ANY QUESTION ? 34