AV1 编码标准帧间预测技术概述

AV1 编码标准帧间预测

AV1(AOMedia Video1)是一种开源的视频编码格式,它在帧间预测技术上做出了显著的改进和扩展,以提供比现有标准更高的压缩效率和更好的视频质量。以下是AV1帧间预测技术的几个关键点:

  1. 参考帧扩展:AV1将每个帧的参考数从3扩展到7,包括新增的LAST2、LAST3、BWDREF和ALTREF2帧,这为帧间预测提供了更多的选择性和适应性。

  2. 动态时空运动矢量参考:AV1结合了复杂的运动矢量(MV)参考选择方案,通过搜索空间和时间候选对象来获得给定块的良好MV参考。

  3. 重叠块运动补偿(OBMC):AV1使用OBMC技术,通过融合相邻块的运动矢量预测,减少方块效应,提高预测的准确性。

  4. 仿射运动补偿:AV1支持仿射运动补偿,可以处理更复杂的运动模式,如旋转和缩放,适用于快速移动的对象。

  5. 楔形预测:AV1引入了基于楔形的预测模式,通过预定义的二维权重数组来进行预测,以适应块内部的运动矢量场。

  6. 复合预测:AV1支持使用两个参考帧进行复合预测,其中包括常规复合预测和基于楔形的复合预测模式。

  7. 变形运动补偿:AV1利用变形运动模型,允许每个像素根据其在块中的位置有不同的运动补偿权重,以适应复杂的运动场景。

  8. 帧内预测技术的增强:AV1在帧内预测方面进行了增强,支持更多细化的角度模式和非角度模式,如Smooth、DC、Paeth、CFL(Chroma from Luma)模式等。

  9. 优化方法:AV1采用了自适应环路滤波算法来减少预测残差的边缘伪影,并利用深度学习技术来优化帧内预测的模式选择和残差计算过程。

参考帧系统

  • 在视频编码中,解码帧缓冲区(decoded frame buffer)用于存储已经解码的帧,以供帧间预测使用。以下是关于解码帧缓冲区和参考帧选择的详细描述:

    1. 帧缓冲区容量:最多可以存储8个帧。

    2. 参考帧选择:编码每一帧时,可以从解码帧缓冲区中选择最多两个参考帧用于帧间预测。

    3. 单参考帧间预测:只使用一个帧作为参考帧。

    4. 复合帧间预测:使用两个参考帧,并结合这两个参考帧生成的预测块来生成最终预测。

    5. 单向和双向复合预测

      • 单向复合预测:选择的参考帧要么是都在当前帧的显示顺序之前,要么是都在当前帧之后。
      • 双向复合预测:一个参考帧在当前帧的显示顺序之前,另一个在之后。
    6. 参考帧组合

      • 单向复合预测限制在四种组合。
      • 双向复合预测支持所有12种可能的参考帧组合。
    7. 参考帧更新:编码完成后,编码器决定解码帧缓冲区中哪个参考帧需要被替换,并且在比特流中明确信号这一更新。

    8. 参考帧类型:解码帧缓冲区存储四种类型的参考帧:

      • LAST帧:最近过去的已显示帧。
      • BWD帧:将来要显示的帧。
      • GOLDEN帧:较远过去的已显示帧。
      • 交替参考帧(ARF):来自过去或未来的帧,可以选择不显示。
    9. ARF合成:ARF可以由编码器合成,例如,可以通过沿着多个原始帧的运动轨迹进行时间滤波来生成。

  • 通过这种方式,视频编码标准(如AV1)能够灵活地处理复杂的场景和运动,提高编码效率和视频质量。参考帧的智能选择和更新策略对于编码性能至关重要,特别是在快速运动或复杂视频内容中。

