角度模式帧间预测方法、编码器及存储介质与流程

文档序号:23098163发布日期:2020-11-27 13:01阅读:166来源:国知局
角度模式帧间预测方法、编码器及存储介质与流程

本申请涉及视频编码技术领域,特别是涉及一种角度模式帧间预测方法、编码器及存储介质。



背景技术:

通过视频编码技术可以对视频进行压缩,以降低视频的数据量,降低视频传输过程中的网络带宽、减少存储空间。其中,视频编码模式可以包括帧间预测模式和帧内预测模式预测。

以帧间预测模式为例,帧间预测是利用参考帧存在的许多相关性很强的冗余信息,预测当前帧的信息。其中,帧间预测模式可以分为很多种,例如帧间运动矢量角度预测模式(mvap,motionvectorangleprediction)、时域运动矢量预测模式、空域运动矢量预测模式、历史运动矢量运动模式等。

以帧间运动矢量角度预测模式为例,帧间运动矢量角度预测模式也可以被称为角度模式帧间预测,所谓帧间运动矢量角度预测,即分别将当前块(当前帧中待预测的块)的多个角度方向的邻块的运动信息作为当前块的运动信息,并且分别计算以不同角度方向邻块的运动信息作为当前块的运动信息时当前块的率失真代价,最终将对应率失真代价最小的角度方向的邻块的运动信息作为当前块的运动信息,进而通过当前块的运动信息来得到当前块的预测值。

然而,现有的角度模式帧间预测需要的计算开销大。



技术实现要素:

本申请提供一种角度模式帧间预测方法、编码器及存储介质,能够解决现有的角度模式帧间预测需要的计算开销大的问题。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;利用有效角度方向上的不可用邻块的参考块的运动信息,对有效角度方向上的不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;修改模块,用于利用有效角度方向上的不可用邻块的参考块的运动信息,对有效角度方向上的不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;若不可用邻块的时域同位块可用,则利用时域同位块的运动信息为不可用邻块设置运动信息,否则设置初始值为不可用邻块的运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;利用运动信息为初始值的不可用邻块的参考块的运动信息,对运动信息为初始值的可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于在不可用邻块的时域同位块可用的情况下,利用时域同位块的运动信息为不可用邻块设置运动信息,以及用于在不可用邻块的时域同位块不可用的情况下,设置初始值为不可用邻块的运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;修改模块,用于利用运动信息为初始值的不可用邻块的参考块的运动信息,对运动信息为初始值的可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算所述当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;根据当前块的尺寸在各角度方向上选择至少一对邻块进行运动信息查重,通过查重的角度方向为有效角度方向;利用不可用邻块的参考块的运动信息,对可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括所述当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的所述邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于根据当前块的尺寸在各角度方向上选择至少一对邻块进行运动信息查重,通过查重的角度方向为有效角度方向;修改模块,用于利用不可用邻块的参考块的运动信息,对可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若角度方向满足第一条件,则增加至少一次查重;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若角度方向满足第一条件,则增加至少一次查重;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括所述当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对水平向上的查重;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的所述邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对所述水平向上的查重;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,查重包括判断选择的至少一对邻块的参考帧的图像顺序索引是否相同以及运动是否相同;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,查重包括判断选择的至少一对邻块的参考帧的图像顺序索引是否相同以及运动是否相同;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的所述邻块进行运动信息查重,通过查重的角度方向为有效角度方向;利用不可用邻块的参考块的运动信息,对所述不可用邻块的运动信息进行修改;当前块被划分为多个子块,分别利用每个子块在所述有效角度方向上的对应邻块的运动信息进行运动补偿,得到每个子块的预测值,所有子块的预测值组成当前块的预测值,其中至少一个有效角度方向上所述子块进行运动补偿时使用了至少两个对应邻块的运动信息。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于在当前块被划分为多个子块的情况下,分别利用每个子块在有效角度方向上的对应邻块的运动信息进行运动补偿,得到每个子块的预测值,所有子块的预测值组成当前块的预测值,其中至少一个有效角度方向上子块进行运动补偿时使用了至少两个所述对应邻块的运动信息。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余所述邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;将有效角度方向填入角度模式列表,得到有效角度方向的角度模式索引;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;填入模块,用于将有效角度方向填入角度模式列表,得到有效角度方向的角度模式索引;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;利用当前块的纹理方向确定各有效角度方向的顺序;按顺序将有效角度方向填入模式列表;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的所述邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;确定模块,用于利用当前块的纹理方向确定各有效角度方向的顺序;填入模块,用于按顺序将有效角度方向填入模式列表;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;计算模块,用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测方法,该方法包括:为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;为不可用邻块设置运动信息;对各角度方向上的邻块进行运动信息查重,查重的角度方向为有效角度方向;利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;当前块被划分为多个子块,分别利用每个子块在有效角度方向上的对应邻块的运动信息,得到每个子块的运动信息,运动信息包括运动矢量;分别利用多个修正运动矢量对每个子块的第一预测值进行修正,得到每个子块的多个第二预测值,第一预测值是利用运动信息进行运动补偿得到的;分别为每个子块选择评价指标最小的第二预测值对应的修正运动矢量,作为子块的最终修正运动矢量;利用所有子块的最终修正运动矢量进行修正,得到修正后的运动矢量;利用包含修正后的运动矢量的运动信息,得到每个子块的预测值,所有子块的预测值组成当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种角度模式帧间预测装置,该装置包括:构建模块,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;设置模块,用于为不可用邻块设置运动信息;查重模块,用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向;修改模块,用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;第一计算模块,用于在当前块被划分为多个子块的情况下,分别利用每个子块在有效角度方向上的对应邻块的运动信息,得到每个子块的运动信息,运动信息包括运动矢量;第一修正模块,用于分别利用多个修正运动矢量对每个子块的第一预测值进行修正,得到每个子块的多个第二预测值,第一预测值是利用运动信息进行运动补偿得到的;选择模块,用于分别为每个子块选择评价指标最小的第二预测值对应的修正运动矢量,作为子块的最终修正运动矢量;第二修正模块,用于利用所有子块的最终修正运动矢量进行修正,得到修正后的运动矢量;第二计算模块,用于利用包含修正后的运动矢量的运动信息,得到每个子块的预测值,所有子块的预测值组成所述当前块的预测值。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码器,该编码器包括处理器、与处理器连接的存储器,其中,存储器存储有程序指令;处理器用于执行存储器存储的程序指令以实现上述方法。

为解决上述技术问题,本申请采用的再一个技术方案是:提供一种存储介质,存储有程序指令,该程序指令被执行时能够实现上述方法。

通过上述方式,本申请能够在查重得到有效角度方向之后,仅修改有效角度方向上的不可用邻块运动信息,相较于修改每个角度方向上的不可用邻块填充运动信息的方式,能够减小计算开销。

附图说明

图1是本申请角度模式帧间预测方法第一实施例的流程示意图;

图2为当前块在5个角度方向上的邻块示意图;

图3是本申请角度模式帧间预测方法第二实施例的流程示意图;

图4是本申请角度模式帧间预测方法第三实施例的流程示意图;

图5是本申请角度模式帧间预测方法第四实施例的流程示意图;

