给我一个matlab图像分割,实验代码机器学习:基于聚类K-Means算法实现图像特征变换
时间: 2024-09-22 21:07:21 浏览: 59
在MATLAB中,我们可以利用K-means聚类算法对图像进行分割,这是一种无监督学习方法,常用于将图像划分为若干个区域。以下是一个简单的示例代码,展示了如何使用K-means对灰度图像进行分割:
```matlab
% 加载样本图像
img = imread('your_image.jpg'); % 替换为你要处理的实际图像路径
% 转化为灰度图
gray_img = rgb2gray(img);
% 归一化像素值到0-1之间
norm_gray_img = gray_img ./ max(max(gray_img));
% 将图像转换为二维数组输入给K-means
data = reshape(norm_gray_img, [], 1);
% 设置K值,例如K=3表示划分成3类
K = 3;
% 初始化K-means中心点
[idx, centers] = kmeans(data, K);
% 根据分类结果还原回原尺寸图像
seg_img = reshape(idx, size(gray_img));
% 创建新图像显示分割结果
figure;
subplot(1, 2, 1), imshow(gray_img);
title('Original Image');
subplot(1, 2, 2), imshow(seg_img, []);
title(['Segmented Image (K-means with ' num2str(K) ' clusters)']);
```
在这个例子中,`kmeans`函数是关键,它会对数据进行聚类并返回每个像素的所属类别。`idx`变量存储了每个像素的类别标签,而`centers`则是聚类中心。
阅读全文