前言:
算法:NSCT算法(非下采样变换)
数据:Landsat8 OLI 遥感图像数据
编程平台:MATLAB+Python
论文参考:毛克.一种快速的全色和多光谱图像融合算法[J].测绘科学,2016,41(01):151-153+98.DOI:10.16251/j.cnki.1009-2307.2016.01.028.
左图:未进行融合的多光谱真彩色合成 右图:利用NSCT变换后的多光谱真彩色合成
为什么需要混编呢?
其实此算法是完全可以单独利用MATLAB或是Python进行处理的,所以本文的目的不在于编程软件,而在于算法。另外,若是采用MATLAB,可以大大的加快本次算法的速度。
- (目的一)
- 通过本次实验:了解MATLAB可以通过mat文件给python传输数据,python也可以向matlab传输数据。互补缺点,可以为以后处理多元化数据加快效率,但是也会导致难度变大。
- (目的二)
利用本次算法学习pyhon,在其中也遇到了很多困难,主要的困难还是虚拟内存的问题,一贯的使用matlab编程思维,导致我在用python处理大型矩阵的时候出现了内存不足的情况,这也进一步说明matlab的矩阵处理能力是要明显强于python的。
算法概述
-
(1)上采样低分辨率多光谱图像LRM,使其和全色图像HRP的分辨率相同,记为LRM杠;
-
(2)根据第i个多光谱波段LRMi杠来匹配全色图像得到新的图像HRPi杠;
-
(3)使用NSCT变换两层分解HRPi杠,得到低频分量和细节子带;
-
提示 >>>>>
此处虽然说的是两层分解,但是我找遍了资料,还是不能理解是怎么得出。但是考虑到是低频分量,于是我利用的高斯模糊,方差为20,提取出了全色波段的低频部分。
图:全色波段的低频分量
- (4)提高全色高频信息HF,即
- (5)按比例投影高频信息HF至LRMi杠中,得到融合图像HRMi
matlab批量读取遥感影像并将影像矩阵存入.mat文件中:
clc;clear all;
file_path="C:\Users\稳魂\Desktop\data\";
img_path_list = dir(strcat(file_path,'LC08_L1TP_118038_20130525_20170504_01_T1_B*.TIF'));
img_num = length(img_path_list);
fprintf('正在读取的图像为:\n');
data_base={
};
name={
};
if img_num > 0
for j