空域运动矢量预测

  • 空间运动向量(MV)预测器可以通过利用空间邻近块来识别,这包括:

    • 相邻空间邻近块:当前块的直接邻居,即顶部和左侧的邻近块。
    • 非相邻空间邻近块:接近但不是直接相邻的当前块。
  • 如下图所示,每个空间邻近块是一个8×8的块。空间邻近块的检查顺序如下:

    1. 顶部相邻行:从左到右检查顶部相邻行。
    2. 左侧相邻列:从上到下检查左侧相邻列。
    3. 右上角邻近块:检查右上角的邻近块。
    4. 左上角邻近块:检查左上角的邻近块。
    5. 第一行非相邻块:从左到右检查第一行非相邻块。
    6. 第一列非相邻块:从上到下检查第一列非相邻块。
    7. 第二行非相邻块:从左到右检查第二行非相邻块。
    8. 第二列非相邻块:从上到下检查第二列非相邻块。
  • 在步骤1中,检查每个8×8邻近块的底部两个4×4块。在步骤2中,检查每个8×8邻近块的右侧两个4×4块。在步骤3中,检查右上角8×8邻近块的左下4×4块。检查完右上角邻近块后,检查时间MV预测器。然后,在步骤4至8中,检查每个8×8邻近块的右下角4×4块。
    在这里插入图片描述

  • 在单参考帧间预测中,通过识别使用与当前块相同的单一参考帧进行预测的空间邻近块,并使用它们的相关MV作为空间MV预测器,如下图所示。
    在这里插入图片描述

  • 在复合预测中,当空间邻近块使用与当前块相同的参考帧进行复合预测模式时,相关的MV可以用作空间MV预测器,如下图所示。
    在这里插入图片描述

  • 对于使用两个参考帧的复合预测,在推导MV预测器时,不会检查非相邻空间邻居。

  • 这种空间MV预测机制使得编码器可以根据当前块周围的空间上下文来选择最合适的MV预测,从而提高预测的准确性和编码效率。通过考虑相邻块的运动信息,编码器可以更好地理解和预测当前块的运动矢量,特别是在场景中存在复杂运动或物体快速移动时。

时域运动矢量预测

  • 除了空间邻近块之外,还可以使用参考图像的对齐块来推导称为时间MV预测器的MV。生成时间MV预测器的过程如下:

    1. 存储参考帧的MV:首先,将参考帧的MV与各自的参考帧索引一起存储。

    2. 为当前帧的每个8×8块生成时间MV预测器:对于当前帧的每个8×8块,识别并存储穿过该块的参考帧的MV,并与参考帧索引一起存放在时间MV缓冲区中。

    3. 示例:如下图所示的例子中,参考帧1(R1;图右侧)的MV,即MVref,从R1指向R1的参考帧(图左侧)。在此过程中,它穿过了当前帧的8×8块。MVref被存储在与这个8×8块相关联的时间MV缓冲区中。
      在这里插入图片描述

    4. 运动投影过程:在推导时间MV预测器的过程中,参考帧按预定义的顺序进行扫描:LAST_FRAME、BWDREF_FRAME、ALTREF2_FRAME、ALTREF_FRAME和LAST2_FRAME。按扫描顺序,较晚的参考帧的MV会替换之前识别的MV。

    5. 最终时间MV预测器的确定:给定预定义的块坐标,识别并投影存储在时间MV缓冲区中的相关MV,以派生出指向当前块到其参考帧的时间MV预测器,例如上图中的MV0。

    6. 时间MV预测器的预定义块位置:如下图所示,展示了派生16×16块时间MV预测器的预定义块位置。最多检查七个块以找到有效的时间MV预测器。在检查最近的空间MV预测器之后,但在检查非相邻空间MV预测器之前,会检查时间MV预测器。
      在这里插入图片描述

    7. MV预测器的派生:在派生MV预测器时,将所有空间和时间MV候选项汇集在一起,每个预测器被分配一个在扫描空间和时间邻近块期间确定的权重。基于相关权重,对候选项进行排序和排名,并识别出多达四个候选项,将它们添加到MV预测器列表中。这个MV预测器列表也被称为动态参考列表(DRL),如下一子节所述,它在动态MV预测模式中进一步使用。

  • 通过这种机制,编码器可以根据空间和时间邻近块的运动信息,动态地生成MV预测器,从而提高预测的准确性和编码效率。DRL提供了一种灵活的方式来适应不同的运动场景,增强了编码器对复杂运动矢量场的适应能力。