图6是本申请角度模式帧间预测方法第五实施例的流程示意图;

图7是本申请角度模式帧间预测方法第六实施例的流程示意图;

图8是图7中s630的具体流程示意图;

图9是本申请在宽和高对应的方向上选择第一数量个邻块进行查重的示意图;

图10是本申请在宽和高对应的方向上选择第二数量个邻块进行查重的示意图;

图11是本申请角度模式帧间预测方法第七实施例的流程示意图;

图12是本申请第一条件下增加一次查重的一示意图;

图13是本申请第一条件下增加一次查重的另一示意图;

图14是本申请第一条件下增加一次查重的又一示意图;

图15是本申请第一条件下增加一次查重的再一示意图;

图16是本申请角度模式帧间预测方法第八实施例的流程示意图;

图17是本申请第二条件下减少一次查重的一示意图;

图18是本申请第二条件下减少一次查重的另一示意图;

图19是本申请第二条件下减少一次查重的再一示意图;

图20是本申请角度模式帧间预测方法第九实施例的流程示意图;

图21是本申请角度模式帧间预测方法第十实施例的流程示意图;

图22是本申请水平和垂直方向上分别利用两个邻块计算第一子块的运动矢量示意图;

图23是本申请角度模式帧间预测方法第十一实施例的流程示意图;

图24是本申请角度模式帧间预测方法第十二实施例的流程示意图;

图25是图24中s1240的具体流程示意图;

图26是本申请角度模式帧间预测方法第十三实施例的流程示意图;

图27是图26中s1306的具体流程示意图;

图28是本申请在前向第一预测块的搜索范围内搜索前向修正运动矢量的示意图;

图29是本申请一种角度模式帧间预测装置第一实施例的结构示意图;

图30是本申请一种角度模式帧间预测装置第二实施例的结构示意图;

图31是本申请一种角度模式帧间预测装置第三实施例的结构示意图;

图32是本申请一种角度模式帧间预测装置第四实施例的结构示意图;

图33是本申请一种角度模式帧间预测装置第五实施例的结构示意图;

图34是本申请一种角度模式帧间预测装置第六实施例的结构示意图;

图35是本申请一种角度模式帧间预测装置第七实施例的结构示意图;

图36是本申请一种角度模式帧间预测装置第八实施例的结构示意图;

图37是本申请一种角度模式帧间预测装置第九实施例的结构示意图;

图38是本申请一种角度模式帧间预测装置第十实施例的结构示意图;

图39是本申请编码器一实施例的结构示意图;

图40是本申请存储介质一实施例的结构示意图;

图41是本申请电子设备一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。

图1是本申请角度模式帧间预测方法第一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施例可以包括:

s110:为当前块构建候选邻块列表。

当前块也可以被称为当前编码块,即当前要进行编码的块,在某些场合,编码块可以被称为编码单元(codingunit,cu)。当前块所在的视频帧可以被称为当前帧。

候选邻块列表包括当前块在多个角度方向上的邻块。当前块与邻块均属于当前帧,邻块位于当前块的已编码侧,例如编码方向为从左向右从上向下时,邻块位于当前块的左侧和上侧。参考帧内预测中角度模式的概念,可以将当前块按各角度方向向已编码侧进行投影来确定邻块。不同角度方向上的邻块可能有重复。所有邻块的尺寸可以相同且小于当前块的尺寸。

根据当前块的位置,邻块可能为当前帧中真实存在的块,也可能为超出当前帧边界不存在的块;对于真实存在的邻块,可能为已编码的块,也可能为未编码的块;已编码的邻块所采用的预测模式可以为帧间预测、帧内预测或帧内块复制(intrablockcopy,ibc)等等。本申请中可以将已编码的帧间预测的邻块称为可用邻块,剩余邻块(例如不存在的块、未编码块、帧内块等)称为不可用邻块。

可选地,多个角度方向包括水平,垂直,水平向上,水平向下和垂直向右中的至少两种。下面结合图2对包括5个方向(水平,垂直,水平向上,水平向下和垂直向右)的情况进行说明:

图2为当前块在5个角度方向上的邻块示意图。其中,根据邻块与当前块之间的相对位置关系,a1~an为在当前块水平方向上的邻块,可以被称为水平邻块;b1~bn为在当前块垂直方向上的邻块,可以被称为垂直邻块;e为在当前块水平向上方向上的邻块,可以被称为水平向上邻块;c1~cn为在当前块水平向下方向上的邻块,可以被称为水平向下邻块;d1~dn为在当前块垂直向右方向上的邻块,可以被称为垂直向右邻块。根据当前块按各角度方向的投影结果,当前块在水平角度方向0上的邻块包括至少部分水平邻块,在垂直方向1上的邻块包括至少部分垂直邻块,在水平向上方向2上的邻块包括水平向上邻块、至少部分水平邻块和至少部分垂直邻块,在水平向下方向3上的邻块包括至少部分水平邻块和至少部分水平向下邻块,在垂直向右方向4上的邻块包括至少部分垂直邻块和至少部分垂直向右邻块。此种情况下,为当前块构建的候选邻块列表可以为{c1~cn,a1~an,e,b1~bn,d1~dn},当前块的候选邻块列表中,除了记录各邻块的编号/标识之外,还记录邻块的运动信息。其中,运动信息可以包括运动矢量和参考帧索引信息(前向参考帧索引信息和/或后向参考帧索引信息)。

s120:为不可用邻块设置运动信息。

由于可用邻块具有运动信息,不可用邻块没有运动信息,因此需要为不可用邻块设置运动信息。

在一具体实施方式中,可以直接设置初始值(运动矢量为0,前/后向参考帧索引为-1)为不可用邻块的运动信息,其中,若邻块的参考帧索引为-1,则代表该邻块的参考帧不存在。

在另一具体实施方式中,可以基于当前不可用邻块的时域同位块的运动信息,为不可用邻块设置运动信息,具体实现过程请参见后面的实施例。其中,时域同位块为当前不可用邻块在当前帧的参考帧列表的一个参考帧中的同位块,例如,第一个参考帧(参考帧索引为0)中的同位块。

s130:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

具体查重的方法请参见后面的实施例。

s140:利用有效角度方向上的不可用邻块的参考块的运动信息,对有效角度方向上的不可用邻块的运动信息进行修改。

参考块可以为不可用邻块的前一邻块,也可以为不可用邻块的后一邻块,或者可以为不可用邻块的时域同位块等。

s150:分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

当前块可以被划分为多个子块。参考帧内预测的概念,对于每个有效角度方向,可以分别根据每个子块在该方向上的对应邻块的运动信息确定该子块的运动信息,然后使用该运动信息对子块进行运动补偿得到子块的预测值,所有子块的预测值组成当前块的预测值,在得到当前块的预测值之后,还可以根据当前块的预测值和原始值计算率失真代价。为每个有效角度方向执行上述过程可以得到所有有效角度方向的预测值及率失真代价。

一个子块在一个有效角度方向上的对应邻块是指,将该子块按照该有效角度方向向当前块的已编码侧进行投影而确定的邻块。

