clear all
clc
close all
% tic
[fileName, pathName] = uigetfile({ 'F:\文件\张文杰\levelset\levelsetcv-HS\.mat' } , '读取图像' );
SData1 = struct2cell( load( [ pathName , fileName ] ) );
YY = SData1{ 1 };
clear SData1;
[row col spe]=size(YY);
YY=double(YY);
[nx,ny,nz]=size(YY);
prompt={'分类个数:','迭代次数:'};
name=' ';
numlines=1;
defaultanswer={'1','5000'};
DlgAnswer=inputdlg(prompt,name,numlines,defaultanswer);
nEM = str2num( DlgAnswer{ 1 } );
time = str2num( DlgAnswer{ 2 } );
figure( 'name', '初始分类中心' );
imshow( YY( :, :, 120 ), [] );
EMPosition = round( ginput( nEM ) );
EMPosition=fliplr(EMPosition);
close
a=zeros(nz,nEM);
x=[];
y=[];
for i=1:nEM
x(i)=EMPosition(i,1);
y(i)=EMPosition(i,2);
end
for i=1:nEM
a(:,i)=reshape(YY(x(i),y(i),:),nz,1);
end;
newImg=zeros(nz,nx*ny);
for k1=1:nz
for k2=1:nx
newImg(k1,[(k2-1)*ny+1:k2*ny])=YY(k2,:,k1);
end
end
R=zeros(nz);
for k=1:nx*ny
R=R+(newImg(:,k)*newImg(:,k)')/(nx*ny);
end
w=inv(R)*a/(a'*R*a);
newImg=w'*newImg;
for k1=1:nx
Img(k1,:)=newImg((k1-1)*ny+1:k1*ny);
end
figure,imshow(Img,[])
评论2