单通道,三通道,多通道图像计算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=0∑m−1j=0∑n−1[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=10⋅log10(MSEMAXI2)或者PSNR=20⋅log10(MSEMAXI)
其中
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=2B−1。
一般地,针对 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。
- μ x \\mu_x μx为 x x x的均值
- μ y \\mu_y μy为 y y y的均值
- σ x 2 \\sigma_x^2 σx2为 x x x的方差
- σ y 2 \\sigma_y^2 σy2为 y y y的方差
- σ x y \\sigma_xy σxy为 x x x和 y y y的协方差
- c 1 = ( k 1 L ) 2 , c 2 = ( k 2 L ) 2 c_1=\\left(k_1 L\\right)^2, c_2=\\left(k_2 L\\right)^2 c1=(k1L)2,c多通道(比方RGB三通道)卷积过程