动态运动矢量预测

  • 运动向量(MVs)的预测可以通过以下方式完成:

    1. 空间邻近块:在当前帧内,利用空间上邻近的编码块来预测MV。
    2. 时间邻近块:在参考帧内,利用时间上邻近的块来预测MV。
    3. MV预测器集合:通过检查所有这些块,最多可以确定四个MV预测器。
  • 对于单参考帧间预测和复合帧间预测,有不同的MV预测模式:

  • 单参考帧间预测的MV预测模式

    • NEARESTMV:始终使用MV预测器列表中索引为0的条目。
    • NEARMV:使用索引为1、2或3的条目之一,信号化一个三元DRL(直接参考列表)索引来指示使用哪个条目作为MV预测器。
    • NEWMV:使用索引为0、1或2的条目之一,信号化一个三元DRL索引来指示使用哪个条目作为MV预测器,并信号化相对于MV预测器的MV差分(MVD)。
    • GLOBALMV:使用基于帧级全局运动参数的MV作为MV预测器。
      在这里插入图片描述
  • 复合帧间预测的MV预测模式

    • NEAREST_NEARESTMV:始终使用列表中索引为0的MV对。
    • NEAR_NEARMV:使用由三元DRL索引信号化的索引为1、2或3的MV对。
    • NEAREST_NEWMV:始终使用列表中索引为0的MV对作为MV预测器,并为第二个MV信号化一个MVD。
    • NEW_NEARESTMV:始终使用列表中索引为0的MV对作为MV预测器,并为第一个MV信号化一个MVD。
    • NEAR_NEWMV:使用由三元DRL索引信号化的索引为1、2或3的MV对作为MV预测器,并为第二个MV信号化一个MVD。
    • NEW_NEARMV:使用由三元DRL索引信号化的索引为1、2或3的MV对作为MV预测器,并为第一个MV信号化一个MVD。
    • NEW_NEWMV:使用由三元DRL索引信号化的索引为0、1或2的MV对作为MV预测器,并为两个MV都信号化MVD。
    • GLOBAL_GLOBALMV:基于每个参考帧的帧级全局运动参数使用MV。
      在这里插入图片描述
  • 除了NEARESTMVNEAREST_NEARESTMV模式外,在所有情况下,都需要信号化DRL索引来指定用作MV预测器的确切MV或MV对。然而,DRL索引的范围在参考列表中可以根据MV预测模式是[0, 1, 2]或[1, 2, 3]。

  • 这种灵活的MV预测机制使得编码器可以根据实际的运动情况和参考帧的信息选择最合适的预测方式,从而提高预测的准确性和编码效率。

帧间预测模式信号

  • 在信号化帧间预测模式时,首先信号一个标志 skip_mode 来确定是否将 SKIP 模式应用于当前编码块。当启用 SKIP模式时,使用两个参考帧和纯平移运动进行复合帧间预测。MVs(运动向量)和参考帧都是隐式派生的(取自 DRL(直接参考列表)的第一项),而不是显式信号化的。

  • 如果 SKIP 模式未启用,则信号参考帧信息。在信号参考帧时,首先信号 comp_mode
    标志以指示用于帧间预测的一个或两个参考帧。此标志仅在编码块的宽度和高度都大于或等于八时信号。对于宽度或高度小于八的编码块,帧间预测只使用单个参考帧。当应用复合预测时,进一步信号comp_ref_type 语法,以指示复合预测是单向的还是双向的。此外,当应用单向复合预测模式时,信号四种预定义的参考帧组合之一。当应用双向复合预测模式时,分别信号前向和后向参考帧的参考帧索引。对于单个参考预测,只信号七种可能的参考帧之一。

  • 参考帧信号化之后,通过多个语法元素派生 YMode 值,以指示 MV 预测和信号化要应用的模式。YMode 和 MV 预测模式之间的映射列在表3中。在派生 YMode 之后,进一步信号 drl_mode 语法,以指示要用于 MV 预测的 DRL 中的候选项。之后,当应用 NEWMV、NEAREST_NEWMV、NEW_NEARESTMV、NEAR_NEWMV、NEW_NEARMV 或
    NEW_NEWMV 时,进一步信号 MVD(运动向量差分)。当 YMode 等于NEW_NEARESTMV、NEW_NEARMV 或 NEW_NEWMV 时,为与第一参考帧关联的 MV 信号 MVD。当 YMode 等于 NEAREST_NEWMV、NEAR_NEWMV 或 NEW_NEWMV 时,为与第二参考帧关联的 MV 信号 MVD。
    在这里插入图片描述

  • 在信号化 MV 预测模式之后,进一步信号复合帧间-帧内模式。仅当应用单参考帧帧间预测,并且块大小大于或等于8×8但小于或等于32×32时,才信号复合帧间-帧内模式。复合帧间-帧内模式的信号包括一个标志 interintra,该标志指示是否应用复合帧间-帧内模式。

  • 当应用复合帧间-帧内模式时,进一步信号帧内模式索引 interintra_mode 以指示要使用
    DC_PRED、V_PRED、H_PRED 和 SMOOTH 模式中的哪一种来执行帧内预测。

  • 此后,进一步信号标志 wedge_interintra 以指示是否应用基于楔形的帧间-帧内预测模式。当应用基于楔形的帧间-帧内预测模式时,进一步信号 wedge_index 语法,它指示在基于楔形的帧间-帧内预测中要应用的楔形分区模式。

  • 在信号化复合帧间-帧内模式之后,进一步信号或隐式派生 motion_mode 以指示要应用的平移、重叠块运动补偿(OBMC)和变形运动补偿模式。

  • 在信号化 motion_mode 之后,进一步信号复合预测类型以指示要应用的复合预测模式。复合预测模式包括基于楔形的复合预测、差分调制复合预测和基于距离的复合预测。

  • 最后,如果适用,信号插值滤波器索引以指示在应用平移运动补偿时选择的插值滤波器。

