帧间预测方法、编码器、解码器、计算机可读存储介质转让专利

申请号 : CN202010144579.4

文献号 : CN113365077B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 唐海

申请人 : OPPO广东移动通信有限公司

摘要 :

本申请实施例公开了一种帧间预测方法,方法包括:获取码流,从码流中解析出光照补偿模型索引;获取当前解码块和前一次光照补偿信息集合;前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;基于光照补偿模型索引,从前一次光照补偿信息集合中,确定当前光照补偿信息;基于当前光照补偿信息,对当前解码块进行光照补偿后,得到当前预测值。本申请实施例还同时提供了一种编码器、解码器和计算机可读存储介质。

权利要求 :

1.一种帧间预测方法,其特征在于,应用于解码器,包括:

获取码流,从所述码流中解析出光照补偿模型索引;

获取当前解码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;

基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息;

基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值;

基于所述当前预测值,完成所述当前解码块的解码,得到解码块;

当所述解码块满足所述光照补偿规则时,采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息;

当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个解码块解码时使用。

2.根据权利要求1所述的方法,其特征在于,所述获取当前解码块和前一次光照补偿信息集合之后,所述基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值之前,所述方法还包括:若所述前一次光照补偿信息集合中包括一组光照补偿信息,则将所述一组光照补偿信息作为所述当前光照补偿信息;所述一组光照补偿信息为有效的光照补偿信息。

3.根据权利要求1所述的方法,其特征在于,

所述前一次光照补偿信息集合或所述当前次光照补偿信息集合中包括:至少一项光照补偿信息;

每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引。

4.根据权利要求1至3任一项所述的方法,其特征在于,所述采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,包括:若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量小于预设信息量,则将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;

若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量等于预设信息量,则删除所述前一次光照补偿信息集合中排列在信息首部的第一项光照补偿信息,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;

若所述前一次光照补偿信息集合中存在与所述最新光照补偿信息相同的第i项光照补偿信息,则将所述第i项光照补偿信息删除,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;其中,i为大于等于1,且小于等于所述预设信息量的整数。

5.根据权利要求1至3任一项所述的方法,其特征在于,

所述光照补偿规则包括:当所述当前解码块为通过普通帧间编码模式编码得到的解码块;和/或者合并模式编码得到的解码块。

6.根据权利要求1至3任一项所述的方法,其特征在于,所述采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息,包括:获取所述解码块的当前像素值,以及与所述当前参考块的参考像素值;

基于所述当前像素值和所述参考像素值,计算出所述解码块对应的最新光照补偿信息。

7.根据权利要求6所述的方法,其特征在于,

所述当前像素值为所述解码块的第一位置对应的像素值,所述参考像素值为所述当前参考块的所述第一位置对应的像素值;或者,所述当前像素值为所述解码块进行第一下采样后得到的像素值,所述参考像素值为所述当前参考块进行第二下采样后得到的像素值;

所述当前像素值为所述解码块中确定的第一预设数量的像素值,所述参考像素值为所述当前参考块中确定的第一预设数量的像素值;

其中,所述第一位置为所述解码块或者所述当前参考块的至少一个边缘的至少一行或至少一列;所述第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。

8.根据权利要求1至3任一项所述的方法,其特征在于,所述采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息之后,所述方法还包括:当所述最新光照补偿信息不满足预设阈值时,将所述前一次光照补偿信息集合,作为所述当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个解码块解码时使用。

9.根据权利要求1所述的方法,其特征在于,所述基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息,包括:从所述前一次光照补偿信息集合中,确定出与所述当前解码块具有相同当前参考帧的第一候选光照补偿信息集合;

基于所述光照补偿模型索引,从所述第一候选光照补偿信息集合中,确定出所述当前光照补偿信息;或者,将所述前一次光照补偿信息集合中除所述第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,所述当前参考块所在参考帧,以及所述当前解码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再基于所述光照补偿模型索引,从所述第一候选光照补偿信息集合和所述第二候选光照补偿信息集合中,确定出所述当前光照补偿信息。

10.根据权利要求1至3任一项所述的方法,其特征在于,所述获取码流和获取当前解码块之后,所述基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值之前,所述方法还包括:当所述当前解码块为任何帧间编码模式的块,则判断所述当前解码块是否能隐式地继承光照补偿模型;

若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合不包含有效的光照补偿信息时,则结束光照补偿;

若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合包含有效的光照补偿信息时,则解析码流,得到光照补偿标志;

当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,解析码流,得到所述光照补偿模型索引;

当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将所述一组光照补偿信息作为所述当前光照补偿信息。

11.一种帧间预测方法,其特征在于,应用于编码器,包括:

获取当前编码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合集中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息;

从所述前一次光照补偿信息集合中,确定当前光照补偿信息;

基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值;

基于所述当前预测值,完成所述当前编码块的编码,得到编码块;

当所述编码块满足所述光照补偿规则时,采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息;

当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个编码块编码时使用。

12.根据权利要求11所述的方法,其特征在于,所述从所述前一次光照补偿信息集合中,确定当前光照补偿信息,包括:从所述前一次光照补偿信息集合中,确定出与所述当前编码块具有相同当前参考帧的第一候选光照补偿信息集合;

从所述第一候选光照补偿信息集合中,确定出所述当前光照补偿信息;或者,将所述前一次光照补偿信息集合中除所述第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,所述当前参考块所在参考帧,以及所述当前编码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再从所述第一候选光照补偿信息集合和所述第二候选光照补偿信息集合中,确定出所述当前光照补偿信息。

13.根据权利要求11所述的方法,其特征在于,所述获取当前编码块之后,所述基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值之前,所述方法还包括:当所述当前编码块为任何帧间编码模式的块,则判断所述当前编码块是否能隐式地继承光照补偿模型;

若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合不包含有效的光照补偿信息时,则结束光照补偿;

若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合包含有效的光照补偿信息时,则生成光照补偿标志,写入码流;

当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,从所述前一次光照补偿信息集合中,确定所述当前光照补偿信息,并生成光照补偿模型索引,写入码流;

当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将所述一组光照补偿信息作为所述当前光照补偿信息。

14.根据权利要求11至13任一项所述的方法,其特征在于,

所述前一次光照补偿信息集合或所述当前次光照补偿信息集合中包括:至少一项光照补偿信息;

每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引。

15.根据权利要求11至13任一项所述的方法,其特征在于,所述采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,包括:若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量小于预设信息量,则将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;

若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量等于预设信息量,则删除所述前一次光照补偿信息集合中排列在信息首部的第一项光照补偿信息,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;

若所述前一次光照补偿信息集合中存在与所述最新光照补偿信息相同的第i项光照补偿信息,则将所述第i项光照补偿信息删除,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;其中,i为大于等于1,且小于等于所述预设信息量的整数。

16.根据权利要求11至13任一项所述的方法,其特征在于,

所述光照补偿规则包括:当所述当前编码块为普通帧间编码模式的编码块;和/或者为合并模式的编码块。

17.根据权利要求11至13任一项所述的方法,其特征在于,所述采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息,包括:获取所述编码块的当前像素值,以及与所述当前参考块的参考像素值;

基于所述当前像素值和所述参考像素值,计算出所述编码块对应的最新光照补偿信息。

18.根据权利要求17所述的方法,其特征在于,

所述当前像素值为所述编码块的第一位置对应的像素值,所述参考像素值为所述当前参考块的所述第一位置对应的像素值;或者,所述当前像素值为所述编码块进行第一下采样后得到的像素值,所述参考像素值为所述当前参考块进行第二下采样后得到的像素值;

所述当前像素值为所述编码块中确定的第一预设数量的像素值,所述参考像素值为所述当前参考块中确定的第一预设数量的像素值;

其中,所述第一位置为所述编码块或者所述当前参考块的至少一个边缘的至少一行或至少一列;所述第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。

19.根据权利要求11至13任一项所述的方法,其特征在于,所述采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息之后,所述方法还包括:当所述最新光照补偿信息不满足预设阈值时,将所述前一次光照补偿信息集合,作为所述当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个编码块编码时使用。

20.一种解码器,其特征在于,包括:

第一获取单元,用于获取码流,

第一解析单元,用于从所述码流中解析出光照补偿模型索引;

所述第一获取单元,还用于获取当前解码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;

第一确定单元,用于基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息;

第一光照补偿单元,用于基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值;

解码单元,用于基于所述当前预测值,完成所述当前解码块的解码,得到解码块;

第一计算单元,用于当所述解码块满足所述光照补偿规则时,采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息;

第一更新单元,用于当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个解码块解码时使用。

21.一种编码器,其特征在于,包括:

第二获取单元,用于获取当前编码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息;

第二确定单元,用于从所述前一次光照补偿信息集合中,确定当前光照补偿信息;

第二光照补偿单元,用于基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值;

编码单元,用于基于所述当前预测值,完成所述当前编码块的编码,得到编码块;

第二计算单元,用于当所述编码块满足所述光照补偿规则时,采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息;

第二更新单元,用于当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个编码块编码时使用。

22.一种解码器,其特征在于,包括:第一处理器以及存储有所述第一处理器可执行指令的第一存储器,所述第一存储器通过第一通信总线依赖所述第一处理器执行操作,当所述指令被所述第一处理器执行时,执行如权利要求1至10任一项所述的帧间预测方法。