若当前有效角度方向上包含可用邻块和不可用邻块,则邻块的运动信息包括可用邻块的运动信息和不可用邻块的运动信息;若当前有效角度方向上仅包含可用邻块,则邻块的运动信息包括可用邻块的运动信息;若当前有效角度方向上仅包含不可用邻块,则邻块的运动信息包括不可用邻块的运动信息。

本实施例中,在查重得到有效角度方向之后,仅修改有效角度方向上的不可用邻块的运动信息,相较于修改每个角度方向上的不可用邻块运动信息的方式,能够减小计算开销。

图3是本申请角度模式帧间预测方法第二实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。本实施例是对上述s140的进一步扩展。如图3所示,本实施例可以包括:

s210:将有效角度方向上的邻块按照修改顺序进行排序。

不同角度方向上的邻块可能有重复,在排序时不是按照各有效角度方向独立排序,而且将所有有效角度方向上的邻块集合后去除重复的部分,按照与当前块之间的相对位置进行排序。修改顺序可以为顺时针顺序、逆时针顺序等。

需要说明的是,对有效角度方向上的邻块的排序顺序与候选邻块列表中邻块的排序顺序相同。

s220:判断排序后的第一个邻块是否为不可用邻块。

对有效角度方向上的邻块进行排序后的第一个邻块与候选列表中第一个邻块可能不相同。

若是,则执行s230。

s230:利用排序后的第一个邻块在候选邻块列表中的前一邻块和/或后一邻块的运动信息修改第一个邻块的运动信息。

在一具体实施方式中,若第一个邻块的前一邻块为可用邻块,则利用第一个邻块的前一邻块的运动信息修改第一个邻块的运动信息,否则将第一个邻块的运动信息设置为初始值。

在另一具体实施方式中,若第一个邻块的后一邻块为可用邻块,则利用第一个邻块的后一邻块的运动信息修改第一个邻块的运动信息,否则将第一个邻块的运动信息设置为初始值。

在又一具体实施方式中,若第一个邻块的前一邻块为可用邻块,则利用第一个邻块的前一邻块的运动信息修改第一个邻块的运动信息,否则判断第一个邻块的后一邻块是否为可用邻块,若是,则利用第一个邻块的后一邻块的运动信息修改第一个邻块的运动信息,否则将第一个邻块的运动信息设置为初始值;或

在又一具体实施方式中,若第一个邻块的前一邻块和后一邻块均为可用邻块,则利用第一个邻块的前一邻块和后一邻块的运动信息的加权平均值修改第一个邻块的运动信息;若第一个邻块的前一邻块和后一邻块中的一个为可用邻块,则利用前一邻块和后一邻块中的可用邻块的运动信息修改第一个邻块的运动信息,若第一个邻块的前一邻块和后一邻块均为不可用邻块,则将第一个邻块的运动信息设置为初始值。

本实施例中,根据对有效角度方向上的邻块排序后的第一个邻块是否为不可用邻块,来对该第一个邻块采用不同的运动信息修改策略,可以提高编码的准确度。

图4是本申请角度模式帧间预测方法第三实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图4所示的流程顺序为限。本实施例是对上述s140的进一步扩展。如图4所示,本实施例可以包括:

s310:将有效角度方向上的邻块按照修改顺序进行排序。

s320:判断排序后的第一个邻块是否为不可用邻块。

若是,则执行s330。

s330:判断第一个邻块的时域同位块是否可用。

可选地,第一个邻块的时域同位块所在的帧为当前块的参考帧列表中的参考帧,并且该时域同位块在该参考帧中的位置和尺寸,与第一个邻块在当前帧中的位置和尺寸完全相同。

时域同位块是否可用,可以理解为时域同位块是否具有运动信息,或者可以理解为时域同位块是否是采用帧间预测编码。

若是,则执行s340。

s340:利用第一个邻块的时域同位块的运动信息修改第一个邻块的运动信息。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,根据对有效角度方向上的邻块排序后的第一个邻块是否为不可用邻块,来对该第一个邻块采用不同的运动信息修改策略,可以提高编码的准确度。

图5是本申请角度模式帧间预测方法第四实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图5所示的流程顺序为限。本实施例是对上述s120的进一步扩展,如图5所示,本实施例可以包括:

s410:判断不可用邻块的时域同位块是否可用。

若是,则执行s420;若否,则执行s430。

s420:利用时域同位块的运动信息为不可用邻块设置运动信息。

在一具体实施方式中,可以将时域同位块的运动信息作为不可用邻块的运动信息。

在另一具体实施方式中,可以将不可用邻块的前向运动信息设置为前向同位块的前向运动信息或后向运动信息,将不可用邻块的后向运动信息设置为后向同位块的后向运动信息或前向运动信息,前向同位块所在的帧为当前块的前向参考帧列表中的参考帧,后向同位块所在的帧为当前块的后向参考帧列表中的参考帧。

在前向同位块的前向参考帧存在的情况下,可以将不可用邻块的前向运动信息设置为前向同位块的前向运动信息;或者,在前向同位块的后向参考帧存在的情况下,可以将不可用邻块的前向运动信息设置为前向同位块的后向运动信息。

在后向同位块的后向参考帧存在的情况下,可以将不可用邻块的后向运动信息设置为后向同位块的后向运动信息;或者,在后向同位块的前向参考帧存在的情况下,可以将不可用邻块的后向运动信息设置为后向同位块的前向运动信息。

在又一具体实施方式中,可以将时域同位块的前向运动信息或后向运动信息按照图像顺序索引差进行缩放后作为不可用邻块的前向运动信息和后向运动信息。

可以理解的是,每一帧图像具有对应的图像顺序索引(poc,pictureordercount),其可以代表图像被播放的顺序。按照图像顺序索引差进行缩放的公式可以如下:

scale_mv=mv/t0*t1,

t1=poc0-poc1,

t0=poc2-poc3,

其中,scale_mv为当前不可用邻块的前/后向运动信息,mv为时域同位块的前/后向运动信息。

在当前帧为b帧(双向差别帧)的情况下,需要计算当前不可用邻块的前向运动信息和后向运动信息。

若scale_mv为当前不可用邻块的前向运动信息,则t1为当前帧的poc1和当前帧的前向参考帧的poc0之间的差(距离),t0为时域同位块所在的帧的poc2和时域同位块的前/后向参考帧的poc3之间的差。

若scale_mv为当前不可用邻块的后向运动信息,则t1为当前帧的poc1和当前帧的后向参考帧的poc0之间的差,t0为时域同位块所在的帧的poc2和时域同位块的前/后向参考帧的poc3之间的差。

在当前帧为p帧(单向差别帧)的情况下,只需要计算当前不可用邻块的前向运动信息。t1为当前帧的poc1和当前帧的参考帧的poc0之间的差,t0为时域同位块所在的帧的poc2和时域同位块的前/后向参考帧的poc3之间的差。

s430:设置初始值为不可用邻块的运动信息。

可参考前面提及的,将运动矢量的初始值设为0,将参考帧索引的运动信息设置为-1。

通过本实施例的实施,可以在不可用邻块的时域同位块可用的情况下,基于该时域同位块来为不可用邻块设置运动信息,在不可用邻块的时域同位块不可用的情况下,才考虑将不可用邻块的运动信息设置为初始值。相较于直接将不可用邻块的运动信息设置为初始值的方式,能够减小为不可用邻块设置的运动信息所带来的误差,提高编码的准确度。

