zl程序教程

您现在的位置是:首页 >  其它

当前栏目

k-mean图像分类

图像 分类 Mean
2023-09-11 14:15:33 时间

y=imread('1.bmp');
Samples=zeros(3,512*512);
Samples(1,:)=y(1:512*512);
Samples(2,:)=y(512*512+1:2*512*512);
Samples(3,:)=y(2*512*512+1:3*512*512);
SamNum=512*512;
InDim=3;
ClusterNum=3;
ClusterFlag=zeros(1,SamNum);
RandomNum=round(rand(1,ClusterNum)*SamNum);
Centers=Samples(:,RandomNum);
 
NumberInClusters=zeros(ClusterNum,1);
IndexInClusters=zeros(ClusterNum,SamNum);
 
while 1
    NumberInClusters=zeros(ClusterNum,1);
    IndexInClusters=zeros(ClusterNum,SamNum);
   
    OldCenters=Centers;
    for i=1:SamNum
        AllDistance=dist(Centers',Samples(:,i));
        [MinDist,Pos]=min(AllDistance);
        NumberInClusters(Pos)=NumberInClusters(Pos)+1;
        IndexInClusters(Pos,NumberInClusters(Pos))=i;
    end
    
    for i=1:ClusterNum
        Index=IndexInClusters(i,1:NumberInClusters(i));
        Centers(:,i)=mean(Samples(:,Index)')';
    end
    
   
    if Centers==OldCenters
        break
    end
end

Index=IndexInClusters(1,1:NumberInClusters(1));
Samples(:,Index)=0;

Index=IndexInClusters(2,1:NumberInClusters(2));
Samples(:,Index)=128;

Index=IndexInClusters(3,1:NumberInClusters(3));
Samples(:,Index)=512;
 
y(1:512*512) =Samples(1,:);
y(512*512+1:2*512*512)=Samples(2,:);
y(2*512*512+1:3*512*512)=Samples(3,:);
imshow(y);

D76