23.一种编码器,其特征在于,包括:第二处理器以及存储有所述第二处理器可执行指令的第二存储器,所述第二存储器通过第二通信总线依赖所述第二处理器执行操作,当所述指令被所述第二处理器执行时,执行如权利要求11至19任一项所述的帧间预测方法。

24.一种计算机 可读存储介质,其特征在于,存储有可执行指令,当所述可执行指令被一个或多个第一处理器执行的时候,所述第一处理器执行如权利要求1至10任一项所述的帧间预测方法;或者,当所述可执行指令被一个或多个第二处理器执行的时候,所述第二处理器执行如权利要求11至19任一项所述的帧间预测方法。

说明书 :

帧间预测方法、编码器、解码器、计算机可读存储介质

技术领域

[0001] 本申请涉及视频编解码的技术领域,尤其涉及一种帧间预测方法、编码器、解码器、计算机可读存储介质。

背景技术

[0002] 目前通用的视频编解码标准都采用基于块的混合编码框架。视频中的每一帧被分割成相同大小(如 128x128,64x64等)的正方形的最大编码单元(LCU largest coding unit)或最大解码单元。每个最大编码单元或最大解码单元可根据规则划分成矩形的编码块或解码块。由于视频的一个帧中的相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测方法消除相邻像素之间的空间冗余,从而提高编码效率。
[0003] 在帧间预测中,采用局部光照补偿技术,来消除由于光照变化、物体运动引起的光照角度变化、前后物体相对运动引起的阴影变化、后期制作引入的亮度变化等,当前块(编码块或解码块)和参考块之间可能存在纹理相似但亮度不同的情况。这时,对当前块使用局部光照补偿技术,利用当前块左边一列和上边一行的已重构像素中的某些像素,及参考块左边一列和上边一行的像素中的对应位置的像素,确定出当前块的光照补偿因子,进行光照补偿。
[0004] 然而,局部光照补偿技术在计算光照补偿因子时要用到当前块左边一列和上边一行的已重构像素中的某些像素,及参考块左边一列和上边一行的像素中的对应位置的像素,这在硬件实现时增加了存储,且计算范围局限,响应最终的编解码精度。

发明内容

[0005] 本申请实施例提供一种帧间预测方法、编码器、解码器、计算机可读存储介质,能够节省存储空间,还提供了编解码的精度。
[0006] 本申请的技术方案是这样实现的:
[0007] 本申请实施例提供了一种帧间预测方法,应用于解码器,包括:
[0008] 获取码流,从所述码流中解析出光照补偿模型索引;
[0009] 获取当前解码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;
[0010] 基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0011] 基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值。
[0012] 本申请实施例提供了一种帧间预测方法,应用于编码器,包括:
[0013] 获取当前编码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合集中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息;
[0014] 从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0015] 基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值。
[0016] 本申请实施例提供了一种解码器,包括:
[0017] 第一获取单元,用于获取码流,
[0018] 第一解析单元,用于从所述码流中解析出光照补偿模型索引;
[0019] 所述第一获取单元,还用于获取当前解码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;
[0020] 第一确定单元,用于基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0021] 第一光照补偿单元,用于基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值。
[0022] 本申请实施例提供了一种编码器,包括:
[0023] 第二获取单元,用于获取当前编码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息;
[0024] 第二确定单元,用于从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0025] 第二光照补偿单元,用于基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值。
[0026] 本申请实施例还提供了一种解码器,包括:第一处理器以及存储有所述第一处理器可执行指令的第一存储器,所述第一存储器通过第一通信总线依赖所述第一处理器执行操作,当所述指令被所述第一处理器执行时,执行上述的解码器侧的帧间预测方法。
[0027] 本申请实施例还提供了一种编码器,包括:第二处理器以及存储有所述第二处理器可执行指令的第二存储器,所述第二存储器通过第二通信总线依赖所述第二处理器执行操作,当所述指令被所述第二处理器执行时,执行上述编码器侧的所述的帧间预测方法。
[0028] 本申请实施例提供了一种计算可读机存储介质,存储有可执行指令,当所述可执行指令被一个或多个第一处理器执行的时候,所述第一处理器执行上述解码器侧的所述的帧间预测方法;或者,当所述可执行指令被一个或多个第二处理器执行的时候,所述第二处理器执行上述编码器侧的所述的帧间预测方法。
[0029] 本申请实施例提供了一种帧间预测方法、编码器、解码器、计算机可读存储介质,该方法应用于解码器,包括:获取码流,从码流中解析出光照补偿模型索引;获取当前解码块和前一次光照补偿信息集合;前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;基于光照补偿模型索引,从前一次光照补偿信息集合中,确定当前光照补偿信息;基于当前光照补偿信息,对当前解码块进行光照补偿后,得到当前预测值。也就是说,在本申请实施例中,解码器可以从码流中获取到进行光照补偿的光照补偿模型索引,这样就可以在上一个解码块解码完成后得到的前一次光照补偿信息集合,找到光照补偿模型索引对应的光照补偿信息,从而进行光照补偿了,由于前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息,因此,解码器可以针对历史解码块得到的光照补偿信息进行选择,确定出最终使用的当前光照补偿信息,选择范围变多,可以选择出更精确的数值进行光照补偿,因此,解码的精度会提升,再者,前一次光照补偿信息集合中存储的只有满足光照补偿规则的历史解码块得到的光照补偿信息,因此,筛掉了不符合光照补偿规则的数值,减少了存储空间。

附图说明

[0030] 图1为本申请实施例提供的示例性的视频编解码的网络架构的组成结构示意图;
[0031] 图2为本申请实施例提供的示例性的编码器的框图;
[0032] 图3为本申请实施例提供的示例性的解码器的框图;
[0033] 图4为本申请实施例提供的一种解码器对应的可选的帧间预测的实例的流程示意图一;
[0034] 图5为本申请实施例提供的一种解码器对应的可选的帧间预测的实例的流程示意图二;
[0035] 图6为本申请实施例提供的一种解码器对应的可选的帧间预测的实例的流程示意图三;
[0036] 图7为本申请实施例提供的一种解码器对应的可选的帧间预测的实例的流程示意图四;
[0037] 图8为本申请实施例提供的一种编码器对应的可选的帧间预测的实例的流程示意图一;
[0038] 图9为本申请实施例提供的一种编码器对应的可选的帧间预测的实例的流程示意图二;
[0039] 图10为本申请实施例提供的一种编码器对应的可选的帧间预测的实例的流程示意图三;
[0040] 图11为本申请实施例提供的一种解码器的结构示意图一;
[0041] 图12为本申请实施例提供的一种解码器的结构示意图二;
[0042] 图13为本申请实施例提供的一种编码器的结构示意图一;
[0043] 图14为本申请实施例提供的一种编码器的结构示意图二。

具体实施方式

