matlab kmeans图像聚类例子

%*******************************读取图像数据********************************
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);    %以二值图像方式显示图像分割结果



结果:
matlab kmeans图像聚类例子_第1张图片

原始图片:

matlab kmeans图像聚类例子_第2张图片

你可能感兴趣的:(图形学,matlab,kmeans,聚类)