图6是本申请角度模式帧间预测方法第五实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图6所示的流程顺序为限。如图6所示,本实施例可以包括:

s510:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s520:判断不可用邻块的时域同位块是否可用。

时域同位块所在的帧为当前块的参考帧列表中的第一个参考帧。

若是,则执行s530;若否,则执行s540。

s530:利用时域同位块的运动信息为不可用邻块设置运动信息。

在一具体实施方式中,可以将时域同位块的运动信息作为不可用邻块的运动信息。

在另一具体实施方式中,可以将不可用邻块的前向运动信息设置为前向同位块的前向运动信息或后向运动信息,将不可用邻块的后向运动信息设置为后向同位块的后向运动信息或前向运动信息,前向同位块所在的帧为当前块的前向参考帧列表中的参考帧,后向同位块所在的帧为当前块的后向参考帧列表中的参考帧。

在又一具体实施方式中,将时域同位块的前向运动信息或后向运动信息按照图像顺序索引差进行缩放后作为不可用邻块的前向运动信息和后向运动信息。

执行完s530之后跳转至s550。

s540:设置初始值为不可用邻块的运动信息。

执行完s540之后跳转至s550。

s550:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

s560:利用运动信息为初始值的不可用邻块的参考块的运动信息,对所述运动信息为初始值的可用邻块的运动信息进行修改。

具体修改的方式可参见本申请中其它实施例。

s570:分别利用每个有效角度方向上的可用邻块和不可用邻块的运动信息计算当前块的预测值。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,在判断出不可用邻块的时域同位块可用时,利用时域同位块的运动信息配置不可用邻块的运动信息,在判断出不可用邻块的时域同位块不可用时,才将不可用邻块的运动信息设置为初始值,相较于直接将不可用邻块的运动信息设置为初始值的方式,能够减小为不可用邻块配在运动信息引起的误差;进一步地,在对各角度方向上的邻块进行运动信息查重得到有效角度方向之后,仅修改运动信息为初始值的不可用邻块的运动信息,相较于直接修改每个不可用邻块运动信息的方式,能够降低修改不可用邻块的运动信息需要的计算开销。

图7是本申请角度模式帧间预测方法第六实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图7所示的流程顺序为限。如图7所示,本实施例可以包括:

s610:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s620:为不可用邻块设置运动信息。

s630:根据当前块的尺寸在各角度方向上选择至少一对邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

可选地,同一角度方向上被选中的邻块等距排列。当然,在其他实施方式中,也可以依据其他方式(如随机等)选中同一角度方向上的邻块。

一般来说,根据查重得到的有效角度方向准确度取决于查重次数、当前块的尺寸等。其中,尺寸一致的情况下,在当前块的各角度方向上查重次数越多,根据查重结果得到的有效角度方向越准确。查重次数一致的情况下,相对于尺寸偏大的当前块,得到的尺寸偏小的当前块的有效角度方向更准确。

为此,对于尺寸偏大的当前块,可以增加在各角度方向上选择的邻块对数,即增加查重次数。结合参阅图8,具体实现过程可以包括:

s631:判断当前块的宽/高是否大于第一阈值。

可以将宽/高大于第一阈值的当前块,看作尺寸偏大的当前块;将宽/高均小于或等于第一阈值的当前块,看作尺寸偏小的当前块。例如,可以将第一阈值设置为32。

若是,则执行s632;若否,则执行s633。

s632:在宽/高对应的方向上选择第一数量个邻块进行查重。

若宽大于第一阈值,则在宽对应的方向上选择第一数量个邻块进行查重;若高大于第一阈值,则在高对应的方向上选择第一数量个邻块进行查重。其中,宽对应的方向包括垂直和/或垂直向右,高对应的方向包括水平和/或水平向下。

结合图9对宽和高均大于第一阈值(32)的情况(当前块大小为64×64)进行举例说明。

如图9所示,在宽对应的方向(垂直和垂直向右)上各选择4个等距的邻块进行查重。其中,在垂直方向上的邻块b1~b2n中选择b1、bk、b2k和b3k,n=64,k=n/4,在垂直向右方向上的邻块d1~dn中选择d1、dk、d2k和d3k,从而在宽对应的方向上需要查重的邻块对包括(b1,bk)、(bk,b2k)、(b2k,b3k)、(b3k,d1)、(d1,dk)和(dk,d2k)。

在高对应的方向(水平和水平向下)上各选择4个等距的邻块进行查重。其中,在水平方向上的邻块a1~an中选择a1、ak、a2k和a3k,在水平向下方向上的邻块c1~cn中选择c1、ck、c2k和c3k,从而在高对应的方向上需要查重的邻块对包括(a1,ak)、(ak,a2k)、(a2k,a3k)、(a3k,c1)、(c1,ck)、(ck,c2k)和(c2k,c3k)。

此外,在水平向上方向上需要查重的邻块对包括(a1,e)和(e,b1)。

s633:在宽/高对应的方向上选择第二数量个邻块进行查重。

第一数量大于第二数量,第二数量大于1。

结合图10对宽和高均等于第一阈值(32)的情况(当前块大小为32×32)进行举例说明。

如图10所示,在宽对应的方向(垂直和垂直向右)上各选择2个等距的邻块进行查重。其中,在垂直方向上的邻块b1~bn中选择b1和bk,n=32,k=n/2,在垂直向右方向上的邻块d1~dn中选择d1和dk,从而在宽对应的方向上需要查重的邻块对包括(b1,bk)、(bk,d1)和(d1,dk)。

在高对应的方向(水平和水平向下)上各选择2个邻块进行查重。其中,在水平方向上的邻块a1~an中选择a1和ak,在水平向下方向上的邻块c1~cn中选择c1和ck,从而在高对应的方向上需要查重的邻块对包括(a1,ak)、(ak,c1)和(c1,ck)。

此外,在水平向上方向上需要查重的邻块对包括(a1,e)和(e,b1)。

s640:利用不可用邻块的参考块的运动信息,对所述可用邻块的运动信息进行修改。

其中,可以仅对有效方向上的不可用邻块的运动信息进行修改,也可以对所有方向上的不可用邻块的运动信息进行修改。

s650:分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,基于当前块的尺寸决定在各角度方向上选择的进行查重的邻块数量,相较于为所有尺寸的当前块在各角度方向上选择的进行查重的邻块数量相同的方式,能够使得最终选择出的有效角度方向更加准确。

图11是本申请角度模式帧间预测方法第七实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图11所示的流程顺序为限。如图11所示,本实施例可以包括:

s710:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s720:为不可用邻块设置运动信息。

s730:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

其中若角度方向满足第一条件,则增加至少一次查重。

在一具体实施方式中,第一条件可以为水平和/或垂直方向未通过查重。若水平和/或垂直方向未通过查重,则增加至少一次查重。

以增加一次查重为例,邻块包括n个位于当前块水平方向上的水平邻块以及n个位于当前块垂直方向上的垂直邻块,水平方向增加的查重为按照从上向下排序的第k个与第n个水平邻块之间的查重,垂直方向增加的查重为按照从左向右排序的第k个与第n个垂直邻块之间的查重,k=n/i,i为已经完成的查重中选择的水平邻块或垂直邻块的数量。