平移运动补偿

  • 平移运动模型假定编码块内的所有像素共享同一个单一的运动向量(MV),如下图所示。这个MV可以表示为1/16像素精度,也就是说,MV的最小粒度是像素的1/16。在使用指向分数采样位置的MV来派生预测块时,会应用插值来生成预测块。

  • 如果MV指向一个分数水平位置,首先应用一个行方向的水平插值滤波器来生成一个中间块。接着,如果MV还指向一个分数垂直位置,那么使用这个中间块,再应用一个列方向的垂直插值滤波器来生成最终的预测块。

  • 这个过程的步骤如下:

    1. 水平插值:当MV的水平分量是分数时,对参考帧进行水平方向的插值,生成中间块。
    2. 垂直插值:如果MV的垂直分量也是分数,接着对中间块进行垂直方向的插值,生成最终的预测块。
    3. 插值滤波器:插值过程中使用的滤波器可以是行方向或列方向的,具体取决于MV指向的位置。
    4. 中间块:在需要两次插值(即MV同时有水平和垂直方向的分数分量)的情况下,第一次插值生成的块作为中间结果,用于第二次插值的输入。
      在这里插入图片描述
  • 这种平移运动补偿方法能够适应运动向量不是整数像素的情况,通过插值技术确保预测块的生成既准确又平滑,减少由于运动估计不精确带来的图像失真。

  • 在帧头中,首先信号一个标志,用来指示当前帧是否可以选择插值滤波器。如果这个标志的信号值表明插值滤波器不可选择,那么接下来会信号两个比特,以指示应用四种预定义的有限脉冲响应(FIR)滤波器中的哪一种。这四种FIR滤波器包括:

    1. 6-tap常规FIR滤波器(REGULAR):这是一种具有6个系数的常规FIR滤波器,用于一般的插值处理,相关系数在表 4 中列出。

    2. 6-tap平滑FIR滤波器(SMOOTH):同样是具有6个系数的FIR滤波器,但设计上更侧重于平滑效果,以减少图像噪声,相关系数在表 5 中列出。

    3. 8-tap锐化FIR滤波器(SHARP):这种滤波器具有8个系数,设计上旨在增强图像的锐度,适用于需要强调细节的场景,相关系数在表 6 中列出。

    4. 2-tap双线性滤波器(BILINEAR):这是一种简单的双线性插值滤波器,具有2个系数,提供较平滑的插值效果,相关系数在表 7 中列出。

  • 插值滤波器可以在编码块的水平和垂直方向上分别切换。如果在序列头中启用了双滤波器(dual filter),则可以分别为水平和垂直方向信号不同的插值滤波器选择。如果不启用双滤波器,则每个编码块只能信号一次插值滤波器选择,并且这个选择将同时用于水平和垂直方向。

  • 当插值滤波器可以选择时,候选的插值滤波器包括三种预定义的有限脉冲响应(FIR)滤波器,即:

    • 常规(REGULAR)
    • 平滑(SMOOTH)
    • 锐化(SHARP)
  • 对于水平或垂直方向尺寸小于或等于4的较小编码块,常规(REGULAR)和平滑(SMOOTH)滤波器将被另外两种4-tap滤波器替换,如表 8 所示,而锐化(SHARP)滤波器则不再可用。

  • 这种设计允许编码器根据编码块的大小和内容选择最合适的插值滤波器,以优化编码效率和图像质量。对于较小的编码块,可能需要不同的滤波器特性来适应细节较少的区域,从而减少可能的噪声或失真。对于较大的编码块,或者当启用了双滤波器选项时,可以选择更多的滤波器选项来适应不同的方向上的插值需求。

  • 这些滤波器的选择取决于编码器的决策,以及是否需要根据图像内容选择更适合的插值方法来优化编码效率和图像质量。如果插值滤波器是可切换的,编码器可能会根据图像的特性和运动矢量的细节选择不同的滤波器来实现最优的编码性能。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

