本文结构如下。在第一章中,我将介绍计算BD-Rate的基本步骤。在第二章中,我将通过一个具体的例子来说明计算度量时的结果差异。在第三章中,我将从数学的角度来研究它们的区别。会有一个结论。
计算BD率
编解码器质量比较实验包括对不同迭代参数(比特率、qp、cq-level等)的一系列编码、解码和度量计算。这样,将构建RD曲线(比特率度量图上的点)。我们使用新版本的VQProbe2.3.0 来测试以下指标的给定结果:PSNR、VMAF、SSIM、CIEDE2000、CAMBI、MS-SSIM。这些指标有助于衡量编码视频的质量。尽管如此,仍需要更多顶级元指标来评估编解码器的质量。因此,通常使用BD-Rate。
BD-Rate(Bjontegaarddelta 速率)允许测量编解码器或编解码器功能提供的比特率降低,同时保持与客观指标测量的相同质量。Bjontegaard[1] 于2001年在“计算RD曲线之间的平均PSNR差异”中描述了BD-Rate方法。它是两条RD曲线的函数:一条参考曲线和一条测试曲线(顺序很重要)。BD-Rate以百分比形式测量。当计算的指标相同时,BD-rate为0%。当测试显示比参考更好的结果时,BD-Rate值小于零。
如果测试优于参考,则BD-Rate为阴性。
实际上,RD曲线是一个近似值。事实上,没有曲线。有一组点,每个点对应一个编码流。展望未来,这就是与众不同的地方。
准备好所有数据后,计算[1] 具有以下步骤。
步骤1.将轴更改为对数并转置。因此,metric-bitrate到 log_bitrate-metric。
步骤2.三次多项式逼近。这种数值方法通过最小化函数与数据的标准偏差来拟合三次多项式的系数。返回四个数字:a、b、c、d。
步骤 3.设置集成边界。我们想比较相同条件下的RD 曲线,但它们的范围不同,所以我们需要对数据进行修剪。
左侧边界定义为两个数据集的最小值中的最大值。右侧边界定义为两个数据集的最大值中的最小值。
步骤4.计算曲线下面积,即计算step2函数在step3范围内的积分。
步骤 5.获取BD-Rate 值。
实验
对于这一系列实验,我编码了FourPeople_480x270_60.y4m(从AOM-CTC 流中选择的a5–270p)。编码是使用libx264 编解码器在中等和超快预设上完成的。目标比特率为1000、3000、5000、7000、10000kbps。使用 ViCueSoft的 Codec TestPlatform(目前正在开发中)进行了一系列实验。
测量结果示于表中。
我在实现中找到了上一章中描述的算法:在python 上(JoaoAscenso、JaymeWX)、在excel 上(TimBruylants、ETRO、VrijeUniversiteit Brussel)。VQProbe在 C++实现上运行。所有这些执行都是基于三次多项式的近似(下一章会详细介绍)。所有这些程序都返回相同的结果BD-Rate=52.9%。同时,AOM的 BD-Rate给出了41.25% 的结果。
仔细观察就会发现差异。使用python,前者使用numpy库的polyfit函数。同时,AOM使用 scipy 库的pchip_interpolate 对RD 曲线进行插值,从而使用分段三次Hermite 插值多项式(PCHIP)。
中间步骤数据:
多项式插值给出了a=-0.00417, b=0.577055, c=-26.2749,d=400.8928(上一章介质预设步骤2 的方程因子)。a=0.001237,b=-0.15458, c=6.551819, d=-86.5756 — 超快。
积分是在 40.69和 49.86之间的边界内进行的(上一章的第3 步)。
图形下的中预设计算面积为70.57(用于多项式插值)和71.07(用于PCHIP 插值)。对于超快预设:对应的74.47 和 74.23。
这些图片解释了结果的差异。不同的曲线表示图表下的不同区域,因此表示不同的BD-Rates。因此,点越少,插值中可能的分歧就越大。
审核编辑:刘清
-
解码器
+关注
关注
9文章
1143浏览量
40768 -
编码器
+关注
关注
45文章
3645浏览量
134628 -
比特率
+关注
关注
1文章
28浏览量
10622
原文标题:VicuesoftBD-rate:一个名称-两个指标AOM与世界
文章出处:【微信号:哲想软件,微信公众号:哲想软件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论