Segmentasi Warna menggunakan Algoritma Fuzzy C-Means Clustering


Fuzzy c-means clustering merupakan algoritma klustering yang mempartisi data berdasarkan pada jarak antara data masukan dengan pusat kluster terdekat. Sama seperti pada algoritma k-means clustering, pusat cluster selalu diupdate berulang-ulang hingga dihasilkan pembagian kluster yang optimal. Pada algoritma ini, perulangan didasarkan pada minimisasi fungsi objektif.

Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan segmentasi warna suatu citra digital menggunakan algoritma fuzzy c-means clustering. Citra yang digunakan adalah citra sky-grass.jpg yang memuat dua buah objek yaitu langit dan rumput seperti ditunjukkan pada gambar di bawah ini.

Pada contoh ini dilakukan segmentasi warna citra untuk memisahkan antara kedua objek tersebut. Langkah-langkah pemrogramannya adalah:
1. Membaca dan menampilkan citra asli

clc; clear; close all;

Img = imread('sky-grass.jpg');
figure, imshow(Img), title('Original image');

sehingga diperoleh tampilan

2. Melakukan transformasi ruang warna citra yang semula berada pada ruang warna RGB (red, green, blue) menjadi ruang warna HSV (hue, saturation, value)

HSV = rgb2hsv(Img);
figure, imshow(HSV), title('HSV image');

Citra HSV yang dihasilkan adalah

3. Melakukan klustering menggunakan algoritma fuzzy c-means, dengan masukan berupa nilai hue dan saturation dari citra HSV

HS = double(HSV(:,:,1:2));
nrows = size(HS,1);
ncols = size(HS,2);
HS = reshape(HS,nrows*ncols,2);
nColors = 2;
[centers,U] = fcm(HS,nColors);

maxU = max(U);
index1 = find(U(1,:) == maxU);
index2 = find(U(2,:) == maxU);

figure,
plot(HS(index1,1),HS(index1,2),'ob')
hold on
plot(HS(index2,1),HS(index2,2),'or')
plot(centers(1,1),centers(1,2),'xk','MarkerSize',15,'LineWidth',3)
plot(centers(2,1),centers(2,2),'xk','MarkerSize',15,'LineWidth',3)
title('Fuzzy c-means clustering')
hold off

dihasilkan grafik seperti tampak pada gambar berikut

Berdasarkan pada grafik di atas, tampak bahwa algoritma fuzzy c-means berhasil mempartisi data masukan menjadi dua buah kluster.

4. Menampilkan citra hasil segmentasi yang terlabelli

cluster_idx = zeros(nrows,ncols);
cluster_idx(index1) = 1;
cluster_idx(index2) = 2;
pixel_labels = reshape(cluster_idx,nrows,ncols);
RGB = label2rgb(pixel_labels);
figure, imshow(RGB,[]), title('Image labeled by cluster index');

Citra hasil segmentasi

5. Menampilkan citra 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;
end

figure,imshow(segmented_images{1}), title('Object in cluster 1');
figure,imshow(segmented_images{2}), title('Object in cluster 2');

kluster 1

kluster 2

Berdasarkan pada gambar hasil segmentasi tersebut, terlihat bahwa algoritma fuzzy c-means clustering mampu untuk memisahkan objek langit dan rumput berdasarkan pada perbedaan warna.

File source code lengkap beserta citra yang digunakan pada pemrograman matlab di atas dapat diperoleh melalui halaman berikut ini: Source Code

Posted on November 5, 2016, in Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 16 Comments.

  1. mas mau nanya kalo pengelompokan warna yang di fuzzy klustering kan kalo yang di contoh cuman 2 yaitu biru dan merah,bisa tidak kalo lebih dari 2 warna,kalo bisa bagaimana caranya?terima kasih mas

  2. Mas saya sudah mencoba code Segmentasi Warna menggunakan Algoritma Fuzzy C-Means Clustering, tp tidak berhasil. Pada bagian [centers,U] = fcm(HS,nColors); dikatakan eror. Maksudnya apa ya? Terima kasih.

  3. mas, maaf mau bertanya, habis clustering data nya bisa diimport ke fungsi membership di fuzzy figure ga mas? makasih

  4. Mas, kalo citranya grayscale gimana ya menerapkan fcm nya ?

  5. di command window, iteration count itu apa ya kak?

  6. berthy Anggowo

    mas, ini apakah termasuk pengenalan pola dalam computer vision?

  7. berthy Anggowo

    mas, ini apakah termasuk pengenalan pola dalam computer vision??

  1. Pingback: Rendysaputra_Tugas_011170046

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: