clc;clear;tic;
data=imread('C:\Users\Administrator\Desktop\3.jpg'); %读入图片数据
gray_data=rgb2gray(data); %转换成灰度数据
[x,y]=size(gray_data); %图像数据大小
core_num=4; %聚类个数
core=zeros(100,core_num); %聚类中心
num=0; %迭代次数
distance=zeros(x,y,core_num); %距离矩阵
gray_data=double(gray_data); %双精度
matrix_min=zeros(x,y); %最小距离矩阵
position=zeros(x,y); %所属类别
core(2,:)=[40,79,116,169]; %初始聚类中心
sample_num=zeros(1,core_num); %每个类别包含个数
graydata_add=zeros(1,core_num); %每个类别灰度和
selec_after=zeros(x,y); %存储分类后像素点灰度
%---------------------------------画直方图---------------------------------
count=zeros(1,256); %初始化一个矩阵存储灰度次数
for i=0:255
count(1,i+1)=length(find(gray_data==i)); %计算矩阵中值与i相等的元素的个数
end
figure(1);
bar(0:255,count,'grouped'); %根据bar绘制直方图
xlabel('灰度值');
ylabel('出现次数');
%--------------------------------------------------------------------------
while(core(num+1,:)~=core(num+2,:))
for i=1:1:x %产生距离矩阵
for j=1:1:y
for c=1:1:core_num