[0044] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0045] 下面先介绍下帧间预测、视频编解码等概念。
[0046] 预测编解码主要的功能是:在视频编解码中利用空间或时间上已有的重建图像构造当前处理块的预测值,仅将原始值和预测值的差值传输,以达到减少传输数据量的目的。
[0047] 一个可以使用帧间预测编码的帧有一个或多个参考帧。对可使用帧间预测编码的当前帧的当前块,当前块可以是编码单元或预测单元,可以使用一个运动矢量(MV motion vector)指示到某一个参考帧的一个与当前块大小相同的像素区域,这里称作参考块,也可以使用两个运动矢量指示到某两个可以相同也可以不同的参考帧的两个参考块。运动补偿(MC motion compensation)根据运动矢量所指示的参考块得出当前编码单元的预测值。
[0048] 基于上述概念的基础上,本申请实施例提供了一种包含帧间预测方法的视频编解码系统的网络架构,图1为本申请实施例视频编解码的网络架构的组成结构示意图,如图1所示,该网络架构包括一个或多个电子设备111至11N和通信网络01,其中,电子设备111至11N可以通过通信网络01进行视频交互。电子设备在实施的过程中可以为各种类型的具有视频编解码功能的设备,例如,所述电子设备可以包括手机、平板电脑、个人计算机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备、服务器等,本申请实施例不作限制。其中,本申请实施例中的帧间预测的编码器或解码器就可以为上述电子设备。
[0049] 其中,本申请实施例中的电子设备具有编解码功能,一般包括编码器和解码器。
[0050] 示例性的,参见图2所示,编码器21的组成结构包括:变换与量化单元211、帧内估计单元212、帧内预测单元213、运动补偿单元214、运动估计单元215、反变换与反量化单元216、滤波器控制分析单元217、滤波单元218、熵编码单元219和解码图像缓存单元210,以及光照补偿单元2110等,其中,滤波单元218可以实现去方块滤波及样本自适应缩进(Sample Adaptive 0ffset,SAO)滤波,熵编码单元219 可以实现头信息编码及基于上下文的自适应二进制算术编码(Context‑based Adaptive Binary Arithmatic Coding,CABAC)。针对输入的源视频数据,通过编码树块(Coding Tree Unit,CTU)的划分可以得到一个当前视频帧的待编码块,然后对该待编码块进行帧内预测或帧间预测后,将得到的残差信息通过变换与量化单元211进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内估计单元212和帧内预测单元213用于对该待编码块进行帧内预测,例如,确定用以编码该待编码块的帧内预测模式;运动补偿单元214、运动估计单元215和光照补偿单元2110 用于执行待编码块相对于一或多个参考帧中的一或多个块的帧间预测编码以提供预测信息;其中,运动估计单元215用于估计运动向量,运动向量可以估计该待编码块的运动,然后由运动补偿单元214基于运动向量执行运动补偿,光照补偿单元2110基于运动补偿后进行光照补偿;在确定帧内预测模式之后,帧内预测单元213还用于将所选择的帧内预测数据提供到熵编码单元219,而且运动估计单元215将所计算确定的运动向量数据也发送到熵编码单元219;此外,反变换与反量化单元216是用于该待编码块的重构建,在像素域中重构建残差块,该重构建残差块通过滤波器控制分析单元217和滤波单元218去除方块效应伪影,然后将该重构残差块添加到解码图像缓存单元210的帧中的一个预测性块,用以产生经重构建的视频编码块;熵编码单元219是用于编码各种编码参数及量化后的变换系数,在基于CABAC的编码算法中,上下文内容可基于相邻编码块,可用于编码指示所确定的帧内预测模式的信息,输出该视频数据的码流;而解码图像缓存单元210是用于存放重构建的视频编码块,用于预测参考。随着视频编码的进行,会不断生成新的重构建的视频编码块,这些重构建的视频编码块都会被存放在解码图像缓存单元210中。
[0051] 需要说明的是,在本申请实施例中,光照补偿也可以作为帧间预测过程中进行运动补偿的一部分,即光照补偿单元2110可以包含在运动补偿单元214中,图中未示出。
[0052] 与编码器21对应的解码器22,其组成结构如图3所示,包括:熵解码单元221、反变换与反量化单元222、帧内预测单元223、运动补偿单元224、光照补偿单元227、滤波单元225和解码图像缓存单元 226等,其中,熵解码单元221可以实现头信息解码以及CABAC解码,滤波单元225可以实现去方块滤波以及SAO滤波。输入的视频信号经过图3的编码处理之后,输出该视频信号的码流;该码流输入至视频解码器22中,首先经过熵解码单元221,得到解码后的变换系数;针对该变换系数通过反变换与反量化单元222进行处理,以便在像素域中产生残差块;帧内预测单元223可用于基于所确定的帧内预测模式和来自当前帧或图片的先前经解码块的数据而产生当前解码块的预测数据;运动补偿单元224通过剖析运动向量来确定当前解码块的预测信息,通过光照补偿单元227对该预测信息进行光照补偿后,产生正被解码的当前解码块的预测性块;通过对来自反变换与反量化单元222的残差块与由帧内预测单元223 或运动补偿单元224产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频块通过滤波单元225以便去除方块效应伪影,从而改善视频质量;然后将经解码的视频块存储于解码图像缓存单元226 中,解码图像缓存单元226存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出显示。
[0053] 需要说明的是,在本申请实施例中,光照补偿也可以作为帧间预测过程中进行运动补偿的一部分,即光照补偿单元光照补偿单元227可以包含在运动补偿单元224中,图中未示出。
[0054] 基于此,下面结合附图和实施例对本申请的技术方案进一步详细阐述。本申请实施例所提供的帧间预测方法,是在预测编解码中的帧间预测过程的一种预测,既可以应用于编码器21中,也可以应用于解码器22中,本申请实施例对此不作具体限定。
[0055] 本申请实施例提供的帧间预测方法主要为在光照补偿单元中实现的光照补偿的过程。
[0056] 本申请实施例提供一种帧间预测方法,该方法应用于解码器中。
[0057] 图4为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图4所示,该方法包括:
[0058] S101、获取码流,从码流中解析出光照补偿模型索引。
[0059] S102、获取当前解码块和前一次光照补偿信息集合;前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息。
[0060] S103、基于光照补偿模型索引,从前一次光照补偿信息集合中,确定当前光照补偿信息。
[0061] S104、基于当前光照补偿信息,对当前解码块进行光照补偿后,得到当前预测值。
[0062] 在S101中,在本申请实施例中,解码器在获取到编码器传输的码流后,可以通过解析码流,来获取编码器在编码时生成的光照补偿模型索引。
[0063] 需要说明的是,在本申请实施例中,解码器在接收到光照补偿标志,且光照补偿标志表征可以进行光照补偿时,解码器是可以从码流中去获取光照补偿模型索引的。
[0064] 在本申请实施例中,光照补偿模型索引表征具体在前一次光照补偿信息集合中编码时使用的光照补偿信息对应的索引信息。
[0065] 需要说明的是,在本申请实施例中,解码器在进行运动补偿之后,可以对当前解码块进行光照补偿,来实现帧间预测。
[0066] 其中,光照补偿模型为用于进行光照补偿所采用的处理手段。在本申请实施例中,光照补偿模型可以为一个对光照会变化的线性模型,本申请实施例不作限制模型的类型。
[0067] 在本申请的一些实施例中,前一次光照补偿信息集合或当前次光照补偿信息集合中包括:至少一项光照补偿信息;而每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引;其中,至少一组光照补偿因子包括:至少一个参考方向对应的光照补偿因子,或者,至少一个参考帧列表。
[0068] 需要说明的是,在本申请实施例中,至少一组光照补偿因子可以包括:一个参考方向对应的光照补偿因子;或者,两个参考方向对应的光照补偿因子,其中,两个参考方向可能是一个前向一个后向,或者两个参考方向都是前向,本申请实施例不作限制。
[0069] 在本申请实施例中,一组光照补偿因子可以包括:一个缩放因子和一个偏移因子。
[0070] 示例性的,线性模型使用一个缩放因子a和一个偏移因子b,设当前解码块在(x,y)位置的预测值为Y(x,y),参考块在(x,y)位置的像素值为X(x,y),则Y(x,y)=a*X(x,y)+b。其中,a和b是基于前一次光照补偿信息集合确定的。
[0071] 需要说明的是,在本申请实施例中,当前解码块的像素值与对应参考块的像素值的位置分布一致,通过预测位置分布一致的像素值,从而得到当前解码块对应的当前预测值。
[0072] 在S102中,解码器在进行当前解码块的解码时,由于上一块解码块已经解码完成了,因此,解码器是可以获取当前解码块和上一块解码完成后得到的前一次光照补偿信息集合的。
[0073] 需要说明的是,在本申请实施例中,解码器是可以对视频序列进行解码的,当解码器在针对一个视频序列进行解码时,是以块为单位进行解码的,当解码器在解码当前解码块时,上一个或前一个解码块已经解码完成了。且在解码器解码初始时,是存储有初始光照补偿信息集合的,初始光照补偿信息集合是空的,在每个解码块解码完成时可以经过一系列的判断,来决定是不是有光照补偿因子生成,若有,则更新至上一次或前一次光照补偿信息集合中,若没有,则不更新。
[0074] 在本申请实施例中,前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的。其中,前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息。
[0075] 需要说明的是,在本申请实施例中,前一次光照补偿信息集合可以是以列表的形式来存储光照补偿信息的;也就是说,解码器在解码初始时,是存储有一个空的光照补偿列表的,在解码的过程中,每个解码块解码完成时可以经过一系列的判断,来决定是不是有光照补偿信息(具体的为光照补偿因子)生成,若有,则更新至上一次或前一次光照补偿列表中,若没有,则不更新光照补偿列表。
[0076] 示例性的,在前一次光照补偿列表中,前一次光照补偿列表中的每一项为一组光照补偿信息,若光照补偿信息为光照补偿因子时,在本申请实施例中一组光照补偿因子包括缩放因子和偏移因子,即一组缩放因子a和偏移因子b。
[0077] 在本申请实施例中,前一次光照补偿列表中保存的光照补偿信息包括上面所提到的缩放因子a和偏移因子b的值,一种可能的实现是该列表中保存的光照补偿信息还包括参考帧的索引,另一种可能的实现是该列表中保存的光照补偿信息不包括参考帧的索引。
[0078] 需要说明的是,在本申请实施例中,当前解码块的参考方向可以为一个,也可以为至少一个,例如,两个参考方向,因此,当参考方向为一个时,如果前一次光照补偿列表中保存的光照补偿信息包括对应的参考帧的索引,一种可能的实现方式是上述列表的每一项只保存一个光照补偿信息,即只有一组缩放因子a、偏移因子b和对应参考帧的索引;或者为除上述信息外,还包括一组默认值的缩放因子a、偏移因子b和对应参考帧的索引,或为除上述信息外,未用到的参考方向上保存的光照补偿信息可设为不可用。另一种可能的实现方式是针对两个参考方向时,上述列表的每一项分别包括两个参考块对应的缩放因子a、偏移因子b和参考帧的索引。
[0079] 在本申请的一些实施例中,光照补偿规则包括:当当前解码块为通过普通帧间编码模式编码得到的解码块;和/或者合并模式编码得到的解码块。
[0080] 需要说明的是,在本申请实施例中,解码器在进行解码时,正在解码的当前解码块如果符合光照补偿规则,就可以计算出当前解码块的光照补偿因子,并获取参考帧的索引,而本申请中的光照补偿规则可以为当前解码块为通过普通帧间编码模式编码得到的解码块,普通帧间解码模式指使用帧间预测并需要传输运动矢量差值(MVD motion vector difference)和残差(residual)的块;也可以是当前解码块为通过普通帧间解码模式或合并模式解码得到的解码块,其中,合并模式指使用帧间预测,不需要传输运动矢量差值但需要传输残差的块。
[0081] 需要说明的是,本申请不限制S101和S102的执行顺序。
[0082] 在S103中,解码器在获取到光照补偿模型索引,以及前一次光照补偿信息集合之后,该解码器就可以基于光照补偿模型索引,从前一次光照补偿信息集合中,确定当前光照补偿信息。
[0083] 在本申请的一些实施例中,基于光照补偿模型索引,从前一次光照补偿信息集合中,确定当前光照补偿信息的实现方式为:从前一次光照补偿信息集合中,确定出与当前编码块具有相同当前参考帧的第一候选光照补偿信息集合;基于光照补偿模型索引,从第一候选光照补偿信息集合中,确定出当前光照补偿信息;或者,将前一次光照补偿信息集合中除第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再基于光照补偿模型索引,从第一候选光照补偿信息集合和第二候选光照补偿信息集合中,确定出当前光照补偿信息。
[0084] 在本申请实施例中,编码器可以从前一次光照补偿信息集合(前一次光照补偿列表)中确定当前光照补偿信息,如果前一次光照补偿列表中的保存光照补偿信息集合的中包含参考帧的信息,如参考块列表索引及参考块索引,一种可能的实现方式是前一次光照补偿列表筛选出与当前块所用参考帧相同的参考帧的光照补偿因子,另一种可能的实现方式是与当前块所用参考帧不相同的参考帧的光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离使用缩放后使用,从而选择出结果最优的光照补偿因子为当前光照补偿因子。
[0085] 需要说明的是,解码器可以将前一次光照补偿信息集合中,光照补偿模型索引指示的光照补偿信息选择出来作为当前光照补偿信息。后续还有基于其他确定光照补偿信息的方式,将在后面的实施例中进行说明。
[0086] 在S104中,解码器可以根据当前光照补偿信息,对当前解码块进行光照补偿后,从而得到当前预测值。
[0087] 需要说明的是,在本申请实施例中,解码器是针对进行了运动补偿的当前解码块进行的本申请实施例提供的帧间预测方法的。
[0088] 在本申请的一些实施例中,解码器可以根据光照补偿线性模型,结合确定的当前光照补偿因子(当前光照补偿信息),将与当前解码块对应的参考块的像素值输入,以得到当前解码块的预测值。
[0089] 需要说明的是,本申请实施例中的解码器在进行帧间预测时,也是基于像素为单元来实现预测的。
[0090] 可以理解的是,解码器可以从码流中获取到进行光照补偿的光照补偿模型索引,这样就可以在上一个解码块解码完成后得到的前一次光照补偿信息集合,找到光照补偿模型索引对应的光照补偿信息,从而进行光照补偿了,由于前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息,因此,解码器可以针对历史解码块得到的光照补偿因子进行选择,确定出最终使用的当前光照补偿信息,选择范围变多,可以选择出更精确的数值进行光照补偿,因此,解码的精度会提升,再者,前一次光照补偿信息集合中存储的只有满足光照补偿规则的历史解码块得到的光照补偿信息,因此,筛掉了不符合光照补偿规则的数值,减少了存储空间。
[0091] 在本申请的一些实施例中,图5为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图5 所示,在S104之后,该方法还包括:
[0092] S105、基于当前预测值,完成当前解码块的解码,得到解码块。
[0093] S106、当解码块满足光照补偿规则时,采用与解码块对应的当前参考块,计算出解码块对应的最新光照补偿信息。
[0094] S107、当最新光照补偿信息满足预设阈值时,采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个解码块解码时使用。
[0095] S108、当最新光照补偿信息不满足预设阈值时,将前一次光照补偿信息集合,作为当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个解码块解码时使用。
[0096] 需要说明的是,由于在当前解码块确定的情况下,可以获取到当前解码块的参考帧的索引,因此,解码器在获取当前光照补偿信息时,主要是为了计算当前光照补偿因子的。
[0097] 在本申请实施例中,解码器在获取当前预测值后,继续进行解码处理,直至完成当前解码块的解码,得到解码块,这时,解码器完成当前解码块的解码之后,需要进行一次判断,判断解码块是不是符合光照补偿规则,若符合,那么就计算该解码块的光照补偿因子,详细的,采用与解码块对应的当前参考块,结合初始光照补偿模型,从而计算出解码块对应的最新光照补偿信息。
[0098] 在本申请实施例中,解码器判断解码块是否光照补偿规则,当解码块为是当当前解码块为通过普通帧间编码模式编码得到的解码块;和/或者合并模式编码得到的解码块,则符合当解码块满足光照补偿规则,这样在本申请实施例中,解码块就获取解码块的当前像素值,以及与当前参考块的参考像素值;再基于当前像素值和参考像素值,计算出解码块对应的最新光照补偿信息。
[0099] 在本申请的一些实施例中,当前像素值为解码块的第一位置对应的像素值,参考像素值为当前参考块的第一位置对应的像素值;或者,
[0100] 当前像素值为解码块进行第一下采样后得到的像素值,参考像素值为当前参考块进行第二下采样后得到的像素值;
[0101] 当前像素值为解码块中确定的第一预设数量的像素值,参考像素值为当前参考块中确定的第一预设数量的像素值;
[0102] 其中,第一位置为解码块或者当前参考块的至少一个边缘的至少一行或至少一列;第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。
[0103] 需要说明的是,在计算最新光照补偿信息中的最新光照补偿因子时,所选择的像素可以是当前块和参考块的某一个边缘,如上边缘、下边缘、左边缘、右边缘的一行/列或几行/列,也可以同时选择其中的一个或几个而得出一个或几个光照补偿因子,即当前像素值为解码块的第一位置对应的像素值,参考像素值为当前参考块的第一位置对应的像素值。也可以使用当前块和参考块的所有像素或对所有像素的某一种规则的下采样,如当前块水平和竖直方向每2/4/8个像素取一个像素,即第一下采样或第二下采样为当前块水平和竖直方向每2/4/8个进行采样。还可以根据块的大小来区分下采样的规则,如当当前块的像素数小于等于64个时,水平和竖直方向每2个像素取一个像素,当当前块的像素数大于64个时,水平和竖直方向每4个像素取一个像素,本申请实施例不作限制。或者规定取第一预设数量的像素,如不管块的大小,都对当前块和参考块各取16个像素。或者,根据块的不同大小和形状设置采样规则等,本申请实施例不作限制。
[0104] 解码器在计算出解码块对应的最新光照补偿信息之后,需要进行二次判断,判断该最新光照补偿信息中的最新光照补偿因子是否有效,若有效,才使用最新光照补偿信息更新前一次光照补偿信息集合或更新前一次光照补偿列表,若无效,则不更新。
[0105] 也就是说,解码器如果计算出来的光照补偿模型的a、b分别符合合理的取值范围,认为这个模型是有效的,否则,认为这个模型是无效的,放弃这组光照补偿因子。
[0106] 在本申请的一些实施例中,解码器可以采用预设阈值来进行二次判断,当最新光照补偿信息满足预设阈值时,解码器采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个解码块解码时使用。而当最新光照补偿信息不满足预设阈值时,将前一次光照补偿信息集合,作为当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个解码块解码时使用,该一组光照补偿信息为有效的光照补偿信息。
[0107] 在本申请实施例中,解码器可以采用预设阈值来进行二次判断,也可以采用其他判断方式,本申请实施例不作限制。
[0108] 在本申请实施例中,解码器采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合的实现方式可以为:若前一次光照补偿信息集合中不存在最新光照补偿信息,且前一次光照补偿信息集合的总信息量小于预设信息量,则将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;若前一次光照补偿信息集合中不存在最新光照补偿信息,且前一次光照补偿信息集合的总信息量等于预设信息量,则删除前一次光照补偿信息集合中排列在信息首部的第一项光照补偿信息,再将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;若前一次光照补偿信息集合中存在与最新光照补偿信息相同的第i项光照补偿信息,则将第i项光照补偿信息删除,再将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;其中,i为大于等于1,且小于等于预设信息量的整数。
[0109] 需要说明的是,光照补偿信息集合可以采用光照补偿列表的形式体现,每个待解码块解码完成后,得到最新光照补偿信息,会对前一次光照补偿列表进行更新。光照补偿列表可以有最大的长度,即项数:预设信息量。光照补偿列表的每一项中保存光照补偿信息。光照补偿列表的插入可以使用先进先出的规则。插入新的项时需要进行查重并更新列表。
即需要进行最新光照补偿信息的查重,最新光照补偿信息为要插入项,一种可能的实现方式是当要插入项和已有项对应的光照补偿因子的各个值相等时,认为是重复项,将已有项删除,将要插入的项插入队尾;另一种可能的实现方式是当要插入的项和已有项对应的光照补偿模型对应的参考帧相同且a、b的值相差小于预设差异阈值时,认为是重复项,将已有项删除,将要插入项插入队尾。
[0110] 在本申请的一些实施例中,如果允许缩放,将a、b根据要插入项和已有项的参考帧缩放后进行比较,缩放方法类似于运动矢量的缩放方法。具体的需要依据光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离进行缩放。
[0111] 可以理解的是,每当解码器解码完一个块之后,如果这个块符合光照补偿规则计算出它的光照补偿因子,如果这个光照补偿因子符合二次判断要求,就把它插入到光照补偿列表中,对光照补偿列表进行更新。当要解码一个块时,如果它需要用到光照补偿,就从光照补偿列表中选择合适的光照补偿因子。这样当前块能参考到的光照补偿模型就不局限于相邻的块,而是之前解码过的所有的块,从而可以提高了解码的精度。
[0112] 在本申请的一些实施例中,图6为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图6 所示,获取当前光照补偿信息的另一个实现方式为,在不采用光照补偿模型索引的情况下,在S102之后,且S104之前,该方法还包括:
[0113] S109、若前一次光照补偿信息集合中包括一组光照补偿信息,则将一组光照补偿信息作为当前光照补偿信息;一组光照补偿信息为有效的光照补偿信息。
[0114] 在本申请实施例中,解码器获取当前解码块和前一次光照补偿信息集合之后,若前一次光照补偿信息集合中包括一组光照补偿信息,则将一组光照补偿因子作为当前光照补偿信息;但是这一组光照补偿信息为有效的光照补偿信息。详细的,应该是改组光照补偿信息中的光照补偿因子为有效的光照补偿因子。
[0115] 需要说明的是,当解码一个块时,如果可以进行光照补偿,光照补偿列表中只有一个可用的光照补偿信息或当前块可用的光照补偿信息,且光照补偿的标志确定当前块使用光照补偿,一种可能的实现方式是在这种情况下默认使用列表中唯一可用的光照补偿信息而不用基于光照补偿模型索引确定当前光照补偿信息,从而可以节省光照补偿模型索引的传输,节省传输资源。
[0116] 在本申请的一些实施例中,图7为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图7 所示,在S101的获取码流之后,在S102获取当前编码块之后,且在S104之前,该方法还包括:
[0117] S110、当当前解码块为任何帧间编码模式的块,则判断当前解码块是否能隐式地继承光照补偿模型。
[0118] S111、若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿信息时,则结束光照补偿。
[0119] S112、若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合包含有有效的光照补偿信息时,则解析码流,得到光照补偿标志。
[0120] S113、当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,解析码流,得到光照补偿模型索引。
[0121] S114、当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将一组光照补偿信息作为当前光照补偿信息。
[0122] 在S110之后,还包括:
[0123] S115、若能隐式地继承光照补偿模型,则采用隐式地继承的光照补偿模型对当前解码块进行光照补偿后,得到当前预测值。
[0124] 在本申请实施例中,当编解码一个块时,如果这个块符合要求,那么它可以进行光照补偿。这个要求可以是当前块是一个任何帧间解码模式的块,如果当前块是帧间跳过(skip)模式或合并(merge)模式;一种可能的实现是它隐式地继承它所参考块的光照补偿因子(即光照补偿信息);另一种可能的实现是它不能隐式地继承它所参考的块的光照补偿因子。如果当前块可以进行光照补偿但它不能隐式地继承它所参考的块的光照补偿因子,需要传输一个标志(flag)指示它是否使用光照补偿。
[0125] 需要说明的是,当当前解码块为任何帧间解码模式的块,则判断当前解码块是否能隐式地继承光照补偿模型。若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿信息 (例如:光照补偿因子)时,则结束光照补偿;若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合包含有有效的光照补偿信息时,则解析码流,得到光照补偿标志。当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,解析码流,得到光照补偿模型索引,指示解码器使用如上所述的列表中的第几个项中的光照补偿模信息,使用光照补偿提高预测质量。其中,在本申请实施例中,光照补偿模型索引表征具体在前一次光照补偿信息集合中解码时使用的光照补偿信息对应的索引信息。
[0126] 若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿因子时,则结束光照补偿,也就是说,当编解码一个块时,如果它可以进行光照补偿,但光照补偿列表中没有可用的光照补偿模型或没有当前块可用的光照补偿模型,一种可能的实现方式是在这种情况下默认它不使用光照补偿而不用进行flag传输。
[0127] 可以理解的是,默认不使用光照补偿而不用进行flag传输从而减少传输资源和降低处理复杂度。
[0128] 当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括一组光照补偿信息时,将一组光照补偿信息作为当前光照补偿信息。也就是说,当编解码一个块时,如果它可以进行光照补偿,光照补偿模型列表中只有一个可用的光照补偿模型或当前块可用的光照补偿模型,且光照补偿模型的标志确定当前块使用光照补偿,一种可能的实现方式是在这种情况下默认它使用列表中唯一可用的光照补偿信息而不用传输光照补偿模型索引。
[0129] 可以理解的是,默认使用列表中唯一可用的光照补偿信息而不用传输光照补偿模型索引可以减少传输资源。
[0130] 在本申请实施例中,若能隐式地继承光照补偿模型,则解码器可以采用隐式地继承的光照补偿模型对当前解码块进行光照补偿后,得到当前预测值。
[0131] 本申请实施例提供一种帧间预测方法,该方法应用于编码器中。
[0132] 图8为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图8所示,该方法包括:
[0133] S201、获取当前编码块和前一次光照补偿信息集合;前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,前一次光照补偿信息集合中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息。
[0134] S202、从前一次光照补偿信息集合中,确定当前光照补偿信息。
[0135] S203、基于当前光照补偿信息,对当前编码块进行光照补偿后,得到当前预测值。
[0136] 在S201中,在本申请实施例中,编码器在进行完前一个编码块的编码后,接着进行当前编码块的编码,于是,编码器可以获取到前一次编码完成后更新得到的前一次光照补偿信息集合了。
[0137] 也就是说,编码器在进行当前编码块的编码时,由于上一块编码块已经编码完成了,因此,编码器是可以获取当前编码块和上一块编码完成后得到的前一次光照补偿信息集合的。
[0138] 需要说明的是,在本申请实施例中,编码器是可以对视频序列进行编码的,当编码器在针对一个视频序列进行编码时,是以块为单位进行编码的,当编码器在编码当前编码块时,上一个或前一个编码块已经编码完成了。且在编码器编码初始时,是存储有初始光照补偿信息集合的,初始光照补偿信息集合是空的,在每个编码块编码完成时可以经过一系列的判断,来决定是不是有光照补偿因子生成,若有,则更新至上一次或前一次光照补偿信息集合中,若没有,则不更新。
[0139] 在本申请实施例中,前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的。其中,前一次光照补偿信息集合中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息。
[0140] 需要说明的是,在本申请实施例中,编码器在进行运动补偿之后,可以对当前编码块再次进行光照补偿,来实现帧间预测。
[0141] 其中,光照补偿模型为用于进行光照补偿所采用的处理手段。在本申请实施例中,光照补偿模型可以为一个对光照会变化的线性模型,本申请实施例不作限制模型的类型。前一次光照补偿信息中的光照补偿因子为光照补偿模型中的系数。
[0142] 在本申请的一些实施例中,前一次光照补偿信息集合或当前次光照补偿信息集合中包括:至少一项光照补偿信息;而每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引;其中,至少一组光照补偿因子包括:至少一个参考方向对应的光照补偿因子,或者,至少一个参考帧列表。
[0143] 需要说明的是,在本申请实施例中,至少一组光照补偿因子可以包括:一个参考方向对应的光照补偿因子;或者,两个参考方向对应的光照补偿因子,其中,两个参考方向可能是一个前向一个后向,或者两个参考方向都是前向,本申请实施例不作限制。
[0144] 在本申请实施例中,一组光照补偿因子可以包括:一个缩放因子和一个偏移因子。
[0145] 示例性的,线性模型使用一个缩放因子a和一个偏移因子b,设当前编码块在(x,y)位置的预测值为Y(x,y),参考块在(x,y)位置的像素值为X(x,y),则Y(x,y)=a*X(x,y)+b。其中,a和b是基于前一次光照补偿信息集合确定的。
[0146] 需要说明的是,在本申请实施例中,当前编码块的像素值与对应参考块的像素值的位置分布一致,通过预测位置分布一致的像素值,从而得到当前编码块对应的当前预测值。
[0147] 需要说明的是,在本申请实施例中,前一次光照补偿信息集合可以是以列表的形式来存储光照补偿信息的;也就是说,编码器在编码初始时,是存储有一个空的光照补偿列表的,在编码的过程中,每个编码块编码完成时可以经过一系列的判断,来决定是不是有光照补偿信息生成,若有,则更新至上一次或前一次光照补偿列表中,若没有,则不更新光照补偿列表。
[0148] 示例性的,在前一次光照补偿列表中,前一次光照补偿列表中的每一项为一组光照补偿信息,光照补偿信息中包括一组光照补偿因子时,在本申请实施例中一组光照补偿因子包括缩放因子和偏移因子,即一组缩放因子a和偏移因子b。
[0149] 在本申请实施例中,前一次光照补偿列表中保存的光照补偿因子包括上面所提到的缩放因子a和偏移因子b的值,一种可能的实现是该列表中保存的光照补偿信息还包括参考帧的索引,另一种可能的实现是该列表中保存的光照补偿信息不包括参考帧的索引。
[0150] 需要说明的是,在本申请实施例中,当前编码块的参考方向可以为一个,也可以为至少一个,例如,两个参考方向,因此,当参考方向为一个时,如果前一次光照补偿列表中保存的光照补偿信息包括对应的参考帧的索引,一种可能的实现方式是上述列表的每一项只保存一个光照补偿信息,即只有一组缩放因子a、偏移因子b和对应参考帧的索引;或者为除上述信息外,还包括一组默认值的缩放因子a、偏移因子b和对应参考帧的索引,或为除上述信息外,未用到的参考方向上保存的光照补偿信息可设为不可用。另一种可能的实现方式是针对两个参考方向时,上述列表的每一项分别包括两个参考块对应的缩放因子a、偏移因子b和参考帧的索引。
[0151] 在本申请的一些实施例中,光照补偿规则包括:当当前编码块为普通帧间编码模式的编码块;和/或者为合并模式的编码块。
[0152] 需要说明的是,在本申请实施例中,编码器在进行编码时,正在编码的当前编码块如果符合光照补偿规则,就可以计算出当前编码块的光照补偿因子,并获取参考帧的索引,而本申请中的光照补偿规则可以为当前编码块为普通帧间编码模式的编码块,普通帧间编码模式指使用帧间预测并需要传输运动矢量差值(MVD motion vector difference)和残差(residual)的块;也可以是当前编码块为普通帧间编码模式或合并模式的编码块,其中,合并模式指使用帧间预测,不需要传输运动矢量差值但需要传输残差的块。
[0153] 在S202中,在本申请的一些实施例中,编码器从前一次光照补偿信息集合中,确定当前光照补偿信息的实现方式为:从前一次光照补偿信息集合中,确定出与当前编码块具有相同当前参考帧的第一候选光照补偿信息集合;
[0154] 从第一候选光照补偿信息集合中,确定出当前光照补偿信息;或者,
[0155] 将前一次光照补偿信息集合中除第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再从第一候选光照补偿信息集合和第二候选光照补偿信息集合中,确定出当前光照补偿因子。
[0156] 在本申请实施例中,编码器可以从前一次光照补偿信息集合(前一次光照补偿列表)中确定当前光照补偿因子,如果前一次光照补偿列表中的保存光照补偿信息集合的中包含参考帧的信息,如参考块列表索引及参考块索引,一种可能的实现方式是前一次光照补偿列表筛选出与当前块所用参考帧相同的参考帧的光照补偿因子,另一种可能的实现方式是与当前块所用参考帧不相同的参考帧的光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离使用缩放后使用,从而选择出结果最优的光照补偿因子为当前光照补偿因子。
[0157] 在S203中,在本申请实施例中,编码器可以根据当前光照补偿信息,对当前编码块进行光照补偿后,从而得到当前预测值。
[0158] 需要说明的是,在本申请实施例中,编码器是针对进行了运动补偿的当前编码块进行的本申请实施例提供的帧间预测方法的。
[0159] 在本申请的一些实施例中,编码器可以根据光照补偿线性模型,结合确定的当前光照补偿信息,将与当前编码块对应的参考块的像素值输入,以得到当前编码块的预测值。
[0160] 需要说明的是,本申请实施例中的编码器在进行帧间预测时,也是基于像素为单元来实现预测的。
[0161] 可以理解的是,编码器获取在上一个编码块编码完成后得到的前一次光照补偿信息集合,找到光照补偿模型索引对应的光照补偿信息,从而进行光照补偿了,由于前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前编码块进行解码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息,因此,编码器可以针对历史编码块得到的光照补偿信息进行选择,确定出最终使用的当前光照补偿信息,选择范围变多,可以选择出更精确的数值进行光照补偿,因此,编码的精度会提升,再者,前一次光照补偿信息集合中存储的只有满足光照补偿规则的历史编码块得到的光照补偿信息,因此,筛掉了不符合光照补偿规则的数值,减少了存储空间。
[0162] 在本申请的一些实施例中,图9为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图9 所示,在S203之后,该方法还包括:
[0163] S204、基于当前预测值,完成当前编码块的编码,得到编码块。
[0164] S205、当编码块满足光照补偿规则时,采用与编码块对应的当前参考块,计算出编码块对应的最新光照补偿信息。
[0165] S206、当最新光照补偿信息满足预设阈值时,采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个编码块编码时使用。
[0166] S207、当最新光照补偿信息不满足预设阈值时,将前一次光照补偿信息集合,作为当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个编码块编码时使用。
[0167] 需要说明的是,由于在当前编码块确定的情况下,可以获取到当前编码块的参考帧的索引,因此,编码器在获取当前光照补偿信息时,主要是为了计算当前光照补偿因子的。
[0168] 在本申请实施例中,编码器在获取当前预测值后,继续进行编码处理,直至完成当前编码块的编码,得到编码块,这时,编码器完成当前编码块的编码之后,需要进行一次判断,判断编码块是不是符合光照补偿规则,若符合,那么就计算该编码块的光照补偿因子,详细的,采用与编码块对应的当前参考块,结合初始光照补偿模型,计算出编码块对应的最新光照补偿信息。
[0169] 在本申请实施例中,编码器判断编码块是否光照补偿规则,当编码块为是当当前编码块为普通帧间编码模式的编码块;和/或者合并模式编码的编码块,则符合当编码块满足光照补偿规则,这样在本申请实施例中,编码块就获取编码块的当前像素值,以及与当前参考块的参考像素值;再基于当前像素值和参考像素值,计算出编码块对应的最新光照补偿信息。
[0170] 在本申请的一些实施例中,当前像素值为编码块的第一位置对应的像素值,参考像素值为当前参考块的第一位置对应的像素值;或者,
[0171] 当前像素值为编码块进行第一下采样后得到的像素值,参考像素值为当前参考块进行第二下采样后得到的像素值;
[0172] 当前像素值为编码块中确定的第一预设数量的像素值,参考像素值为当前参考块中确定的第一预设数量的像素值;
[0173] 其中,第一位置为编码块或者当前参考块的至少一个边缘的至少一行或至少一列;第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。
[0174] 需要说明的是,在计算最新光照补偿信息中的最新光照补偿因子时,所选择的像素可以是当前块和参考块的某一个边缘,如上边缘、下边缘、左边缘、右边缘的一行/列或几行/列,也可以同时选择其中的一个或几个而得出一个或几个光照补偿因子,即当前像素值为编码块的第一位置对应的像素值,参考像素值为当前参考块的第一位置对应的像素值。也可以使用当前块和参考块的所有像素或对所有像素的某一种规则的下采样,如当前块水平和竖直方向每2/4/8个像素取一个像素,即第一下采样或第二下采样为当前块水平和竖直方向每2/4/8个进行采样。还可以根据块的大小来区分下采样的规则,如当当前块的像素数小于等于64个时,水平和竖直方向每2个像素取一个像素,当当前块的像素数大于64个时,水平和竖直方向每4个像素取一个像素,本申请实施例不作限制。或者规定取第一预设数量的像素,如不管块的大小,都对当前块和参考块各取16个像素。或者,根据块的不同大小和形状设置采样规则等,本申请实施例不作限制。
[0175] 编码器在计算出编码块对应的最新光照补偿信息之后,需要进行二次判断,判断该最新光照补偿信息是否有效,若有效,才使用最新光照补偿信息更新前一次光照补偿信息更新前一次光照补偿列表,若无效,则不更新。
[0176] 也就是说,编码器如果计算出来的光照补偿模型的a、b分别符合合理的取值范围,认为这个模型是有效的,否则,认为这个模型是无效的,放弃这组光照补偿因子。
[0177] 在本申请的一些实施例中,编码器可以采用预设阈值来进行二次判断,当最新光照补偿信息满足预设阈值时,编码器采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个编码块编码时使用。而当最新光照补偿信息不满足预设阈值时,将前一次光照补偿信息集合,作为当前次光照补偿信息集合,当前次光照补偿信息集合用于在下一个编码块编码时使用,该一组光照补偿信息为有效的光照补偿信息。
[0178] 在本申请实施例中,编码器可以采用预设阈值来进行二次判断,也可以采用其他判断方式,本申请实施例不作限制。
[0179] 在本申请实施例中,编码器采用最新光照补偿信息,更新前一次光照补偿信息集合,得到当前次光照补偿信息集合的实现方式可以为:若前一次光照补偿信息集合中不存在最新光照补偿信息,且前一次光照补偿信息集合的总信息量小于预设信息量,则将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;若前一次光照补偿信息集合中不存在最新光照补偿信息,且前一次光照补偿信息集合的总信息量等于预设信息量,则删除前一次光照补偿信息集合中排列在信息首部的第一项光照补偿因子,再将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;若前一次光照补偿信息集合中存在与最新光照补偿信息相同的第i项光照补偿因子,则将第i项光照补偿因子删除,再将最新光照补偿信息排列在信息尾部,得到当前次光照补偿信息集合;其中,i为大于等于1,且小于等于预设信息量的整数。
[0180] 需要说明的是,光照补偿信息集合可以采用光照补偿列表的形式体现,每个待编码块编码完成后,得到最新光照补偿信息,会对前一次光照补偿列表进行更新。光照补偿列表可以有最大的长度,即项数:预设信息量。光照补偿列中保存光照补偿信息。光照补偿列表的插入可以使用先进先出的规则。插入新的项时需要进行查重并更新列表。即需要进行最新光照补偿信息的查重,最新光照补偿信息为要插入项,一种可能的实现方式是当要插入项和已有项对应的光照补偿因子的各个值相等时,认为是重复项,将已有项删除,将要插入的项插入队尾;另一种可能的实现方式是当要插入的项和已有项对应的光照补偿模型对应的参考帧相同且a、b的值相差小于预设差异阈值时,认为是重复项,将已有项删除,将要插入项插入队尾。
[0181] 在本申请的一些实施例中,如果允许缩放,将a、b根据要插入项和已有项的参考帧缩放后进行比较,缩放方法类似于运动矢量的缩放方法。具体的需要依据光照补偿模型所采用的参考帧,当前参考块所在参考帧,以及当前编码块所在帧之间的时间距离进行缩放。
[0182] 可以理解的是,每当编码器编码完一个块之后,如果这个块符合光照补偿规则计算出它的光照补偿因子,如果这个光照补偿因子符合二次判断要求,就把它插入到光照补偿列表中,对光照补偿列表进行更新。当要编码一个块时,如果它需要用到光照补偿,就从光照补偿列表中选择合适的光照补偿因子。这样当前块能参考到的光照补偿模型就不局限于相邻的块,而是之前编码过的所有的块,从而可以提高了编码的精度。
[0183] 在本申请的一些实施例中,图10为本申请实施例提供的一种帧间预测方法的实现流程示意图,如图 10所示,在S201的获取当前编码块之后,且在S203之前,该方法还包括:
[0184] S208、当当前编码块为任何帧间编码模式的块,则判断当前编码块是否能隐式地继承光照补偿模型。
[0185] S209、若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿信息时,则结束光照补偿。
[0186] S210、若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合包含有有效的光照补偿信息时,则生成光照补偿标志,写入码流。
[0187] S211、当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,从前一次光照补偿信息集合中,确定当前光照补偿信息,并生成光照补偿模型索引,写入码流。
[0188] S212、当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将一组光照补偿信息作为当前光照补偿信息。
[0189] 在S208之后,还包括:
[0190] S213、若能隐式地继承光照补偿模型,则采用隐式地继承的光照补偿模型对当前编码块进行光照补偿后,得到当前预测值。
[0191] 在本申请实施例中,当编解码一个块时,如果这个块符合要求,那么它可以进行光照补偿。这个要求可以是当前块是一个任何帧间编码模式的块,如果当前块是帧间跳过(skip)模式或合并(merge)模式;一种可能的实现是它隐式地继承它所参考块的光照补偿因子(即光照补偿信息);另一种可能的实现是它不能隐式地继承它所参考的块的光照补偿因子。如果当前块可以进行光照补偿但它不能隐式地继承它所参考的块的光照补偿因子,需要传输一个标志(flag)指示它是否使用光照补偿。
[0192] 需要说明的是,当当前编码块为任何帧间编码模式的块,则判断当前编码块是否能隐式地继承光照补偿模型。若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿信息 (例如:光照补偿因子)时,则结束光照补偿;若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合包含有光照补偿光照补偿信息时,则生成光照补偿标志,并将光照补偿标志写入码流,供解码器使用。当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,从前一次光照补偿信息集合中,确定当前光照补偿信息,并生成光照补偿模型索引,写入码流,供解码器使用。如果确定可以使用光照补偿,需要生成光照补偿模型索引,并传输一个生成光照补偿模型索引至解码端,以便指示解码器使用如上所述的列表中的第几个项中的光照补偿模信息,以使用光照补偿提高预测质量。其中,在本申请实施例中,光照补偿模型索引表征具体在前一次光照补偿信息集合中编码时使用的光照补偿信息对应的索引信息。
[0193] 若未能隐式地继承光照补偿模型,且前一次光照补偿信息集合不包含有有效的光照补偿信息时,则结束光照补偿,也就是说,当编解码一个块时,如果它可以进行光照补偿,但光照补偿列表中没有可用的光照补偿模型或没有当前块可用的光照补偿模型,一种可能的实现方式是在这种情况下默认它不使用光照补偿而不用进行flag传输。
[0194] 可以理解的是,默认不使用光照补偿而不用进行flag传输从而减少传输资源和降低处理复杂度。
[0195] 当光照补偿标志指示进行光照补偿,且前一次光照补偿信息集合中包括一组光照补偿信息时,将一组光照补偿信息作为当前光照补偿信息。也就是说,当编解码一个块时,如果它可以进行光照补偿,光照补偿模型列表中只有一个可用的光照补偿模型或当前块可用的光照补偿模型,且光照补偿模型的标志确定当前块使用光照补偿,一种可能的实现方式是在这种情况下默认它使用列表中唯一可用的光照补偿信息而不用传输光照补偿模型索引。
[0196] 可以理解的是,默认使用列表中唯一可用的光照补偿信息而不用传输光照补偿模型索引可以减少传输资源。
[0197] 在本申请实施例中,若能隐式地继承光照补偿模型,则编码器可以采用隐式地继承的光照补偿模型对当前编码块进行光照补偿后,得到当前预测值。
[0198] 基于前述实施例的实现基础,如图11所示,本申请实施例提供了一种解码器1,包括:
[0199] 第一获取单元10,用于获取码流;
[0200] 第一解析单元11,用于从所述码流中解析出光照补偿模型索引;
[0201] 所述第一获取单元10,还用于获取当前解码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息;
[0202] 第一确定单元12,用于基于所述光照补偿模型索引,从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0203] 第一光照补偿单元13,用于基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值。
[0204] 在本申请的一些实施例中,所述解码器1还包括:解码单元14、第一计算单元15和第一更新单元 16;
[0205] 所述解码单元14,用于所述基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值之后,基于所述当前预测值,完成所述当前解码块的解码,得到解码块;
[0206] 所述第一计算单元15,用于当所述解码块满足所述光照补偿规则时,采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息;
[0207] 所述第一更新单元16,用于当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个解码块解码时使用。
[0208] 在本申请的一些实施例中,所述第一获取单元10,还用于获取当前解码块和前一次光照补偿信息集合之后,所述基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值之前,若所述前一次光照补偿信息集合中包括一组光照补偿信息,则将所述一组光照补偿信息作为所述当前光照补偿信息;所述一组光照补偿信息为有效的光照补偿信息。
[0209] 在本申请的一些实施例中,所述前一次光照补偿信息集合或所述当前次光照补偿信息集合中包括:至少一项光照补偿信息;
[0210] 每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引。
[0211] 在本申请的一些实施例中,所述第一更新单元16,还用于若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量小于预设信息量,则将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量等于预设信息量,则删除所述前一次光照补偿信息集合中排列在信息首部的第一项光照补偿信息,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;若所述前一次光照补偿信息集合中存在与所述最新光照补偿信息相同的第i项光照补偿信息,则将所述第i项光照补偿信息删除,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;其中,i为大于等于1,且小于等于所述预设信息量的整数。
[0212] 在本申请的一些实施例中,所述光照补偿规则包括:当所述当前解码块为通过普通帧间编码模式编码得到的解码块;和/或者合并模式编码得到的解码块。
[0213] 在本申请的一些实施例中,所述第一计算单元15,还用于获取所述解码块的当前像素值,以及与所述当前参考块的参考像素值;基于所述当前像素值和所述参考像素值,计算出所述解码块对应的最新光照补偿信息。
[0214] 在本申请的一些实施例中,所述当前像素值为所述解码块的第一位置对应的像素值,所述参考像素值为所述当前参考块的所述第一位置对应的像素值;或者,
[0215] 所述当前像素值为所述解码块进行第一下采样后得到的像素值,所述参考像素值为所述当前参考块进行第二下采样后得到的像素值;
[0216] 所述当前像素值为所述解码块中确定的第一预设数量的像素值,所述参考像素值为所述当前参考块中确定的第一预设数量的像素值;
[0217] 其中,所述第一位置为所述解码块或者所述当前参考块的至少一个边缘的至少一行或至少一列;所述第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。
[0218] 在本申请的一些实施例中,所述第一获取单元10,还用于所述采用与所述解码块对应的当前参考块,计算出所述解码块对应的最新光照补偿信息之后,当所述最新光照补偿信息不满足预设阈值时,将所述前一次光照补偿信息集合,作为所述当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个解码块解码时使用。
[0219] 在本申请的一些实施例中,所述第一确定单元12,还用于从所述前一次光照补偿信息集合中,确定出与所述当前编码块具有相同当前参考帧的第一候选光照补偿信息集合;基于所述光照补偿模型索引,从所述第一候选光照补偿信息集合中,确定出所述当前光照补偿信息;或者,将所述前一次光照补偿信息集合中除所述第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,所述当前参考块所在参考帧,以及所述当前编码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再基于所述光照补偿模型索引,从所述第一候选光照补偿信息集合和所述第二候选光照补偿信息集合中,确定出所述当前光照补偿信息。
[0220] 在本申请的一些实施例中,第一获取单元10,还用于所述获取码流和获取当前解码块之后,所述基于所述当前光照补偿信息,对所述当前解码块进行光照补偿后,得到当前预测值之前,当所述当前解码块为任何帧间编码模式的块,则判断所述当前解码块是否能隐式地继承光照补偿模型;若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合不包含有有效的光照补偿信息时,则结束光照补偿;若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合包含有有效的光照补偿信息时,则解析码流,得到光照补偿标志;当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,解析码流,得到所述光照补偿模型索引;当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将所述一组光照补偿信息作为所述当前光照补偿信息。
[0221] 可以理解的是,解码器可以从码流中获取到进行光照补偿的光照补偿模型索引,这样就可以在上一个解码块解码完成后得到的前一次光照补偿信息集合,找到光照补偿模型索引对应的光照补偿信息,从而进行光照补偿了,由于前一次光照补偿信息集合是基于前一个解码块解码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前解码块进行解码之前,满足光照补偿规则且已解码的历史解码块对应的至少一个参考块的光照补偿信息,因此,解码器可以针对历史解码块得到的光照补偿因子进行选择,确定出最终使用的当前光照补偿信息,选择范围变多,可以选择出更精确的数值进行光照补偿,因此,解码的精度会提升,再者,前一次光照补偿信息集合中存储的只有满足光照补偿规则的历史解码块得到的光照补偿信息,因此,筛掉了不符合光照补偿规则的数值,减少了存储空间。
[0222] 在实际应用中,如图12所示,本申请实施例还提供了一种解码器,包括:
[0223] 第一处理器17以及存储有所述第一处理器17可执行指令的第一存储器18,所述第一存储器18通过第一通信总线19依赖所述第一处理器17执行操作,当所述指令被所述第一处理器17执行时,执行上述的解码器所述的帧间预测方法。
[0224] 其中,第一处理器可以通过软件、硬件、固件或者其组合实现,可以使用电路、单个或多个专用集成电路(application specific integrated circuits,ASIC)、单个或多个通用集成电路、单个或多个微处理器、单个或多个可编程逻辑器件、或者前述电路或器件的组合、或者其他适合的电路或器件,从而使得该第一处理器可以执行前述实施例中的解码器侧的帧间预测方法的相应步骤。
[0225] 本申请实施例提供了一种计算可读机存储介质,存储有可执行指令,当所述可执行指令被一个或多个第一处理器执行的时候,所述第一处理器执行解码器侧的帧间预测方法。
[0226] 在本申请实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0227] 所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等) 或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:磁性随机存取存储器(FRAM,ferromagnetic random access memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read‑Only Memory)、可擦除可编程只读存储器(EPROM, Erasable Programmable Read‑Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read‑Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘 (CD‑ROM,Compact Disc Read‑Only Memory)等各种可以存储程序代码的介质,本公开实施例不作限制。
[0228] 如图13所示,本申请实施例提供了一种编码器2,包括:
[0229] 第二获取单元20,用于获取当前编码块和前一次光照补偿信息集合;所述前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前编码块进行编码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息;
[0230] 第二确定单元21,用于从所述前一次光照补偿信息集合中,确定当前光照补偿信息;
[0231] 第二光照补偿单元22,用于基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值。
[0232] 在本申请的一些实施例中,所述编码器2还包括:编码单元23、第二计算单元24和第二更新单元 25;
[0233] 所述编码单元23,用于所述基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值之后,基于所述当前预测值,完成所述当前编码块的编码,得到编码块;
[0234] 所述第二计算单元24,用于当所述编码块满足所述光照补偿规则时,采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息;
[0235] 所述第二更新单元25,用于当所述最新光照补偿信息满足预设阈值时,采用所述最新光照补偿信息,更新所述前一次光照补偿信息集合,得到当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个编码块编码时使用。
[0236] 在本申请的一些实施例中,所述第二确定单元21,还用于从所述前一次光照补偿信息集合中,确定出与所述当前编码块具有相同当前参考帧的第一候选光照补偿信息集合;从所述第一候选光照补偿信息集合中,确定出所述当前光照补偿信息;或者,将所述前一次光照补偿信息集合中除所述第一候选光照补偿信息集合之外的剩余光照补偿信息集合,按照光照补偿模型所采用的参考帧,所述当前参考块所在参考帧,以及所述当前编码块所在帧之间的时间距离进行缩放,得到第二候选光照补偿信息集合,再从所述第一候选光照补偿信息集合和所述第二候选光照补偿信息集合中,确定出所述当前光照补偿信息。
[0237] 在本申请的一些实施例中,所述编码器2还包括:判断单元26和结束单元27;
[0238] 所述判断单元26,用于所述获取当前编码块之后,所述基于所述当前光照补偿信息,对所述当前编码块进行光照补偿后,得到当前预测值之前,当所述当前编码块为任何帧间编码模式的块,则判断所述当前编码块是否能隐式地继承光照补偿模型;
[0239] 所述结束单元27,用于若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合不包含有有效的光照补偿信息时,则结束光照补偿;
[0240] 所述第二获取单元20,还用于若未能隐式地继承光照补偿模型,且所述前一次光照补偿信息集合包含有有效的光照补偿信息时,则生成光照补偿标志,写入码流;
[0241] 所述第二确定单元21,还用于当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的至少两组光照补偿信息时,从所述前一次光照补偿信息集合中,确定所述当前光照补偿信息,并生成光照补偿模型索引,写入码流;
[0242] 所述第二获取单元20,还用于当所述光照补偿标志指示进行光照补偿,且所述前一次光照补偿信息集合中包括有效的一组光照补偿信息时,将所述一组光照补偿信息作为所述当前光照补偿信息。
[0243] 在本申请的一些实施例中,所述第二获取单元20,还用于所述判断所述当前编码块是否能隐式地继承光照补偿模型之后,若能隐式地继承光照补偿模型,则采用隐式地继承的光照补偿模型对所述当前编码块进行光照补偿后,得到所述当前预测值。
[0244] 在本申请的一些实施例中,所述前一次光照补偿信息集合或所述当前次光照补偿信息集合中包括:至少一项光照补偿信息;
[0245] 每一项光照补偿信息包括:至少一组光照补偿因子;或者至少一组光照补偿因子和对应参考帧的索引。
[0246] 在本申请的一些实施例中,所述第二更新单元25,还用于若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量小于预设信息量,则将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;若所述前一次光照补偿信息集合中不存在所述最新光照补偿信息,且所述前一次光照补偿信息集合的总信息量等于预设信息量,则删除所述前一次光照补偿信息集合中排列在信息首部的第一项光照补偿信息,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;若所述前一次光照补偿信息集合中存在与所述最新光照补偿信息相同的第i项光照补偿信息,则将所述第i项光照补偿信息删除,再将所述最新光照补偿信息排列在信息尾部,得到所述当前次光照补偿信息集合;其中,i为大于等于1,且小于等于所述预设信息量的整数。
[0247] 在本申请的一些实施例中,所述光照补偿规则包括:当所述当前编码块为普通帧间编码模式的编码块;和/或者为合并模式的编码块。
[0248] 在本申请的一些实施例中,所述第二计算单元24,还用于获取所述编码块的当前像素值,以及与所述当前参考块的参考像素值;基于所述当前像素值和所述参考像素值,计算出所述编码块对应的最新光照补偿信息。
[0249] 在本申请的一些实施例中,所述当前像素值为所述编码块的第一位置对应的像素值,所述参考像素值为所述当前参考块的所述第一位置对应的像素值;或者,
[0250] 所述当前像素值为所述编码块进行第一下采样后得到的像素值,所述参考像素值为所述当前参考块进行第二下采样后得到的像素值;
[0251] 所述当前像素值为所述编码块中确定的第一预设数量的像素值,所述参考像素值为所述当前参考块中确定的第一预设数量的像素值;
[0252] 其中,所述第一位置为所述编码块或者所述当前参考块的至少一个边缘的至少一行或至少一列;所述第一下采样和第二下采样是根据块的大小确定的,或者根据块的大小和形状确定的。
[0253] 在本申请的一些实施例中,所述第二获取单元20,还用于所述采用与所述编码块对应的当前参考块,计算出所述编码块对应的最新光照补偿信息之后,当所述最新光照补偿信息不满足预设阈值时,将所述前一次光照补偿信息集合,作为所述当前次光照补偿信息集合,所述当前次光照补偿信息集合用于在下一个编码块编码时使用。
[0254] 可以理解的是,编码器获取在上一个编码块编码完成后得到的前一次光照补偿信息集合,找到光照补偿模型索引对应的光照补偿信息,从而进行光照补偿了,由于前一次光照补偿信息集合是基于前一个编码块编码完成时更新得到的,所述前一次光照补偿信息集合中包含有在当前编码块进行解码之前,满足光照补偿规则且已编码的历史编码块对应的至少一个参考块的光照补偿信息,因此,编码器可以针对历史编码块得到的光照补偿信息进行选择,确定出最终使用的当前光照补偿信息,选择范围变多,可以选择出更精确的数值进行光照补偿,因此,编码的精度会提升,再者,前一次光照补偿信息集合中存储的只有满足光照补偿规则的历史编码块得到的光照补偿信息,因此,筛掉了不符合光照补偿规则的数值,减少了存储空间。
[0255] 在实际应用中,如图14所示,本申请实施例还提供了一种编码器,包括:
[0256] 第二处理器28以及存储有所述第二处理器28可执行指令的第二存储器29,所述第二存储器29通过第二通信总线210依赖所述第二处理器28执行操作,当所述指令被所述第二处理器28执行时,执行上述的编码器所述的帧间预测方法。
[0257] 其中,第二处理器可以通过软件、硬件、固件或者其组合实现,可以使用电路、单个或多个专用集成电路、单个或多个通用集成电路、单个或多个微处理器、单个或多个可编程逻辑器件、或者前述电路或器件的组合、或者其他适合的电路或器件,从而使得该第一处理器可以执行前述实施例中的解码器侧的帧间预测方法的相应步骤。
[0258] 本申请实施例提供了一种计算可读机存储介质,存储有可执行指令,当所述可执行指令被一个或多个第二处理器执行的时候,所述第二处理器执行编码器侧的帧间预测方法。
[0259] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0260] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0261] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0262] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0263] 以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。