双图像峰值信噪比(PSNR)评估系统
项目介绍
该项目是一个基于 MATLAB 开发的图像质量评价工具,旨在通过定量分析计算参考图像与失真图像之间的像素差异。系统通过计算均方误差(MSE)和峰值信噪比(PSNR)来评估图像在处理过程(如压缩、噪声干扰或传输)中的保真度。该工具集成了数据预处理、核心指标计算以及误差结果的可视化分析功能,适用于图像处理算法的性能评估。
功能特性
- 鲁棒的图像读取:自动检测系统自带的测试图像(如 peppers.png),若环境不可用则通过正弦函数复合公式动态生成高频纹理的彩色合成图像,确保程序随时可运行。
- 自动化失真模拟:内置高斯噪声注入功能,能够模拟图像在实际应用中受到的随机干扰,用于验证评估系统的有效性。
- 严格的维度校验:自动检查两幅输入图像的分辨率和通道数(RGB或灰度),确保计算逻辑在一致的维度下执行。
- 高精度数值计算:采用双精度浮点型(double)进行矩阵运算,避免 8 位无符号整数在计算差值或平方时导致的溢出及截断误差。
- 结果可视化:提供直观的三栏式对比界面,展示参考图像、失真图像以及基于热力图的误差分布图。
使用方法
- 初始化环境:启动程序后,系统会自动清除工作区变量、命令行提示符并关闭之前的绘图窗口。
- 准备数据:程序会自动加载图像或生成测试数据。如需处理特定图像,可在代码数据读取部分替换为目标图像的绝对路径。
- 执行评估:运行程序后,系统将自动对参考图像添加高斯噪声,并调用核心算法函数。
- 查看分析结果:
- 在 MATLAB 命令行窗口查看输出的 MSE 均方误差和 PSNR 分贝值。
- 在弹出的图形窗口中观察图像受损情况及误差热力分布,其中误差热力图颜色越趋向红色表示该区域像素差异越大。
实现逻辑
- 图像获取阶段:通过判断标准测试图是否存在来决定是读取文件还是合成图像,并确保最终数据由三通道组成。
- 预处理阶段:引入方差为 0.002 的高斯噪声生成失真样本。
- 核心计算阶段:
- 检测两图尺寸是否相等。
- 将图像数据转换为 double 类型。
- 计算所有像素对应位置差值的平方。
- 对所有像素(含多通道)求取算术平均值得到 MSE。
- 基于 255 的最大像素级,通过对数公式将 MSE 转换为以分贝(dB)为单位的 PSNR。
- 可视化阶段:展示原始图与失真图,并计算像素绝对差值。若为彩色图则转换为灰度热力图,利用 heat 色彩映射表增强误差分布的可读性。
系统要求
- MATLAB 环境(建议 R2016b 及以上版本)
- 图像处理工具箱 (Image Processing Toolbox)
算法与实现细节分析
- 均方误差 (MSE) 计算:
算法公式:MSE = (1 / (M * N * C)) * Σ(I1 - I2)²
代码中通过
(img1 - img2) .^ 2 结合
mean(:) 算子实现,该方法自动兼容了单通道和多通道图像,计算的是所有像素点的平均失真。
- 峰值信噪比 (PSNR) 计算:
算法公式:PSNR = 10 * log10(MAX² / MSE)
其中 MAX 设定为 255.0。程序特别加入了对 MSE 为 0 的特殊情况处理:当两图完全一致时,系统返回 Inf(无穷大),符合数学理论定义。
- 误差图的处理:
为了直观展示失真位置,程序计算了原始图像与失真图像的绝对差值
abs(double(ref_img) - double(dist_img))。如果是 RGB 图像,会将其转换为灰度强度,并应用 'hot' 伪彩色映射。这种处理方式能清晰地揭示高斯噪声在全图的分布特征。