MATLAB 小波域图像融合:基于 DB1 小波的平均值和最大值融合方法
使用 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 小波的图像融合,并对低频系数采用平均值融合,对高频系数采用最大值融合,最终合成融合图像。你可以根据实际情况修改代码,例如更改图像路径、使用其他小波函数等等。
原文地址: https://www.cveoy.top/t/topic/nCEh 著作权归作者所有。请勿转载和采集!