H.265/HEVC(高效视频编码)提出了编码树单元CTU(Coding Tree Unit),CTU按四叉树方式向下划分成CU(Coding Unit)。VCC允许的最大CTU尺寸为128*128。H.265中,CU最大尺寸为64*64,最小尺寸为8*8。对平坦区域使用大尺寸CU,纹理复杂区域使用小尺寸CU可以大大提高编码效率。四叉树深度越大CU尺寸越小。
多类型树划分:按照水平/垂直来进行二叉树/三叉树划分。
Virtual pipeline data units VPDUs,虚拟管线数据单元
VPDU定义为图像中互不重叠的单元。在大部分解码器中可以设置VPDU的尺寸为最大变换块的尺寸。但是VVC运行二叉树、三叉树划分导致VPDU尺寸变大。故要保持VPDU的尺寸为64*64亮度像素大小。
一帧图像可以划分为一个或多个Tile(小块),Tile通常是矩形的,包含多个CTU。
Slice(切片)可由多个完整的Tile组成/由同一个Tile内的多个CTU行组成。VVCA支持两种slice模式,光栅扫描slice模式和矩形slice模式。
子图像包含一个或多个slice最终形成一个矩形区域。每个子图像边界同时也是slice的边界,且子图像的垂直边界也是Tile的垂直边界。每个子图像和Tile至少要满足下面的一个条件:一个子图像中的CTU都属于同一个Tile/一个Tile中的CTU都属于同一个子图像。
帧内预测源自差分编码,都是利用前面的相似信息来预测自己从而减少冗余。
帧内预测是指利用视频帧的空域相关性,使用当前帧中已编码的部分的像素值来预测当前像素,从而达到去除空域冗余的目的。
VCC中,帧内预测可能是矩形块。对于水平类的块,上边的参考像素使用概率大于左边参考像素的使用概率。所以就有了WAIP(Wide-angle intra prediction、宽角度帧内预测)。在VVC中需要将非正方形块的某些角度自适应地替换为宽角度,替换后的模式还是按照原始模式的索引在末流中传输,在解码端该索引可以映射到替换后的模式。
4抽头插值滤波器:基于DCT的插值滤波器DCTIF/VVC特有的四抽头平滑插值滤波器SIF。
帧内角度模式被分为下面几类已经不同的处理方法:
垂直或水平模式:不进行滤波处理,直接使用参考像素生成预测像素。
角度是non-fractional方向(-14,-12,-10,-6,2,34,66,72,76,78,80)和planar模式:当满足:refldx等于0(非MRL);TU尺寸大于32;亮度;非ISP块时,使用【1,2,1】滤波器对参考像素进行滤波,直接将滤波后的值作为预测像素不进行插值处理。
其他角度模式:MRL 索引等于 0, 当前块是非 ISP 块, 对落到整数和分数位置出的参考像素进行插值滤波(不再进行平滑滤波), 插值类型由下面方式决定,
设置 minDistVerHor =Min( Abs( predModeIntra - 50 ), Abs( predModeIntra -
18 ) )。
设置 nTbS =( Log2 (W) + Log2 (H) ) >> 1。
intraHorVerDistThres[ nTbS ]设置如下,
nTbS = 2 nTbS = 3 nTbS = 4 nTbS = 5 nTbS = 6 nTbS = 7 intraHorVerDistThres[ nTbS ] 24 14 2 0 0 0 如果 minDistVerHor 大于 intraHorVerDistThres[ nTbS ], 使用 SIF 进行插值。
否则使用 DCTIF 进行插值
假设同一个CU的色度像素值和对应的亮度像素值有线性关系,所以CCLM使用一个线性模型从亮度像素的重建值生成对应色度像素的预测值。
适用范围:当64*64亮度块不再进一步划分或按四叉树划分时,则色度CU(32*32/32*16)根据以下方式选择是否使用CCLM:
(1)如果32*32色度快不进一步划分或按照QT划分,则该32*32色度快内的所有色度CU都可以使用CCLM。
(2)如果32*32色度块使用水平二叉树划分(BT)且32*16的子块不再进一步划分或使用垂直BT划分,则该32*16色度块内的所有色度CU都可以使用CCLM。
H.266/VVC代码学习:DC模式和Planar模式_涵小呆的博客-CSDN博客_planar模式
适用范围:DC模式、planar模式、小于等于水平模式的角度模式、大于等于垂直模式且小于等于模式80的角度模式。如果当前块时Bdpcm模式或MRL索引大于0,则不适用PDPC。
预测值是由参考像素值与1预测值再次加权求得。PDPC的权值和缩放因子取决于预测模式和块尺寸。只有块的宽和高都大于等于4时才可以使用PDPC。
VVC中可以使用reference line 0,1,3。所选的参考行索引需要在码流中传输。参考行索引在码流中位于帧内预测模式之前,其中帧内模式不包括planar模式。
当处理CTU第一行CU时不允许使用MRL以防参考行跨国CTU边界。且当使用MRL时不允许使用PDPC。MRL需要存储CTU三个亮度参考行,而CCLM在降采样时也需要三个亮度参考行,因此MRL可以服用CCLM的存储空间而减少解码器的存储压力。
会根据尺寸将亮度帧内预测块在水平或垂直方向上分为2个或4个子块。允许ISP划分的最小块尺寸是4*8或8*4(划分两个子块)。VVC规定每个块至少要有16个样点。
限制能够使用ISP的最大CU尺寸为64*64。
每个子块通过将残差信号加上预测信号得到重建信号, 其中残差信号通过熵解码、 反量化、 反变化得到。 每个子块的重建信号可用于构建下一个子块的预测值。
适用范围:对于ISP,帧内67种模式都可以使用。当宽和高大于等于4时也可以使用PDPC。此外,在ISP模式下不进行参考像素平滑滤波,非整像素差值滤波都是用DCT-IF滤波器。
新技术,核心是训练矩阵。
当前的亮度预测块的相邻采样点首先进行平均操作减少采样点数目, 构成一个向量, 然后该向量和视频序列集训练的一个参数矩阵相乘, 通过该矩阵和向量相乘得到一个部分预测值的散点阵列, 最后通过双线性插值生成出最终的预测值。
平均、矩阵向量相乘、线性插值。
帧间预测主要用于去除图像之间的时间相关性。VVC的帧间预测编码技术沿用了HEVC中的于东估计和运动补偿技术,同时又增加了一些更高效的编码技术。
运动估计:在参考图像中找到当前块所对应匹配块的过程/搜索并确定当前块最佳位移量的过程。
运动矢量:匹配块与当前块的相对位移即为运动矢量MV(Motion Vector)。
MV的差值被称为MV残差(MVD Motion Vector Difference)。
MV预测技术分为时域和空域预测两种。merge技术和高级运动向量预测(AMVP)技术,核心思想是通过建立一个MV候选列表,并选取表中性能最优的一个MV作为当前编码块的预测MV。
扩展的merge技术
对merge模式候选列表的大小进行了扩展,最多可以有6个候选MV,在编码端,候选列表的大小将编码到序列参数集头中。
VVC新增了基于历史信息的运动矢量预测候选(HMVP),该候选项来自于已编码PU块运动信息构建的FIFO查找表,每编码新的一个slice时需要重置此FIFO表。
带MVD的merge技术(MMVD)
VVC新增了带运动矢量差的merge模式,通过复用 VVC 中的 merge 模式 MV 候选列表, 在这些候选 MV 当中, 选择其中的一个作为初始运动矢量。接着再利用一些简单的语法元素进行表示,主要包括起始点, 运动幅度和运动方向, 来得到运动矢量的最终扩展表示, 以形成一个新的运动矢量。
在 merge 编码模式下, 将 64 个新的 MV 进行率失真代价比较, 最终选出最优的一个作为 MMVD 技术的最优的 merge 候选。 此技术需要储存最优 MV 的三个信息: 1) 其初始 MV 在 merge 列表中的索引; 2) 移动方向; 3) 搜索步长。
对称MVD编码(symmetric MVD mode, SMVD)
VVC提出的一种双向预测时MVD语法单元的传输模式。
在 SMVD 模式下, 参考帧列表 L0 和 L1中参考帧索引, 以及 L1 中的 MVD 运动信息, 均可以在线性运动假设下, 分别根据参考帧和当前图片的 POC 值以及 L0 的 MVD 信息被推导得出, 编码端不需要传送标志位。
在编码端, SMVD 运动估计需要首先构建初始 MV 候选, 一组初始 MV 候选包括从单向预测搜索中获得的 MV, 从双向预测搜索中获得的 MV 和从 AMVP列表中获得的 MV, 然后从中选择率失真代价最小的一个, 作为 SMVD 运动搜索的初始 MV。
时域运动矢量的生成TMVP
TMVP(Temporal Motion Vector Prediction)技术原理,即利用当前PU在邻近的已编码图像中对应位置的PU的运动信息。已编码图像一般取参考帧列表中离当前帧最近的一帧。
基于子块的MV预测技术SbTMVP(Subblock-based TMVP)
【十】 基于子块的时域运动向量预测(SbTMVP)和自适应运动向量分辨率(AMVR)_子块的前向运动信息_Cohen_ina的博客-CSDN博客
帧间预测是指利用视频邻近帧之间的时间相关性,在参考帧中搜索当前编码块的最佳匹配块作为预测块,达到去除时域冗余信息的目的。VVC中加入了许多下面一些新的帧间预测技术提高帧间预测精度。
双向加权预测BCW( Bi-prediction withCU-level weight)
对前向预测值和后向预测值进行加权处理。
双向光流技术 BDOF( Bi-Directional Optical Flow)
它利用光流公式和梯度的概念细化 MV, 来修正 CU 的 4x4 子块的双向预测编码。
适用条件:
1.使用双预测模式, 即两个参考帧中的一帧在当前帧之前, 另一帧在当前帧之后。
2.两个参考帧到当前帧的距离(即 POC 差) 是相同的。
3.两个参考帧均为短期参考帧。
4.CU 未使用 Affine 模式或 ATMVP 模式进行编码。
5.CU 需要超过 64 个亮度像素值(4x16 这种不可取)。
6.CU 高度和宽度均大于或等于 8。
7.对于 BCW 权重, 要求等权重。
8.当前 CU 未启用加权预测。
9.当前 CU 不使用 CIIP 模式或 TPM 模式。
此外, BDOF 技术只用于亮度分量, 基于光流的概念, 且假设物体的运动是
平滑的。
三角划分模式TPM(Triangle Partition Mode)
两个分区根据各自分区的单向预测 MV,经过运动补偿得到各自分区的预测像素值。 再利用分区的预测值, 在三角形分割线(对角线或者反对角线) 的周围通过自适应的权值加权融合出新的预测值, 同时保持各自分区的预测值不变, 最终得到整个 CU 的三角预测值。
适用条件:需要将整个 CU 划分为 4x4 子块, 取每个 4x4 子块的中心位置作为整个子块的运动
矢量。
帧内帧间联合预测CIIP(Combined inter and intra prediction)
【十五】 VVC/H.266 | 帧内帧间联合预测技术CIIP详解_Cohen_ina的博客-CSDN博客
仿射运动补偿AMC(Affine motion compensated)
为了适应缩放、旋转、投影等其他不规则运动的预测
自适应运动矢量精度AMVR
在预测精度和编码比特消耗之间做出平衡。
在 CU 层面对亮度分量 MVD采用不同的像素精度进行编码。 根据当前 CU 帧间预测模式的差别, 亮度分量MVD 编码精度有不同的选取策略。
解码端运动矢量修正DMVR
此技术主要计算参考帧列表 L0 和 L1 中两个候选块之间的失真。
当 CU 满足下列所有条件时, 可以使用该技术:
1) CU 使用 merge 模式, 且是双向预测。
2) 两个参考帧分别位于当前帧之前和当前帧之后。
3)当前图片与前向参考图片的 POC 差值和当前图片与后向参考图片的 POC
差值相等。
4) 参考帧都是短期参考帧。
4) CU 需要有超过 64 个亮度像素点。
5) CU 的宽和高都大于或等于 8。
6) BCW 使用相等的权值。
7) 当前块使不使用 WP 模式。
8) 当前块不使用 CIIP 模式。