Segmentasi Citra Pengolahan Citra Digital Materi 6 Eko

  • Slides: 15
Download presentation
Segmentasi Citra Pengolahan Citra Digital Materi 6 Eko Prasetyo Teknik Informatika UMG-UPN Veteran Jatim

Segmentasi Citra Pengolahan Citra Digital Materi 6 Eko Prasetyo Teknik Informatika UMG-UPN Veteran Jatim 2012

Konsep Segmentasi � Segmentasi membagi citra ke dalam sejumlah region atau obyek. ◦ Level

Konsep Segmentasi � Segmentasi membagi citra ke dalam sejumlah region atau obyek. ◦ Level untuk pembagian tergantung pada masalah yang diselesaikan. � Proses segmentasi berhenti ketika obyek yang diinginkan dalam aplikasi telah terisolasi. ◦ Misal, pemeriksaan otomatis pada rakitan produk elektronik. Tujuannya mengetahui ada atau tidaknya penyimpangan tertentu, seperti salah komponen, atau lintasan hubungan yang putus � Algoritma umumnya didasarkan pada satu dari dua properti nilai intensitas: diskontinuitas dan similaritas. ◦ Kategori pertama, pendekatannya adalah memecah/memilah citra berdasarkan perubahan kasar dalam intensitas, seperti tepi dalam citra. ◦ Kategori kedua didasarkan pada pemecahan citra ke dalam region yang sama menurut sejumlah kriteria yang didefinisikan, seperti thresholding, region growing, region splitting and merging. 2

Deteksi Tepi � Pendekatan yang paling umum untuk pendeteksian diskontinuitas nilai intensitas, ◦ seperti

Deteksi Tepi � Pendekatan yang paling umum untuk pendeteksian diskontinuitas nilai intensitas, ◦ seperti diskontinuitas yang dideteksi oleh penggunaan turunan pertama dan kedua. � Menggunakan turunan pertama dalam pengolahan citra (gradien) � Jarak vektor ini adalah: � Atau dengan nilai absolutnya: � Turunan kedua dalam pengolahan citra umumnya dihitung menggunakan Laplacian 3

Operator Deteksi Tepi: Sobel, Prewitt, Robert 4

Operator Deteksi Tepi: Sobel, Prewitt, Robert 4

Fungsi untuk deteksi tepi di MATLAB: [g, t] = edge(f, ‘method’, parameters) Detektor tepi

Fungsi untuk deteksi tepi di MATLAB: [g, t] = edge(f, ‘method’, parameters) Detektor tepi Sobel Prewitt Robert Laplacian of a Gaussian (Lo. G) Zerro crossing Canny Properti dasar Menemukan tepi menggunakan perkiraan Sobel untuk turunannya dalam Gambar 8. 4 (a) dan (b) Menemukan tepi menggunakan perkiraan Prewitt untuk turunannya dalam Gambar 8. 4 (c) dan (d) Menemukan tepi menggunakan perkiraan Robert untuk turunannya dalam Gambar 8. 4 (e) dan (f) Menemukan tepi dengan mencari zero crossing setelah pemfilteran f(x, y) dengan filter Gaussian Menemukan tepi dengan mencari zero crossing setelah pemfilteran f(x, y) dengan filter yang didefinisikan user Menemukan tepi dengan mencari local maxima dari gradien f(x, y). Gradien dihitung menggunakan turunan filter Gaussian. Metode ini menggunakan dua threshold untuk mendeteksi tepi yang kuat dan lemah, dan memasukkan tepi lemah dalam output hanya jika tepi tersebut terhubung ke tepi yang kuat. Maka, metode ini lebih memungkinkan untuk mendeteksi tepi yang lemah dengan benar 5

SOBEL, PREWITT, ROBERT [g, t] = edge(f, ‘sobel’, T, dir) f adalah citra input,

SOBEL, PREWITT, ROBERT [g, t] = edge(f, ‘sobel’, T, dir) f adalah citra input, T adalah threshold, dir menetapkan arah yang lebih disukai pada citra terdeteksi: ‘horizontal’, ‘vertical’, atau ‘both’ (default). g adalah citra biner yang berisi nilai 1 pada lokasi di mana tepi terdeteksi dan 0 untuk yang tidak. Parameter t pada output bersifat opsional, t adalah nilai threshold yang digunakan oleh fungsi edge [g, t] = edge(f, ‘prewitt’, T, dir) [g, t] = edge(f, ‘robert’, T, dir) CANNY [g, t] = edge(f, ‘canny’, T, sigma) Laplacian of Gaussian fungsi Gaussian: di mana r 2 = x 2 + y 2 dan adalah standard deviasi Laplacian dari fungsi ini (turunan kedua terhadap r) adalah: [g, t] = edge(f, ‘log’, T, sigma) 6

Citra grayscale Hasil deteksi tepi Robert dengan threshold otomatis Hasil deteksi tepi Sobel dengan

Citra grayscale Hasil deteksi tepi Robert dengan threshold otomatis Hasil deteksi tepi Sobel dengan threshold otomatis Hasil deteksi tepi Lo. G dengan threshold otomatis >> [g_sobel_default, ts] = edge(f, 'sobel'); >> [g_log_default, tlog] = edge(f, 'log'); >> [g_canny_default, tcan] = edge(f, 'canny'); Hasil deteksi tepi Prewitt dengan threshold otomatis Hasil deteksi tepi Canny dengan threshold otomatis >> g_sobel_best = edge(i, 'sobel', 0. 05); >> g_log_best = edge(i, 'log', 0. 003, 2. 25); >> g_canny_best = edge(i, 'canny', [0. 04, 0. 10], 1. 5); 7

Region Growing Prosedur yang mengelompokkan piksel atau sub-region ke dalam region yang lebih besar

