初始聚类中心确定的K- means图片聚类Matlab代码
时间: 2024-06-12 11:05:07 浏览: 84
基于K-means算法的光伏曲线聚类研究 关键词:k-means 光伏聚类 聚类 参考文档:基于改进 K-means 聚
以下是使用K-means算法进行图片聚类的Matlab代码。
```matlab
% 加载图片
img = imread('test.jpg');
% 将图片转换为向量
img_vec = reshape(img, [], 3);
% 确定聚类个数
K = 4;
% 随机初始化聚类中心
init_centroids = randperm(size(img_vec, 1), K);
centroids = img_vec(init_centroids, :);
% 迭代次数
max_iters = 10;
% 运行K-means算法
for i = 1:max_iters
% 计算每个样本点与聚类中心的距离
dist = pdist2(img_vec, centroids);
% 确定每个样本点所属的聚类
[~, idx] = min(dist, [], 2);
% 更新聚类中心
for j = 1:K
centroids(j, :) = mean(img_vec(idx == j, :));
end
end
% 将每个样本点重新赋值为所属聚类的中心值
img_vec_new = centroids(idx, :);
% 将向量转换为图片
img_new = reshape(img_vec_new, size(img));
% 显示原始图片和聚类结果
figure;
subplot(1,2,1); imshow(img); title('Original Image');
subplot(1,2,2); imshow(img_new); title(sprintf('K-means Clustering with K = %d', K));
```
这段代码会将指定的图片进行聚类,聚类个数由变量K确定。聚类中心会随机初始化,并迭代更新直至收敛。最终会将每个样本点赋值为所属聚类的中心值,然后将向量转换为图片,最终显示原始图片和聚类结果。
阅读全文