[0026] 下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体说明。
[0027] 实施例1
[0028] 在最新一代的视频编码标准VVC中,AME的引入无疑给整个编码器压缩性能的提升带来了巨大的贡献。针对旋转、缩放的运动块,AME带来的压缩性能的提升是远大于整像素、分像素运动估计所带来的运动提升的。VVC帧间预测部分的复杂度提升不单单是由AME自己带来的,AME与整、分像素运动估计的RDO代价的比较进而选择最优模式这一过程同样复杂度极高。除此之外,得到控制点运动矢量(Control Point Motion Vector,CPMV)后,要基于CPMV计算每个子块的MV,然后通过这个MV才进行运动补偿得到预测块。对于中心像素是(x,y)的块,四参数模型得到每个子块CPMV的具体公式如下,
[0029]
[0030] 其中,ah,av,bh,bv分别表示左上角和右上角CPMV的横纵坐标,w表示当前块的宽度;同样地,对于六参数仿射模型来说,具体公式如下,
[0031]
[0032] 其中,ah,av,bh,bv,ch,cv分别表示左上角、右上角和左下角三个位置的CPMV的横纵坐标,w和h分别表示当前块的宽和高。
[0033] 可以看出,基于CPMV得到子块MV的过程同样存在较大复杂度。因此,迫切需要提出一种快速计算方法来降低复杂度。
[0034] 基于此,本发明从三个角度来加速AME。如图1给出了本发明的计算方法流程。首先,针对AME的迭代过程进行优化,主要是减少迭代次数以降低迭代复杂度;其次,考虑到AME有整像素、1/4和1/16像素精度,经过分析统计,将其像素精度种类数量进行减少以此降低一些精度MV的复杂度;最后,考虑到计算RDO代价要经过反量化、反变换等一系列繁琐的步骤,采用SATD代价来代替RDO代价进行决策,这样的好处是不用对码流进行解码重构,就可以粗略得到其代价,用于比较。
[0035] 迭代过程的复杂度降低方案:
[0036] 在AME的迭代过程中,每次迭代都会更新CPMV,然后基于CPMV进行运动补偿,得到预测图像,进而计算RDO代价。迭代完成后,具有最小代价的CPMV会被保留下来,然后再进行之后的预测、变换、量化和熵编码等。
[0037] 为了在最大程度上减少迭代次数,我们分析了迭代次数与量化参数(Quantization Parameter,QP)、slice类型以及CU大小的关系。基于统计分析得到了迭代次数的一个自适应公式,如下所示,
[0038]
[0039] 其中,M表示CU尺寸大小,QP代表量化参数,α是调节参数,在QP大于等于27被设为2,小于27被设为4;θ和η是两个固定值,在四参数中,两者分别为3和5,在六参数中,两者分别为3和4。图2和图4给出了采用本发明自适应迭代次数公式后的性能损失情况,可以发现,性能损失几乎可以忽略不计。这也验证了本发明的自适应阈值公式的合理性。运动矢量精度种类的减少方案。
[0040] 为了更加精确地描述旋转、缩放的运动块,在VVC的AME中,存在三种运动矢量精度,即整像素、1/4和1/16像素精度。这三种精度的MV同样是基于RDO决策来选择代价最小的精度作为最优精度。为了减少RDO代价的计算次数,我们统计了几种运动矢量精度的占比情况,如图3所示。可以发现,在AME中,1/4像素精度的占比在三种像素精度中最高。对此,我们直接摒弃其余两种像素精度,即整像素和1/16像素精度,只保留1/4像素精度。SATD预决策。
[0041] 在AME内部,每次迭代都要计算RDO代价,完成迭代后,具有最小代价的CPMV会被保留下来,用于之后的运动补偿等一系列步骤。除此之外,还存在是否进行细粒度调整的RDO代价比较。在AME外部,要将AME与其他帧间模式进行RDO代价比较,来选择最优的帧间模式。由此可见,RDO代价的比较计算在帧间预测部分的复杂度是极高的。
[0042] 本方案主要从AME内部来减少复杂度。具体来说,对于每次迭代的CPMV,没必要每次都计算RDO代价。SATD代价在一定程度上也可以用于决策,只是没有RDO代价精确度高。但是,计算SATD不需要经过反量化、反变换等步骤,可以说是复杂度得到了极大降低。因此,本方案在迭代过程中采用SATD代价决策来选择最优的CPMV,这可以比RDO决策减少大量时间。具体来说,SATD可以计算如下,
[0043]
[0044] 其中,Ψ代表SATD,i是一个索引值,di代表i位置的变换系数。紧接着,将码率R和SATD采用拉格朗日优化因子进行加权叠加,得到如下,
[0045] ω=Ψ+λ·R
[0046] 至此,我们就得到了可以用来代替迭代过程RDO代价的SATD代价,即上式中的ω。需要说明的是,这种方式可以不经过反量化和反变换等步骤,变换结束后就可以计算。相比原始的RDO代价,极大地减少了计算复杂度。