摘要
率失真优化技术在视频编码中扮演了重要的角色,使用其选择最优的编码参数是保证
视频编码效率的关键。但是,率失真优化技术不属于视频编码标准化的范畴,编码器可以使用不同的优化方法选择编码参数 。不过,为了追求高编码效率,率失真优化方法是最主要的编码参数选择优化技术。与以往的编码标准相比,H.266/VVC
采用了更先进的编码算法和多种高效的编码工具,因此编码过程也面临更多的编码参数选择 。
对于一个典型的基
于
混合编码框架的视频编码
系统,有大量编码参数,包括预测模式、运动估计、量化、编码模式等,且每个编码参数
都有多个候选值,如在
H.266NVC
中帧内预测模式包括
65
种角度模式、
DC
模式、
Planar
模式、
MIP
模式等。
针对 H.266/VVC 标准,首先从理论角度讨论拉格朗日优化方法在图像GOP层、Slice层、CTU层、CU 层如何应用,继而从实现角度介绍 H.266/VVC 参考模型
VTM
中确定最优编码参数的具体过程。由于主要编码参数属于 CTU
层及其以下层,因此本节只关注
CTU
层及其以下层编码单元编码参数的具体优化过程。
图1 拉格朗日率失真优化曲线
一、H.266/VVC 中的率失真优化
1. 视频图像组(GOP)的率失真优化
时域预测允许使用其他图像组 (GOP) 的图像,图像组已经不是完全 独立的编码单元。简单起见,本节讨论的图像组仍看成相互独立编码,但后续的优化方法仍然适用于现有标准的编码结构不同图像组的编码过程相互独立,不同图像组间的编码参数及率失真性能互不影响,因此不同图像组可以独立优化编码参数。
一个图像组包含多幅图像,时域预测技术把当前编码图像与参考图像关联起来,图 2 给出了 个低时延编码结构。可以看到,第 1幅图像作为后续多幅图像的参考图像,这就使得这些图像的率失真性能相互依赖。因此, GOP 率失真优化过程需要考虑图像之间的依赖关系 。对于给定 GOP ,视频编码的率失真优化是指在满足该图像组编码比特数(目标比特数)限制条件下获取1组最佳的编码参数集,使用该编码参数集可以获得最优的重建视频质 量。
图2 低时延编码结构
图像组率失真优化可以通过依次独立确定每幅图像的最优编码参数来实现,每幅图像通过 值来反映其与后续图像率失真性能的依赖关系。 主要与视频的内容特性和总目标比特数相关,可以通过实验方法获取。
表示第 i 幅图的率失真代价, 表示为第 i 幅图像的失真, 是该图像的比特数, 为常数,表示第 j 幅图像的失真受第 i 幅图像失真的影响程度, b表示当前图像 与后续图像率失真性能的依赖关系。
2. 片层(Slice)的率失真优化
在H.266/VVC 标准中,片 (Slice) 是相对独立的编码单元,如嫡编码、帧内预测、运动矢量预测等关键编码模块都不使用当前图像其他片的信息,只在片边界进行环路滤波时可能会使用相邻片的信息。空域预测技术使 CTU 间的率失真性能相互影响,如帧内预测使用相邻 CTU 重建像素值,运动矢量预测使用相邻 CTU 的运动矢量。这种空域预测关系复杂多变,CTU间率失真性能的相互关系更难描述,片层的率失真优化的关键是明晰 CTU间率失真性能的关系。目前,率失真优化中CTU间率失真性能的相关性还未被考虑,通常按CTU具有独立的率失真性能进行优化。
3. CTU 级的率失真优化
CTU是H.266/VVC
的基本编码单元,每个
CTU
可以被划分为不同的编码单元
CU, 每个 CU
可以选择不同的预测模式
因此,可以把
CTU
编码参数的优化过程分成:
CTU 主要选择不同的 CU
划分模式、
CU
层主要选择不同的预测模式每个 CTU
可以以多类型树的形式被划分为不同的编码单元
CU,
包括从最大
128x128到最小 4x4
的多种正方形、矩形划分,具体的
CU
划分模式是
CTU
的关键编码参数。
CTU 层的率失真优化目的是确定最优的 CU
划分模式,也称为
CU
划分模式选择
CTU
层的
CU 划分模式选择的率失真优化问题可以描述为:在总比特数受限的情况下,选择
CU 划分模式,使 CTU
的总失真度
最小。
4. CU 层的率失真优化
H.266/VVC 中,每个
CU
可以采用不同的预测模式。
预测模式主
要可以分为两类:帧内预测模式和帧间预测模式。 CU
层率失真优化的目的是为
CU 选择最优的预测模式及预测参数帧内预测是利用当前图像己编码的像素对当前编码块进行预测,H.266/VVC 提供了 65 种角度模式、 DC
模式、
Planar
模式、
MIP
模式等。帧内预测就是选择一
种最优的预测模式,可以采用基于拉格朗日优化法的率失真优化方法:
其中,D(Mode)和
R(Mode)
分别表示采用不同帧内预测模式时的失真和比特数;如
为拉格朗日因子。最优的预测模式为率失真代价最小的模式。粗选时 D(Mode)为
SAD和
SATD的最小值,细选时 D(Mode) 为
SSE。
帧间预测是利用已编码其他图像的像素预测当前编码块, H.266/VVC
允许使用不同的
运动矢量、多个参考图像、 Merge、
AMVP
和仿射等技术。因此,帧间预测模式需要结合
Merge、AMVP
等技术,为每个
CU
选择运动矢
量、参考图像、预
测权值等编码参数。可以
采用基于拉格朗日优化法的率失真优化方法:
其中,D(Motion)和 R(Motion) 分别表示采用不同帧内预测模式时的失真和比特数;如 为拉格朗日因子。最优的预测模式为率失真代价最小的模式。
对于一个采用帧间预测的
CU,
包含大量的运动模式,计算每种运动模式下的
D(Motion)、
R(Motion)
都需要使用该运动模式进行编码,计算复杂度极高
,
通常可
以将式
简化为:
其中,DFD(Motion) 为采用不同运动模式时运动补偿预测误差; 为运动矢量 相关信息(运动矢量、参考图像索引、参考队列索引等)的编码比特数;如 为拉格朗日因子。
二、 VTM 中的率失真优化实现
目前,实际的视频编码率失真优化过程包括两部分:速率控制部分将视频序列分成编码单元,考虑编码单元的相关性通过码率分配技术确定每个编码单元目标码率,根据目标码率独立确定关键编码参数 化参数;利用拉格朗日优化法确定每个编码单元的其他 编码参数(除量化参数外)。
1. CTU 编码优化
计算每个编码参数组合的率失真代价都需要采用这组编码参数对 CTU
进行编码,这会导致计算复杂度非常高。为了降低计算复杂度,可以根据不同的编码参数采用不同的简化
方法。帧间预测中的失真为运动补偿预测误差,可以写为:
其中Diff(i,j) 表示编码单元经过运动补偿后预测误差位于 (i,j) 处的值。另外,采用 Hadamard 变换代替实际的 DCT (DST) 也可以有效降低计算复杂度,且其率失真性能与使用 DCT (或 DST) 相近。
拉格朗日因子是采用拉格朗日优化法确定编码参数的关键。速率控制已经为每个 CTU 确定了量化参数,然后可以根据拉格朗日因子与量化参数的关系进 步确定拉格朗日因子 VTM 中使用了两个拉格朗日因子: 和 。
其中, QP
为量化参数; 表示加权因子,该值由编码配置和编码图像在
GOP
中所处的位
置决定
变量
的取值与当前图像是否作为参考图像有关,计算方法为:
其中, 表示 参考图像个数以上为亮度分量的拉格朗日因子,而色差分量的拉格朗日因子计算方法为:
其中, 为色度分量的量化参数。
2. CU 划分模式判别
在H.266/VVC 中,每个
CU
(不受限时)支持四叉树、
二叉
水平、二叉垂直、三叉水平、
三叉垂直等划分结构
因此,一个
CTU
可以递归划分成众多种
CU
划分模式。为了便于
表述,将深度为0 的
CU
记为
LCU,
将深度为 1 的
CU
记为
,将深度为 2 的 CU记为 ,
将深度为 3 的
CU
记作
,
将深度为 4 的
CU
记作 。
如图
3
所示,
其中 i,j,k,l
表示各
CU
在父块中的序号,取值范围如下:
当父块为四叉树划分时,取值范围为 {0,1,2,3}; 当父块为三 叉树划分时,取值范围为 {0,1,2}; 父块为二 叉树划分时,取值范围为 {0,1}。
图3 CU模式划分过程
在划分过程中就进行率失真代价的计算。以128x128的LCU为例,首先尝试四叉树划分(QT),每次划分都记录相应划分的率失真代价,划分到最底层后(尺寸达到最小或其他规则不能再继续向下划分),比较各个层级划分的率失真代价,选择最小的作为最终的划分方案。每次划分要遍历不同的划分模式,并且划分到不能划分为止,因此具有较大的复杂度。
3. 帧内预测模式判别
4. 帧间预测模式判别