基于PCA进行多光谱和全色图像融合

参考:
http://blog.csdn.net/what_lei/article/details/48999673
http://blog.sina.com.cn/s/blog_d845c4360101oxx5.html
https://wenku.baidu.com/view/4c30afc43c1ec5da50e270c8.html

PCA图像融合

思想

以多光谱和全色图像的融合来讲解PCA图像融合,主要思想就是利用PCA的方法找到多光谱图像波段间的协方差矩阵的特征分量,接着将全色图像直方图匹配第一主成分,然后用全色图像(也就是pan图)替换协方差矩阵的第一主成分。最后利用PCA逆变换将融合的结果变换回去,得到最终的融合图像。也就是下图所表示的流程。
这里写图片描述

优缺点分析

PCA 融合算法的优点在于它适用于多光谱图像的所有波段; 不足之处是在PCA 融合算法中只用高分辨率图像简单地替换低分辨率图像的第一主成分, 故会损失低分辨率图像第一主成分中的一些反映光谱特性的信息, 使得融合图像的光谱畸变严重。只按统计的思想, 不考虑图像各波段的特点是PCA融合算法的致命缺点。

matlab代码

close all;
clear;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mul = imread('PCA/low.jpg');
% mul=imresize(mul,[512,512]);
pan = imread('PCA/high.jpg');
%显示原多光谱图
figure,imshow(mul);title('多光谱图像');
%预处理数据在0-1间
mul=double(mul)/255;
pan=double(pan)/255;

%求相关矩阵
[r ,c ,bands]=size(mul);
pixels = r*c;
% reshape每个纤维成一行
mul = reshape(mul, [pixels bands]);
correlation = (mul'*mul)/pixels;
%%%%%%%%%%%求特征向量与特征值%%%%%%%%%%%%%%%%%%
[vector ,value]=eig(correlation);
%求主分量
PC = mul*vector;  % Y=AX(X中列为样本,若X行为样本,则Y =XA)
PC = reshape(PC,[r,c,bands]);
%根据第一主分量【直方图配准】pan后代替第一主分量
% PC(:,:,bands)/max(max(PC(:,:,bands)))就是使第一主成分的元素值在0-1之间
% 因为eig所求的特征值从小到大排,故PC第3通道的为第一主成分
[counts,X] = imhist(PC(:,:,bands)/max(max(PC(:,:,bands))));
% 直方图匹配
pan = histeq(pan,counts);%使pan图的直方图分布同第一主成分的直方图一致
PC(:,:,bands) = double(pan*max(max(PC(:,:,bands))));
%PCA逆变换重构融合图象
PC = reshape(PC,[pixels bands]);
fusion = PC*vector';
fusion = reshape(fusion,[r,c,bands]);
%显示融合图象

figure,imshow(fusion(:,:,1:3));title('PCA\_RGB');
  • 11
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值