使用 MATLAB 实现 DB1 小波域图像融合

本文将使用 MATLAB 编程实现两幅图像的融合,采用 DB1 小波进行分解,并对低频系数使用平均值融合,对高频系数使用最大值融合。

1. 读取图像

img1 = imread('image1.jpg');
img2 = imread('image2.jpg');

2. 使用 DB1 小波进行分解

[cA1,cH1,cV1,cD1] = dwt2(img1,'db1');
[cA2,cH2,cV2,cD2] = dwt2(img2,'db1');

3. 低频系数取平均值融合

cA = (cA1 + cA2) / 2;

4. 高频系数取最大值融合

ch = max(cH1,cH2);
cV = max(cV1,cV2);
cD = max(cD1,cD2);

5. 合成融合后的图像

img_fusion = idwt2(cA,cH,cV,cD,'db1');

6. 显示原始图像和融合后的图像

figure;
subplot(131);imshow(img1);title('image1');
subplot(132);imshow(img2);title('image2');
subplot(133);imshow(img_fusion);title('fusion');

完整代码如下:

img1 = imread('image1.jpg');
img2 = imread('image2.jpg');

[cA1,cH1,cV1,cD1] = dwt2(img1,'db1');
[cA2,cH2,cV2,cD2] = dwt2(img2,'db1');

cA = (cA1 + cA2) / 2;

ch = max(cH1,cH2);
cV = max(cV1,cV2);
cD = max(cD1,cD2);

img_fusion = idwt2(cA,cH,cV,cD,'db1');

figure;
subplot(131);imshow(img1);title('image1');
subplot(132);imshow(img2);title('image2');
subplot(133);imshow(img_fusion);title('fusion');

本代码展示了如何使用 MATLAB 实现基于 DB1 小波的图像融合,并对低频系数采用平均值融合,对高频系数采用最大值融合,最终合成融合图像。你可以根据实际情况修改代码,例如更改图像路径、使用其他小波函数等等。

MATLAB 小波域图像融合:基于 DB1 小波的平均值和最大值融合方法

原文地址: https://www.cveoy.top/t/topic/nCEh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录