本文参考自JVET-T2016-v2.
客观评价指标
视频编解码效果通常有主观评价和客观评价两种方式。主观评价是根据一套完备的规则来设计实验,并组建实验测试人员团体来对视频质量进行打分。而客观评价往往是通过数学公式计算来得到视频质量效果的量化评价。
最常用的客观评价指标是BD-rate(Bjøntegaard delta bit rate),此外还有其他与主观感知相联系的指标,例如,SSIM(Structural SIMilarity),MS-SSIM(Multi-Scale SSIM), VMAF(Video Multimethod Assessment Fusion)等。
BD-rate 计算流程
1. 计算每帧的PSNR
PSNR(Peak Signal-to-Noise Ratio)是指峰值信噪比,常用于衡量信号质量。其计算公式为:
P
S
N
R
=
10
⋅
log
10
(
(
255
≪
(
b
i
t
D
e
p
t
h
−
8
)
)
2
M
S
E
)
PSNR=10 \cdot \log_{10}(\frac{(255\ll (bitDepth-8))^2}{MSE})
PSNR=10⋅log10(MSE(255≪(bitDepth−8))2)
其中,bitDepth是指位深,通常有8 bit,10 bit,12 bit,16 bit等;MSE是重建图像和原始图像的均方误差,像素值分别用
d
e
c
(
x
,
y
)
dec(x,y)
dec(x,y)和
o
r
i
(
x
,
y
)
ori(x,y)
ori(x,y)表示,其公式为:
M
S
E
=
1
W
⋅
H
∑
y
=
0
H
−
1
∑
x
=
0
W
−
1
(
d
e
c
(
x
,
y
)
−
o
r
i
(
x
,
y
)
)
2
MSE=\frac{1}{W\cdot H}\sum_{y=0}^{H-1}\sum_{x=0}^{W-1}(dec(x,y)-ori(x,y))^2
MSE=W⋅H1y=0∑H−1x=0∑W−1(dec(x,y)−ori(x,y))2
2. 计算不同QP之对应的PSNR和BitRate
按照JVET通测条件(CTC,Common Test Condition)的规定,QP取值为22,27,32,37,分别计算每个QP值下整个序列所有帧的PSNR和BitRate,这里两者均是平均数值。
P
S
N
R
s
e
q
=
1
N
u
m
F
r
a
m
e
s
∑
k
=
0
N
u
m
F
r
a
m
e
s
−
1
P
S
N
R
PSNR_{seq}=\frac{1}{NumFrames}\sum_{k=0}^{NumFrames-1}PSNR
PSNRseq=NumFrames1k=0∑NumFrames−1PSNR
B
i
t
R
a
t
e
s
e
q
=
8
⋅
F
i
l
e
s
i
z
e
I
n
B
y
t
e
s
⋅
f
p
s
N
u
m
F
r
a
m
e
s
⋅
1000
BitRate_{seq}=\frac{8\cdot FilesizeInBytes\cdot fps}{NumFrames\cdot 1000}
BitRateseq=NumFrames⋅10008⋅FilesizeInBytes⋅fps
其中,NumFrames是序列包含的帧数,FilesizeInBytes是每帧的码数,fps是每秒的帧数。
3. 综合考虑YUV
图像可由YCbCr(简称为YUV)表示,其中Y是亮度分量,Cb和Cr是色度分量。由于人类眼睛对于亮度分量的敏感程度远大于色度分量,因此综合考虑YUV时,需要重点关注Y。因此对于不同的分量计算得到的PSNR,需要进行加权平均,而6:1:1(或更大)的权值设定下,图像整体的PSNR即为:
P
S
N
R
=
1
8
(
6
⋅
P
S
N
R
Y
+
1
⋅
P
S
N
R
U
+
1
⋅
P
S
N
R
V
)
PSNR=\frac{1}{8}(6\cdot PSNR_Y+1\cdot PSNR_U+1\cdot PSNR_V)
PSNR=81(6⋅PSNRY+1⋅PSNRU+1⋅PSNRV).
4. 计算序列的BD-rate
由于不同的QP值计算得到多个(BitRate,PSNR)的点(以BitRate为横坐标,PSNR为纵坐标),因此,可采用Piece Cubic Fitting对这些点进行曲线拟合。对于两种不同压缩方法的比较,可以分别得到两条拟合曲线,为了比较两种方法的效果差异性,可以计算曲线之间的面积积分,积分的上下界可由两组(BitRate,PSNR)点中的PSNR的最大值和最小值而定。具体如下图所示,其中BitRate通常采用对数坐标。
5. 计算方法增益
比较两种方法的好坏,曲线在上方的方法较优,称为获得增益(Gain),反之,曲线在下方方法较劣,称为获得损失(Loss)。Gain和Loss的计算结果就是相对性能的提升和降低,单位是%。
根据上述计算得到的曲线之间的积分面积(
Δ
a
r
e
a
\Delta area
Δarea)和PSNR的最大值(
P
S
N
R
m
a
x
PSNR_{max}
PSNRmax)和最小值(
P
S
N
R
m
i
n
PSNR_{min}
PSNRmin),可以得到平均Gain或Loss(公式里用Avg表示),公式为:
A
v
g
=
(
1
0
Δ
a
r
e
a
P
S
N
R
m
a
x
−
P
S
N
R
m
i
n
−
1
)
∗
100
%
Avg=(10^ {\frac{\Delta area}{PSNR_{max}-PSNR_{min}}}-1)*100\%
Avg=(10PSNRmax−PSNRminΔarea−1)∗100%
Note:由于之前在曲线拟合时,BitRate采用的是log坐标,也就是对BitRate的值进行对数化,因此曲线积分得到面积差值相当于是BitRate的比值。