变形运动补偿

  • 与假设参考块和目标块之间为平移运动模型的传统运动补偿不同,变形运动(warped motion)采用了仿射模型。仿射运动模型可以表示为以下方程(1):
    在这里插入图片描述
  • 在上述方程中:
    • [x, y] 是原始像素的坐标;
    • [x, , y,] 是参考块变形后的像素坐标;
    • 矩阵中的a1、a2、a3、b1、b2、b3是仿射变换中的参数。
  • 需要最多六个参数来指定变形运动:
    • a3、b3指定传统的平移运动向量(MV);
    • a1、b2指定沿MV的缩放;
    • a2、b1指定旋转 。
  • 仿射变换能够更准确地描述和补偿图像中物体的复杂运动,如旋转、缩放、倾斜等,这在传统的平移运动补偿中是难以实现的。通过使用仿射运动模型,编码器可以生成更加平滑和准确的预测块,从而提高视频编码的效率和质量。

全局变形运动补偿

全局运动信息对每个帧间参考帧进行了信号化,它包括全局运动类型和一定数量的运动参数。全局运动类型及其相关参数的数量在表9中列出。
在这里插入图片描述
在信号化了参考帧索引之后,如果选择了全局运动,那么与给定参考帧相关的全局运动类型和参数将被用于当前编码块。每种全局运动类型的含义如下:

  • 恒等(Identity or zero motion):表示没有运动,不需要额外的运动参数,参数数量为0。
  • 平移(Translational):表示块在空间上的直线移动,需要2个参数(水平和垂直方向上的移动量)。
  • 旋转(Rotational):表示块绕某一点旋转,需要4个参数来定义旋转的中心和旋转角度。
  • 缩放(Zoom):表示块在大小上的缩放变化,需要4个参数来定义缩放中心和缩放比例。
  • 一般仿射(General affine):表示更复杂的二维变换,包括旋转、缩放、倾斜等,需要6个参数来定义变换矩阵。

全局运动信息的信号化允许编码器和解码器共享如何将参考帧映射到当前帧的全局规则,这有助于减少编码过程中的冗余信息,提高压缩效率。全局运动补偿可以模拟摄像机或场景的全局运动,如平移、旋转、缩放等,适用于大范围运动或视角变化的场景。

局部变形运动补偿

在帧间编码块中,当满足以下条件时,允许使用局部变形运动补偿(local warped motion):

  • 当前块使用单参考预测。
  • 编码块的宽度或高度大于或等于八个样本。
  • 至少一个相邻块与当前块使用相同的参考帧。

如果为当前块使用局部变形运动,通过最小化参考投影和基于当前块及其相邻块的运动向量(MVs)建模的投影之间的均方误差来估计仿射模型参数。局部变形运动参数的估计过程如下:

  1. 如果相邻块与当前块使用相同的参考帧,则收集相邻块中心像素及其在参考帧中的对应像素的投影样本对。

  2. 通过将中心位置在一个或两个维度上移动四分之一样本来创建三个额外样本。这些额外样本也被视为投影样本对,以确保模型参数估计过程的稳定性。

  3. 用于推导运动参数的相邻块的MVs被称为运动样本。运动样本是从使用与当前块相同参考帧的相邻块中选择的。

  4. 注意,变形运动预测模式仅对使用单个参考帧的块启用。这意味着运动样本只能从使用单预测(uni-prediction,即单参考帧)编码的块中选择。

例如,在下图中,相邻块B0、B1和B2的MVs分别被称为MV0、MV1和MV2。当前块使用参考帧 Ref0 进行单预测。相邻块B0使用参考帧 Ref0 和 Ref1 进行复合预测;B1使用参考帧 Ref0 进行单预测;B2使用参考帧 Ref0 和 Ref2 进行复合预测。由于只有B1与当前块使用相同的参考帧,因此MV1成为可以用来推导当前块仿射运动参数的运动样本,而MV0和MV2则不能使用。
在这里插入图片描述
局部变形运动补偿通过考虑块内部可能存在的速度和方向变化,提供了一种更精细的运动补偿方式,从而提高预测的准确性和编码效率。

重叠块运动补偿

对于帧间编码块,当满足以下条件时,允许使用重叠块运动补偿(Overlapped Block Motion Compensation, OBMC):

  • 当前块使用单参考预测。
  • 编码块的宽度或高度大于或等于八个样本。
  • 至少有一个邻近块是帧间编码的。

