单通道,三通道,多通道图像计算PSNR,SSIM 代码示例与函数注意事项讲解(peak_signal_noise_ratio,structural_similarity)

Posted 呆呆象呆呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单通道,三通道,多通道图像计算PSNR,SSIM 代码示例与函数注意事项讲解(peak_signal_noise_ratio,structural_similarity)相关的知识,希望对你有一定的参考价值。

0、直接使用

单通道图片计算指标代码看2.2

三通道图片计算指标代码看2.3

1、PSNR,SSIM的知识点讲解、原理分析

1.1 PSNR

Peak Signal-to-Noise Ratio 峰值信噪比 单位为 d B dB dB

给定一个大小为 m × n m \\times n m×n的干净图像 I I I和噪声图像 K K K,均方误差 M S E MSE MSE定义为:
M S E = 1 m n ∑ i = 0 m − 1 ∑ j = 0 n − 1 [ I ( i , j ) − K ( i , j ) ] 2 M S E=\\frac1m n \\sum_i=0^m-1 \\sum_j=0^n-1[I(i, j)-K(i, j)]^2 MSE=mn1i=0m1j=0n1[I(i,j)K(i,j)]2
然后 P S N R PSNR PSNR就定义为:
P S N R = 10 ⋅ log ⁡ 10 ( M A X I 2 M S E ) 或 者 P S N R = 20 ⋅ log ⁡ 10 ( M A X I M S E ) P S N R=10 \\cdot \\log _10\\left(\\fracM A X_I^2M S E\\right)\\\\ 或者\\\\ P S N R=20 \\cdot \\log _10\\left(\\fracM A X_I\\sqrtM S E\\right) PSNR=10log10(MSEMAXI2)PSNR=20log10(MSE MAXI)
其中 M A X I 2 M A X_I^2 MAXI2为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由位 B B B二进制来表示,那么 M A X I = 2 B − 1 M A X_I=2^B-1 MAXI=2B1

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

上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。其中,第二和第三种方法比较常见。

  • 分别计算 RGB 三个通道的 PSNR,然后取平均值。
  • 计算 RGB 三通道的 MSE ,然后再除以 3 。
  • 将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。

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

1.2 SSIM

Structural SIMilarity 结构相似性

S S I M SSIM SSIM公式基于样本 x x x和之 y y y间的三个比较衡量:亮度 (luminance)、对比度 (contrast) 和结构 (structure)。
l ( x , y ) = 2 μ x μ y + c 1 μ x 2 + μ y 2 + c 1 c ( x , y ) = 2 σ x σ y + c 2 σ x 2 + σ y 2 + c 2 s ( x , y ) = σ x y + c 3 σ x σ y + c 3 l(x, y)=\\frac2 \\mu_x \\mu_y+c_1\\mu_x^2+\\mu_y^2+c_1\\\\c(x, y)=\\frac2 \\sigma_x \\sigma_y+c_2\\sigma_x^2+\\sigma_y^2+c_2\\\\s(x, y)=\\frac\\sigma_x y+c_3\\sigma_x \\sigma_y+c_3 l(x,y)=μx2+μy2+c12μxμy+c1c(x,y)=σx2+σy2+c22σxσy+c2s(x,y)=σxσy+c3σxy+c3
一般取 c 3 = c 2 / 2 c_3=c_2 / 2 c3=c2/2