在一具体实施方式中,i可以为2。

结合图12对水平和垂直方向未通过查重的情况进行举例说明。如图12所示,水平方向上的邻块对(a1,ak)未通过查重,则在水平方向上增加一次对邻块对(ak,an)的查重;垂直方向上的邻块对(b1,bk)未通过查重,这在垂直方向上增加一次对邻块对(bk,bn)的查重。

其中,在水平和/或垂直方向未通过查重,则增加至少一次查重,从而能够根据多次查重结果来选出有效角度方向,能够提高查重精度,进而能够提高最终选出的有效角度方向的准确性。

在另一具体实施方式中,第一条件可以为角度方向为水平向下或垂直向右。若角度方向为水平向下或垂直向右,则增加至少一次查重。

由于在查重过程中,水平向下和垂直向右方向的邻块并没有被完全查重,因此,为提高查重精度,可以在水平向下和垂直向右方向增加至少一次查重。

可选地,邻块包括n个位于当前块水平方向上的水平邻块以及n个位于当前块垂直方向上的垂直邻块,水平向下方向增加的查重为两个水平邻块之间的查重,垂直向右方向增加的查重为两个垂直邻块之间的查重。

以增加一次查重为例,水平向下方向增加的查重为按照从上向下排序的第3个与第k个水平邻块之间的查重,垂直向右方向增加的查重为按照从左向右排序的第3个与第k个垂直邻块之间的查重,k=n/i,i为水平/垂直方向查重中选择的水平/垂直邻块的数量。

结合图13进行举例说明,如图13所示,在水平向下方向增加对邻块对(a3,ak)的查重,在垂直向右方向增加对邻块对(b3,bk)的查重。

在又一具体实施方式中,第一条件可以为未通过查重的角度方向的查重结果包括一对邻块的参考帧均不存在。若未通过查重的角度方向的查重结果包括一对邻块的参考帧均不存在,则为未通过查重的角度方向增加至少一次查重。

其中,可以将参考帧均不存在的至少一对邻块的序号进行平移,每一对平移后邻块仍属于未通过查重的角度方向,与参考帧均不存在的一对邻块的序号不同,对至少一对平移后邻块进行运动信息查重。

结合图14进行举例说明,如图14所示,邻块对(a1,ak)中两个邻块的参考帧均不存在,将邻块对中的两个邻块的序号向同一方向平移一位,得到邻块对(a2,ak+1),然后对(a2,ak+1)进行运动信息查重。

和/或,可以选择参考帧均不存在的一对邻块在远离当前块的方向上的相邻块进行运动信息查重。

结合图15进行举例说明,如图15所示,邻块对(a1,ak)中两个邻块的参考帧均不存在,将该邻块对中两个邻块在远离当前块的方向上的相邻块组成的邻块对(a1,ak)进行运动信息查重。

s740:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s750:分别利用每个所述有效角度方向上的可用邻块和/或不可用邻块的运动信息计算所述当前块的预测值。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,在对邻块进行运动信息查重,在角度方向满足第一条件的情况下,增加至少一次查重的方式,能够使得查重结果更加准确,进而得到的有效角度方向更加准确。

图16是本申请角度模式帧间预测方法第八实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图16所示的流程顺序为限。如图16所示,本实施例可以包括:

s810:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s820:为不可用邻块设置运动信息。

s830:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

其中若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对水平向上的查重。

可选地,水平向上的查重包括第一查重和第二查重,第一查重为对水平向上邻块与第一水平邻块之间的运动信息查重,第二查重为对水平向上邻块与第一垂直邻块之间的运动信息查重,水平向上邻块位于当前块的水平向上方向,第一水平邻块位于当前块的水平方向且与水平向上邻块相邻,第一垂直邻块位于当前块的垂直方向且与水平向上邻块相邻。

若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对水平向上的查重包括:

在一具体实施方式中,第二条件可以为:水平和垂直均为有效角度方向。

若水平和垂直均为有效角度方向,则无需对水平向上进行查重而判定水平向上为有效角度方向。

结合图17进行举例说明,如图17所示,(a1,ak)为通过运动信息查重的水平方向上的邻块对,(b1,bk)为通过运动信息查重的垂直平方向上的邻块对,即水平和垂直均为有效角度方向,则无需对水平向上的邻块对(a1,e)和(e,b1)进行运动信息查重。

在另一具体实施方式中,第二条件可以为:水平为有效角度方向且第一查重和第二查重中的一个查重结果为有效。

若水平为有效角度方向且第一查重和第二查重中的一个查重结果为有效,则无需进行第一查重和第二查重中的另一个而判定水平向上为有效角度方向。

结合图18进行举例说明,如图18所示,水平方向上的邻块对(a1,ak)通过运动信息查重,即水平方向有效,并且,水平向上方向上的邻块对(e,b1)通过运动信息查重,即第二查重的查重结果为有效,则无需对水平向上方向上的邻块对(a1,e)进行运动信息查重,也即无需进行第一查重,就可判定水平向上为有效角度方向。

在又一具体实施方式中,第二条件可以为:垂直为有效角度方向且第一查重和第二查重中的一个查重结果为有效。

若垂直为有效角度方向且第一查重和第二查重中的一个查重结果为有效,则无需进行第一查重和第二查重中的另一个而判定水平向上为有效角度方向。

结合图19进行举例说明,如图19所示,垂直方向上的邻块对(b1,bk)通过运动信息查重,即垂直方向有效,并且,水平向上方向上的邻块对(a1,e)通过运动信息查重,即第一查重的查重结果为有效,则无需对水平向上方向上的邻块对(e,b1)进行运动信息查重,也即无需进行第二查重,就可判定水平向上为有效角度方向。

s840:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s850:分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,在对邻块进行查重时,若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对水平向上的查重。相较于对每个水平向上进行两次查重的方式,能够减小查重过程中需要用到的计算开销。

图20是本申请角度模式帧间预测方法第九实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图20所示的流程顺序为限。如图20所示,本实施例可以包括:

s910:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s920:为不可用邻块设置运动信息。

s930:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,查重包括判断选择的至少一对邻块的参考帧的图像顺序索引是否相同以及运动矢量是否相同。

当一个角度方向上的邻块对的参考帧的图像顺序索引以及运动矢量均相同的情况下,才判定该角度方向无效。

此外,查重还可以包括判断选择的至少一对邻块的参考帧索引是否相同。其中,当查重包括判断参考帧索引、运动矢量和参考帧的图像顺序索引三者是否相同时,三者的判断顺序可以不受限定。

下面以先判断参考帧索引和运动矢量,再判断参考帧的图像顺序索引是否相同为例,对一个角度方向上的nei_b1和nei_b2两个邻块进行查重的过程进行说明:

(i)判断nei_b1的前向参考帧和后向参考帧是否存在(参考帧索引是否大于或等于0),若其中一个存在则进行(ii);否则判定此角度方向无效。

(ii)判断nei_b2的前向参考帧和后向参考帧是否存在,若其中一个存在则进行(iii);否则判定此角度方向无效。