Region Growing Prosedur yang mengelompokkan piksel atau sub-region ke dalam region yang lebih besar berdasarkan pada kriteria yang sudah ditentukan untuk pertumbuhannya. � Pendekatan dasarnya adalah memulai dengan sejumlah titik seed dan dari sini menumbuhkan region oleh penambahan pada setiap seed piksel tetangga yang mempunyai properti sama dengan seed (seperti range spesifik dari gray level atau warna). � Sintaks fungsinya adalah: � ◦ ◦ [g, NR, SI, TI] = regiongrow(f, S, T) di mana f adalah citra yang disegmentasi parameter S bisa menjadi array (ukuran sama dengan f) atau skalar. Jika f adalah skalar, maka harus berisi nilai 1 pada semua koordinat di mana titik seed ditempatkan dan 0 untuk lainnya. ◦ Jika S skalar, mendefinisikan nilai intensitas seperti bahwa semua titik dalam f dengan nilai menjadi titik seed. ◦ T bisa menjadi array (ukurannya sama dengan f) atau skalar. Jika T adalah array, maka berisi nilai threshold untuk setiap lokasi dalam f. Jika T skalar, maka mendefinisikan global threshold. ◦ Nilai threshold digunakan untuk menguji jika piksel dalam citra cukup sama dengan seed dengan 8 -connected 8

Intensitas 255 menjadi titik seed Threshold terbaik ada di titik intensitas 190 Maka 255

Intensitas 255 menjadi titik seed Threshold terbaik ada di titik intensitas 190 Maka 255 -190 = 65 (nilai T yang digunakan untuk segmentasi) Citra grayscale Seed points yang ditemukan (gray level = 255) (SI) Citra biner yang telah melewati pengujian threshold (TI) Citra yang mempunyai hubungan 8 -connected terhadap seed (g) >> i = imread('defective_weld. tif'); figure, imshow(i); >> [g, NR, SI, TI] = regiongrow(i, 255, 65); >> figure, imshow(g); >> figure, imshow(SI); figure, imshow(TI); 9

Segmentasi berbasis Watershed � Dalam ilmu geografi, watershed adalah pertemuan dua lereng yang membagi

Segmentasi berbasis Watershed � Dalam ilmu geografi, watershed adalah pertemuan dua lereng yang membagi daerah yang dikeluarkan oleh sistem sungai yang berbeda. � Catchment basin adalah daerah goegrafis yang keluar menuju sungai atau reservoir. � Watershed transform mengaplikasi ide ini untuk menyelesaikan berbagai masalah segmentasi citra. Citra grayscale Permukaan 3 -D citra 10

Segmentasi berbasis Watershed � M 1 , M 2, …, MR menyatakan koordinat titik-titik

Segmentasi berbasis Watershed � M 1 , M 2, …, MR menyatakan koordinat titik-titik regional minimal dari citra g(x, y). � C(Mi) adalah himpunan yang menyatakan koordinat titik -titik dalam catchment basin yang diasosiasikan dengan regional minimum Mi (membentuk komponen terkoneksi). � T[n] merepresentasikan himpunan koordinat (s, t) di mana g(s, t) < n. Oleh sebab itu: ◦ T[n] = {(s, t)|g(s, t) < n} ◦ Secara geometris, T[n] adalah sekumpulan koordinat titik g(x, y) yang berada di bawah plane g(x, y) = n. Citra grayscale Permukaan 3 -D citra 11

Watershed dengan transformasi jarak � Watershed dalam penggunaan dikonjungsi dengan teknik yang lain, seperti:

Watershed dengan transformasi jarak � Watershed dalam penggunaan dikonjungsi dengan teknik yang lain, seperti: transformasi jarak, gradien, dsb. � Transformasi jarak dari citra biner adalah jarak dari setiap piksel ke nilai piksel non-zero terdekat. ◦ Toolbox: D = bwdist(f) >> g = im 2 bw(i, graythresh(i)); >> gc = ~g; >> D = bwdist(gc); >> L = watershed(-D); >> w = L == 0; >> g 2 = g & ~w; 12

Segmentasi dengan K-Means �Segmentasinya berbasis clustering dengan fitur: R (red), G (green), dan B

Segmentasi dengan K-Means �Segmentasinya berbasis clustering dengan fitur: R (red), G (green), dan B (blue). �Karena citra berukuran m*n*3 (3 dimensi), maka harus di-reshape menjadi bentuk tabel (struktur fitur dalam clustering) berukuran mn*3 (2 dimensi). �Setelah dilakukan clustering dengan kmeans, didapatkan index dari setiap piksel yang menyatakan nomor cluster yang diikuti. �Kemudian struktur index (matrik mn*1) diubah menjadi struktur citra 2 dimensi (m*n) 13

Citra asli RGB %Jumlah cluster = 3 >> f = imread('gadung-12. jpg'); >> f

Citra asli RGB %Jumlah cluster = 3 >> f = imread('gadung-12. jpg'); >> f = im 2 double(f); >> r = f(: , 1); >> g = f(: , 2); >> b = f(: , 3); >> [m, n] = size(r); >> r = reshape(r, m*n, 1); >> g = reshape(g, m*n, 1); >> b = reshape(b, m*n, 1); >> rgb = cat(2, r, g, b); >> h = kmeans(rgb, 3); %3 adalah jumlah cluster >> h = reshape(h, m, n); >> h = h/3; %dibagi dengan jumlah cluster Hasil segmentasi dengan 3 cluster (percobaan 1) Hasil segmentasi dengan 3 cluster (percobaan 2) 14

To Be Continued … Materi 7 – Kompresi Citra ANY QUESTION ? 15

To Be Continued … Materi 7 – Kompresi Citra ANY QUESTION ? 15