应用OBMC到当前块时,首先使用与当前块关联的运动向量(MV)生成初始帧间预测样本。然后,将当前块的帧间预测样本与使用上方和左侧邻近块的MVs派生的帧间预测样本混合,以生成最终的预测样本。邻近MVs的最大数量受当前块大小的限制;在当前块的OBMC过程中,最多可以使用上方和左侧块的各四个MV

下图展示了邻近块的处理顺序示例,其中每个块中标记的值表示当前块和邻近块MVs的处理顺序。具体来说:

  1. 首先应用当前块的MV来生成帧间预测样本P0(x, y) 。
  2. 然后,应用块1的MV来生成预测样本 P1(x, y) 。
  3. 接下来,在块0和块1之间的重叠区域(在图17中以灰色标记)的预测样本被赋予为 P0(x, y) 和 P1(x, y) 的加权平均值。
  4. 以相同的方式进一步应用并混合块2、块3和块4的MVs。
    在这里插入图片描述
    通过这种方式,OBMC技术平滑了块边缘,减少了块效应,特别是在快速运动或复杂场景中,可以提高预测的准确性和视频质量。

复合帧间预测

  • 帧间预测使用两个参考帧被称为复合预测(compound prediction),其公式化定义如下:
    在这里插入图片描述

  • 在这个公式中:

    • P0(x, y) 和 P1(x, y) 分别指当前位于 (x, y) 的样本从两个参考帧得到的预测样本。
    • w(x, y) 是应用于第一个参考帧预测样本的权重因子。
    • P(x, y) 是最终的复合预测结果。
  • 根据权重因子 w(x, y) 和预测块的派生方式,可以定义不同的复合运动预测模式,这些模式将在后续的子章节中描述。在SKIP模式下,如果使用两个参考帧,w(x,y) 总是被设置为32。

  • 这种复合预测方法通过结合两个不同时间点的参考帧信息,可以更有效地预测当前帧的像素值,尤其在场景中存在显著的时间冗余时。通过适当地加权两个参考帧的贡献,可以生成比单一参考帧预测更平滑、更准确的预测结果,从而提高编码的压缩效率。公式中的右移操作(>> 6)是一个算术右移6位,用于规范化最终预测值到合适的数值范围内。

复合楔形帧间预测

  • 在复合基于楔形(Wedge-based)的预测模式中,对于每种块尺寸,都有一组16个预定义的二维权重数组被硬编码。每个数组中的权重是这样排列的,以便投影到一个预定义的楔形分区模式。在每个楔形分区模式中,沿着某个特定边缘方向和位置指定了两个楔形分区。位于两个楔形分区之一的样本,权重大部分设置为64。位于另一个楔形分区的样本,权重大部分设置为0。此外,在楔形分区边界沿线,权重被赋值为32。

  • 在基于楔形的预测模式中,预定义了两个语法元素:

    • wedge_index,它指定楔形分区模式的索引(范围从0到15);
    • wedge_sign,它指定哪一个分区将被赋予主导权重。
  • 这种基于楔形的预测模式允许对块内部的不同区域应用不同的权重,以适应块内部可能存在的速度和方向变化。通过选择适当的wedge_indexwedge_sign,编码器可以根据实际的运动矢量场进行更精确的预测,从而提高预测的准确性和编码效率。

差分复合预测

  • 差分复合预测的权重w(x, y)的派生方式如下:
    在这里插入图片描述
  • mask_type 是已信号化的标识,表明权重分配的方式;
  • w(x, y)是应用于预测样本的权重因子,在应用到最上面公式之前,会被裁剪限制到[0, 64]之间。

基于距离的复合预测

  • 在基于距离的复合预测中,权重 w(x, y)取决于当前帧与参考帧之间的时间距离。设置 d0和 d1分别表示当前帧到两个参考帧之间的距离。
  • 如果d0小于 d1,则应用在 P0(x, y)的w(x, y)的派生方式如下:
    在这里插入图片描述
  • 否则,d0 大于 d1 ,派生方式是对称的:
    在这里插入图片描述
  • 当w(x, y)等于 32 时,此时P0(x, y) 和 P1(x, y)被赋予相等的权重。

复合帧间-帧内预测

在复合帧间-帧内预测模式中,预测块是内部预测和帧间预测的结合体。也就是说,P0(x, y) 是一个帧内预测样本,而 P1(x,y) 是一个帧间预测样本。帧内预测块是使用直流(DC_PRED)、垂直(V_PRED)、水平(H_PRED)或平滑(SMOOTH)预测模式派生的,而帧间预测块是使用平移运动的单参考帧间预测派生的。根据内部预测样本和帧间预测样本的权重如何派生,可以应用两种复合帧间-帧内预测模式,包括常规帧间 - 帧内预测基于楔形的帧间-帧内预测

