请给我一段小波变换的图像融合matlab代码
时间: 2023-09-14 21:11:57 浏览: 112
以下是一段小波变换的图像融合 Matlab 代码:
```matlab
clc;
clear;
close all;
% 读取要融合的图像
I1 = imread('image1.jpg');
I2 = imread('image2.jpg');
% 将图像转换为灰度图像
I1_gray = rgb2gray(I1);
I2_gray = rgb2gray(I2);
% 将灰度图像进行小波变换
[cA1, cH1, cV1, cD1] = dwt2(I1_gray, 'haar');
[cA2, cH2, cV2, cD2] = dwt2(I2_gray, 'haar');
% 进行图像融合
cA = (cA1 + cA2) / 2;
cH = (cH1 + cH2) / 2;
cV = (cV1 + cV2) / 2;
cD = (cD1 + cD2) / 2;
% 将融合后的图像进行小波反变换
I_fuse = idwt2(cA, cH, cV, cD, 'haar');
% 显示融合前后的图像
figure;
subplot(1, 2, 1);
imshow(I1);
title('Image 1');
subplot(1, 2, 2);
imshow(I2);
title('Image 2');
figure;
subplot(1, 2, 1);
imshow(I1_gray);
title('Image 1 Gray');
subplot(1, 2, 2);
imshow(I2_gray);
title('Image 2 Gray');
figure;
subplot(1, 2, 1);
imshow(uint8(I_fuse));
title('Fused Image');
subplot(1, 2, 2);
imshow(imabsdiff(I1_gray, I2_gray), []);
title('Difference Image');
```
这段代码会将 `image1.jpg` 和 `image2.jpg` 两张图像进行小波变换和融合,并显示融合前后的图像。其中,`dwt2` 和 `idwt2` 分别是进行二维小波变换和反变换的函数。
阅读全文