PSNR和SSIM的matlab源代码,图像质量评价指标之 PSNR 和 SSIM

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)

# method 2

psnr = skimage.measure.compare_psnr(im1, im2, 255)

针对超光谱图像,我们需要针对不同波段分别计算 PSNR,然后取平均值,这个指标称为 MPSNR。

2. SSIM (Structural SIMilarity) 结构相似性

$SSIM$ 公式基于样本 $x$ 和 $y$ 之间的三个比较衡量:亮度 (luminance)、对比度 (contrast) 和结构 (structure)。

$$l(x,y) = \frac{2\mu_x \mu_y + c_1}{\mu_x^2+ \mu_y^2 + c_1}$$ $$c(x,y) = \frac{2\sigma_x \sigma_y + c_2}{\sigma_x^2+ \sigma_y^2 + c_2}$$ $$s(x,y) = \frac{\sigma_{xy} + c_3}{\sigma_x \sigma_y + c_3}$$

一般取 $c_3 = c_2 / 2$。

$\mu_x$ 为 $x$ 的均值

$\mu_y$ 为 $y$ 的均值

$\sigma_x^2$ 为 $x$ 的方差

$\sigma_y^2$ 为 $y$ 的方差

$\sigma_{xy}$ 为 $x$ 和 $y$ 的协方差

$c_1 = (k_1L)^2, c_2 = (k_2L)^2$ 为两个常数,避免除零

$L$ 为像素值的范围,$2^B-1$

$k_1=0.01, k_2=0.03$ 为默认值

那么

$$SSIM(x, y) = [l(x,y)^{\alpha} \cdot c(x,y)^{\beta} \cdot s(x,y)^{\gamma}]$$

将 $\alpha,\beta,\gamma$ 设为 1,可以得到

$$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)}$$

每次计算的时候都从图片上取一个 $N×N$ 的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。

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

ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)

针对超光谱图像,我们需要针对不同波段分别计算 SSIM,然后取平均值,这个指标称为 MSSIM。

获取更多精彩,请关注「seniusen」!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值