常规帧间-帧内预测

  • 不同的内部预测模式使用不同的权重派生方式。在常规帧间-帧内预测中,权重值沿着预测方向递减。更具体地说,应用于内部预测样本 𝑃0 (x,y) 的权重描述如下:
    在这里插入图片描述
  • sizeScale通过块的宽 W 和高 H 派生而来:
    在这里插入图片描述
  • WeightLUT 是一个硬编码查找表:
    在这里插入图片描述

基于楔形的帧间 - 帧内预测

复合帧间-帧内预测也可以使用基于楔形(Wedge-based)的加权方案来应用。更具体地说:

  • 预测块是帧内预测块和帧间预测块的组合。
  • 加权是通过使用由 wedge_index 指定的楔形分区模式来明确,wedge_index 的范围是从0到15。

基于楔形的帧间-帧内运动预测模式与常规基于楔形的运动预测模式有所不同,原因在于:

  • wedge_sign 的值,它指定具有主导权重的分区,是派生出来的,而不是显式信号化的。

在基于楔形的帧间-帧内预测中:

  1. 楔形分区:使用 wedge_index 选择的预定义楔形分区模式来确定块内不同区域的权重分配。

  2. 权重派生wedge_sign 的值是基于块的运动矢量和其他上下文信息派生的,而不是作为编码过程中的显式信号。

  3. 适应性:由于 wedge_sign 是派生的,编码器可以根据块内的实际运动矢量场自动选择最合适的楔形分区,从而提高预测的准确性。

  4. 编码效率:通过使用基于楔形的加权方案,可以更灵活地适应块内的运动和纹理变化,从而提高编码效率。

  5. 视觉效果:基于楔形的帧间-帧内预测可以改善编码后视频的视觉质量,尤其是在块内部存在复杂运动或深度变化的场景中。

  6. 实现复杂性:虽然基于楔形的预测模式提供了更高的适应性和预测准确性,但它也可能增加了编码器的实现复杂性,因为需要额外的逻辑来确定 wedge_sign 的值。

  7. 上下文感知:编码器可能使用上下文信息,如块的历史编码模式、邻近块的预测模式或块内纹理的复杂性,来辅助派生 wedge_sign

参考

  • Tool Description for AV1 and libaom.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/800392.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VGMP(VRRP组管理协议)和HRP(华为冗余技术)

1、VGMP VGMP(VRRP Group Management Protocol):VRRP组管理协议,是华为开发的一种私有协议,主要用于实现对多个VRRP组进行统一管理的功能 概述:VGMP协议是在VRRP协议的基础上开发的,其最主要的…

linux的学习(五):shell编程中的变量,运算符,条件判断

简介: shell编程的基本概念,定义变量,运算符,条件判断的基本使用 shell编程 把多个命令写到一个文件里,这个文件就是脚本,里面还有很多的流程控制 基本概念 脚本的后缀名是.sh 脚本的执行:…

