--- a +++ b/Code/kmeans.m @@ -0,0 +1,34 @@ +function [k, class, img_vect] = kmeans(img, k); + +img = double(img); +img = imresize(img, [256,256]); +img_vect = img(:); +centroid = zeros(k,1); +class = zeros(length(img_vect), k); +%initialize centroid +maximum = max(img_vect); +for cent = 1:k + centroid(cent,1)= cent * maximum / k; +end +iter = 0; +while(iter<10) + class(1:length(img_vect),1:k) = 0; + % classifying pixels + for i = 1: length(img_vect) + [val, ind]=min(abs(img_vect(i) - centroid((1:k),1))); + class(i,ind)= img_vect(i); + end + % updating centroid + for cent = 1:k + centroid(cent, 1)= sum(class(:,cent))/length(find(class(:,cent))); + end + + iter = iter +1; +end + +%figure;imshow(img,[]),title('original'); +% for clust = 1:k +% cluster = reshape(class(1:length(img_vect),clust:clust), [256,256] ); +% figure; imshow(cluster,[]),title('cluster'); +% end +