matlab算图像的psnr和ssim,图像质量评价指标之 PSNR 和 SSIM

本文介绍了如何使用MATLAB计算图像的PSNR和SSIM,这两个是常用的图像质量评价指标。PSNR通过均方误差和峰值信噪比计算,而SSIM基于亮度、对比度和结构的比较。对于彩色图像,可以计算单通道的平均值,或者转换为YCbCr后再计算。文章还提到了超光谱图像的特殊处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比

给定一个大小为 \(m×n\) 的干净图像 \(I\) 和噪声图像 \(K\),均方误差 \((MSE)\) 定义为:

\[MSE = \frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i, j)-K(i,j)]^2\]

然后 \(PSNR (dB)\) 就定义为:

\[PSNR = 10 \cdot log_{10}(\frac{MAX_I^2}{MSE})\]

其中 \(MAX_I^2\) 为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由 \(B\) 位二进制来表示,那么 \(MAX_I = 2^B-1\)。

一般地,针对 uint8 数据,最大像素值为 255,;针对浮点型数据,最大像素值为 1。

上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。

分别计算 RGB 三个通道的 PSNR,然后取平均值。

计算 RGB 三通道的 MSE ,然后再除以 3 。

将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。

其中,第二和第三种方法比较常见。

# im1 和 im2 都为灰度图像,uint8 类型

# method 1

diff = im1 - im2

mse = np.mean(np.square(diff))

psnr = 10 * np.log10(255 * 255 / mse)</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值