计算基于k均值聚类图像分割后不同区域像素值并且根据圆形度显示图像分割后图像的形状的matlab代码
时间: 2023-06-27 07:04:11 浏览: 86
基于K均值聚类的图像分割_灰度图像分割案例_真彩图像分割案例_matlab
5星 · 资源好评率100%
以下是一个基于k均值聚类图像分割的matlab代码,它可以计算不同区域的像素值,并根据圆形度显示图像分割后的形状:
```matlab
% 读取图像
img = imread('image.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 进行k均值聚类图像分割
k = 3; % 聚类数量
[cluster, centroid] = kmeans(double(gray_img(:)), k); % 聚类
% 将聚类结果转换为图像
cluster_img = reshape(cluster, size(gray_img));
% 计算每个聚类区域的像素值
for i = 1:k
cluster_pixels = gray_img(cluster_img == i);
mean_value = mean(cluster_pixels);
disp(['Cluster ', num2str(i), ' mean pixel value: ', num2str(mean_value)]);
end
% 计算每个聚类区域的圆形度
for i = 1:k
cluster_mask = cluster_img == i;
regionprops_data = regionprops(cluster_mask, 'Perimeter', 'Area');
perimeter = regionprops_data.Perimeter;
area = regionprops_data.Area;
circularity = 4 * pi * area / perimeter^2;
disp(['Cluster ', num2str(i), ' circularity: ', num2str(circularity)]);
end
% 显示图像分割的结果及其形状
figure;
subplot(121); imshow(img); title('Original Image');
subplot(122); imshow(cluster_img); title('Clustered Image');
```
这段代码会显示原始图像和聚类后的图像。在控制台输出中,它还会显示每个聚类区域的平均像素值和圆形度。
阅读全文