MATLAB基于小波变换的图像融合处理

1. 参数设置

% 图像参数
imageSize = [256, 256]; % 图像大小
waveletName = 'db1'; % 小波基函数
level = 2; % 小波分解层数

2. 读取并预处理图像

% 读取图像
img1 = imread('image1.png'); % 替换为实际图像路径
img2 = imread('image2.png'); % 替换为实际图像路径

% 调整图像大小
img1 = imresize(img1, imageSize);
img2 = imresize(img2, imageSize);

% 转换为双精度浮点数
img1 = im2double(img1);
img2 = im2double(img2);

3. 小波分解

% 小波分解
[coeffs1, sizes1] = wavedec2(img1, level, waveletName);
[coeffs2, sizes2] = wavedec2(img2, level, waveletName);

4. 融合规则

% 融合规则:低频分量取平均,高频分量取绝对值最大
fusedCoeffs = coeffs1;
for i = 1:level
    [H1, V1, D1] = detcoef2('all', coeffs1, sizes1, i);
    [H2, V2, D2] = detcoef2('all', coeffs2, sizes2, i);
    fusedCoeffs(sizes1(i, 1)+1:sizes1(i+1, 1)) = ...
        [H1, V1, D1] .* (abs([H1, V1, D1]) > abs([H2, V2, D2])) + ...
        [H2, V2, D2] .* (abs([H2, V2, D2]) >= abs([H1, V1, D1]));
end

5. 小波重构

% 小波重构
fusedImage = waverec2(fusedCoeffs, sizes1, waveletName);

6. 显示结果

% 显示原始图像和融合后的图像
figure;
subplot(1, 3, 1);
imshow(img1);
title('Original Image 1');

subplot(1, 3, 2);
imshow(img2);
title('Original Image 2');

subplot(1, 3, 3);
imshow(fusedImage);
title('Fused Image');

参考代码 国际小波,多分辨率和信息杂志。基于小波变换的图像融合加工 youwenfan.com/contentcnl/82125.html

  1. 参数设置:定义了图像大小、小波基函数和小波分解层数。
  2. 读取并预处理图像:读取两幅图像并调整大小,转换为双精度浮点数。
  3. 小波分解:对两幅图像分别进行小波分解,得到小波系数。
  4. 融合规则:定义融合规则,低频分量取平均,高频分量取绝对值最大。
  5. 小波重构:根据融合后的系数进行小波重构,得到融合后的图像。
  6. 显示结果:显示原始图像和融合后的图像。
posted @ 2025-11-17 16:43  风一直那个吹  阅读(2)  评论(0)    收藏  举报