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');
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 algoritma fcm adalah, algoritma fcm untuk segmentasi citra, algoritma fuzzy c means clustering citra digital, algoritma fuzzy c-means clustering, algoritma klustering, aplikasi matlab menggunakan algoritma fcm, cara membuat program matlab pengolahan citra, citra hsv, citra RGB, code matlab pengolahan citra, contoh koding matlab fcm, contoh koding matlab sederhana, contoh koding matlab segmentasi citra, contoh program matlab, contoh program matlab pengolahan citra, contoh program matlab sederhana, definisi citra, fuzzy c means klustering menggunakan matlab, membuat koding matlab pengolahan citra, penerapan algoritma fcm, penerapan pengolahan citra, penerapan segmentasi citra, Pengolahan Citra Digital, pengolahan citra matlab, pengolahan citra segmentasi warna, segmentasi citra menggunakan algoritma fcm, segmentasi warna, source code matlab pengolahan citra, source code matlab segmentasi citra. Bookmark the permalink. 16 Comments.
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
Pada koding tsb ada variabel nColors yang artinya jumlah warna yg ingin dikluster
Bisa diganti menjadi nilai lain selain 2
tapi untuk grafiknya,yang di plot tetap cuman 2 mas,saya coba buat jadi 4 kluster
dalam grafik dua dimensi (sumbu-x dan sumbu-y) memvisualisasikan persebaran data setiap kluster (bisa dua atau lebih kluster)
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.
sesuai dengan keterangan pada halaman source code, koding tersebut dapat dijalankan minimal menggunakan matlab R2015b
mas, maaf mau bertanya, habis clustering data nya bisa diimport ke fungsi membership di fuzzy figure ga mas? makasih
Bisa dengan cara disimpan terlebih dahulu dalam format .dat atau .mat
Mas, kalo citranya grayscale gimana ya menerapkan fcm nya ?
pada prinsipnya sama saja
materi mengenai segmentasi citra grayscale menggunakan klustering bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/2016/12/26/segmentasi-citra-grayscale-dengan-metode-k-means-clustering/
di command window, iteration count itu apa ya kak?
Bisa dipelajari lebih lanjut mengenai teori fcm
mas, ini apakah termasuk pengenalan pola dalam computer vision?
Iya bisa termasuk pengenalan pola dalam computer vision
mas, ini apakah termasuk pengenalan pola dalam computer vision??
Pingback: Rendysaputra_Tugas_011170046