前面我们说到灰度图像的融合,其实我本意是想实现Pan和多光谱(MS)的融合的,但是由于无法解决Pan小波分解之后与MS小波分解后维度匹配上的差异,就放弃了。正如前面的博客的代码所描述的那样,其实单通道与单通道的小波分变换的融合是十分容易的。但是要从单通道跳跃到多通道,还需要一些小小的技巧。对于初看融合代码的我来说,确实没能轻松的跳过。

如何从单通道到多通道#

那如何将小波变换从单通道应用到多通道呢?
其实是一种很简单朴素的想法,就是将Pan扩展成同MS一样的通道数。这样就保证Pan在第三维度上同MS图像一样了。这里还有一个问题,由于低分辨率的多光谱图像的长、宽是小于Pan图的。所以此时将MS图像也上采样4倍(我们假设Pan和LMS分辨率相差4倍),这样Pan和MS在各维度上都一样了。分别对上述图像小波变换,接着用MS的低频部分去代替Pan的低频部分。最后实现小波逆变换就得到融合结果了。
引用自《A VARIATIONAL APPROACH FOR SHARPENING HIGH DIMENSIONAL IMAGES 》–MICHAEL MOLLER(2012)

matlab程序

主程序如下:

pan_file = 'big_pan.tif';
pan = imread(pan_file);
pan = double(pan) /256;ms_file = 'LR.tif';
ms = imread(ms_file);
ms = imresize(ms,4);    % LMS上采样4倍
ms = double(ms)/256;res = waveletfusion(ms,pan);
figure(1);imshow(res,[]);title('融合结果');

以下是核心代码:

function solution = waveletfusion( lowres, panimage, level, waveletname)
% % % % % % % % % % % % % % % % % % % % % % %
% % @author chaolei
% % 2010/07/10
% % % % % % % % % % % % % % % % % % % % % % %
% % ================================================
%      设置默认小波基和分解尺度的默认值
% % ================================================
if ~exist('waveletname','var')waveletname = 'haar';
endif ~exist('level','var')level = 2;
end[height ,width ,channels] = size(lowres);[panvec, s] = wavedec2(panimage,level,waveletname);
% % ================================================
%      开辟存储Pan和MS各波段的小波系数的空间
% % ================================================
length = size(panvec,2);
reconstvec = zeros(length,channels);  % 复制Pan的小波系数 channels倍
lowresvec = zeros(length,channels);   % 存储MS各波段小波系数% % ================================================
%      对MS的各波段分别进行小波变换(小波分解)
% % ================================================
for i = 1:channelsreconstvec(:,i) = panvec;lowresvec(:,i)  = wavedec2(lowres(:,:,i),level,waveletname);
end% % ================================================
%   融合策略:Pan的高频部分+MS各波段的低频部分得到结果
% % ================================================
j = s(1,1) * s(1,2);
reconstvec(1:j,:) = lowresvec(1:j,:);% % ================================================
%      小波逆变换
% % ================================================
solution = zeros(height,width,channels);
for i=1:channelssolution(:,:,i) = waverec2(reconstvec(:,i),s,waveletname);
endend

以上就是我找到的代码然后修改了,其实我有好几个自己实现的版本,这里就贴一个另一种的Pan扩展的思想的代码吧。为了避免繁琐,我不再写成子函数的形式。大家可以体会一下,下面的代码究竟与上面的代码有何不同。

pan_file = 'big_pan.tif';
pan = imread(pan_file);
pan = double(pan) /256;pan = repmat(pan,1,1,3);
ms_file = 'LR.tif';
ms = imread(ms_file);
ms = imresize(ms,4);  % 使MS同Pan尺寸一致
ms = double(ms)/256;level =2;
waveletname = 'haar';[panvec,s0] = wavedec2(pan,level,waveletname);
[msvec, s1] =  wavedec2(ms,level,waveletname);j = s0(1,1)*s0(1,2)*s0(1,3);
panvec(1,1:j) = msvec(1,1:j);res = waverec2(panvec,s0,waveletname);
figure(3);imshow(res);title('融合结果');

结果图像


需要注意的是,level参数要控制好,如果太大会造成光谱失真。适度的level可以保证很好的光谱保持。有兴趣的同学可以试试不同的level,看看最终的结果有何不同。

