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

news2024/11/15 13:44:24

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.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32(五):STM32指南者-按键控制灯开关实验

说明:源代码和教程可从野火处下载,本博客为了记录学习过程STM32(四):STM32指南者-跑马灯实验的基础上 一、采用轮询方式1、bsp_key.h2、bsp_key.c3、main.c 二、采用中断方式1、bsp_exti.h2、bsp_exti.c3、stm32f10x_i…

【动态规划1】斐波那契数列模型篇

文章目录 声明动态规划介绍1137.第N个泰波那契数题目描述分析代码 面试题 08.01. 三步问题题目描述分析代码 746.使用最小花费爬楼梯题目描述分析代码 91.解码⽅法题目描述分析代码 声明 本篇博客为动态规的基础篇,从零开始学习动态规划,如有错误&#…

14、Python之super star:一颗星、两颗星,满天都是小星星

引言 关于Python系列的文章,已经通过两篇文章,介绍了Python中关于函数的简单使用,包括为什么要使用函数,以及函数中带默认值参数的使用注意事项。 之后,岔开函数的主题,通过几篇番外篇,重点谈…

PHP恋爱话术微信小程序系统源码

💖恋爱高手的秘密武器!恋爱话术微信小程序,让情话信手拈来✨ 💭【开场白:恋爱路上的甜蜜助手】💭 还在为跟心仪的TA聊天时找不到话题而尴尬?或是担心自己说的每句话都显得那么“直男/女”&…

YOLOv8改进 | 检测头 | 融合渐进特征金字塔的检测头【AFPN3】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

文件安全传输系统,如何保障信创环境下数据的安全传输?

文件安全传输系统是一套旨在保护数据在传输过程中的安全性和完整性的技术或解决方案。通常包括以下几个关键组件: 加密:使用强加密算法来确保文件在传输过程中不被未授权访问。 身份验证:确保只有授权用户才能访问或传输文件。 完整性校验…

数据库管理-第220期 Oracle的高可用-03(20240715)

数据库管理220期 2024-07-15 数据库管理-第220期 Oracle的高可用-03(20240715)1 AC/TAC2 配置Service3 用户权限4 端口开放总结 数据库管理-第220期 Oracle的高可用-03(20240715) 作者:胖头鱼的鱼缸(尹海文…

量化发展历史简述,QMT/PTrade+恒生UFT、LDP极速柜台适用哪些情形?

量化发展简述 1.2004年萌发阶段:策略局限在量化择时,量化选股等; 光大保德信量化核 心基金 上投摩根阿尔法基 金 金融危机,海归引入。 2.2010量化元年:中低频交易为主,主要依靠套利、对冲、多因子策略等…

****react的antdesign 下拉组件ProFormSelect编辑首次不回显问题

1、使用valueEnum无法自动回显 2、要使用options会自动回显

AutoMQ 社区双周精选第十二期(2024.06.29~2024.07.12)

本期概要 欢迎来到 AutoMQ 第十一期双周精选!在过去两周里,主干动态方面,AutoMQ 跟进了 Apache Kafka 3.4.x BUG 修复,并进行了CPU & GC 性能优化,另外,AutoBalancing 的 Reporter 和 Retriever 也将支…

风险评估:IIS的安全配置,IIS安全基线检查加固

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

51单片机5(GPIO简介)

一、序言:不论学习什么单片机,最简单的外设莫过于I口的高低电平的操作,接下来,我们将给大家介绍一下如何在创建好的工程模板上面,通过控制51单片机的GPIO来使我们的开发板上的LED来点亮。 二、51单片机GPIO介绍&#…

实验二:图像灰度修正

目录 一、实验目的 二、实验原理 三、实验内容 四、源程序和结果 源程序(python): 结果: 五、结果分析 一、实验目的 掌握常用的图像灰度级修正方法,包括图象的线性和非线性灰度点运算和直方图均衡化法,加深对灰度直方图的理解。掌握对比度增强、直方图增强的原理,…

C++相关概念和易错语法(21)(虚函数、协变、析构函数的重写)

多态的核心是虚函数&#xff0c;本文从虚函数出发&#xff0c;根据原理慢慢推进得到结论&#xff0c;进而理解多态 1.虚函数 先看一下下面的代码&#xff0c;想想什么导致了这个结果 #include <iostream> using namespace std;class A { public:virtual void test(){co…

书生实战营-LLM实战笔记

训练营非常好&#xff0c;有个github上的tutorial Tutorial/docs/L0/Linux/readme.md at camp3 InternLM/Tutorial GitHub 第1关卡 linux 的基础知识 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/readme.md#linuxinternstudio-%E5%85%B3%E5%8D%A1 非…

AIGC笔记--基于Stable Diffusion实现图片的inpainting

1--完整代码 SD_Inpainting 2--简单代码 import PIL import torch import numpy as np from PIL import Image from tqdm import tqdm import torchvision from diffusers import AutoencoderKL, UNet2DConditionModel, DDIMScheduler from transformers import CLIPTextMod…

【全面介绍Pip换源】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

产品经理-产品经理会在项目中遇到的几个问题(16)

项目中遇到了需求变更怎么办&#xff1f; 首先要弄清楚需求变更的原因是什么。如果是因为在迭代的过程中更好地理解了用户需求 进而产生了更好的需求则完全是正常的。如果是因为老板的需求 那就需要和老板沟通清楚&#xff0c;并且确保自己能理解老板的需求&#xff0c;而且这个…

【数据结构】高效解决连通性问题的并查集详解及Python实现

文章目录 1. 并查集&#xff1a;一种高效的数据结构2. 并查集的基本操作与优化2.1 初始化2.2 查找操作与路径压缩2.3 合并操作与按秩合并 3. 并查集的应用3.1 判断连通性3.2 计算连通分量 4. 并查集的实际案例4.1 图的连通性问题4.2 网络连接问题 5. 并查集的优缺点5.1 优点5.2…

哪些网站是获取独立站外链的最佳选择?

想要为独立站获取外链&#xff0c;有几个地方可以考虑&#xff0c;首先自然是最有效的博客和文章投稿网站&#xff0c;找那些与你的行业相关的博客和内容平台&#xff0c;撰写高质量的文章&#xff0c;里面自然地嵌入你的链接。这是最有价值的外链 然后不分其他&#xff0c;效…