(iii)判断nei_b1和nei_b2的前向参考帧索引是否相同,若相同,则进行(iv);否则判定此角度方向无效。

(iv)判断nei_b1的前向参考帧是否存在,并且nei_b1和nei_b2的前向参考运动矢量是否相同,若存在并且不相同,则判定此角度方向为有效,否则进行(v)。

(v)判断nei_b1和nei_b2的后向参考帧索引是否相同,若相同,则进行(vi),否则,判定此角度方向为有效。

(vi)判断nei_b1的后向参考帧是否存在,并且nei_b1和nei_b2的后向参考运动矢量是否相同,若存在并且不相同,则判定此角度方向为有效,否则进行(vii)。

(vii)判断nei_b1和nei_b2的参考帧的图像顺序索引是否相同,若相同,则判定此角度方向无效;否则判定此角度方向有效。

对于同一图像顺序索引的参考帧而言,其在不同的邻块的前向参考帧索引列表和/或后向参考帧索引列表中的参考帧索引可能不同。因此,若只根据参考帧索引和运动矢量来进行判断,可能会存在两个邻块的运动信息中参考帧索引不同使得对应的角度方向被判定为有效,然而这两个邻块的参考帧的图像顺序索引相同,运动矢量也相同,实质上这两个邻块的运动信息相同,对应的角度方向应该是无效的情况。因此,可以在查重过程中增加判断参考帧的图像顺序索引是否相同,可以提高判断结果的准确度。

s940:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s950:分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

本实施例的步骤其他详细描述请参见本申请中其他实施例,在此不再重复。

本实施例中,在邻块进行运动信息查重过程包括判断选择的至少一对邻块的参考帧的图像顺序索引是否相同以及运动矢量是否相同,在参考帧的图像顺序索引是否相同以及运动矢量均相同的情况下,才判断对于角度方向无效,从而能够使得判断结果更加准确。

图21是本申请角度模式帧间预测方法第十实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图21所示的流程顺序为限。如图21所示,本实施例可以包括:

s1010:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s1020:为不可用邻块设置运动信息。

s1030:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

s1040:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s1050:当前块被划分为多个子块,分别利用每个子块在有效角度方向上的对应邻块的运动信息进行运动补偿,得到每个子块的预测值。

所有子块的预测值组成当前块的预测值,其中至少一个有效角度方向上子块进行运动补偿时使用了至少两个对应邻块的运动信息。

在一具体实施方式中,当前块被划分为多个第一尺寸的第一子块,每个第一子块由多个第二尺寸的第二子块组成,在至少一个有效角度方向上,至少一个第一子块的运动矢量为至少两个对应邻块的运动矢量的加权平均值。

可选地,第一尺寸为8*8,第二尺寸为4*4。

结合图22对一第一子块(尺寸为8*8)在水平和垂直方向上的运动矢量计算方法进行说明。

可以将两个对应水平邻块(ak-1和ak)的运动矢量的加权平均值,作为该第一子块在水平方向上的运动矢量,具体计算公式可以如下:

其中,mv_hor为第一子块在水平方向上的运动矢量,mv(ak)为ak的运动矢量,mv(ak-1)为ak-1的运动矢量。

可以将两个对应垂直邻块(bk-1和bk)的运动矢量的加权平均值,作为该第一子块在垂直方向上的运动矢量,具体计算公式可以如下:

其中,mv_ver为第一子块在水平方向上的运动矢量,mv(bk)为bk的运动矢量,mv(bk-1)为bk-1的运动矢量。

在计算第一子块的运动矢量时,以上计算第一子块在垂直和水平方向上的运动矢量的方式,在计算第一子块在其他方向上的运动矢量时同样适用。

本实施例的步骤其它详细描述请参见前面的实施例,在此不再重复。

本实施例中,在为有效角度方向上第一子块进行运动补偿时使用了至少两个对应邻块的运动信息,相较于仅使用一个对应邻块的运动信息对第一子块进行运动补偿的方式,能够得到更加准确的第一子块的预测值,提高编码的准确度。

图23是本申请角度模式帧间预测方法第十一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图23所示的流程顺序为限。如图23所示,本实施例可以包括:

s1110:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s1120:为不可用邻块设置运动信息。

s1130:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

s1140:将有效角度方向填入角度模式列表,得到有效角度方向的角度模式索引。

由于将角度模式帧间预测和其他帧间预测模式共同一个模式索引列表时,角度模式索引在模式索引列表中对应的索引取值范围为4~8。

可以为角度模式帧间预测选出的有效角度单独设置一个模式列表(即角度模式列表),则将角度模式帧间预测选出的有效角度方向填入角度模式列表后,得到的角度模式索引的取值范围为0~4。相较于与其他模式共用一模式索引列表的方向,在后续编码过程中需要更少的比特数开销。并且,将角度模式索引独立出来之后,可以缩减共用的模式列表中的索引数量。

s1150:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

此外,在得到当前块的预测值之后,还可以包括:

s1160:分别利用每个有效角度方向上的邻块的运动信息计算当前块的预测值以及率失真代价。

在计算出当前块的预测值以及率失真代价之后,可以与其他帧间模式一起进行率失真代价优化,以选出最佳的帧间预测模式来对当前块进行编码。因此,在本实施例的基础上,还可以包括步骤:

s1170:对当前块进行编码得到当前块的码流。

当前块的码流中包括角度模式标记,角度模式标记用于表示当前块是否采用角度模式帧间预测。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

由于在编码过程中需要对选择的帧间预测模式对应的模式列表进行编码,因此本实施例中,为角度模式帧间预测设置一独立的角度模式列表,能够缩减原始的模式列表中索引列表数量,从而能够减小编码过程中需要进行编码的模式列表长度,降低编码过程中所需要的比特数开销(码率)。

图24是本申请角度模式帧间预测方法第十二实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图24所示的流程顺序为限。如图24所示,本实施例可以包括:

s1210:为当前块构建候选邻块列表。

候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

s1220:为不可用邻块设置运动信息。

s1230:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

s1240:利用当前块的纹理方向确定各有效角度方向的顺序。

其中,可以基于当前块从参考像素的梯度方向来确定各有效角度方向的顺序。参阅图25,s1240具体可以包括:

s1241:利用梯度算子计算当前块的参考像素的梯度方向。

参考像素可以是帧内预测模式下当前块的参考像素。参考像素位于当前块的已编码侧(例如左侧和上侧)。梯度算子可以但不限于为roberts、prewitt、sobel、拉普拉斯、canny算子等。下面以sobel算子和拉普拉斯算子为例进行说明:

(1)利用sobel算子计算当前块的参考像素的梯度方向的公式可以如下:

sx=-a1f(x-1,y-1)-a2f(x-1,y)-a3f(x-1,y+1)+a1f(x+1,y-1)+a2f(x+1,y)+a3f(x+1,y+1)

sy=-a1f(x-1,y+1)-a2f(x,y+1)-a3f(x+1,y+1)+a1f(x-1,y-1)+a2f(x,y-1)+a3f(x+1,y-1)

(2)利用拉普拉斯算子计算当前块的参考像素的梯度方向的公式可以如下:

sx=a1(f(x-1,y)+f(x+1,y))-a2f(x,y)

