基于稀疏表示的小波变换多光谱图像融合算法matlab仿真

76 阅读3分钟

1.算法运行效果图预览

小波变换融合

e5e4da12df7db5e4139491c5f9759447_82780907_202402182328310131698657_Expires=1708270711&Signature=b6v69jPIZtBS%2FDkZIzIegqRbXe4%3D&domain=8.jpeg

PCA融合

  352ef7dd6c7f1e205525678e1ac59a20_82780907_202402182328400522241225_Expires=1708270720&Signature=tWJ0sMWL4F0cfkeep3Ys80Jajak%3D&domain=8.jpeg

基于稀疏表示的小波变换多光谱图像融合算法

51cfd9aac52f3d86f35c49c104134710_82780907_202402182330210679633531_Expires=1708270821&Signature=eKfVvOXCNnMVhyMzkRZPx31UdpQ%3D&domain=8.jpeg

性能指标对比

0f494611dac38e4e67c42c026b7c8a8b_82780907_202402182330310023496787_Expires=1708270831&Signature=SwTe3HZ7VBmtS3UDCi3x3xkhFfo%3D&domain=8.jpeg  

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

        随着遥感技术的飞速发展,多光谱图像融合在地球观测、环境监测、军事侦察等领域的应用日益广泛。本文提出了一种基于稀疏表示的小波变换多光谱图像融合算法,通过结合稀疏表示理论和小波变换的优势,实现了对多源多光谱图像的有效融合。文中详细介绍了该算法的原理、实现步骤及性能评估,并通过实验验证了所提算法的有效性。

 

       多光谱图像融合是指将来自不同传感器、不同波段的多幅图像融合成一幅具有更高空间分辨率和更丰富光谱信息的图像。传统的多光谱图像融合方法主要包括基于像素级的融合、基于特征级的融合和基于决策级的融合。然而,这些方法在处理复杂场景和多源数据时往往存在信息损失、光谱失真等问题。

 

       近年来,稀疏表示理论在图像处理领域得到了广泛关注。稀疏表示能够通过学习一组过完备字典中的少量原子来表示信号,从而实现对信号的高效、精确表示。本文将稀疏表示理论引入多光谱图像融合领域,提出了一种基于稀疏表示的小波变换多光谱图像融合算法。该算法利用小波变换对图像进行多尺度分解,然后采用稀疏表示方法对分解后的系数进行融合,最后通过小波逆变换得到融合后的图像。实验结果表明,该算法能够在保持光谱信息的同时,提高空间分辨率,实现对多光谱图像的高质量融合。

 

4.部分核心程序 `% %读取数据并显示

% [MS]  = imread('image\MS256.tif');

% [PAN] = imread('image\PAN1024.tif');

 

 

% [MS]  = imread('image\数据1\low.jpg');

% [PAN] = imread('image\数据1\high.jpg');

% PAN   = rgb2gray(imresize(PAN,4));

 

[MS]  = imread('image\数据2\MS.jpg');

[PAN] = imread('image\数据2\PAN.jpg');

PAN   =  (imresize(PAN,4));

 

MS_show(:,:,1)=MS(:,:,1);

MS_show(:,:,2)=MS(:,:,2);

MS_show(:,:,3)=MS(:,:,3);

 

% down_size = 1/4;

% PAN  = imresize(PAN,down_size);

%小波变换,得到高频和低频系数

figure;

imshow(MS_show);

 

NAME = 'haar';

R = func_fusion_tops(double(MS_show(:,:,1)),double(PAN),NAME);

G = func_fusion_tops(double(MS_show(:,:,2)),double(PAN),NAME);

B = func_fusion_tops(double(MS_show(:,:,3)),double(PAN),NAME);

 

%还原

img(:,:,1)     = R;

img(:,:,2)     = G;

img(:,:,3)     = B;

 

 

 

%显示重构图像

figure;

subplot(224);

imshow(uint8(img(:,:,1:3)));title('the reconstructed fusion image');

subplot(221);

imshow(img(:,:,1),[]);title('the reconstructed fusion image 1');

subplot(222);

imshow(img(:,:,2),[]);title('the reconstructed fusion image 2');

subplot(223);

imshow(img(:,:,3),[]);title('the reconstructed fusion image 3');

 

 

%信息熵

entropy = func_entropy(img(:,:,1));

entropy

%边缘强度

outval = edge_intensity(img(:,:,1));

outval

%平均梯度

outvals = avg_gradient(img(:,:,1)); 

outvals

 

save R3.mat entropy outval outvals

figure;

subplot(131)

imshow(MS_show);title('待融合图像1');

subplot(132)

imshow(PAN);title('待融合图像2');

subplot(133)

imshow(uint8(img(:,:,1:3)));title('融合图像');`