- 1、LIC技术 (Local illumimation compensation)
- 2、 Non-adjacent spatial candidate
- 3、TM (Template matching)
- 4、Multi-pass decoder-side motion vector refinement
- 5、OBMC
- 6、Sample-based BDOF
- 7、Interpolation
- 8、MHP(Multi-hypothesis prediction)——JVET-M0425
- 9、ARMC-TM(Adaptive reordering of merge candidates with template matching)
- 10、GPM-MMVD
- 11、GPM-TM
1、LIC技术 (Local illumimation compensation)
主要思想:认为当前块和参考块之间存在局部照明变化,引入线性函数a * p[x]+b来补偿变化。p[x]为x处MV所指向的参考帧当中的像素值。a,b通过参考块和当前块模板推导。LIC应用于16 * 16的处理单元时,推导使用当前CU中左上角16 * 16的单元,并且用于CU内其他部分。
标志位:AMVP模式下需要LIC flag标识是否开启,并且该标志位没有时域继承性
限制条件:
亮度块大小小于32则无法使用
对于非子块和affine模式,参数推导基于当前CU相关的模板块样本,而不是左上角16 * 16块相关的模板块样本
参考块的模板样本是由MV经过MC得到的,并且不需要近似到整像素精度
仅用于帧间单向预测,只应用于regular merge,regular inter,mmvd和affine模式,ciip和ibc模式下不可使用
亮度、色度分量均使用
2、 Non-adjacent spatial candidate
主要思想:在构建merge候选列表的时候,TMVP后面加入非相邻的空余merge候选,如图中6-20
3、TM (Template matching)
解码端推导MV
主要思想:以当前块的上方/左边作为模版,在参考帧中搜索(搜索范围[-8,8])找到与模板最接近的块,以此修正MV。
搜索步长基于AMVR确定。
在merge模式下,TM可以与双边匹配BM级联
4、Multi-pass decoder-side motion vector refinement
解码端进行
主要思想:多次对MV进行细化,并且将细化的MV保存下来用于后续预测的时域和空域MV。
- 第一轮细化
针对整个CU,使用BM。执行局部搜索获得整精度精度的intDeltaMV,基于L0和L1中最小双边匹配误差,在初始MV周围进行细化。以3 * 3的块为单位进行搜索,分别在水平和垂直方向上搜索,搜索范围分别为[-sHor,sHor]和[-sVer,sVer],其中sHor和sVer最大值为8,最终得到MV0_pass1和MV1_pass1。
双边匹配误差计算为 bilCost = mvDistanceCost + sadCost。当CU面积大于64,则用MRSAD代价函数来消除参考块间代价的DC效应。若bilCost在中心点最小,则搜索终止,否则以当前最小代价的点作为3 * 3模版的中心点继续搜索,直至到达搜索边缘。 - 第二轮细化
针对16 * 16的子块,使用BM。执行全搜索获得整像素精度的intDeltaMV,基于L0和L1中最小双边匹配误差,在MV0_pass1和MV1_pass1周围进行细化。分别在水平和垂直方向上搜索,搜索范围分别为[-sHor,sHor]和[-sVer,sVer],其中sHor和sVer最大值为8,最终得到MV0_pass2和MV1_pass2。
双边匹配误差计算为 bilCost = satdCost * costFactor,satdCost为两个参考子块的satd。costFactor由搜索点和起始MV的距离决定,下图,每个区域都有一个costFactor。每个菱形区域按搜索区域中心开始的顺序处理,每个区域中,搜索点按栅格顺序扫描,从左上角一直到右下角。当当前搜索区域中最小bilCost小于Th(W*H),那么终止搜索,否则继续搜下一个区域,直到搜索完全部点。 - 第三轮细化
针对8*8的子块,使用BDOF得到修正值Vx,Vy,将推导出的bioMv(Vx,Vy)四舍五入到1/16精读,并且范围在-32~32,得到MV0_pass3和MV1_pass3。 - 总结
5、OBMC
主要思想:CU上边界和左边界的像素用相邻块的运动信息进行加权。子块OBMC同理
目的:减小方块效应。
OBMC禁用情况
- sps层禁用OBMC
- 当前CU是帧内或者IBC模式
- 当前CU使用了LIC
- 当前亮度块面积小于等于32
子块OBMC使用条件
- Affine AMVP模式
- Affine Merge模式和SbTMVP模式
- 基于子块的BM
6、Sample-based BDOF
主要思想:将CU分成8 * 8子块,每个子块根据两个参考子块之间的SAD与阈值的关系决定是否进行BDOF。若开启BDOF,则在每个子块内,针对每个样本都有一个5 * 5的滑动窗口,根据滑动窗口推导出Vx和Vy。推导出的修正值用于调整每个窗口的中心样本。
7、Interpolation
思想:原用的8抽头滤波器由12抽头滤波器所替代。插值滤波器由sinc函数导出。
8、MHP(Multi-hypothesis prediction)——JVET-M0425
主要思想:除了原有的双向预测,额外添加了多个预测器。总的预测信号为各个预测器的累加和。
限制条件:帧间AMVP模式,MHP只在双向预测中BCW不为等权重时使用
9、ARMC-TM(Adaptive reordering of merge candidates with template matching)
主要思想:对候选进行重新排序。在候选列表建立好之后,将被分为多个子组,每组大小为5(regular merge/TM)/3(affine merge)。每个子组内根据模式匹配的代价(当前块的模版样本和他们的参考样本的SAD)排序。对于最后一个子组的候选不进行重排序。
应用的模式:regular merge、TM merge(在细化过程之前重排序)、affine merge
对于SbTMVP模式,当前CU的子块大小为Wsub*Hsub,则子块的模板大小为Wsub * 1或1 * Hsub
10、GPM-MMVD
主要思想:在GPM候选确定后,进一步细化。该MVD由9种精度(1/4、1/2、1、2、3、4、6、8、16)和8个方向。若pic_fpel_mmvd_enabled_flag为1,MVD需要左移两位。
11、GPM-TM
主要思想:使用TM优化每个分区的运动信息。根据不同的划分,确定使用的模板,如表所示。通过最小化当前模板和参考图片中模板的差异从而优化运动信息。
GPM列表构建:
- 交叉选用List0和List1中的MV,此时List0中的MV优先级更高。同时通过与自适应阈值(与当前CU大小有关)比较,删除冗余项
- 交叉选用List1和List0中的MV,此时List1中的MV优先级更高。同时通过与自适应阈值(与当前CU大小有关)比较,删除冗余项
- 零MV
注意:GPM-MMVD和GPM-TM都应用于同一个模式中。只有在两个分区的GPM-MMVD都为false,才可以开启GPM-TM。