% 首先利用PCA对其进行主成分变化 然后利用K-means方法对其进行分类
clc;
clear all;
close all;
%读取影像
I=imread('12.tif');
subplot(121);
imshow(I);
%生成矩阵
I=double(I);
[n1,n2,m]=size(I);
%至0
P=zeros(n1,n2,m);
%重新分配灰度值(三个波段等间隔分配0~255)
for i=1:m
P(:,:,i)=((I(:,:,i)-min(min(I(:,:,i))))/(max(max(I(:,:,i)))-min(min(I(:,:,i))))).*255;
end
%计算像素点总个数
n=n1*n2;
%将Q的值重新分配成3波段
p=reshape(P,n,m);
%进行主成分分析得到新的主元
[COEFF,SCORE,latent]=princomp(p);
pcaData1=SCORE(:,1);
%设定分的类别个数
k=5;
%进行k-means聚类分析
[idxbest,Cbest,sumDbest,Dbest]=kmeans(pcaData1,k);
n=length(idxbest);
%的到新的聚类后在进行重排列
o=reshape(idxbest,n1,n2);
%设置每一类的元素
cm=[255 0 0;128 128 128;0 255 0;0 0 255;0 64 64];
cpm=reshape(cm(o,:),n1,n2,3);
subplot(122);
imshow(cpm);
评论0
最新资源