高光谱数据利用PCA降维处理后,发现图像不能重构了,请问怎么回事?哪里出了问题。
具体描述为:用MATLAB 自带pca函数 [pc,score,latent,tsquare]=pca(data) 处理高光谱数据,然后利用 cumsum(latent)./sum(latent) 计算出前三维成分就够了,用 score(:,1:3)取前3列,得到前三维 的结果,但是里面有很多的负数,无法重构出原来的图片了?这是怎么回事?该如何解决。
高光谱数据利用PCA降维处理后,发现图像不能重构了,请问怎么回事?哪里出了问题。
具体描述为:用MATLAB 自带pca函数 [pc,score,latent,tsquare]=pca(data) 处理高光谱数据,然后利用 cumsum(latent)./sum(latent) 计算出前三维成分就够了,用 score(:,1:3)取前3列,得到前三维 的结果,但是里面有很多的负数,无法重构出原来的图片了?这是怎么回事?该如何解决。
为啥没办法还原哟?
[coeff1,score1,latent,tsquared,explained,mu1] = pca(data,'algorithm','als');
data2 = score1(:,1:3)*coeff1(:,1:3)' + repmat(mu1, size(data,1),1) % 这就是你取前3列,要还原的data数据
像这样就可以还原图像,并不需要minmax之类的
I1 = imread('lena.jpg');
[m,n,p]=size(I1);
t=m*n;
I2=reshape(I1,t,p);
I3=double(I2);
[coeff1,score1,latent,tsquared,explained,mu1] = pca(I3,'algorithm','als');
data2 = score1(:,1:1)*coeff1(:,1:1)' + repmat(mu1, size(I3,1),1); % 这就是你取前1列,要还原的data数据
I4 = uint8(reshape(data2,m,n,p));
figure(1);clf
subplot(1,2,1);imshow(I1);title('原始图像');
subplot(1,2,2);imshow(I4);title('降维图像');