sy=a1(f(x,y-1)+f(x,y+1))-a2f(x,y)

其中,a1、a2和a3为常量,f(x,y)为参考像素的像素值,sx为参考像素的水平梯度,sy为参考像素的垂直梯度,angle为参考像素的梯度方向。

s1242:统计梯度方向落入以各有效角度方向为中心的角度范围内的参考像素的数量。

其中,角度范围大小可以根据实际需要而定。例如,以水平方向为中心的角度范围可以为0°±15°,以垂直方向为中心的角度范围可以为90°±15°,以水平向上方向为中心的角度范围可以为135°±15°,以水平向下方向为中心的角度范围可以为-135°±15°,以垂直向右方向为中心的角度范围可以为45°±15°。

s1243:按照参考像素的数量从大到小的顺序对有效角度方向进行排序。

按照落入角度范围的参考像素的数量从大到小的顺序对有效角度方向进行排序。

s1250:按顺序将有效角度方向填入模式列表。

s1260:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s1270:分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

本实施例的步骤其他详细描述请参见前面的实施例,在此不再重复。

本实施例中,在通过查重过程从多个角度方向选出有效角度方向的基础上,进一步根据纹理方向确定各有效角度方向的顺序,即统计当前块中,梯度方向落入以各有效角度方向为中心的角度范围内的参考像素的数量,按照落入的参考像素数量从大到小的顺序对有效角度方向进行排序。由于对应参考像素数量越大的有效角度方向越接近当前块的纹理方向,因此,按顺序将有效角度方向填入模式列表,能够使得接近当前块的纹理方向的有效角度方向在模式列表中的排序靠前,在编码过程中越容易被选择到,从而能够提高编码的准确性,并且能够降低编码过程所需码率。

图26是本申请角度模式帧间预测方法第十三实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图25所示的流程顺序为限。如图26所示,本实施例可以包括:

s1301:为当前块构建候选邻块列表。

候选邻块列表包括所述当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块;

s1302:为不可用邻块设置运动信息。

s1303:对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

s1304:利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

s1305:当前块被划分为多个子块,分别利用每个子块在有效角度方向上的对应邻块的运动信息,得到每个子块的运动信息。

运动信息包括运动矢量。其中,运行信息可以包括前向运动信息和后向运动信息,前向运动信息可以包括前向运动矢量和前向参考帧索引,后向运动信息可以包括后向运动矢量和后向参考帧索引。

可以分别利用当前子块在每个有效角度方向上的对应邻块的运动信息,得到当前子块的每个运动信息。

s1306:分别利用多个修正运动矢量对每个子块的第一预测值进行修正,得到每个子块的多个第二预测值。

第一预测值是利用运动信息进行运动补偿得到的。

在当前块的前向参考帧的图像顺序索引和后向参考帧的图像顺序索引相同的情况下,可用利用解码端运动矢量细化(dmvr)技术对每个子块的第一预测值进行修正,得到每个子块的多个第二预测值。具体如下:

参考图27,s1306可以包括以下子步骤:

s13061:分别利用多个修正运动矢量对每个子块的运动矢量进行修正,得到每个子块的多个修正后的运动矢量。

第一预测值也可以被称为第一预测像素值,可以分别利用当前子块的每个运动信息进行补偿得到对应的第一预测值。第一预测值可以包括前向第一预测值和后向第一预测值,前向第一预测值可以利用前向运动信息进行运动补偿得到,后向第一预测值可以利用后向运动信息进行运动补偿得到。

可以将当前子块的前向第一预测值对应的块称为前向第一预测块,可以将当前子块的后向第一预测值对应的块称为后向第一预测块。换句话说,可以将当前子块的前向运动信息指向的块称为前向第一预测块,可以将当前子块的后向运动信息指向的块称为后向第一预测块。

每个子块的多个修正运动矢量可以在前/后向第一预测块的搜索范围内搜索得到。

前向第一预测块的搜索范围可以为以前向第一预测块的顶点(左上角像素所在的点)为中心的n*n像素范围,搜索时,可以按照预定顺序遍历搜索范围内的所有像素点,例如按照从左到右,从上到下的光栅扫描顺序遍历所有像素点,获取n2个前向修正运动矢量δmv1,δmv1为顶点指向搜索像素点的运动矢量,或者说,δmv1为前向第一预测块指向前向第二预测块(参考后面的说明)的运动矢量。

后向第一预测块的搜索范围可以为以后向第一预测块的顶点(右下角像素所在的点)为中心的n*n像素范围,搜索时,可以按照预定顺序遍历搜索范围内的所有像素点,获取n2个后向修正运动矢量,例如按照从右到左,从下到上的光栅扫描顺序遍历所有像素点,获取多个后向修正运动矢量δmv2,δmv2为顶点指向搜索像素点的运动矢量,或者说,δmv1为后向第一预测块指向后向第二预测块的运动矢量。

为简化描述,结合图28对在前向第一预测块的搜索范围内搜索得到前向修正运动矢量δmv1为例进行说明:

找到搜索点c后,将前向第一预测块进行平移,使顶点a与搜索点c重合,得到前向第二预测块,或者说,在遍历到c点时,形成一个以c点为顶点的与子块尺寸相同的前向第二预测块,计算获取前向第二预测块的预测值。δmv1为顶点a指向搜索点c的运动矢量,或者说,δmv1为顶点a所在前向第一预测块指向搜索点c所在前向第二预测块的运动矢量。

每组对应的前向修正运动矢量和后向修正运动矢量大小相等,方向相反。

可以利用前向修正运动矢量对子块的前向运动矢量进行修正,得到修正后的前向运动矢量,可以利用后向修正运动矢量对子块的后向运动矢量进行修正,得到修正后的后向运动矢量。

例如,子块的运动矢量为(mv1,mv2),则子块修正后的运动矢量为(mv1+δmv1,mv2+δmv2)。

s13062:分别利用多个包含修正后的运动矢量的运动信息对每个子块进行运动补偿,得到每个子块的多个第二预测值。

第二预测值可以为包含修正后的运动矢量的运动信息指向的第二预测块的像素值。

s1307:分别为每个子块选择评价指标最小的第二预测值对应的修正运动矢量作为子块的最终修正运动矢量。

可以基于绝对误差和(sumofabsolutedifference,sad)算法,获取子块的n2对前向第二预测值和后向第二预测值之间的评价指标(sad),选择sad最小的一对前向第二预测值和后向第二预测值对应的修正运动矢量,作为子块的最终修正运动矢量。

s1308:利用所有子块的最终修正运动矢量进行修正,得到修正后的运动矢量。

s1309:利用修正后的运动矢量获取每个子块的预测值,所有子块的预测值组成当前块的预测值。

利用修正后的运动矢量计算子块的预测值,子块的预测值可以为前向预第二测值和后向预测值的均值。

本实施例步骤的其他详细说明请参见其他实施例,在此不再重复。

本实施例中,在对当前块的运动信息进行运动补偿得到预测值之前,先利用dmwr技术对当前块的运动矢量进行修正,能够提高预测的准确度。

需要说明的是,在互相不冲突的前提下,本申请实施例可以进行组合。

