图像质量客观评价函数工具箱 (Image Quality Objective Evaluation Function Toolbox)
项目简介
本项目开发了一套基于 MATLAB 的图像质量评价(IQA)函数库,专注于全参考(Full-Reference)图像质量评估。项目能够定量分析待测图像相对于原始参考图像的失真程度。该工具箱不依赖外部图像文件,内置了图像合成引擎,能够自动生成基准图像及模拟失真图像,集成了多种经典的客观评价指标,并提供直观的可视化对比分析报告。
功能特性
- 多指标综合评价:集成了峰值信噪比(PSNR)、均方误差(MSE)、均方根误差(RMSE)和正则均方误差(NMSE)四种核心评价指标。
- 内置模拟数据生成:无需外部素材,程序自动生成基于正弦/余弦函数的平滑彩色基准图像,并模拟高斯白噪声与均值模糊产生的失真效果。
- 高精度计算:所有计算过程均将图像数据转换为双精度浮点数(double),以确保数学运算的精确性。
- 可视化分析报告:提供包含参考图像、失真图像、差异热力图及数值指标汇总的组合图表,直观展示评价结果。
- 由像素到统计的深度分析:不仅提供全局评分,还通过热力图展示像素级的误差分布。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
* 依赖函数包括:
imfilter,
fspecial,
rgb2gray,
imshow 等。
使用方法
- 确保 MATLAB 环境已按系统要求配置完毕。
- 将脚本文件添加至 MATLAB 路径或在当期目录下直接运行。
- 程序启动后将自动执行以下流程:
* 生成合成的参考图像与失真图像。
* 在控制台输出各项指标的计算结果。
* 弹出一个独立的图形窗口,展示图像对比及详细的评估报告。
核心算法与实现逻辑
本项目的主程序逻辑分为数据准备、指标计算、结果展示三个主要阶段,具体实现细节如下:
1. 模拟数据生成机制
程序不读取本地文件,而是通过算法实时生成演示数据,逻辑如下:
- 参考图像生成:利用
meshgrid 生成网格坐标,结合正弦(sin)与余弦(cos)函数创建三个通道颜色平滑变化的RGB彩色图案,并转换为8位无符号整数(uint8)模拟真实图像格式。 - 失真模拟:
*
加噪:在参考图像基础上叠加标准差为20的高斯白噪声。
*
模糊:使用3x3的均值滤波器(Average Filter)对图像进行卷积处理。
*
值域控制:最终将像素值截断限制在 [0, 255] 范围内,防止数据溢出。
2. 图像质量评估指标实现
所有评估函数均在子程序中定义,确保了模块化和复用性。计算前统一将图像数据转换为
double 类型。
*
原理:计算参考图像与失真图像对应像素差值的平方和的均值。
*
实现:对 R、G、B 三个通道的所有像素误差平方求和,除以像素总数(行×列×通道数),直接反映像素层面的差异强度。
*
原理:MSE 的平方根。
*
实现:对计算出的 MSE 值开根号,量纲与原图像像素值一致,更符合直观物理意义。
*
原理:归一化的均方误差,不仅计算误差能量,还除以参考图像自身的总能量(像素平方和)。
*
实现:计算两幅图像差值的平方和,除以参考图像像素值的平方和。在大致包含零能量参考图像时有防除零保护。该指标消除了图像本身亮度/能量大小对误差评估的影响。
*
原理:基于最大可能功率与噪声功率的比值,使用对数标度(dB)。
*
实现:设定图像位深峰值为 255。计算公式为
10 * log10((255^2) / MSE)。若两幅图像完全一致(MSE=0),则返回无穷大(Inf)。
3. 可视化报告生成
程序构建了一个包含四个子图的图形窗口:
- 子图1(左上):显示原始生成的参考图像(Ground Truth)。
- 子图2(右上):显示添加噪声和模糊后的待评价图像,并在标题中动态标注计算出的 PSNR 值。
- 子图3(左下):展示差异热力图(Error Map)。通过计算两幅图像差值的绝对值,若为彩色图像则转为灰度,配合
jet 伪彩色映射,红色/暖色区域代表差异大,蓝色/冷色区域代表差异小。 - 子图4(右下):纯文本展示区域。移除了坐标轴,以文本形式清晰列出 MSE, RMSE, NMSE, PSNR 四项指标的精确数值,其中 PSNR 重点高亮显示。
代码结构说明
- 环境初始化:代码执行伊始会自动清理命令行、工作区变量及关闭所有已打开的图窗,确保运行环境纯净。
- 主函数流程:负责统筹数据生成、调用计算子函数以及控制最终的绘图布局。
- 子函数封装:具体的数学运算逻辑被封装在四个独立的 Helper Functions 中,严格对应上述的四个评价指标,便于后续扩展或移植算法。