Anda di halaman 1dari 16

TK 36306 Pengolahan Citra

Pertemuan ke-11 :

Segmentasi Citra

John Adler & Eko


Prasetyo

Program Studi Sistem Komputer


Tuesday, April 21, 2020 Universitas Komputer Indonesia1
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.

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 2 dari 17
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)
 f 
Gx   x 
f      f 
 Jarak vektor ini adalah: Gy   
 y 
f  mag (f )   Gx  Gy 
2 2 1/ 2

 Atau dengan nilai absolutnya:


 f  Gx  G y
 Turunan kedua dalam pengolahan citra umumnya dihitung
menggunakan Laplacian
 2 f ( x , y )  2 f ( x, y )
 f ( x, y ) 
2

x 2
y 2

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 3 dari 17
Operator Deteksi Tepi: Sobel, Prewitt, Robert

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 4 dari 17
Fungsi untuk deteksi tepi di MATLAB:
[g, t] = edge(f, ‘method’, parameters)
Detektor tepi Properti dasar
Sobel Menemukan tepi menggunakan perkiraan Sobel untuk turunannya
dalam Gambar 8.4 (a) dan (b)
Prewitt Menemukan tepi menggunakan perkiraan Prewitt untuk turunannya
dalam Gambar 8.4 (c) dan (d)
Robert Menemukan tepi menggunakan perkiraan Robert untuk turunannya
dalam Gambar 8.4 (e) dan (f)
Laplacian of a Menemukan tepi dengan mencari zero crossing setelah pemfilteran
Gaussian (LoG) f(x,y) dengan filter Gaussian
Zerro crossing Menemukan tepi dengan mencari zero crossing setelah pemfilteran
f(x,y) dengan filter yang didefinisikan user
Canny 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

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 5 dari 17
SOBEL, PREWITT, ROBERT
[g, t] = edge(f, ‘sobel’, T, dir) [g, t] = edge(f, ‘prewitt’, T, dir)
f adalah citra input,
T adalah threshold, [g, t] = edge(f, ‘robert’, T, dir)
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
Laplacian of Gaussian CANNY
ungsi Gaussian: 
r 2
[g, t] = edge(f, ‘canny’, T, sigma)
h( r )  e
2
2

i mana r2 = x2 + y2 dan  adalah standard deviasi


Laplacian dari fungsi ini (turunan kedua terhadap r)
adalah:  h(r )    r    e
2 2 r2

2
   [g, t] = edge(f, ‘log’, T, sigma)
2 2

 
4

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 6 dari 17
Citra grayscale Hasil deteksi tepi Sobel Hasil deteksi tepi Prewitt
dengan threshold otomatis dengan threshold otomatis

Hasil deteksi tepi Robert Hasil deteksi tepi LoG Hasil deteksi tepi Canny
dengan threshold otomatis dengan threshold otomatis dengan threshold otomatis

>> g_sobel_best = edge(i, 'sobel', 0.05);


>> [g_sobel_default, ts] = edge(f, 'sobel');
>> [g_log_default, tlog] = edge(f, 'log'); >> g_log_best = edge(i, 'log', 0.003, 2.25);
>> [g_canny_default, tcan] = edge(f, 'canny'); >> g_canny_best = edge(i, 'canny', [0.04,
0.10], 1.5);

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 7 dari 17
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

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 8 dari 17
16000

14000

12000

10000

8000

6000 Citra grayscale Seed points yang


ditemukan (gray level =
4000
255) (SI)
2000

0 50 100 150 200 250

Intensitas 255 menjadi titik seed


Threshold terbaik ada di titik intensitas 190
Maka 255-190 = 65 (nilai T yang digunakan
untuk segmentasi) Citra biner yang telah Citra yang mempunyai
melewati pengujian hubungan 8-connected
threshold (TI) 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);

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 9 dari 17
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


Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 10 dari 17
Segmentasi berbasis Watershed (Contd.)
 M1, M2, …, 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-titik
g(x,y) yang berada di bawah plane g(x,y) = n.

Citra grayscale Permukaan 3-D citra


Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 11 dari 17
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 = im2bw(i, graythresh(i));


>> gc = ~g;
>> D = bwdist(gc);
>> L = watershed(-D);
>> w = L == 0;
>> g2 = g & ~w;

12

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 12 dari 17
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 k-
means, 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)

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 13 dari 17
%Jumlah cluster = 3
>> f = imread('gadung-1-
Citra asli RGB 2.jpg');
>> f = im2double(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);
Hasil segmentasi dengan 3 cluster (percobaan 1) >> 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 2)

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 14 dari 17
Minggu Depan.....

KOMPRESI &
watermark CITRA

Tuesday, April 21, 2020 TK36306 Pengolahan Citra ©2018 Halaman 15 dari 17
TERIMA KASIH
Semoga sukses

Tuesday, April 21, 20 16


20

Anda mungkin juga menyukai