Penggunaan fungsi Fuzzy CMeans pada Matlab untuk
segmentasi gambar
This entry was posted on April 12, 2012, in Kode. Bookmark the permalink. Leave a comment
Untuk memanggil fungsi Fuzzy CMeans pada Matlab dapat menggunakan syntax: [center,U,obj_fcn] = fcm(data,cluster_n)
Dengan cluster_n adalah banyaknya cluster,center adalah matrix akhir pusat cluster, U adalah matrix keanggotaan dan obj_fcn adalah objective function setiap iterasi.
Pada contoh ini fungsi Fuzzy CMeans digunakan untuk mensegmentasi gambar. Gambar yang disegmentasi seperti contoh pada postingan KMeans sebelumnya.
Setelah gambar dibaca dan diambil fiturnya (sebagai contoh fitur nilai RGB gambar) kemudian dipanggil fungsi Fuzzy CMeans. Pada contoh ini menggunakan 3 cluster
sizes = size(image);
fitur = double(reshape(image,sizes(1)*sizes(2),3)); [center,U,obj_fcn] = fcm(fitur,3)
Kemudian dari membership function yang di dapat akan diolah kembali (sebagai contoh sederhana disini nilai plausibility dari matrix U diambil yang tertinggi dan dijadikan cluster piksel tersebut) dengan kode berikut ini
numPixel=sizes(1)*sizes(2); kelas=zeros(numPixel,1); for i=1:numPixel
kelas(i)=find(U(:,i)==max(U(:,i))); end
final=reshape(kelas,sizes(1),sizes(2));
Setelah itu menggunakan median filter untuk memfilter noise pada gambar. Untuk ukuran jendela neighborhood pikselnya ([m n]) pada contoh ini adalah [5 5]
finalfilter = medfilt2(final,[5 5]);
Kemudian hasil kelasnya dapat dilihat pada Gambar1 figure;imshow(finalfilter,[])
Gambar1 hasil gambar kelas,natural image dariBerkeley database nomer 25098
Gambar2
Referensi
(1) The Berkeley Segmentation Dataset and Benchmark,
<URL:http://www.mathworks.com/help/toolbox/stats/kmeans.html>; (2) Matworks,2012,Fuzzy cmeans clustering ,
<URL:http://www.mathworks.com/help/toolbox/fuzzy/fcm.html>;