评价指标PSNR和SSIM

PSNR: 峰值信噪比,单位是dB,数值越大表示失真越小

PSNR是基于对应像素点间的误差,即基于误差敏感的图像质量评价。由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。

峰值信号的能量与噪声的平均能量之比,通常表示的时候取 log 变成分贝(dB)。

 

SSIM: 结构相似性,也是一种全参考的图像质量评价指标,它分别从亮度、对比度、结构三方面度量图像相似性。SSIM取值范围[0,1],值越大,表示图像失真越小SSIM在图像去噪、图像相似度评价上是优于PSNR的

 

### PSNR SSIM 的概念、计算方法及应用场景 #### 一、PSNR (Peak Signal-to-Noise Ratio) **定义**: PSNR 是一种常用的图像质量评估指标,用于衡量重建图像与原始图像之间的差异程度。它通过比较均方误差(Mean Squared Error, MSE)来量化两幅图像的质量差距[^1]。 **计算公式**: 假设 $X$ 表示原始图像,$Y$ 表示失真后的图像,则 PSNR 可表示为: $$ \text{MSE} = \frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[X(i,j)-Y(i,j)]^2 $$ 其中 $m$, $n$ 分别代表图像的高度宽度。接着, $$ \text{PSNR} = 10 \cdot \log_{10} \left( \frac{\text{MAX}_I^2}{\text{MSE}} \right) $$ $\text{MAX}_I$ 是图像的最大可能像素值,在 8-bit 图像中通常取 255[^3]。 **特点**: - PSNR 主要关注的是像素级别的误差。 - 它适合于简单的压缩算法或者噪声模型中的性能分析。 - 缺点在于无法很好地反映人类视觉系统的感知特性。 --- #### 二、SSIM (Structural Similarity Index Measure) **定义**: SSIM 被设计用来模拟人眼对图像变化的敏感度,不仅考虑亮度对比度的变化,还引入了结构信息作为重要组成部分。 **计算公式**: 给定两个窗口大小相同的局部区域 $x$ $y$ ,其 SSIM 值由下述表达式给出: $$ \text{SSIM}(x,y) = \frac{(2\mu_x\mu_y+c_1)(2\sigma_{xy}+c_2)}{(\mu_x^2+\mu_y^2+c_1)(\sigma_x^2+\sigma_y^2+c_2)} $$ 这里, - $\mu_x,\mu_y$: 平均强度; - $\sigma_x,\sigma_y$: 方差; - $\sigma_{xy}$: 协方差; - $c_1,c_2$: 小常数以稳定除法运算并防止分母为零[^4]。 对于整张图片的整体 SSIM 得分可以通过滑动窗口的方式逐块计算后再平均得到最终分数。 **特点**: - 更贴近人的主观感受,能较好体现结构性特征匹配情况。 - 对某些特定类型的畸变非常有效,比如模糊或几何形变等不易被传统距离测度捕捉到的现象[^2]。 --- #### 应用场景对比 | 特性/指标 | PSNR | SSIM | |------------|------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------| | 数据类型 | 数字化信号处理领域广泛应用 | 多媒体通信、计算机视觉等领域 | | 敏感因素 | 高频细节损失 | 结构破坏 | | 输出形式 | 连续数值范围 | [-1,1],接近1表明高度相似 | 尽管如此,单独依赖任何一个标准都可能存在局限性;因此实践中往往建议综合考量多个维度的信息源来进行更加精确可靠的评测工作。 ```python import numpy as np from skimage.metrics import structural_similarity as ssim from math import log10, sqrt def calculate_psnr(img1, img2): mse = np.mean((img1 - img2)**2) if mse == 0: return float('inf') max_pixel_value = 255.0 psnr_result = 20 * log10(max_pixel_value / sqrt(mse)) return psnr_result # Example Usage of SSIM and PSNR Calculation imageA = ... # Load your first image here. imageB = ... # Load the second one. psnr_score = calculate_psnr(imageA.astype(float), imageB.astype(float)) ssim_index, _ = ssim(imageA, imageB, full=True, multichannel=True) print(f'PSNR Score:{psnr_score}') print(f'SSIM Index:{ssim_index}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值