Golang | Leetcode Golang题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; func lowestCommonAncestor(root, p, q *TreeNode) (ancestor *TreeNode) {ancestor rootfor {if p.Val < ancestor.Val && q.Val < ancestor.Val {ancestor ancestor.Left} else if p.Val > ancestor.Val && q…

【Docker】Docker 的数据管理与镜像创建

目录 一.数据管理 1.数据卷 2.数据卷容器 二.端口映射 三.容器互联 四.Docker 镜像的创建 1.基于现有镜像创建 1.1.首先启动一个镜像&#xff0c;基于镜像创建容器&#xff0c;更新容器内容 1.2.将修改后的容器提交为新的镜像&#xff0c;需要使用该容器的 ID 号创建新…

Studying-代码随想录训练营day40| 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

第40天&#xff0c;动态规划part07&#xff0c;动态规划经典题型“打家劫舍”(ง •_•)ง&#xff0c;编程语言&#xff1a;C 目录 198.打家劫舍 213.打家劫舍II 337.打家劫舍III 总结 198.打家劫舍 文档讲解&#xff1a;代码随想录打家劫舍 视频讲解&#xff1a;手…

人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解。 文章目录 一、引言二、梯度问题1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解决方案 2. 梯度消失梯度消失的概念梯度…

按钮测试: 循环遍历 单据行明细 执行SQL

using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.ComponentModel;using System.Text;namespace cux.button.test {[Description("测试循环遍…

【JavaScript 算法】回溯法:解决组合与排列问题

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、回溯法的基本概念回溯法的模板 二、经典问题及其 JavaScript 实现1. 组合问题2. 排列问题 三、回溯法的应用四、总结 回溯法是一种通过尝试所有可能的解来解决问题的算法策略。它在组合和排列问题中尤为有效&#xff0c…

在 PostgreSQL 里如何处理数据的归档和恢复的权限管理?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的归档和恢复的权限管理&#xff1f;一、数据归档的重要性及方法&#x…

C语言程序设计实例1

程序设计1 问题1_1代码1_1结果1_1 问题1_2代码1_2结果1_2 问题1_3代码1_3结果1_3 问题1_1 计算如下公式&#xff1a; S 3 2 2 − 5 4 2 7 6 2 − ⋅ ⋅ ⋅ − ( − 1 ) n − 1 2 n 1 ( 2 n ) 2 , S \frac{3}{2^2}-\frac{5}{4^2}\frac{7}{6^2}--(-1)^{n-1}\frac{2n1}{(2n)^…

Mac 如何安装vscode

Mac 电脑/ 苹果电脑如何安装 vscode 下载安装包 百度搜索vscode&#xff0c;即可得到vscode的官方下载地址&#xff1a;https://code.visualstudio.com/ 访问网页&#xff0c;点击下载即可。 下载完成后&#xff0c;得到下图所示的app。 将该 app 文件&#xff0c;放入到…

【答疑篇】企业管理咨询公司的服务流程是怎样的?

在竞争激烈的商业环境中&#xff0c;企业如何保持持续的增长和竞争力&#xff1f;答案就隐藏在企业管理咨询公司的服务之中。今天&#xff0c;就让我们一起揭晓企业管理咨询公司的服务流程&#xff0c;看看这些专业团队是如何助力企业焕发新生的&#xff01; 一、需求分析 企业…

yolov5 上手

0 介绍 YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型&#xff0c;由华盛顿大学的约瑟夫-雷德蒙&#xff08;Joseph Redmon&#xff09;和阿里-法哈迪&#xff08;Ali Farhadi&#xff09;开发。YOLO 于 2015 年推出&#xff0c;因其高速度和高精确度而迅速受到…

防火墙双机热备带宽管理综合实验

拓扑图和要求如下&#xff1a; 之前的步骤可以去到上次的实验 1.步骤一&#xff1a; 首先在FW3防火墙上配置接口IP地址&#xff0c;划分区域 创建心跳线&#xff1a; 下面进行双机热备配置&#xff1a; 步骤二&#xff1a; 先将心跳线连接起来 注意&#xff1a;一定要将心跳…

勒索防御第一关 亚信安全AE防毒墙全面升级 勒索检出率提升150%

亚信安全信舷AE高性能防毒墙完成能力升级&#xff0c;全面完善勒索边界“全生命周期”防御体系&#xff0c;筑造边界勒索防御第一关&#xff01; 勒索之殇&#xff0c;银狐当先 当前勒索病毒卷携着AI技术&#xff0c;融合“数字化”的运营模式&#xff0c;形成了肆虐全球的网…

深度解析:如何优雅地删除GitHub仓库中的特定commit历史

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【Blockly图形化积木编程二次开发学习笔记】1.工具箱的实现

文章目录 Blockly 版本选择上手 Blockly 版本选择 在【兰州大学】Blockly创意趣味编程【全36讲】主讲教师&#xff1a;崔向平 周庆国中提到&#xff0c;在18年6月份之前的版本中&#xff0c;可以通过安装依赖库的方式&#xff0c;打开开发者工具的离线版本&#xff0c;但是新版…

Linux桌面环境手动编译安装librime、librime-lua以及ibus-rime,提升中文输入法体验

Linux上的输入法有很多&#xff0c;大体都使用了Fcitx或者iBus作为输入法的引擎。相当于有了一个很不错的“地基”&#xff0c;你可以在这个“地基”上盖上自己的“小别墅”。而rime输入法&#xff0c;就是一个“毛坯别墅”&#xff0c;你可以在rime的基础上&#xff0c;再装修…

Docker之在外执行docker内部命令(十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

什么是CAN总线?

目录 1 CAN总线简介 2 CAN总线物理结构 2.1 CAN总线原理 2.2 CAN总线和I2C 3 CAN的电气属性 4 CAN帧的种类 4.1 CAN帧的种类 4.2 数据帧 4.3 遥控帧 1 CAN总线简介 1.1 CAN是什么&#xff1f; CAN总线&#xff0c;全称为Controller Area Network&#xff0c;即控制器…