高光谱图像融合现状

高光谱图像融合现状

基于Pansharpening的高光谱图像融合方法

基于Pansharpening的高光谱图像融合方法是从多光谱图像与全色图像的融合方法迁移到高光谱图像融合方法的。它主要有以下几种方法:

成分替代

成分替代方法是对多光谱图像进行变换分离其空间部分,利用全色图像代替再进行逆变换。

matlab代码如下(示例):

function I_Fus_PCA = PCA(HS,PAN)

HS = double(HS);

%%%%%%%% Upsampling
ratio1 = size(PAN,1)/size(HS,1);

HSU = interp23tapGeneral(HS,ratio1);

imageLR = double(HSU);
imageHR = double(PAN);

[n,m,d]=size(imageLR);
imageLR = reshape(imageLR, [n*m,d]);

% PCA transform on MS bands
[W,PCAData] = princomp(imageLR);
F = reshape(PCAData, [n,m,d]); 

% Equalization
I = F(:,:,1);
imageHR = (imageHR - mean(imageHR(:)))*std2(I)/std(imageHR(:)) + mean2(I);

% Replace 1st band with PAN
F(:,:,1) = imageHR;

% Inverse PCA
I_Fus_PCA = reshape(F,[n*m,d]) * W';
I_Fus_PCA = reshape(I_Fus_PCA, [n,m,d]);

% Final Linear Equalization
for ii = 1 : size(HSU,3)
    h = I_Fus_PCA(:,:,ii);
    I_Fus_PCA(:,:,ii) = h - mean2(h) + mean2(squeeze(double(HSU(:,:,ii))));
end

end

多分辨率分析

多分辨率分析方法是提取全色的空间细节,对多光谱进行细节补充。
工具包链接为:pan-sharpening的方法

基于模型驱动的高光谱图像融合方法

工具包链接:模型驱动的高光谱图像融合工具包

基于深度学习的高光谱图像融合方法

简单利用卷积神经网络融合高光谱图像

利用卷积神经网络学习低分辨率高光谱图像和高分辨率多光谱图像到高分辨率高光谱图像的映射关系。

tensorflow代码如下(示例):

def get_cnn():
    inputs = l = Input((4, 4, 31), name='inputs') #低分辨率高光谱图像块
    inputs1 = l1 = Input((32, 32, 3), name='inputs1') #高分辨率多光谱图像块
    l = UpSampling2D((8, 8))(l)
    l = tf.concat([l, l1],3)
    l3 = Conv2D(31, (5, 5), padding='same', name='conv13')(l2)
    l3 = Activation('relu', name='conv13_relu')(l3)
    output = l3
    return inputs,inputs1, output

深度展开网络

tensorflow代码如下(示例):

def HSInet(Y,Z, iniUp3x3,iniA,upRank,outDim,HSInetL,subnetL,ratio=8):
    B = tf.get_variable(
              'B', 
              [1, 1, upRank, outDim],
              tf.float32, 
              initializer=tf.truncated_normal_initializer(mean = 0.0, stddev = 0.1))
    tranB = tf.transpose(B,perm = [0,1,3,2])
    CListX = getCs('TheCsX', ratio)#inital the kernel for downsampling
    downY4, downY16, _ = downSam('GetPrior',Y, CListX, 3, ratio)# getPrior for upsample
    # fist stage
    YA = MyconvA( 'YA1', Y, 3, outDim, [1,1,1,1], iniA) #caculating YA
    _, _, downX32 = downSam('CX1',YA, CListX, outDim, ratio)  # downsampling 
    E  = downX32-Z   # Z上的残差
    G  = UpSam('E1',E, downY4, downY16, Y, iniUp3x3, outDim, ratio) # unsampling E
    G  = tf.nn.conv2d(G, tranB, [1,1,1,1], padding='SAME')
    HY = -G #
    HY  = resCNNnet(('Pri%s'%(1)),HY,1,upRank, subnetL) 
    HY  = resCNNnetPrior(('Pri%s'%(1)),HY, Y,1,upRank,3,subnetL)
    ListX = []
    # 2nd to the 19th stage
    for j in range(HSInetL-2):
        HYB= tf.nn.conv2d(HY, B, [1,1,1,1], padding='SAME')
        ListX.append(YA + HYB)
        _, _, downX32  = downSam( ('CX%s'%(j+2)),ListX[int(j)],CListX,outDim,  ratio)
        E   = downX32-Z
        G   = UpSam( ('E%s'%(j+2)),E, downY4, downY16, Y, iniUp3x3, outDim, ratio)
        G   = tf.nn.conv2d(G, tranB, [1,1,1,1], padding='SAME')
        HY  = HY-G
        HY  = resCNNnet(('Pri%s'%(j+2)),HY,j+2,upRank, subnetL)
        HY  = resCNNnetPrior(('Pri%s'%(j+2)),HY, Y,j+2,upRank,3,subnetL)
    the final stage
    HYB     = tf.nn.conv2d(HY, B, [1,1,1,1], padding='SAME')
    ListX.append(YA + HYB)
    outX    = resCNNnet('FinalAjust',ListX[int(HSInetL-2)],101,outDim, levelN = 5)
    _,_,CX  = downSam( ('CX%s'%(HSInetL)),ListX[int(HSInetL-2)],CListX, outDim,  ratio)
    E  = CX-Z
    return outX, ListX, YA, E, HY

无监督深度学习方法

高光谱图像融合数据(仿真的)

CAVE数据集链接:CAVE数据集
Harvard数据集链接:Harvard数据集
ICVL数据集链接:ICVL数据集

高光谱图像融合数据(真实的)

总结

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值