晴天2021_0804 2021-11-08 20:48 采纳率: 100%
浏览 107
已结题

高光谱图像PCA降维后无法显示

高光谱数据利用PCA降维处理后,发现图像不能重构了,请问怎么回事?哪里出了问题。

具体描述为:用MATLAB 自带pca函数 [pc,score,latent,tsquare]=pca(data) 处理高光谱数据,然后利用 cumsum(latent)./sum(latent) 计算出前三维成分就够了,用 score(:,1:3)取前3列,得到前三维 的结果,但是里面有很多的负数,无法重构出原来的图片了?这是怎么回事?该如何解决。

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-11-08 21:47
    关注

    为啥没办法还原哟?

    [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('降维图像');
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 对于这个问题的代码运行
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败