全能图像融合质量客观评价指标工具箱
项目简介
本项目是一个基于 MATLAB 开发的图像融合质量评价系统,专为红外与可见光融合、多聚焦图像融合等算法提供标准化的定量分析。该工具箱实现了7种主流的客观评价指标,能够从信息量、清晰度、相关性、差异性等多个维度对融合图像的质量进行全方位评估。程序设计高度集成,内置了模拟数据生成模块,无需外部数据即可直接运行演示,同时也支持替换为外部真实图像数据。
功能特性
- 全方位评价体系:涵盖了基于信息论(熵、互信息)、基于图像特征(梯度、频率)以及基于统计学(方差、相关系数)的多种评价维度。
- 零由于依赖演示:代码内部集成了测试图像生成逻辑,自动构建“左清晰右模糊”与“右清晰左模糊”的源图像对,并生成简单的最大值融合结果作为待评价对象。
- 模块化算法实现:每种评价指标均封装为独立的子函数,逻辑清晰,易于提取复用或扩展新的指标。
- 可视化展示:程序运行过程中会自动绘制源图像与融合结果的对比图,直观展示实验数据。
包含的客观评价指标
本工具箱详细实现了以下 7 种评价指标:
- 综合熵 (Information Entropy, IE/EN)
*
原理:基于图像直方图计算信息熵。
*
意义:评估融合图像中蕴含的平均信息量,值越大表示图像包含的信息越丰富。
- 空间频率 (Spatial Frequency, SF)
*
原理:通过计算图像在行方向和列方向的一阶差分平方和的平方根来衡量。
*
意义:反映图像灰度的变化率,数值越大,代表图像的纹理越丰富,清晰度越高。
- 互信息 (Mutual Information, MI)
*
原理:计算融合图像与源图像A、源图像B之间的互信息之和(MI_FA + MI_FB)。内部通过联合直方图计算联合熵。
*
意义:衡量融合图像从两幅源图像中继承的信息总量,是评价融合有效性的核心指标。
- 平均梯度 (Average Gradient, AG)
*
原理:利用水平和垂直方向的微小差异(一阶差分)计算梯度幅值,并取全图平均。
*
意义:表征图像微小细节的反差和纹理变化,反映了图像的清晰度和边缘保持能力。
- 标准差 (Standard Deviation, SD)
*
原理:计算图像像素值相对于均值的离散程度(二阶矩)。
*
意义:反映图像的整体对比度,值越大说明图像灰度分布越广,视觉效果通常越好。
- 交叉熵 (Cross Entropy, CE)
*
原理:计算源图像与融合图像之间的相对熵(近似 Kullback-Leibler 散度形式),取A与F、B与F的平均值。
*
意义:用于评估融合图像与源图像之间的差异分布,值反映了融合图像对源图像信息的保留程度及分布一致性。
- 相关系数 (Correlation Coefficient, CC)
*
原理:基于统计学的相关性计算,取 A与F、B与F 的相关系数均值。
*
意义:衡量融合图像与源图像在线性关系上的相似程度。
程序实现逻辑与细节
1. 模拟数据生成(Data Preparation)
程序不依赖外部文件,而是通过数学方法实时生成测试数据:
- 源图像 A:基于正弦和余弦函数生成纹理,利用高斯滤波器对右半部分进行模糊处理,模拟“左清右蒙”的效果。
- 源图像 B:同样基于正弦和余弦函数,但对左半部分进行高斯模糊,模拟“右清左蒙”的效果。
- 融合图像 F:采用简单的“像素最大值”融合规则(Max Rule)合成,作为该工具箱的被评价对象。
2. 图像预处理
在计算指标前,系统会自动检查图像维度。如果是彩色图像(3通道),会自动转换为灰度图像(单通道),并将数据类型统一转换为双精度浮点型(double),以确保数学计算的精度。
3. 算法核心实现细节
- 互信息(MI)计算优化:在计算两幅图像的联合直方图时,程序采用了一种高效的索引映射方法。通过公式
idx = img1 + 256 * img2 将二维像素对映射为一维索引,配合 accumarray 函数快速统计联合概率分布,避免了低效的双重循环。 - 梯度与频率计算:对于空间频率(SF)和平均梯度(AG),均使用了 MATLAB 的
diff 函数进行差分计算。程序对差分后的矩阵进行了精确的维度截断处理,保证了水平差分和垂直差分矩阵尺寸的一致性。 - 交叉熵(CE)的鲁棒性处理:在计算交叉熵时,为了防止对数运算中出现
log(0) 或除以零的错误,代码加入了极小值判断(eps),仅统计概率大于0的有效像素区域。
使用方法
- 运行环境:需要安装 MATLAB(建议 R2016a 及以上版本,需包含 Image Processing Toolbox)。
- 启动程序:直接运行主入口函数。
- 结果查看:
* 程序将弹出一个图形窗口,显示源图像 A、源图像 B 和融合图像 F。
* MATLAB 命令行窗口(Command Window)将依次输出算得的 7 项指标数值。
- 替换数据:
* 如果需要评价自己的算法结果,只需注释掉代码中“数据准备”部分的模拟生成代码。
* 使用
imread 函数分别读取您的源图像和融合结果图像至变量
ImgA,
ImgB,
ImgF 即可。
注意事项
- 本工具箱主要针对灰度图像设计。如果输入为彩色图像,程序会自动计算其灰度版本的指标。对于需要分通道计算(如RGB分别计算再平均)的特殊需求,需在调用前预先处理。
- 模拟数据生成部分使用了硬编码的掩膜(mask),仅用于演示代码可运行性。在实际科研场景中,请务必替换为真实的实验图像。