Segmentasi Citra dengan Metode Multi Thresholding dan K-Means Clustering
Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan segmentasi citra dengan menggunakan dua buah metode yang berbeda. Metode yang pertama yaitu multi thresholding, sedangkan metode yang kedua adalah k-means clustering. Segmentasi dilakukan terhadap citra rose.jpg yang ditunjukkan pada gambar di bawah ini.
A. Multi thresholding
Pada contoh ini, metode multi thresholding digunakan untuk memisahkan antar region dalam suatu citra berdasarkan pada perbedaan nilai intensitas piksel dari citra grayscale. Prinsip dari metode ini sama seperti metode thresholding pada umumnya namun yang membedakan adalah jumlah nilai threshold yang digunakan. Pada contoh ini digunakan dua buah nilai threshold untuk memisahkan antar region.
Langkah-langkah pemrogramannya adalah sebagai berikut:
1. Membaca dan menampilkan citra asli
clc;clear;close all; Img = imread('rose.jpg'); figure, imshow(Img);
sehingga diperoleh tampilan sebagai berikut
2. Mengekstrak dan menampilkan komponen red dari citra asli
red = Img(:,:,1); figure, imshow(red);
sehingga diperoleh komponen red dalam bentuk citra grayscale
3. Melakukan multi thresholding pada komponen red dengan nilai threshold 100 dan 240.
Nilai intensitas piksel dari komponen red antara 0-100 akan masuk dalam region 1
Nilai intensitas piksel antara 100-240 akan masuk dalam region 2
Nilai intensitas piksel antara 240-255 akan masuk dalam region 3
seg_I = imquantize(red,[100 240]); RGB = label2rgb(seg_I); figure,imshow(RGB);
sehingga diperoleh citra hasil segmentasi sebagai berikut:
pada gambar di atas, region 1 direpresentasikan oleh objek berwarna biru, region 2 berwarna cyan, dan region 3 berwarna kuning.
4. Menampilkan hasil segmentasi pada masing-masing region
segmented_images = cell(1,3); rgb_label = repmat(seg_I,[1 1 3]); nRegions = 3; for k = 1:nRegions color = Img; color(rgb_label ~= k) = 0; segmented_images{k} = color; figure,imshow(segmented_images{k}), title(strcat(['objects in region ',num2str(k)])); end
Citra hasil segmentasi ditunjukkan pada gambar di bawah ini:
B. K-means Clustering
Pada contoh ini, metode k-means clustering digunakan untuk memisahkan antar region dalam citra berdasarkan pada perbedaan warna. Citra asli yang semula dalam ruang warna RGB dikonversi menjadi ruang warna L*a*b kemudian dilakukan klustering dengan menggunakan komponen a dan b.
Langkah-langkah pemrogramannya adalah sebagai berikut:
1. Membaca dan menampilkan citra asli
clc;clear;close all; Img = imread('rose.jpg'); figure, imshow(Img);
sehingga diperoleh tampilan sebagai berikut
2. Mengkonversi ruang warna citra yang semula berada pada ruang warna RGB menjadi ruang warna L*a*b
cform = makecform('srgb2lab'); lab = applycform(Img,cform); figure, imshow(lab);
hasil konversi ruang warna citra adalah
3. Melakukan klustering dengan masukan berupa komponen a dan b dari citra L*a*b. Jumlah kluster yang digunakan adalah 3.
ab = double(lab(:,:,2:3)); nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; [cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ... 'Replicates',3); pixel_labels = reshape(cluster_idx,nrows,ncols); RGB = label2rgb(pixel_labels); figure, imshow(RGB,[]), title('image labeled by cluster index');
Citra hasil segmentasi ditunjukkan pada gambar berikut:
Pada gambar di atas, kluster 1 direpresentasikan oleh objek berwarna biru, kluster 2 berwarna cyan, dan kluster 3 berwarna kuning.
4. Menampilkan hasil segmentasi pada masing-masing kluster
segmented_images = cell(1,3); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors color = Img; color(rgb_label ~= k) = 0; segmented_images{k} = color; figure,imshow(segmented_images{k}), title(strcat(['objects in cluster ',num2str(k)])); end
Segmentasi citra dengan metode multi thresholding dan k-means clustering dapat diterapkan untuk memisahkan antar region dalam suatu citra. Pada contoh di atas, multi thresholding memisahkan antar region berdasarkan perbedaan terang gelap dari citra grayscale. Sedangkan k-means clustering memisahkan antar region berdasarkan pada perbedaan warna citra. Pemilihan metode segmentasi citra selalu disesuaikan dengan karakteristik dari citra asli yang akan diolah.
File source code lengkap beserta citra pada pemrograman matlab di atas dapat diperoleh melalui halaman berikut ini: Source Code
Posted on October 29, 2016, in Pengenalan Matlab, Pengolahan Citra and tagged algoritma kmeans clustering, aplikasi thresholding matlab, cara membuat kmeans clustering menggunakan matlab, contoh koding segmentasi citra matlab, contoh program segmentasi citra matlab, contoh program thresholding, koding thresholding, multi thresholding matlab, pemrograman matlab, Pengolahan Citra Digital, pengolahan citra digital menggunakan matlab, segmentasi adalah, segmentasi citra, segmentasi citra adalah, segmentasi citra digital, thresholding citra. Bookmark the permalink. 10 Comments.
permisi pak. mau tanya, apakah dengan menggabungkan 2 metode segmentansi citra diatas dapat membuat hasil yang lebih akurat? apakah tidak terjadi error saat menggunakan kedua segmentasi secara berurutan?
Sesuai dengan penjelasan pada materi di atas, kedua metode tersebut tidak digabungkan tetapi dibandingkan
saya punya tugas untuk skripsi segmentasi wajah dengan k-means tetapi colorspacenya l*a*b?apakah tahapan diatas ini bisa untuk memisah backgroundnya?
Bisa dicoba diimplementasikan
mas adi mau tanya saya dpet error kyak gini mksudx apa ya?
cluster_idx, cluster_center] = kmeans(ab,nColors,’distance’,’sqEuclidean’, …
Source code lengkap bisa dibeli di tokopedia sehingga bisa langsung dijalankan tanpa error
oiya ini yang diapakai matlab versi berapa ya?
Untuk program di atas, matlab versi berapa saja bisa
Source code lengkap bisa dibeli di tokopedia sehingga tidak error saat dijalankan
mas adi mau tanya ada ndak tutorial yang k-means nya tanpa library alias manual perhitunganx?
Mudah mudahan ke depan ada tutorial mengenai algoritma k-means yang tanpa library