图29是本申请一种角度模式帧间预测装置第一实施例的结构示意图。如图29所示,该装置可以包括:构建模块11、设置模块12、查重模块13、修改模块14和计算模块15。

其中,构建模块11可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块12可以用于为不可用邻块设置运动信息。

查重模块13可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

修改模块14,用于利用有效角度方向上的不可用邻块的参考块的运动信息,对有效角度方向上的不可用邻块的运动信息进行修改。

计算模块15可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图30是本申请一种角度模式帧间预测装置第二实施例的结构示意图。如图30所示,该装置可以包括:构建模块21、设置模块22、查重模块23、修改模块24和计算模块25。构建模块21可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块22可以用于在不可用邻块的时域同位块可用的情况下,利用时域同位块的运动信息为不可用邻块设置运动信息,以及用于在不可用邻块的时域同位块不可用的情况下,设置初始值为不可用邻块的运动信息。

查重模块23可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

修改模块24可以用于利用所述运动信息为初始值的不可用邻块的参考块的运动信息,对运动信息为所述初始值的可用邻块的运动信息进行修改。

计算模块25可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图31是本申请一种角度模式帧间预测装置第三实施例的结构示意图。如图31所示,该装置可以包括:构建模块31、设置模块32、查重模块33、修改模块34和计算模块35。

构建模块31可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块32可以用于为不可用邻块设置运动信息。

查重模块33,用于根据当前块的尺寸在各角度方向上选择至少一对邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

修改模块34可以用于利用不可用邻块的参考块的运动信息,对可用邻块的运动信息进行修改。

计算模块35可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图32是本申请一种角度模式帧间预测装置第四实施例的结构示意图。如图32所示,该装置可以包括:构建模块41、设置模块42、查重模块43、修改模块44和计算模块45。

构建模块41可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的所述邻块为可用邻块,剩余邻块为不可用邻块。

设置模块42可以用于为不可用邻块设置运动信息。

查重模块43可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若角度方向满足第一条件,则增加至少一次查重。

修改模块44可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改;

计算模块45可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图33是本申请一种角度模式帧间预测装置第五实施例的结构示意图。如图33所示,该装置可以包括:构建模块51、设置模块52、查重模块53、修改模块54和计算模块55。

构建模块51可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块52可以用于为不可用邻块设置运动信息。

查重模块53可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,其中若水平、垂直和水平向上的查重结果中的至少两个满足第二条件,则减少至少一次对水平向上的查重。

修改模块54可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

计算模块55可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图34是本申请一种角度模式帧间预测装置第六实施例的结构示意图。如图34所示,该装置可以包括:构建模块61、设置模块62、查重模块63、修改模块64和计算模块65。

构建模块61,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块62可以用于为不可用邻块设置运动信息。

查重模块63可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向,查重包括判断选择的至少一对邻块的参考帧的图像顺序索引是否相同以及运动是否相同。

修改模块64可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

计算模块65可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图35是本申请一种角度模式帧间预测装置第七实施例的结构示意图。如图35所示,该装置可以包括:构建模块71、设置模块72、查重模块73、修改模块74和计算模块75。

构建模块71,用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块72可以用于为不可用邻块设置运动信息。

查重模块73可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

修改模块74可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

计算模块75可以用于在当前块被划分为多个子块的情况下,分别利用每个子块在所述有效角度方向上的对应邻块的运动信息进行运动补偿,得到每个子块的预测值,所有子块的预测值组成当前块的预测值,其中至少一个有效角度方向上子块进行运动补偿时使用了至少两个对应邻块的运动信息。

图36是本申请一种角度模式帧间预测装置第八实施例的结构示意图。如图36所示,该装置可以包括:构建模块81、设置模块82、查重模块83、填入模块84、修改模块85和计算模块86。

构建模块81可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块82可以用于为不可用邻块设置运动信息。

查重模块83可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

填入模块84可以用于将有效角度方向填入角度模式列表,得到有效角度方向的角度模式索引。

修改模块85可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

计算模块86可以用于分别利用每个有效角度方向上的可用和/或不可用邻块的运动信息计算当前块的预测值。

图37是本申请一种角度模式帧间预测装置第九实施例的结构示意图。如图37所示,该装置可以包括:构建模块91、设置模块92、查重模块93、确定模块94、填入模块95、修改模块96和计算模块97。

构建模块91可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块92可以用于为不可用邻块设置运动信息。

查重模块93可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

确定模块94可以用于利用当前块的纹理方向确定各有效角度方向的顺序。

填入模块95可以用于按顺序将有效角度方向填入模式列表。

修改模块96可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

计算模块97可以用于分别利用每个有效角度方向上的可用邻块和/或不可用邻块的运动信息计算当前块的预测值。

图38是本申请一种角度模式帧间预测装置第十实施例的结构示意图。如图38所示,该装置可以包括:构建模块101、设置模块102、查重模块103、修改模块104、第一计算模块105、第一修正模块106、选择模块107、第二修正模块108和第二计算模块109。

构建模块101可以用于为当前块构建候选邻块列表,候选邻块列表包括当前块在多个角度方向上的邻块,其中已编码的采用帧间预测的邻块为可用邻块,剩余邻块为不可用邻块。

设置模块102可以用于为不可用邻块设置运动信息。

查重模块103可以用于对各角度方向上的邻块进行运动信息查重,通过查重的角度方向为有效角度方向。

修改模块104可以用于利用不可用邻块的参考块的运动信息,对不可用邻块的运动信息进行修改。

第一计算模块105可以用于在当前块被划分为多个子块的情况下,分别利用每个子块在有效角度方向上的对应邻块的运动信息,得到每个子块的运动信息,运动信息包括运动矢量。

第一修正模块106可以用于分别利用多个修正运动矢量对每个子块的第一预测值进行修正,得到每个子块的多个第二预测值,第一预测值是利用运动信息进行运动补偿得到的。

选择模块107可以用于分别为每个子块选择评价指标最小的第二预测值对应的修正运动矢量,作为子块的最终修正运动矢量;

第二修正模块108可以用于利用所有子块的最终修正运动矢量进行修正,得到修正后的运动矢量。

第二计算模块109可以用于利用包含修正后的运动矢量的运动信息,得到每个子块的预测值,所有所述子块的预测值组成当前块的预测值。

图39是本申请编码器一实施例的结构示意图。如图39所示,该编码器包括处理器111、与处理器耦接的存储器112。

其中,存储器112存储有用于实现上述任一实施例的方法的程序指令;处理器111用于执行存储器112存储的程序指令以实现上述方法实施例的步骤。其中,处理器111还可以称为cpu(centralprocessingunit,中央处理单元)。处理器111可能是一种集成电路芯片,具有信号的处理能力。处理器111还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

图40是本申请存储介质一实施例的结构示意图。如图40所示,本申请实施例的存储介质120存储有程序指令121,该程序指令121被执行时实现本申请上述实施例提供的方法。其中,该程序指令121可以形成程序文件以软件产品的形式存储在上述存储介质120中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质1400包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

图41本申请电子设备一实施例的结构示意图。如图41所示,该电子设备130可以但不限于包括编码器131(前面涉及的编码器121),也可以为其他能够实现上述方法步骤的其他编码器,在此不作具体限定。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1