%*******************************读取图像数据********************************
clear
close all
clc
x = imread('fig.png'); %读入一幅图像,得到图像数据x
whos x % 查看矩阵x的大小和类型
y = double(x(:)); %将图像数据x按列拉长成一个长向量
%*************************调用kmeans函数进行聚类分割*************************
startdata = [0; 150]; % 设定初始凝聚点
idpixel = kmeans(y,2,'Start',startdata); % 进行K均值聚类,所有像素点聚为2类
% 根据聚类结果生成一个与idpixel等长的逻辑向量idbw
idbw = (idpixel == 2);
% 将idbw还原成一个与x同样大小的逻辑矩阵,背景像素点对应元素值为0,前景像素点对应元素值为1
result = reshape(idbw, size(x));
imshow(result); %以二值图像方式显示图像分割结果
结果:
原始图片: