基于MATLAB的小波变换图像融合系统
项目简介
本项目实现了一个基于离散小波变换(Discrete Wavelet Transform, DWT)的图像融合算法示例。主要目的是演示如何将两幅同一场景但聚焦区域不同的图像(多聚焦图像)融合成一幅整体清晰、信息量更丰富的高质量图像。
系统内置了模拟多聚焦图像生成的逻辑,无需外部数据集即可运行演示。该代码逻辑清晰,涵盖了从图像生成、预处理、小波分解、系数融合、逆变换重构到最终评估可视化的完整流程,适合作为数字图像处理或计算机视觉领域的教学与研究参考。
功能特性
- 自动模拟多聚焦场景:程序自动加载内置图像并生成一对互补的模糊图像(左侧清晰/右侧模糊 vs 左侧模糊/右侧清晰),方便直观对比融合效果。
- 支持彩色/灰度图像:算法具备通道自适应能力,能够自动识别RGB彩色图像并对R、G、B三个通道分别进行小波融合处理,也支持单通道灰度图像。
- 多尺度小波分解:利用MATLAB小波工具箱,采用Daubechies小波(db4)进行3层分解,有效提取图像的深层特征。
- 自适应融合规则:
*
低频部分:采用加权平均法,保持图像亮度和整体结构的平滑性。
*
高频部分:采用绝对值最大原则,最大程度保留边缘、纹理等清晰细节。
- 可视化与评估:提供直观的对比展示(源图像A、源图像B、融合结果),并计算图像信息熵作为量化评估指标。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
- Wavelet Toolbox(小波工具箱)
使用方法
- 确保MATLAB环境已安装上述工具箱。
- 将项目代码保存为
.m 文件。 - 在MATLAB命令行窗口中直接运行主函数。
- 程序将自动执行并在屏幕上弹出结果窗口,并在控制台输出信息熵评估数据。
详细实现逻辑与算法分析
本项目的主程序与核心算法逻辑完全包含在一个脚本文件中,具体实现细节如下:
1. 图像输入与模拟生成
程序启动后,首先尝试读取MATLAB内置的
peppers.png 图像。如果未找到该图像,系统会自动生成一幅随机噪声图像作为替补,确保代码在任何环境下均可运行。
- 尺寸归一化:将源图像统一调整为 512x512 像素。
- 模糊模拟:使用半径为8的圆盘(Disk)模糊算子对源图像进行滤波。
- 多聚焦构造:通过简单的区域拼接技术生成两幅测试图像:
*
图像A:保留左半部分原图,右半部分替换为模糊图像。
*
图像B:左半部分替换为模糊图像,保留右半部分原图。
2. DWT 图像融合核心算法
融合过程封装在核心处理函数中,具体步骤如下:
- 预处理:检查两幅输入图像尺寸是否一致,若不一致则自动调整。随后将图像数据转换为双精度浮点型(double),以便进行精确的数学运算。
- 通道处理:对于RGB图像,算法将分离红、绿、蓝三个通道,分别调用单通道融合算法,最后再合并结果;对于灰度图则直接处理。
- 小波分解:使用
db4(Daubechies 4)小波基,对图像进行 3 层二维离散小波分解(wavedec2),由于分解层数为3,图像被分解为不同尺度下的近似系数和细节系数。 - 系数融合策略:
*
低频近似系数(Approximation):代表图像的概貌和背景。代码采用
平均值法融合,即将两幅图的低频系数相加除以2。这种方法能有效保留背景信息并抑制部分背景噪声。
*
高频细节系数(Details):代表图像的边缘和轮廓。代码遍历所有分解层级(1至3层)的水平、垂直和对角方向分量,采用
绝对值最大法。即逐像素比较两个源图像对应位置系数的绝对值,选取绝对值较大的那个系数作为融合后的系数。这确保了图像中对比度最强、最清晰的特征被保留下来。
- 小波重构:利用融合后的低频和高频系数,结合分解时的结构信息,执行二维小波逆变换(
waverec2),还原出最终的融合图像。
3. 客观评估指标
为了量化分析融合效果,代码实现了
一维图像熵(Entropy)的计算功能:
- 先将图像转换为灰度并量化为0-255的整数。
- 计算图像的灰度直方图及各灰度级的概率分布。
- 根据香农熵公式计算信息熵。
- 在控制台输出源图像A、源图像B及融合图像的熵值。通常情况下,融合图像的熵值应高于任一单幅源图像,表明融合后的图像包含了更丰富的信息量。
4. 结果可视化
程序最后创建一个包含三个子图的窗口:
- 左侧显示“左侧清晰”的源图像A。
- 中间显示“右侧清晰”的源图像B。
- 右侧显示“全清晰”的最终融合图像。
每个子图均附带标题和尺寸说明,旨在直观验证融合算法是否成功结合了来自两幅源图像的清晰区域。