基于多维特征指标的图像质量评价与统计分析系统
项目简介
本项目是一套基于 MATLAB 开发的综合性图像处理与分析工具,专注于全方位计算和评估数字图像的物理属性与视觉质量。系统集成了统计学特征、信息论分析、频域纹理检测以及全参考客观质量评价等四大维度的核心算法,旨在为图像增强、去噪算法评估、医学影像分析及计算机视觉质量管控提供量化依据。
代码通过清晰的模块化设计,实现了从单一图像的特征提取到成对图像(参考图 vs 失真图)的差异性评估,并提供直观的可视化报告。
主要功能特性
系统主要实现了十二项核心指标的算法逻辑,具体功能模块如下:
1. 基础统计特征分析
用于量化图像的基本亮度与对比度特性:
- 灰度均值 (Mean):衡量图像的整体亮度水平。
- 标准差 (Standard Deviation):反映图像像素值的离散程度,即对比度。
- 相对标准差 (RSD / 变异系数):通过标准差与均值的比值,提供归一化的离散度量。
2. 图像质量客观评价 (全参考)
基于参考图像与失真图像的像素级对比,量化失真程度:
- 均方差 (MSE):计算两幅图像像素差值的平方均值。
- 均方根误差 (RMSE):MSE 的平方根,量纲与原像素一致。
- 峰值信噪比 (PSNR):基于 MSE 计算的信号保真度指标,单位为 dB。
- 结构相似性 (SSIM):从亮度、对比度和结构三个维度模拟人类视觉系统的感知差异 (自定义实现算法)。
3. 信息论特征分析
从信息含量的角度评估图像:
- 信息熵 (Entropy):衡量单幅图像的信息丰富度与复杂度。
- 互信息 (Mutual Information, MI):评估两幅图像之间的统计相关性。
- 交叉熵 (Cross Entropy):衡量两幅图像概率分布之间的差异,常用于多模态分析。
4. 频域与纹理细节评估
反映图像的清晰度与空间变化率:
- 空间频率 (Spatial Frequency, SF):基于行频与列频计算,反映图像纹理的整体活跃度。
- 边缘强度/清晰度 (Tenengrad):利用 Sobel 算子提取梯度信息,衡量图像的聚焦程度与边缘锐度。
系统要求
- 软件环境:MATLAB
- 工具箱依赖:Image Processing Toolbox (用于图像读取
imread、滤波 imfilter、直方图 imhist 等基础操作)
使用方法
- 将核心脚本文件放置于 MATLAB 当前工作路径下。
- 直接运行
main 函数。 - 系统将自动执行以下流程:
* 加载内置测试图像(默认为 Cameraman),若不存在则生成体模图像。
* 生成模拟失真图像(添加高斯模糊与随机噪声)。
* 计算所有评价指标。
* 在命令行窗口输出详细的统计分析报告。
* 弹出图形窗口显示可视化对比分析结果。
详细代码逻辑与算法实现分析
系统主程序 main.m 包含完整的数据流处理与核心算法子函数实现,具体逻辑如下:
1. 数据准备与预处理
程序首先尝试读取标准测试图
cameraman.tif,若读取失败则自动生成 Shepp-Logan 体模作为替代。
- 格式转换:统一将图像转换为灰度图,并将数据类型转换为
double (0-255 范围) 以保证计算精度。 - 失真模拟:为了演示全参考指标,代码通过
imfilter 施加 $5 times 5$ 的高斯模糊,并叠加标准差为 15 的高斯白噪声 (randn),最后进行截断处理防止像素溢出。
2. 核心算法实现细节
#### A. 基础统计 (calc_basic_stats)
- 直接利用矩阵运算计算整体均值和标准差。
- 特殊处理:在此处增加了对零均值的判断,防止计算 RSD 时出现除以零的错误。
#### B. 误差类指标 (
calc_error_metrics)
- MSE/RMSE:基于两幅图像的差值矩阵 (
img1 - img2) 进行平方均值计算。 - PSNR:采用公式 $10 log_{10}(frac{255^2}{MSE})$ 计算。代码包含对 MSE=0 (无失真) 的情况处理,返回 Inf。
#### C. 结构相似性 (
calc_ssim_custom)
未使用 MATLAB 内置函数,而是基于 Wang et al. 的算法进行了
自定义实现:
- 参数设定:设定常数 $K_1=0.01, K_2=0.03$ 以及动态范围 L=255。
- 局部统计:使用 $11 times 11$ 的高斯加权窗口进行卷积 (
filter2),分别计算两幅图像的局部均值 ($mu_x, mu_y$)、局部方差 ($sigma_x^2, sigma_y^2$) 和协方差 ($sigma_{xy}$)。 - SSIM 映射:根据 SSIM 定义公式计算局部相似度图 (SSIM Map),最终取全图均值作为输出。
#### D. 信息论特征 (
calc_entropy &
calc_mutual_info_cross)
- 信息熵:使用
imhist 获取归一化直方图作为概率分布 $p$,计算 $-sum p log_2 p$。代码中去除了 $p=0$ 的项以避免计算错误。 - 互信息 (MI):
* 通过索引映射法 (
idx = u1 + 1 + 256*u2) 和
accumarray 高效计算两幅图像的
联合直方图 (Joint Histogram)。
* 基于公式 $MI = H(A) + H(B) - H(A,B)$ 求解。
- 交叉熵:计算参考图分布 $p$ 与失真图分布 $q$ 之间的差异:$-sum p(x) log_2 q(x)$。
*
平滑处理:为避免 $log(0)$,在分布 $q$ 中加入了极小值 epsilon ($10^{-10}$) 进行平滑。
#### E. 频域与纹理 (calc_spatial_texture)
- 空间频率 (SF):分别计算图像在行方向和列方向的相邻像素差分,求其平方和均值的平方根。
- 清晰度 (Tenengrad):
* 构造 Sobel 算子 ($G_x, G_y$)。
* 利用
conv2 对图像进行卷积计算水平和垂直梯度。
* 计算梯度幅值 $sqrt{G_x^2 + G_y^2}$ 并求均值,以此量化边缘能量。
3. 可视化输出
系统生成一个综合图表窗口,包含四个子图:
- 参考图像:并在标签中展示其信息熵。
- 失真图像:标题展示 PSNR 值,标签展示 SSIM 值,直观对比质量。
- 绝对差异图:计算
abs(Ref - Dist) 并使用 Jet 彩色热力图显示,以此凸显噪声和失真分布区域。 - 直方图对比:在同一坐标系下叠加显示参考图(蓝色)与失真图(红色)的灰度直方图,直观展示亮度分布的偏移和弥散情况。