使用小波变换进行Pan和多光谱融合相关推荐

  1. grads 相关系数_基于小波变换的多聚焦图像融合算法

    引用本文 孟强强, 杨桄, 童涛, 张俭峰. 基于小波变换的多聚焦图像融合算法[J]. 国土资源遥感, 2014,26(2): 38-42 MENG Qiangqiang, YANG Guang, T ...

  2. 基于IHS变换和小波变换的可见光和红外图像融合(opencv/C++实现)

    之前写过一篇基于harr小波分解的可见光和红外图像的融合方法,不过该方法只能基于灰度级,无法输出RGB图像,在阅读了<基于 IHS 和小波变换的可见光与红外图像融合>这篇文章后并通过复现代 ...

  3. 全色和多光谱融合pansharpen的尝试

    一个1波段全色地理tiff图像文件的文件名(.tif扩展). 一个3或4波段的多光谱geotiff图像文件(RGB,近红外波段,按此顺序排列). 使用GDAL工具 将多光谱Geotiff图像文件重采样 ...

  4. 【高光谱、多光谱和全色图像融合】

    HyperFusion: A Computational Approach for Hyperspectral, Multispectral, and Panchromatic Image Fusio ...

  5. 【将高光谱、多光谱和全色图像进行融合】

    HyperNet: A deep network for hyperspectral, multispectral, and panchromatic image fusion (HyperNet:一 ...

  6. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  7. 深度学习阅读导航 | 05 基于光照感知深度神经网络的多光谱数据融合行人检测

    文章目录 摘要 一.引言 二.相关研究 2.1 可见光和热感行人检测 2.2 多光谱行人检测 三.我们的方法 3.1 建议模型概述 3.2 光照全连接神经网络(IFCNN) 3.3 光照感知双流深度卷 ...

  8. 多光谱影像融合--SSVR融合

    多光谱影像融合在高分辨率卫星影像处理中必不可少,经过学者不断研究,现在有很多融合算法,但是应用在遥感图像处理中的算法并不多,融合效果即能达到原始全色影像(文中称多光谱)分辨率又能确保多光谱影像(文中称 ...

  9. 【图像融合】基于matlab高分辨率全色图小波变换图像融合(含评价指标)【含Matlab源码 2405期】

    ⛄一.小波变换彩色图像融合简介 1 前言 图像融合是将不同传感器所获得的多个图像根据某种算法进行融合处理,取长补短,使一幅图像能够更清楚.更准确地反映多幅图像的信息,多聚焦彩色图像融合是图像融合的一个 ...

  10. 并行计算在图像融合中的应用概述

    摘要: 本文根据并行计算在图像融合上的应用简单概述了一些国内的基于并行计算的图像融合算法.在概述之前相对图像融合和并行计算做了简单的介绍,接着分别详细的介绍了一片文章和一个专利,对于其他文章进行了简单 ...

最新文章

  1. jQuery创建页面元素
  2. java str.split(quot;cquot;),你真的完全理解了String的split方法?之二
  3. Android 在WebView中获取网页源码
  4. 从文件夹里面多个文件里面查找指定内容
  5. as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍
  6. 组建了计算机教室和图书室,【不忘初心 牢记使命】武胜这8所试点学校陆续展开课后服务工作...
  7. 【Unity】在Scene窗口中发射射线
  8. 蚂蚁金服刘伟光:我们为什么要科技开放
  9. 基线_项目管理之答疑解惑:基准与基线??
  10. VSCode RemoteSSH 过程试图写入的管道不存在问题 解决
  11. JQuery学习之路Part8:家族树操作(查找祖先、后代、兄弟同胞、绝对查找)【完结】
  12. Android 包大小优化总结
  13. Excel如何快速插入图片?
  14. 数论-卢卡斯定理(lucas)与拓展卢卡斯定理 (exlucas)
  15. NORDIC Thingy:52 蓝牙 BLE 服务协议定义
  16. 你不去PEACH区块链俱乐部太可惜了,90后的人才呀,佩服五体投地
  17. 马云豪掷三千亿,你又如何能分到100个月季度奖?
  18. 计算机属性的Java代码_java - 学计算机的人绝不认输 - 博客园
  19. 想系统的学习运维有什么需要注意的?
  20. 从顶层设计聊公司治理

热门文章

  1. python语言中有三种表示字符串的方式_python经典实例
  2. python动态生成数据库表_带有SQLalchemy的动态表名
  3. 爬虫实例十三 教你怎么用爬虫一次给女朋友拿下28万张情侣头像
  4. 电脑投屏电视怎么设置_教程 | 小米VR一体机投屏到电视/电脑/手机
  5. gVerify:前端验证码插件
  6. reflection java_Java Reflection (JAVA反射)
  7. Dedecms修改TAG、title、keywords及栏目名称长度限制
  8. 语义分割模型架构演进与相关论文阅读
  9. 基于分割的PTD渐进三角网加密滤波(SBF)算法
  10. ICCV 2021|“白嫖”性能的MixMo,一种新的数据增强or模型融合方法