双向梯度修正(Bi-directional Gradient Correction,BGC)是利用双向参考块间的差值对预测值进行修正的技术。
BGC仅用于双向预测CU,设两个方向得到的单向预测值分别为pred0和pred1,修正前的双向预测值为predBI,即pred0和pred1的加权的值(若满足BIO条件时,predBI为BIO修正后的值),修正后的值为Pred,则修正过程如下式:
其中,BigFlag和BigIdx为码流中传输的两个语法元素。BigFlag表示是否进行修正,BigIdx表示修正的方向,k表示修正强度,固定为3。如果当前CU为skip或direct模式,则BigFlag和BigIdx与其他运动信息一起从相邻块中获取或者从历史信息运动矢量列表中获取,不需要在码流中传输。
该技术的使用条件为:
(1)仅Ref0和Ref1均有效时使用;
(2)仅对像素数大于等于256的CU使用;