1. PSNR
PSNR 定义为信号(原始图像)的最大可能功率与噪声功率之间的比率,在所考虑的场景中,噪声功率是通过有损压缩引入的。 对于解码图像分量 Id ,参考原始图像分量 I 的均方误差 (MSE) 计算如下:
其中M和N是图像分量的宽度和高度,并且图像分量可以是亮度样本或Cb或Cr色度样本。 PSNR 值计算如下:
其中 B 是图像样本的位深度。 这通常是针对每个帧单独计算的,然后对视频序列的帧进行平均。 由于是对数变换,这相当于使用帧 MSE 的几何平均值,当帧上存在高波动时,应严格考虑其影响。
对于通常由三个颜色分量组成的视频序列,可以报告仅使用亮度分量值计算的亮度 PSNR 值 (PSNRY ),或者可以使用某些加权标准计算使用所有三个分量的加权 PSNR 值 (PSNRW ) 。 采用 4:2:0 采样的内容的流行加权示例是:
一般来说PSNR大于45以上,人眼就比较难以察觉压缩后的图像与原始图像的差距。
2. Bjøntegaard Model
Bjøntegaard 模型已成为一种流行的工具,用于评估给定视频编解码器与参考编解码器在一定质量点或比特率范围内的编码效率。 Bjøntegaard delta (BD) 指标通常根据测试数据点的插值曲线计算为比特率差异或质量差异。
首先,定义两个编码器或编码器配置A和B。 例如,A和B可以代表两个不同的编解码器、同一编解码器的两个不同编码器、或者打开和关闭某个单一编码工具的同一编码器。
然后,为A和B选择一组支持点。一般支持点由量化参数(QP)定义,用于确定速率和失真之间的权衡。 通常,选择 i = 4 个支撑点。某些编码器使用恒定速率因子(CRF)。
然后,选择两个性能度量(PM),这两个度量通常是峰值信噪比(PSNR)和比特率R。使用编码器配置k∈{A,B}和由i索引的所选支持点集对输入视频进行编码。然后,将所得八个压缩视频的两个PM用于后续计算。PM值必须按单调顺序排列。
为确定两个 PM 之间的函数关系,需要决定在插值函数中将哪个 PM 用作因变量,哪个用作自变量。 例如,在 RD 比较的情况下,生成函数 R(D) 或 D(R)。最常见的方法是将R(D)定义为自变量。 为了通用性并表明可以使用其他 PM,我们在下面分别使用术语 Pind(例如,PSNR)和 Pdep(例如,比特率)作为自变量和因变量。
比特率(即因变量)的值可能有多个数量级,因此,比特率被转换为对数域:
其中小写 p 表示对数域。 执行此步骤是为了确保平均 BD 速率值不会偏向更高的比特率。 请注意,某些实现使用自然对数而不是以 10 为底的对数。 然而,从理论上讲,在对数计算中使用不同的基数会导致相同的 BD 值,因为不同的基数对应于插值中的简单线性因子,观察到的差异是由浮点运算引起的数值不准确引起的。
然后,对两种编码器配置 k 进行分段多项式曲线插值,其中使用自变量 Pind(k, i) 和因变量 pdep(k, i) 的位置作为支持点。 所有 I -1 条插值曲线均由三阶多项式表示。 由此产生的分段多项式曲线可以写为:
其中 φ 是表示自变量的辅助变量,参数 ak,i、bk,i、ck,i 和 dk,i 是通过两种编码器配置的插值导出的。 常用的插值方法主要是三次样条插值(CSI)、分段三次 Hermite 多项式插值(PCHIP)和 Akima 插值。
然后,通过积分计算两个所得插值之间的差异。 选择上限和下限作为自变量(例如 PSNR)的重叠部分。 两组支撑点的边界由下式计算:
最后,两条插值曲线之间的平均相对差值,我们称之为 Bjøntegaard-Delta (BD) 或 ΔBD,由下式获得:
积分范围 ΔPind = Pind,high − Pind,low。 它描述了使用编码器 k = A 相对于参考编码器 k = B 进行编码时在积分范围内的相对比特率差异。请注意,平均差(即积分)是在对数域中计算的 ,与计算非对数域中的平均差异相比,它强调小差异并减少大差异的影响。 因此,BD 值可以解释为在对数域中平均的平均相对差值。
从数学上来说,BD 演算的定义在其大部分组成部分中都是清晰且独特的。 唯一的不确定性是确定 ak,i、bk,i、ck,i 和 dk,i 的插值方法的选择。