首页 / 专利库 / 电缆,导体和接线 / 中心抽头 / 一种解码、编码方法及其设备

一种解码、编码方法及其设备

阅读:54发布:2020-05-12

专利汇可以提供一种解码、编码方法及其设备专利检索,专利查询,专利分析的服务。并且本 申请 提供一种解码、编码方法及其设备,该方法包括:获取当前图像 块 的运动模型;根据所述运动模型建立所述当前图像块的运动信息列表;从所述运动信息列表中选择备选运动信息;根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;根据所述原始运动信息确定所述当前图像块的目标运动信息;根据所述原始运动信息或所述目标运动信息对编码比特流进行解码。通过本申请的技术方案,解决了预测 质量 不高,预测错误等问题,可以提高解码效率,降低解码时延,提高编解码性能。,下面是一种解码、编码方法及其设备专利的具体信息内容。

1.一种解码方法,其特征在于,应用于解码端,所述方法包括:
获取当前图像的运动模型;
根据所述运动模型建立所述当前图像块的运动信息列表;
从所述运动信息列表中选择备选运动信息;根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;
根据所述原始运动信息确定所述当前图像块的目标运动信息;
根据所述原始运动信息或所述目标运动信息对编码比特流进行解码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述原始运动信息或所述目标运动信息对编码比特流进行解码之后,所述方法还包括:
若根据所述原始运动信息对所述编码比特流进行解码,则将所述原始运动信息存储为最终运动信息;或者,若根据所述目标运动信息对所述编码比特流进行解码,则将所述目标运动信息存储为最终运动信息。
3.根据权利要求1所述的方法,其特征在于,
所述获取当前图像块的运动模型,包括:
根据所述当前图像块的模式信息获取所述当前图像块的运动模型。
4.根据权利要求3所述的方法,其特征在于,所述模式信息包括尺寸信息,根据所述当前图像块的模式信息获取所述当前图像块的运动模型,包括:
当所述当前图像块的尺寸信息小于预设尺寸时,确定所述当前图像块的运动模型是2参数的运动模型。
5.根据权利要求1所述的方法,其特征在于,
所述获取当前图像块的运动模型,包括:
从编码比特流中获取第一指示信息,所述第一指示信息用于指示运动模型;
根据所述第一指示信息获取所述当前图像块的运动模型。
6.根据权利要求1-5任一项所述的方法,其特征在于,
所述根据所述运动模型建立所述当前图像块的运动信息列表,包括:
根据所述运动模型确定与所述当前图像块对应的候选图像块;
根据所述候选图像块的运动信息确定所述当前图像块的备选运动信息;
将所述当前图像块的备选运动信息添加到运动信息列表。
7.根据权利要求6所述的方法,其特征在于,所述运动模型为2参数的运动模型,所述候选图像块包括以下之一或者任意组合:
所述当前图像块所在当前中,与所述当前图像块相邻的图像块;
所述当前图像块所在当前帧中,与所述当前图像块未相邻的图像块;
所述当前图像块所在当前帧的相邻帧中的图像块。
8.根据权利要求7所述的方法,其特征在于,所述根据所述候选图像块的运动信息确定所述当前图像块的备选运动信息,包括:
若所述候选图像块处于所述当前图像块的同一个解码单元,则根据所述候选图像块的原始运动信息确定所述当前图像块的备选运动信息;和/或,
若所述候选图像块处于所述当前图像块的前一个解码单元,则根据所述候选图像块的原始运动信息确定所述当前图像块的备选运动信息。
9.根据权利要求7所述的方法,其特征在于,所述根据所述候选图像块的运动信息确定所述当前图像块的备选运动信息,包括:
在对当前图像块进行解码时,获取所述候选图像块的目标运动信息,并根据所述候选图像块的目标运动信息确定所述当前图像块的备选运动信息。
10.根据权利要求7所述的方法,其特征在于,所述根据所述候选图像块的运动信息确定所述当前图像块的备选运动信息,包括:
对所述候选图像块的原始运动信息进行调整,并根据调整后的运动信息确定所述当前图像块的备选运动信息;和/或,对所述候选图像块的目标运动信息进行调整,并根据调整后的运动信息确定所述当前图像块的备选运动信息。
11.根据权利要求7所述的方法,其特征在于,
所述将所述当前图像块的备选运动信息添加到运动信息列表,包括:
根据每个候选图像块与所述当前图像块的位置关系,确定每个候选图像块的运动信息对应的所述当前图像块的备选运动信息的添加顺序;
根据所述添加顺序,依次将每个备选运动信息添加到运动信息列表,直到所述运动信息列表中的备选运动信息的数量达到预设数量。
12.根据权利要求6所述的方法,其特征在于,所述运动模型为非2参数的运动模型,所述候选图像块包括当前图像块所在当前帧中,与当前图像块相邻的图像块,且所述候选图像块的运动模型与所述当前图像块的运动模型相同,所述候选图像块包括多个子块,不同子块对应相同或不同的运动信息;根据所述候选图像块的运动信息确定所述当前图像块的备选运动信息,包括:
从所述候选图像块的多个子块的运动信息中,选择与所述运动模型的参数匹配数量的运动信息,根据选择的运动信息确定当前图像块的备选运动信息。
13.根据权利要求12所述的方法,其特征在于,
若所述运动模型为4参数的运动模型,则所述运动模型的参数匹配数量为2;
若所述运动模型为6参数的运动模型,则所述运动模型的参数匹配数量为3;
若所述运动模型为8参数的运动模型,则所述运动模型的参数匹配数量为4。
14.根据权利要求12所述的方法,其特征在于,所述运动模型为4参数的运动模型,所述从所述候选图像块的多个子块的运动信息中,选择与所述运动模型的参数匹配数量的运动信息,包括:
选择候选图像块的左上方子块的运动信息和右上方子块的运动信息;或者,针对位于所述当前图像块上侧的候选图像块,选择候选图像块的左下方子块的运动信息和右下方子块的运动信息;针对不位于所述当前图像块上侧的候选图像块,选择候选图像块的左上方子块的运动信息和右上方子块的运动信息,或,选择所述候选图像块的右上方子块的运动信息和右下方子块的运动信息。
15.根据权利要求1-14任一项所述的方法,其特征在于,
所述从所述运动信息列表中选择备选运动信息,包括:
根据运动信息索引从所述运动信息列表中选择备选运动信息;其中,所述运动信息索引是从编码比特流中获取的,或者,所述运动信息索引是默认索引。
16.根据权利要求1-15任一项所述的方法,其特征在于,
所述根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息之前,所述方法还包括:
根据差值信息索引从差值列表中选择差值信息;
其中,所述差值列表中配置有多个差值信息;所述差值信息索引是从编码比特流中获取的,或者,所述差值信息索引是默认差值索引。
17.根据权利要求1-16任一项所述的方法,其特征在于,根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息,包括:根据选择的所述备选运动信息和第一权重,以及所述当前图像块的差值信息和第二权重,确定所述当前图像块的原始运动信息。
18.根据权利要求1-17任一项所述的方法,其特征在于,
所述根据所述原始运动信息确定所述当前图像块的目标运动信息,包括:
获取所述当前图像块的模板;
基于所述模板,以所述原始运动信息为中心搜索所述目标运动信息。
19.根据权利要求18所述的方法,其特征在于,
所述获取所述当前图像块的模板,包括:
利用所述当前图像块的原始运动信息,获取所述当前图像块的模板;或者,获取所述当前图像块的周围图像块的运动信息,并利用所述当前图像块的周围图像块的运动信息,获取所述当前图像块的模板。
20.根据权利要求19所述的方法,其特征在于,所述周围图像块包括M个第一周围图像块和N个第二周围图像块,M为大于或等于1的自然数,N为大于或等于0的自然数,或者,M为大于或等于0的自然数,N为大于或等于1的自然数;所述第一周围图像块为所述当前图像块上侧的周围图像块,所述第二周围图像块为所述当前图像块左侧的周围图像块;所述利用所述当前图像块的周围图像块的运动信息,获取所述当前图像块的模板,包括:
根据M个第一周围图像块的运动矢量预测模式和运动信息,确定第一模板;
根据N个第二周围图像块的运动矢量预测模式和运动信息,确定第二模板;
将所述第一模板确定为所述当前图像块的模板;或者,
将所述第二模板确定为所述当前图像块的模板;或者,
将所述第一模板和所述第二模板拼接之后确定为所述当前图像块的模板。
21.根据权利要求18所述的方法,其特征在于,所述基于所述模板,以所述原始运动信息为中心搜索所述目标运动信息,包括:
将所述原始运动信息确定为中心运动信息;
确定与所述中心运动信息对应的边缘运动信息;
根据所述模板获得所述中心运动信息的预测性能和所述边缘运动信息的预测性能;根据所述中心运动信息的预测性能和所述边缘运动信息的预测性能,从所述中心运动信息和所述边缘运动信息中确定所述目标运动信息。
22.根据权利要求1-17任一项所述的方法,其特征在于,所述当前图像块为双向帧间预测块,所述原始运动信息包括所述当前图像块对应的第一参考帧和第二参考帧,以及所述第一参考帧对应的第一运动矢量、所述第二参考帧对应的第二运动矢量;
所述根据所述原始运动信息确定所述当前图像块的目标运动信息,包括:
根据所述第一运动矢量从所述第一参考帧中获取与所述当前图像块对应的第一初始参考块,根据所述第二运动矢量从所述第二参考帧中获取与所述当前图像块对应的第二初始参考块;
基于所述第一初始参考块和所述第二初始参考块的相似度,在所述第一参考帧中,以所述第一运动矢量为中心,按照多个偏移方向和偏移量搜索第一目标参考块,在所述第二参考帧中,以所述第二运动矢量为中心,按照多个偏移方向和偏移量搜索第二目标参考块,所述第一目标参考块和所述第二目标参考块的相似度满足预设要求;
将所述第一目标参考块的运动信息和所述第二目标参考块的运动信息确定为所述当前图像块的目标运动信息。
23.根据权利要求22所述的方法,其特征在于,
所述第一初始参考块和所述第二初始参考块的相似度通过以下方式确定:
采用平和竖直抽头数均小于等于N的插值策略确定所述第一初始参考块的预测值和所述第二初始参考块的预测值,所述N为大于等于2的正整数;
获取所述第一初始参考块的预测值和所述第二初始参考块的预测值的下采样处理结果,基于所述下采样处理结果,确定所述第一初始参考块和所述第二初始参考块的SAD或MRSAD,基于SAD或MRSAD确定所述第一初始参考块和所述第二初始参考块的相似度。
24.根据权利要求1-17任一项所述的方法,其特征在于,所述原始运动信息包括所述当前图像块对应的第一原始运动矢量和第二原始运动矢量;
所述根据所述原始运动信息确定所述当前图像块的目标运动信息,包括:
根据所述第一原始运动矢量确定所述当前图像块的第一目标运动矢量;
确定所述第一原始运动矢量与所述第一目标运动矢量的差值;
根据所述第二原始运动矢量和所述差值确定第二目标运动矢量;
根据所述第一目标运动矢量和所述第二目标运动矢量确定目标运动信息。
25.一种编码方法,其特征在于,应用于编码端,所述方法包括:
获取当前图像块的运动模型;
根据所述运动模型建立所述当前图像块的运动信息列表;
从所述运动信息列表中选择备选运动信息;根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;
根据所述原始运动信息确定所述当前图像块的目标运动信息;
根据所述原始运动信息或所述目标运动信息对当前图像块进行编码。
26.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求1-24任一所述的方法步骤。
27.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求25所述的方法步骤。

说明书全文

一种解码、编码方法及其设备

技术领域

[0001] 本申请涉及视频编解码技术领域,尤其涉及一种解码、编码方法及其设备。

背景技术

[0002] 为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码包括内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。
[0003] 在帧间编码中,可以使用运动矢量(Motion Vector,MV)表示当前帧视频图像的当前图像与参考帧视频图像的参考图像块之间的相对位移。例如,当前帧的视频图像A与参考帧的视频图像B存在很强的时域相关性,在需要传输视频图像A的图像块A1(当前图像块)时,则可以在视频图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(即参考图像块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。
[0004] 编码端可以将运动矢量发送给解码端,不是将图像块A1发送给解码端,解码端可以根据运动矢量和图像块B1得到图像块A1。显然,由于运动矢量占用的比特数小于图像块A1占用的比特数,因此,上述方式可以节约大量比特。
[0005] 但是,若将视频图像A划分成大量图像块,在传输每个图像块的运动矢量时,也会占用比较多的比特。为了进一步的节约比特,还可以利用候选图像块之间的空间相关性,预测图像块A1的运动矢量。例如,可以将与图像块A1相邻的图像块A2的运动矢量,确定为图像块A1的运动矢量。基于此,编码端可以将图像块A2的索引值发送给解码端,而解码端可以基于该索引值确定图像块A2的运动矢量,就是图像块A1的运动矢量。由于图像块A2的索引值占用的比特数小于运动矢量占用的比特数,因此,上述方式可以进一步节约比特。
[0006] 由于图像块A1的运动与图像块A2的运动可能存在差异,即图像块A2的运动矢量与图像块A1的运动矢量可能并不一致,因此,将图像块A2的运动矢量确定为图像块A1的运动矢量,存在预测质量不高,预测错误等问题。发明内容
[0007] 本申请提供了一种解码、编码方法及其设备,解决了预测质量不高,预测错误等问题,可以提高解码效率,降低解码时延,提高编解码性能。
[0008] 本申请提供一种解码方法,应用于解码端,所述方法包括:
[0009] 获取当前图像块的运动模型;
[0010] 根据所述运动模型建立所述当前图像块的运动信息列表;
[0011] 从所述运动信息列表中选择备选运动信息;根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;
[0012] 根据所述原始运动信息确定所述当前图像块的目标运动信息;
[0013] 根据所述原始运动信息或所述目标运动信息对编码比特流进行解码。
[0014] 本申请提供一种编码方法,应用于编码端,所述方法包括:
[0015] 获取当前图像块的运动模型;
[0016] 根据所述运动模型建立所述当前图像块的运动信息列表;
[0017] 从所述运动信息列表中选择备选运动信息;根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;
[0018] 根据所述原始运动信息确定所述当前图像块的目标运动信息;
[0019] 根据所述原始运动信息或所述目标运动信息对当前图像块进行编码。
[0020] 本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的方法步骤。
[0021] 本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的方法步骤。
[0022] 由以上技术方案可见,本申请实施例中,可以根据原始运动信息确定当前图像块的目标运动信息,并根据该原始运动信息或者该目标运动信息进行编码/解码,而不是直接根据原始运动信息进行编码/解码,从而提高运动信息的精度,解决预测质量不高,预测错误等问题,并提高编码性能/解码性能。此外,上述方式还可以可以提高编码效率/解码效率,并减少编码时延/解码时延。附图说明
[0023] 为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
[0024] 图1是本申请一种实施方式中的解码方法的流程图
[0025] 图2A-图2C是本申请一种实施方式中的候选图像块的流程图;
[0026] 图3A-图3E是本申请一种实施方式中的模板示意图;
[0027] 图4是本申请一种实施方式中的解码方法的流程图;
[0028] 图5是本申请一种实施方式中的编码方法的流程图;
[0029] 图6是本申请一种实施方式中的视频编码框架的示意图;
[0030] 图7是本申请一种实施方式中的解码装置的结构图;
[0031] 图8是本申请一种实施方式中的编码装置的结构图;
[0032] 图9是本申请一种实施方式中的解码端设备的硬件结构图;
[0033] 图10是本申请一种实施方式中的编码端设备的硬件结构图。

具体实施方式

[0034] 在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
[0035] 应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0036] 本申请实施例中提出一种解码、编码方法,该方法可以涉及如下概念:
[0037] 运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前帧视频图像的当前图像块与参考帧视频图像的参考图像块之间的相对位移,例如,当前帧的视频图像A与参考帧的视频图像B存在很强的时域相关性,在传输视频图像A的图像块A1(当前图像块)时,可以在视频图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(参考图像块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。其中,每个划分的图像块都有相应的运动矢量传送到解码端,如果对每个图像块的运动矢量进行独立编码和传输,特别是划分成小尺寸的大量图像块,则消耗相当多的比特。为降低用于编码运动矢量的比特数,可以利用相邻图像块之间的空间相关性,根据相邻已编码图像块的运动矢量对当前待编码图像块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。
[0038] 运动信息(Motion Information):由于运动矢量表示当前图像块与某个参考图像块的位置偏移,为了准确获取指向图像块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前图像块采用了参考帧图像列表中的第几个参考帧图像。此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
[0039] 模板(Template):在视频编码技术中,编码过程是按照逐个图像块进行的,在进行当前图像块的编码时,周围已编码图像块的重建信息是可被利用的。模板指当前图像块周围(时域或空域的相邻区域)固定形状的解码信息。在编码端和解码端,模板是完全一样的,因此,在编码端利用模板进行的一些操作,在解码端可获得完全一致的结果,也就是说,编码端基于模板推导的信息可以在解码端无损恢复,而不需要传递额外信息,从而进一步减少传输比特数。
[0040] 率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
[0041] 帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,可以利用当前图像块的空域相邻图像块(即与当前图像块处于同一帧图像)的重建像素值进行预测编码,而帧间预测是指,可以利用当前图像块的时域相邻图像块(与当前图像块处于不同帧图像)的重建像素值进行预测编码。
[0042] CTU(Coding Tree Unit,编码树单元),是编码端支持的最大编码单元、以及解码端支持的最大解码单元。进一步的,一帧图像可以先分成若干个不相交的CTU,每个CTU再基于实际情况确定是否进一步划分成更小的块。
[0043] 以下结合几个具体的实施例,对上述解码方法、编码方法进行详细说明。
[0044] 实施例1:
[0045] 参见图1所示,为解码方法的流程示意图,可以应用于解码端,可以包括:
[0046] 步骤101,获取当前图像块的运动模型。该运动模型可以包括但不限于:2参数的运动模型(如2参数的运动矢量)、4参数的运动模型(如4参数的仿射模型)、6参数的运动模型(如仿射模型)、8参数的运动模型(如投影模型)。
[0047] 步骤102,根据该运动模型建立当前图像块的运动信息列表。
[0048] 步骤103,从该运动信息列表中选择备选运动信息。
[0049] 步骤104,根据选择的备选运动信息和当前图像块的差值信息确定当前图像块的原始运动信息。具体的,步骤104之前,可以先获取当前图像块的差值信息,然后,才根据备选运动信息和差值信息确定当前图像块的原始运动信息。
[0050] 其中,该差值信息可以是运动信息差值,对此差值信息不做限制。
[0051] 步骤105,根据该原始运动信息确定当前图像块的目标运动信息。其中,该目标运动信息可以是一个与该原始运动信息不同的运动信息。
[0052] 步骤106,根据原始运动信息或目标运动信息对编码比特流进行解码。
[0053] 由以上技术方案可见,本申请实施例中,可以根据原始运动信息确定当前图像块的目标运动信息,并根据该原始运动信息或者该目标运动信息进行解码,而不是直接根据原始运动信息进行解码,从而提高运动信息的精度,解决预测质量不高,预测错误等问题,并提高解码性能,提高解码效率,减少解码时延。
[0054] 实施例2:
[0055] 针对步骤101,获取当前图像块的运动模型,可以包括但不限于:根据当前图像块的模式信息获取当前图像块的运动模型。具体的,该模式信息可以包括当前图像块的尺寸信息,基于此,若当前图像块的尺寸信息小于预设尺寸,则可以确定当前图像块的运动模型是2参数的运动模型。若当前图像块的尺寸信息不小于预设尺寸,则可以确定当前图像块的运动模型是4参数的运动模型或6参数的运动模型,当然,也可以为其它参数的运动模型;或者,若当前图像块的尺寸信息不小于预设尺寸,也可以采用其它方式确定当前图像块的运动模型,例如,通过编码比特流中的第一指示信息,获取当前图像块的运动模型。
[0056] 在另一个例子中,获取当前图像块的运动模型,可以包括但不限于:从编码比特流中获取第一指示信息,该第一指示信息用于指示运动模型;然后,可以根据该第一指示信息获取当前图像块的运动模型。例如,若编码端采用2参数的运动模型,则编码端在编码比特流中添加的第一指示信息是第一标识,若编码端采用4参数的运动模型,则编码端在编码比特流中添加的第一指示信息是第二标识,以此类推。基于此,解码端在从编码比特流中获取到第一指示信息后,若第一指示信息是第一标识,则确定运动模型是2参数的运动模型,若第一指示信息是第二标识,则确定运动模型是4参数的运动模型,以此类推。
[0057] 其中,针对编码端,为了确定当前图像块的运动模型,编码端可以根据当前图像块的模式信息获取当前图像块的运动模型,具体方式参见解码端,在此不再赘述。在另一个例子中,编码端可以依次使用每个运动模型(如2参数的运动模型、4参数的运动模型、6参数的运动模型)对比特流进行预编码,然后基于率失真原则确定每个运动模型的编码性能,然后将编码性能最优的运动模型,确定为当前图像块的运动模型。当然,上述方式只是确定运动模型的两个示例,编码端还可以采用其它方式确定运动模型,在此不再详加赘述。
[0058] 进一步的,编码端确定当前图像块的运动模型之后,就可以在编码比特流中添加第一指示信息,而第一指示信息可以用于当前图像块的运动模型。
[0059] 实施例3:
[0060] 步骤102,根据运动模型建立当前图像块的运动信息列表,可以包括:
[0061] 步骤1021,根据运动模型确定与当前图像块对应的候选图像块。
[0062] 步骤1022,根据候选图像块的运动信息确定当前图像块的备选运动信息。其中,候选图像块的运动信息包括固定参考帧对应的运动矢量、运动方向等。
[0063] 步骤1023,将当前图像块的备选运动信息添加到运动信息列表。
[0064] 其中,可以根据运动模型确定与当前图像块对应的多个候选图像块,基于每个候选图像块得到当前图像块的备选运动信息,这样,可以将多个备选运动信息添加到运动信息列表,即运动信息列表可以包括多个备选运动信息。
[0065] 实施例4:当运动模型为2参数的运动模型时,针对步骤1021,候选图像块包括以下之一或者任意组合:当前图像块所在当前帧中,与当前图像块相邻的图像块;当前图像块所在当前帧中,与当前图像块未相邻的图像块;当前图像块所在当前帧的相邻帧中的图像块,例如,当前图像块所在当前帧的相邻帧中,与当前图像块的位置相同的参考图像块,及该参考图像块的相邻图像块。
[0066] 针对步骤1022,可以将候选图像块的运动信息确定为当前图像块的备选运动信息,如将当前图像块所在当前帧中,与当前图像块相邻的图像块的运动信息(已解码运动信息),确定为当前图像块的备选运动信息;将当前图像块所在当前帧中,与当前图像块未相邻的图像块的运动信息(已解码运动信息),确定为当前图像块的备选运动信息;将当前图像块所在当前帧的相邻帧中的图像块的运动信息(已解码运动信息),确定为当前图像块的备选运动信息。
[0067] 此外,还可以对上述候选图像块的运动信息进行微调(如将运动矢量的x分量+1,将运动矢量的x分量-1,将运动矢量的y分量+1,将运动矢量的y分量-1等,对此不做限制),得到新的运动信息,并将这些新的运动信息确定为当前图像块的备选运动信息。还可以将默认运动信息确定为当前图像块的备选运动信息,如零矢量、零参考帧索引,运动方向为单向等默认运动信息。
[0068] 在一个例子中,上述候选图像块的运动信息,可以是候选图像块的原始运动信息,也可以是候选图像块的目标运动信息。例如,若候选图像块处于当前图像块的同一个解码单元,则可以根据候选图像块的原始运动信息确定当前图像块的备选运动信息;和/或,若候选图像块处于当前图像块的前一个解码单元,则可以根据候选图像块的原始运动信息确定当前图像块的备选运动信息。
[0069] 又例如,在对当前图像块进行解码时,可以获取候选图像块的目标运动信息,并根据候选图像块的目标运动信息确定当前图像块的备选运动信息。具体的,若已经存在候选图像块的目标运动信息,则可以获取候选图像块的目标运动信息,并根据根据候选图像块的目标运动信息(候选图像块的目标运动信息的确定方式,可以与当前图像块的目标运动信息的确定方式相同,在此不再赘述)确定当前图像块的备选运动信息;若未存在候选图像块的目标运动信息,则可以获取候选图像块的原始运动信息,并根据候选图像块的原始运动信息确定当前图像块的备选运动信息。
[0070] 其中,在对当前图像块进行解码时,若候选图像块采用了运动信息调整方法(即通过原始运动信息得到目标运动信息),且候选图像块的解码过程已经结束,则可以获取到候选图像块的目标运动信息,因此,将候选图像块的目标运动信息确定为当前图像块的备选运动信息。若候选图像块的解码过程未结束(如候选图像块处于当前图像块的同一个解码单元,候选图像块处于当前图像块的前一个解码单元时,解码过程可能未结束),则未获取到候选图像块的目标运动信息,因此,将候选图像块的原始运动信息确定为当前图像块的备选运动信息,不是将候选图像块的目标运动信息确定为当前图像块的备选运动信息。
[0071] 其中,上述解码单元可以为允许的最大解码块,如最大解码单元(CTU)。
[0072] 在一个例子中,在对候选图像块的运动信息进行微调,得到新的运动信息时,可以对候选图像块的原始运动信息进行调整,并根据调整后的运动信息确定当前图像块的备选运动信息(如将调整后的运动信息确定为备选运动信息);和/或,对候选图像块的目标运动信息进行调整,并根据调整后的运动信息确定当前图像块的备选运动信息(如将调整后的运动信息确定为备选运动信息)。
[0073] 其中,对候选图像块的运动信息进行微调,可以包括:对候选图像块的运动信息进行指定方向上的伸缩、进行加权等变换处理,对此不做限制。
[0074] 针对步骤1023,可以根据每个候选图像块与当前图像块的位置关系,确定每个候选图像块的运动信息对应的当前图像块的备选运动信息的添加顺序;进一步的,可以根据所述添加顺序,依次将每个备选运动信息添加到运动信息列表,直到所述运动信息列表中的备选运动信息的数量达到预设数量。
[0075] 例如,备选运动信息的添加顺序可以依次为:当前图像块所在当前帧中,与当前图像块相邻的图像块的运动信息对应的备选运动信息;当前图像块所在当前帧中,与当前图像块未相邻的图像块的运动信息对应的备选运动信息;当前图像块所在当前帧的相邻帧中的图像块的运动信息对应的备选运动信息;基于候选图像块的运动信息进行微调后获得的运动信息;默认运动信息。
[0076] 基于上述备选运动信息的添加顺序,可以依次将每个备选运动信息添加到运动信息列表,在将备选运动信息添加到运动信息列表时,可以与运动信息列表中的备选运动信息进行比较,若二者相同,则不将该备选运动信息添加到运动信息列表,若二者不同,则可以将该备选运动信息添加到运动信息列表,以尽可能防止运动信息列表中出现相同的备选运动信息;以此类推,直到运动信息列表中的备选运动信息的数量达到预设数量N,则不再添加备选运动信息。
[0077] 实施例5:运动模型为非2参数的运动模型,如运动模型为4参数的运动模型、或运动模型为6参数的运动模型、或运动模型为8参数的运动模型。则
[0078] 针对步骤1021,候选图像块可以包括但不限于:当前图像块所在当前帧中,与当前图像块相邻的图像块;其中,候选图像块的运动模型可以与当前图像块的运动模型相同,且候选图像块包括多个子块,不同子块对应相同或不同的运动信息。例如,若当前图像块的运动模型是4参数的运动模型,则可以从相邻图像块中选择4参数的运动模型的图像块,将选择的图像块作为候选图像块。
[0079] 针对步骤1022,可以从候选图像块的多个子块的运动信息中,选择与该运动模型的参数匹配数量的运动信息,并根据选择的运动信息确定当前图像块的备选运动信息。其中,若运动模型为4参数的运动模型,则运动模型的参数匹配数量为2;若运动模型为6参数的运动模型,则运动模型的参数匹配数量为3;若运动模型为8参数的运动模型,则运动模型的参数匹配数量为4;以此类推。
[0080] 在一个例子中,若运动模型为4参数的运动模型,从候选图像块的多个子块的运动信息中,选择与该运动模型的参数匹配数量的运动信息,可以包括:
[0081] 方式一、选择候选图像块的左上方子块(如左上子块)的运动信息和右上方子块(如右上角子块)的运动信息。参见图2A所示,图像块A0、图像块A1、图像块B0、图像块B1和图像块B2是候选图像块,可以从候选图像块的所有子块的运动信息中,选择左上方子块的运动信息和右上方子块的运动信息。
[0082] 方式二、针对位于当前图像块上侧的候选图像块,选择候选图像块的左下方子块(如左下角子块)的运动信息和右下方子块(如右下角子块)的运动信息;针对不位于当前图像块上侧的候选图像块,选择候选图像块的左上方子块(如左上角子块)的运动信息和右上方子块(如右上角子块)的运动信息。
[0083] 参见图2B所示,图像块B0、图像块B1和图像块B2是位于当前图像块上侧的候选图像块,可以从候选图像块的所有子块的运动信息中,选择左下方子块的运动信息和右下方子块的运动信息。参见图2B所示,图像块A0和图像块A1是不位于当前图像块上侧的候选图像块,可以从候选图像块的所有子块的运动信息中,选择左上方子块的运动信息和右上方子块的运动信息。其中,在候选图像块与当前图像块不在同一个解码单元(CTU)时,可以采用上述方式。
[0084] 方式三、针对位于当前图像块上侧的候选图像块,选择候选图像块的左下方子块(如左下角子块)的运动信息和右下方子块(如右下角子块)的运动信息;针对不位于当前图像块上侧的候选图像块,选择候选图像块的右上方子块(如右上角子块)的运动信息和右下方子块(如右下角子块)的运动信息。
[0085] 参见图2C所示,图像块B0、图像块B1和图像块B2是位于当前图像块上侧的候选图像块,可以从候选图像块的所有子块的运动信息中,选择左下方子块的运动信息和右下方子块的运动信息。参见图2C所示,图像块A0和图像块A1是不位于当前图像块上侧的候选图像块,可以从候选图像块的所有子块的运动信息中,选择右上方子块的运动信息和右下方子块的运动信息。其中,在候选图像块与当前图像块不在同一个解码单元(CTU)时,可以采用上述方式。
[0086] 当然,也可以按照上述三种方式的任意组合进行子块的选择。
[0087] 在一个例子中,若运动模型为6参数的运动模型,从候选图像块的多个子块的运动信息中,选择与该运动模型的参数匹配数量的运动信息,还可以包括:选择候选图像块的左上方子块(如左上角子块)的运动信息、右上方子块(如右上角子块)的运动信息、左下方子块(如左下角子块)的运动信息。此外,若运动模型为8参数的运动模型,从候选图像块的多个子块的运动信息中,选择与该运动模型的参数匹配数量的运动信息,还可以包括:选择候选图像块的左上方子块(如左上角子块)的运动信息、右上方子块(如右上角子块)的运动信息、左下方子块(如左下角子块)的运动信息、右下方子块(如右下角子块)的运动信息。当然,上述选择方式只是一个示例,对此不做限制。
[0088] 在一个例子中,若运动模型为4参数的运动模型,根据选择的运动信息确定当前图像块的备选运动信息,可以包括:从点(x,y)到点(vx,vy)的4参数仿射变换可以表示为:vx=ax-by+e;vy=bx+ay+f,(a,b,e,f)就是仿射模型参数,上述实施例中的4参数的运动模型,这个4参数就是(a,b,e,f)。基于此,可以利用候选图像块的两个子块的运动信息(即运动矢量)确定(a,b,e,f)这四个参数值,再将这四个参数值作为当前图像块的运动模型的参数。
[0089] 具体的,基于候选图像块(以图像块B2为例)的两个子块,可以通过如下方式得到当前图像块的4参数:针对图像块B2,若左下角的运动信息为(x0,y0),右左下角的运动信息为(x1,y1),假设图像块B2的宽为W,图像块B2的左下角的坐标为(0,0),则图像块B2的右下角的坐标为(w,0)。
[0090] 因此,左下角子块可以从(0,0)运动到(x0,y0),而右下角子块可以从(w,0)运动到(w+x1,y1),也就是说, 通过解上述方程,就可以得到(a,b,e,f)这四个参数值:
[0091] 实施例6:针对步骤103,从运动信息列表中选择备选运动信息,可以包括:根据运动信息索引从该运动信息列表中选择备选运动信息;其中,该运动信息索引可以是从编码比特流中获取的,或者,该运动信息索引可以是默认索引(如1)。例如,若运动信息索引是1,从运动信息列表中选择第一个备选运动信息。
[0092] 在一个例子中,可以直接将默认索引确定为运动信息索引。在另一个例子中,可以从编码比特流中获取第二指示信息,第二指示信息用于指示运动信息索引。例如,若编码端采用运动信息列表中的第2个备选运动信息,则编码端在编码比特流中添加的第二指示信息是2,表示运动信息列表中的第2个备选运动信息,以此类推。基于此,解码端在从编码比特流中获取到第二指示信息后,若第二指示信息是2,则确定运动信息索引是2,表示第2个备选运动信息。
[0093] 其中,针对编码端,为了确定运动信息索引,编码端可以直接将默认索引确定为运动信息索引;或者,编码端可以依次使用运动信息列表中的每个备选运动信息,对比特流进行预编码,然后,基于率失真原则确定每个备选运动信息的编码性能,然后,将编码性能最优的备选运动信息在运动信息列表中的位置,确定为运动信息索引。当然,上述方式只是两个示例,对此不做限制。
[0094] 实施例7:步骤104之前,还可以包括:获取当前图像块的差值信息,具体的,根据差值信息索引从差值列表中选择差值信息;该差值列表中配置有多个差值信息;该差值信息索引是从编码比特流中获取的,或者,差值信息索引是默认差值索引。例如,若差值信息索引是1,从差值列表中选择第一个差值信息。
[0095] 其中,可以根据经验在编码端/解码端配置差值列表,该差值列表配置有多个差值信息,该差值信息可以为0,即无差值,也可以不为0,对此不做限制。
[0096] 在一个例子中,可以直接将默认差值索引确定为差值信息索引。在另一个例子中,可以从编码比特流中获取第三指示信息,第三指示信息用于指示差值信息索引。例如,若编码端采用差值列表中的第1个差值信息,则编码端在编码比特流中添加的第三指示信息是1,表示差值列表中的第1个差值信息,以此类推。基于此,解码端在从编码比特流中获取到第三指示信息后,若第三指示信息是1,则确定差值信息索引是1,表示差值列表中的第1个差值信息。
[0097] 其中,针对编码端,为了确定差值信息索引,编码端可以直接将默认差值索引确定为差值信息索引;或者,编码端可以依次使用差值列表中的每个差值信息,对比特流进行预编码,然后,基于率失真原则确定每个差值信息的编码性能,然后,将编码性能最优的差值信息在差值列表中的位置,确定为差值信息索引。当然,上述差值信息索引的确定方式只是两个示例,对此不做限制。
[0098] 实施例8:针对步骤104,根据选择的备选运动信息和当前图像块的差值信息确定当前图像块的原始运动信息,可以包括:根据备选运动信息和第一权重,差值信息和第二权重,确定当前图像块的原始运动信息。具体的,通过备选运动信息和差值信息的线性加权,确定当前图像块的原始运动信息。例如,原始运动信息=a*备选运动信息+b*差值信息。a为第一权重,b为第二权重。
[0099] 其中,a和b的值可以实时调整,也可以是固定值,a和b的值可以根据经验配置或者训练得到。此外,a和b的值可以相等也可以不等。
[0100] 实施例9:针对步骤105,根据该原始运动信息确定当前图像块的目标运动信息,可以包括但不限于:步骤1051,获取当前图像块的模板;步骤1052,基于当前图像块的模板,以该原始运动信息为中心搜索目标运动信息。
[0101] 本实施例中,在得到原始运动信息后,可以不将原始运动信息作为当前图像块的最终运动信息,而是根据原始运动信息获取与原始运动信息不同的目标运动信息,目标运动信息是与当前图像块的运动信息最接近的,因此,可以将目标运动信息作为当前图像块的最终运动信息。显然,与“将原始运动信息作为当前图像块的最终运动信息”的方式相比,上述“将目标运动信息作为当前图像块的最终运动信息”的方式,可以解决预测质量不高,预测错误等问题。
[0102] 实施例10:针对步骤1051,获取当前图像块的模板,可以包括:
[0103] 方式一、利用当前图像块的原始运动信息获取当前图像块的模板。具体的,可以利用当前图像块的原始运动信息(如已解码运动信息),确定当前图像块的预测值;根据当前图像块的预测值,获取当前图像块的模板,例如,将当前图像块的预测值确定为当前图像块的模板。其中,在解码过程中,对每个图像块逐一解码,因此,可以利用当前图像块的已解码运动信息确定当前图像块的预测值,该预测值可以是当前图像块的重建信息和/或预测信息,该重建信息可以包括亮度值、色度值等,该预测信息可以是能够获取重建信息的中间值,若能够利用中间值A获取到亮度值,则中间值A是预测信息,对此不做限制。
[0104] 方式二、获取当前图像块的周围图像块(当前图像块的空域周围图像块或时域周围图像块,对此不做限制)的运动信息,并利用当前图像块的周围图像块的运动信息,获取当前图像块的模板。具体的,利用周围图像块的运动信息(如已解码运动信息),确定周围图像块的预测值;根据周围图像块的预测值,获取当前图像块的模板,如将周围图像块的预测值确定为当前图像块的模板。
[0105] 其中,在对当前图像块进行解码时,由于当前图像块的周围图像块已经完成解码,即周围图像块的运动信息为已知,因此,可以直接获取周围图像块的运动信息,如运动矢量和参考帧索引等,并利用周围图像块的运动信息确定周围图像块的预测值,该预测值可以是周围图像块的重建信息和/或预测信息,该重建信息可以包括亮度值、色度值等,该预测信息可以是能够获取重建信息的中间值,例如,若能够利用中间值A获取到亮度值,则中间值A是预测信息,对此不做限制。然后,将周围图像块的预测值确定为当前图像块的模板。
[0106] 其中,若周围图像块采用了运动信息调整方法(即通过原始运动信息得到目标运动信息),则周围图像块的运动信息是周围图像块的原始运动信息。
[0107] 方式三、获取当前图像块的周围图像块的运动信息,并利用当前图像块的周围图像块的运动信息,获取当前图像块的模板。具体的,当运动信息包括周围图像块的运动矢量和参考帧索引时,则根据该参考帧索引确定该周围图像块对应的参考帧图像;根据该运动矢量从该参考帧图像中获取与该周围图像块对应的参考图像块,并根据该参考图像块获取该当前图像块的模板。
[0108] 其中,若周围图像块采用了运动信息调整方法(即通过原始运动信息得到目标运动信息),则周围图像块的运动信息是周围图像块的运原始运动信息。
[0109] 在一个例子中,周围图像块可以包括M个第一周围图像块和N个第二周围图像块,M为大于或等于1的自然数,N为大于或等于0的自然数,或者,M为大于或等于0的自然数,N为大于或等于1的自然数;第一周围图像块为当前图像块上侧的周围图像块,第二周围图像块为当前图像块左侧的周围图像块。
[0110] 利用当前图像块的周围图像块的运动信息,获取当前图像块的模板,可以包括:根据M个第一周围图像块的运动矢量预测模式和运动信息,确定第一模板;根据N个第二周围图像块的运动矢量预测模式和运动信息,确定第二模板;将第一模板确定为当前图像块的模板;或者,将第二模板确定为当前图像块的模板;或者,将第一模板和第二模板拼接之后确定为当前图像块的模板。
[0111] 例如,当M为大于或等于1的自然数,N为0时,可以根据M个第一周围图像块的运动矢量预测模式和运动信息,确定第一模板,并将第一模板确定为当前图像块的模板。当N为大于或等于1的自然数,M为0时,可以根据N个第二周围图像块的运动矢量预测模式和运动信息,确定第二模板,并将第二模板确定为当前图像块的模板。当M为大于或等于1的自然数,N为大于或等于1的自然数,则可以根据M个第一周围图像块的运动矢量预测模式和运动信息,确定第一模板,根据N个第二周围图像块的运动矢量预测模式和运动信息,确定第二模板,将第一模板确定为当前图像块的模板;或将第二模板确定为当前图像块的模板;或将第一模板和第二模板拼接之后确定为当前图像块的模板。
[0112] 其中,第一周围图像块包括当前图像块上侧的相邻图像块和/或次邻图像块;相邻图像块的预测模式为帧间模式或者帧内模式;次邻图像块的预测模式为帧间模式。例如,第一周围图像块可以包括至少一个预测模式为帧间模式的相邻图像块,例如,当前图像块上侧的所有相邻图像块、或当前图像块上侧的第一个相邻图像块、或当前图像块上侧的任意一个或多个相邻图像块。此外,若当前图像块上侧的相邻图像块均为帧内模式时,则第一周围图像块还可以包括至少一个预测模式为帧间模式的次邻图像块,例如,当前图像块上侧的所有次邻图像块,或当前图像块上侧的第一个次邻图像块,或当前图像块上侧的任意一个或多个次邻图像块。此外,若当前图像块上侧存在帧内模式的相邻图像块时,则第一周围图像块还可以包括帧内模式的相邻图像块,例如,当前图像块上侧的第一个帧内模式的相邻图像块,当前图像块上侧的所有帧内模式的相邻图像块等。当然,上述只是第一周围图像块的示例,对此不做限制。
[0113] 其中,第二周围图像块包括当前图像块左侧的相邻图像块和/或次邻图像块;相邻图像块的预测模式为帧间模式或者帧内模式;次邻图像块的预测模式为帧间模式。例如,第二周围图像块可以包括至少一个预测模式为帧间模式的相邻图像块,例如,当前图像块左侧的所有相邻图像块、或当前图像块左侧的第一个相邻图像块、或当前图像块左侧的任意一个或多个相邻图像块。此外,若当前图像块左侧的相邻图像块均为帧内模式时,则第二周围图像块还可以包括至少一个预测模式为帧间模式的次邻图像块,例如,当前图像块左侧的所有次邻图像块,或当前图像块左侧的第一个次邻图像块,或当前图像块左侧的任意一个或多个次邻图像块。此外,若当前图像块左侧存在帧内模式的相邻图像块时,则第二周围图像块还可以包括帧内模式的相邻图像块,例如,当前图像块左侧的第一个帧内模式的相邻图像块,当前图像块左侧的所有帧内模式的相邻图像块等。当然,上述只是第二周围图像块的示例,对此不做限制。
[0114] 其中,当前图像块的相邻图像块包括但不限于:当前图像块的空域相邻图像块(即同一帧视频图像中的相邻图像块);或者,当前图像块的时域相邻图像块(即不同帧视频图像中的相邻图像块)。当前图像块的次邻图像块包括但不限于:当前图像块的空域次邻图像块(即同一帧视频图像中的次邻图像块);或者,当前图像块的时域次邻图像块(即不同帧视频图像中的次邻图像块)。
[0115] 在一个例子中,当M大于1时,则第一模板可以包括M个子模板或者P个子模板,且由M个子模板或者P个子模板拼接而成,P可以为帧间模式的第一周围图像块的数量,P小于或等于M。例如,当M个第一周围图像块均为帧间模式的周围图像块时,则第一模板包括M个子模板,由M个子模板拼接而成。当M个第一周围图像块包括P个帧间模式的周围图像块、并包括M-P个帧内模式的周围图像块时,则第一模板可以包括M个子模板(即每个周围图像块对应一个子模板),且由M个子模板拼接而成,或者,第一模板包括P个子模板(即P个帧间模式的周围图像块对应的P个子模板),且由P个子模板拼接而成。
[0116] 此外,当M等于1时,则第一模板可以包括第一子模板,该第一子模板可以是根据当前图像块上侧的首个周围图像块的运动矢量预测模式和运动信息确定的;或者,第一子模板可以是根据当前图像块上侧的任意一个周围图像块的运动矢量预测模式和运动信息确定的。其中,由于第一周围图像块包括至少一个预测模式为帧间模式的相邻图像块或次邻图像块,因此,M等于1时,第一模板包括的是帧间模式的相邻图像块或次邻图像块对应的第一子模板。
[0117] 运动信息可以包括第一周围图像块的运动矢量和参考帧索引,根据M个第一周围图像块的运动矢量预测模式和运动信息,确定第一模板,可以包括:
[0118] 情况一、针对M个第一周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧间模式时,则可以根据参考帧索引确定第i个周围图像块对应的参考帧图像;进一步的,还可以根据第i个周围图像块的运动矢量,从该参考帧图像中确定第i个周围图像块对应的参考图像块;其中,该参考图像块与第i个周围图像块的相对位置偏移,可以与第i个周围图像块的运动矢量相匹配;进一步的,还可以根据确定的参考图像块,获取尺寸为第一横向长度和第一纵向长度的图像块作为第一模板包括的第i个子模板。
[0119] 情况二、针对M个第一周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧内模式时,则可以将第i个周围图像块按照默认值(例如,默认像素值,默认值可以是根据经验预先配置的亮度值)进行填充。进一步的,基于默认值填充后的图像块,可以获取尺寸为第一横向长度和第一纵向长度的图像块作为第一模板包括的第i个子模板。
[0120] 情况三、针对M个第一周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧内模式时,则可以根据第i个周围图像块对应的参考帧索引,确定第i个周围图像块对应的参考帧图像;进一步的,可以根据第i个周围图像块对应的运动矢量,从该参考帧图像中确定第i个周围图像块对应的参考图像块,其中,该参考图像块与第i个周围图像块的相对位置偏移与第i个周围图像块对应的运动矢量相匹配(包含相等或近似相等);进一步,可以根据确定的参考图像块,获取尺寸为第一横向长度和第一纵向长度的图像块作为第一模板包括的第i个子模板;其中,第i个周围图像块对应的参考帧索引和运动矢量,是第i个周围图像块的相邻图像块的参考帧索引和运动矢量。
[0121] 其中,第一横向长度与第一周围图像块的横向长度满足第一比例关系(如1:1,1:2,2:1等,对此不做限制),或者与当前图像块的横向长度满足第二比例关系(如1:1,1:2,2:
1等),或者等于第一预设长度(根据经验配置)。第一纵向长度与第一周围图像块的纵向长度满足第三比例关系(如1:1,1:2,2:1等),或者与当前图像块的纵向长度满足第四比例关系(如1:1,1:2,2:1等),或者等于第二预设长度(即根据经验配置的长度)。此外,第一比例关系、第二比例关系、第三比例关系和第四比例关系之间可以设置为相同,也可以不同。第一预设长度和第二预设长度可以设置为相同,也可以不同。
[0122] 在一个例子中,当N大于1时,则第二模板可以包括N个子模板或者R个子模板,且由N个子模板或者R个子模板拼接而成,R可以为帧间模式的第二周围图像块的数量,R小于或等于N。例如,当N个第二周围图像块均为帧间模式的周围图像块时,第二模板包括N个子模板,由N个子模板拼接而成。当N个第二周围图像块包括R个帧间模式的周围图像块、并包括N-R个帧内模式的周围图像块,则第二模板可以包括N个子模板(即每个周围图像块对应一个子模板),且由N个子模板拼接而成,或者,第二模板包括R个子模板(即R个帧间模式的周围图像块对应的R个子模板),且由R个子模板拼接而成。
[0123] 此外,当N等于1时,则第二模板可以包括第二子模板,该第二子模板可以是根据当前图像块左侧的首个周围图像块的运动矢量预测模式和运动信息确定的;或者,第二子模板可以是根据当前图像块左侧的任意一个周围图像块的运动矢量预测模式和运动信息确定的。其中,由于第二周围图像块包括至少一个预测模式为帧间模式的相邻图像块或次邻图像块,因此,N等于1时,第二模板包括的是帧间模式的相邻图像块或次邻图像块对应的第二子模板。
[0124] 运动信息可以包括第二周围图像块的运动矢量和参考帧索引,根据N个第二周围图像块的运动矢量预测模式和运动信息,确定第二模板,可以包括:
[0125] 情况一、针对N个第二周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧间模式时,则可以根据参考帧索引确定第i个周围图像块对应的参考帧图像;进一步的,还可以根据第i个周围图像块的运动矢量,从该参考帧图像中确定第i个周围图像块对应的参考图像块;其中,该参考图像块与第i个周围图像块的相对位置偏移,可以与第i个周围图像块的运动矢量相匹配;进一步的,还可以根据确定的参考图像块,获取尺寸为第二横向长度和第二纵向长度的图像块作为第二模板包括的第i个子模板。
[0126] 情况二、针对N个第二周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧内模式时,则可以将第i个周围图像块按照默认值(例如,默认像素值,默认值可以是根据经验预先配置的亮度值)进行填充。进一步的,基于默认值填充后的图像块,则可以获取尺寸为第二横向长度和第二纵向长度的图像块作为第二模板包括的第i个子模板。
[0127] 情况三、针对N个第二周围图像块中的第i个周围图像块,当确定第i个周围图像块的运动矢量预测模式为帧内模式时,则可以根据第i个周围图像块对应的参考帧索引,确定第i个周围图像块对应的参考帧图像;进一步的,可以根据第i个周围图像块对应的运动矢量,从该参考帧图像中确定第i个周围图像块对应的参考图像块,其中,该参考图像块与第i个周围图像块的相对位置偏移与第i个周围图像块对应的运动矢量相匹配(包含相等或近似相等);进一步的,可以根据确定的参考图像块,获取尺寸为第二横向长度和第二纵向长度的图像块作为第一模板包括的第i个子模板;其中,第i个周围图像块对应的参考帧索引和运动矢量,是第i个周围图像块的相邻图像块的参考帧索引和运动矢量。
[0128] 其中,第二横向长度与第二周围图像块的横向长度满足第五比例关系(如1:1,1:2,2:1等,对此不做限制),或者与当前图像块的横向长度满足第六比例关系(如1:1,1:2,2:
1等),或者等于第三预设长度(根据经验配置)。第二纵向长度与第二周围图像块的纵向长度满足第七比例关系(如1:1,1:2,2:1等),或者与当前图像块的纵向长度满足第八比例关系(如1:1,1:2,2:1等),或者等于第四预设长度(即根据经验配置的长度)。此外,第五比例关系、第六比例关系、第七比例关系和第八比例关系之间可以设置为相同,也可以不同。第三预设长度和第四预设长度可以设置为相同,也可以不同。
[0129] 以下结合几个具体应用场景,对当前图像块的模板进行详细说明。
[0130] 应用场景1:参见图3A所示,周围图像块可以包括当前图像块上侧的所有帧间模式的相邻图像块,当前图像块左侧的所有帧间模式的相邻图像块。
[0131] 对于当前图像块A1,若左侧存在帧间模式的相邻图像块,例如,图像块A3和图像块A4,则可以将帧间模式的图像块A3和图像块A4确定为当前图像块A1的周围图像块。类似的,若上侧存在帧间模式的相邻图像块,例如,图像块A2,则可以将帧间模式的图像块A2确定为当前图像块A1的周围图像块。
[0132] 在周围图像块为图像块A2、A3和A4时,根据图像块A2的运动信息、图像块A3的运动信息和图像块A4的运动信息,获取当前图像块A1的模板。针对图像块A2,根据参考帧索引确定图像块A2对应的参考帧图像,从参考帧图像中选取与图像块A2对应的图像块B2,根据图像块A2的运动矢量对图像块B2进行移动,得到与图像块A2对应的参考图像块B2’,可以得到图像块A3对应的参考图像块B3’,图像块A4对应的参考图像块B4’,参见图3B所示。根据参考图像块B2’、参考图像块B3’和参考图像块B4’获得当前图像块A1的模板。
[0133] 在一个例子中,假设当前图像块A1上侧模板的横向长度为W,纵向长度为S,W的取值可以根据经验配置,S的取值可以根据经验配置,对于W和S的取值均不做限制。例如,W可以为当前图像块A1的横向长度,为周围图像块A2的横向长度,为当前图像块A1的横向长度的2倍等,S可以为周围图像块A2的纵向长度,为周围图像块A2的纵向长度的1/3等。在此基础上,参见图3C所示,为参考图像块B2’对应的模板示意图。在图3C中,是以W为周围图像块A2的横向长度为例,即W为参考图像块B2’的横向长度;是以S为周围图像块A2的纵向长度的1/3为例,即S为参考图像块B2’的纵向长度的1/3。
[0134] 假设当前图像块A1左侧模板的横向长度为R,纵向长度为H,R的取值可以根据经验配置,H的取值可以根据经验配置,对于R和H的取值均不做限制。例如,H可以为当前图像块A1的纵向长度,为周围图像块A3的纵向长度,R可以为周围图像块A3的横向长度,为周围图像块A3的横向长度的1/3等。在此基础上,参见图3C所示,为参考图像块B3’对应的模板示意图,是以H为周围图像块A3的纵向长度为例,以R为周围图像块A3的横向长度的1/3为例。
[0135] 同理,参考图像块B4’对应的模板页可以参见图3C所示,在此不再赘述。
[0136] 在一个例子中,假设当前图像块上侧有M个不同模式的周围图像块,则针对第i个周围图像块,假设其横向长度为wi,则判断该周围图像块的预测模式。
[0137] 若为帧内模式,则不再生成子模板,或者,按照默认值(如默认像素值,可以是根据经验预先配置的亮度值)填充,作为上侧模板的第i个子模板。
[0138] 若为帧间模式,则可以获取第i个周围图像块的运动信息(如运动矢量和参考帧索引等),基于该运动矢量和该参考帧索引生成横向长度为wi,纵向长度为S的模板,作为上侧模板的第i个子模板。具体的,若运动矢量为MV,参考帧索引为idx,则可以在当前帧的第idx个参考图像中找到相对位置偏移为MV的横向长度为wi,纵向长度为S的矩形块,作为上侧模板的第i个子模板。
[0139] 假设当前图像块左侧有N个不同模式的周围图像块,则针对第i个周围图像块,假设纵向长度为hi,横向长度为R,则判断该周围图像块的预测模式。
[0140] 若为帧内模式,则不再生成子模板,或者,按照默认值(如默认像素值,可以是根据经验预先配置的亮度值)填充,作为左侧模板的第i个子模板。
[0141] 若为帧间模式,则可以获取第i个周围图像块的运动信息(如运动矢量和参考帧索引等),基于该运动矢量和该参考帧索引生成横向长度为R,纵向长度为hi的模板,作为左侧模板的第i个子模板。具体的,若运动矢量为MV,参考帧索引为idx,则可以在当前帧的第idx个参考图像中找到相对位置偏移为MV的横向长度为R,纵向长度为hi的矩形块,作为左侧模板的第i个子模板。
[0142] 进一步的,上侧模板可以由上侧的所有子模板拼接而成,左侧模板可以由左侧的所有子模板拼接而成,上侧模板和左侧模板就拼接成当前图像块的模板。
[0143] 应用场景2:参见图3D所示,周围图像块可以包括当前图像块上侧的第一个帧间模式的相邻图像块,当前图像块左侧的第一个帧间模式的相邻图像块。
[0144] 对于当前图像块A1,若左侧的第一个图像块A3是帧间模式,则可以将图像块A3确定为当前图像块A1的周围图像块。若上侧的第一个图像块A2是帧间模式,则可以将图像块A2确定为当前图像块A1的周围图像块。在周围图像块为图像块A2和图像块A3时,根据图像块A2的运动信息和图像块A3的运动信息,获取当前图像块A1的模板,获取方式参见应用场景1,在此不再赘述。
[0145] 在一个例子中,假设当前图像块A1上侧模板的横向长度为W,纵向长度为S,W的取值可以根据经验配置,S的取值可以根据经验配置,对于W和S的取值均不做限制。例如,W可以为当前图像块A1的横向长度,可以为周围图像块A2的横向长度,S可以为周围图像块A2的纵向长度,为周围图像块A2的纵向长度的1/3等。参见图3E所示,为参考图像块B2’对应的模板示意图。
[0146] 假设当前图像块A1左侧模板的横向长度为R,纵向长度为H,R的取值可以根据经验配置,H的取值可以根据经验配置,对于R和H的取值均不做限制。例如,H可以为当前图像块A1的纵向长度,可以为周围图像块A3的纵向长度等,R可以为周围图像块A3的横向长度,可以为周围图像块A3的横向长度的1/3等。在此基础上,参见图3E所示,为参考图像块B3’对应的模板示意图。
[0147] 当然,上述应用场景1和应用场景2只是两个示例,对此不做限制。例如,周围图像块可以包括当前图像块上侧的帧间模式的相邻图像块、当前图像块上侧的帧间模式的次邻图像块(即相邻图像块为帧内模式时,选择该相邻图像块对应的与当前图像块是次邻的图像块)、当前图像块左侧的帧间模式的相邻图像块、当前图像块左侧的次邻图像块。又例如,若当前图像块上侧的第一个相邻图像块为帧内模式,且该第一个相邻图像块上侧的图像块为帧间模式,则周围图像块可以包括当前图像块上侧的帧间模式的次邻图像块;若当前图像块左侧的第一个相邻图像块为帧内模式,且该第一个相邻图像块左侧的图像块为帧间模式,则周围图像块可以包括当前图像块左侧的帧间模式的次邻图像块。
[0148] 实施例11:针对步骤1052,在一个实施方式中,基于当前图像块的模板,以该原始运动信息为中心搜索目标运动信息,可以包括但不限于如下步骤:
[0149] 步骤1052A1,将原始运动信息确定为中心运动信息。
[0150] 步骤1052A2,确定与中心运动信息对应的边缘运动信息。
[0151] 其中,该边缘运动信息可以与该中心运动信息不同。
[0152] 在一个例子中,该原始运动信息可以包括原始运动矢量,该中心运动信息可以包括中心运动矢量,该边缘运动信息可以包括边缘运动矢量。
[0153] 其中,确定与该中心运动矢量对应的边缘运动矢量,可以包括:将该中心运动矢量(x,y)向不同方向偏移S,从而可以得到不同方向的边缘运动矢量(x-S,y)、边缘运动矢量(x+S,y)、边缘运动矢量(x,y+S)、边缘运动矢量(x,y-S)。例如,在平方向上,可以将中心运动矢量(x,y)向左偏移S,得到边缘运动矢量(x-S,y);在水平方向上,可以将中心运动矢量(x,y)向右偏移S,得到边缘运动矢量(x+S,y);在垂直方向上,可以将中心运动矢量(x,y)向上偏移S,得到边缘运动矢量(x,y+S);在垂直方向上,可以将中心运动矢量(x,y)向下偏移S,得到边缘运动矢量(x,y-S)。
[0154] 其中,S的初始值可以根据经验配置,如可以为2、4、8、16等。
[0155] 假设中心运动矢量为(3,3),S为4,则边缘运动矢量为边缘运动矢量(7,3)、边缘运动矢量(3,7)、边缘运动矢量(-1,3)、边缘运动矢量(3,-1)。
[0156] 在上述实施例中,为了搜索与中心运动信息对应的边缘运动信息,是以中心运动信息为中心,进行上、下、左、右偏移的搜索;在另一个例子中,可以不进行无方向的搜索,而是沿着原始运动信息的方向进行搜索。
[0157] 步骤1052A3,根据当前图像块的模板获得中心运动信息(中心运动矢量)的预测性能,根据当前图像块模板获得边缘运动信息(边缘运动矢量)的预测性能。
[0158] 情况一,根据当前图像块的模板获得中心运动矢量的预测性能,可以包括但不限于:根据当前图像块的模板的参数信息以及第一目标参考块的参数信息,确定中心运动矢量的预测性能,该第一目标参考块可以为所述模板对应的参考图像块基于中心运动矢量进行偏移之后获得的图像块。具体的,可以根据模板的参数信息和第一目标参考块的参数信息,确定中心运动矢量的预测性能。
[0159] 其中,上述参数信息可以为亮度值;或者,可以为亮度值和色度值。
[0160] 假设参数信息为亮度值,为了确定中心运动矢量的预测性能,可以先获取当前图像块的模板的亮度值、第一目标参考块的亮度值。例如,在得到当前图像块的模板后,可以获取模板的每个像素点的亮度值,并获取该模板的参考图像块,假设中心运动矢量为(3,3),则可以利用中心运动矢量(3,3)移动该参考图像块,得到与参考图像块对应的图像块X(如对参考图像块向右移动3个像素点,向上移动3个像素点,将处理后的图像块记为图像块X),而图像块X就是第一目标参考块,且可以获取图像块X的每个像素点的亮度值。
[0161] 基于模板的每个像素点的亮度值、图像块X的每个像素点的亮度值,可以采用如下公式确定中心运动矢量的预测性能: SAD是可用绝对差总和,用于表示中心运动矢量的预测性能。TMi表示模板的第i个像素点的亮度值,TMPi表示图像块X的第i个像素点的亮度值,M表示像素点的总数量。
[0162] 假设参数信息为亮度值和色度值,则利用如下公式 确定中心运动矢量的亮度值预测性能SAD,并采用如下公式确定中心运动矢量的色度值预测性能:
亮度值预测性能SAD和色度值预测性能CSAD的平均值,就是中心
运动矢量的预测性能。其中,CSAD是可用绝对差总和,用于表示中心运动矢量的色度值预测性能,CTMi表示模板第i个像素点的色度值,CTMPi表示图像块X第i个像素点的色度值,Mc表示像素点总数量。
[0163] 情况二,根据当前图像块的模板获得边缘运动矢量的预测性能,可以包括但不限于:根据当前图像块的模板的参数信息以及第二目标参考块的参数信息,确定边缘运动矢量的预测性能,该第二目标参考块可以为模板对应的参考图像块基于边缘运动矢量进行偏移之后获得的图像块。具体的,可以根据模板的参数信息和第二目标参考块的参数信息,确定边缘运动矢量的预测性能。
[0164] 其中,上述参数信息可以为亮度值;或者,可以为亮度值和色度值。
[0165] 情况二与情况一类似,区别在于:在情况一中,利用边缘运动矢量移动模板的参考图像块,得到第二目标参考块,并利用第二目标参考块获得边缘运动矢量的预测性能,而情况二中,利用中心运动矢量移动模板的参考图像块,得到第一目标参考块,并利用第一目标参考块获得中心运动矢量的预测性能。
[0166] 步骤1052A4,根据中心运动信息的预测性能和边缘运动信息的预测性能,从中心运动信息和边缘运动信息中确定目标运动信息(如目标运动矢量)。
[0167] 具体的,可以从中心运动矢量和边缘运动矢量中选择预测性能最优的运动矢量;当该预测性能最优的运动矢量不是原始运动矢量时,则可以将该预测性能最优的运动矢量确定为目标运动矢量;当该预测性能最优的运动矢量是原始运动矢量时,则可以从中心运动矢量和边缘运动矢量中选择预测性能次优的运动矢量,并将预测性能次优的运动矢量确定为目标运动矢量。
[0168] 实施例12:针对步骤1052,在另一个实施方式中,基于当前图像块的模板,以该原始运动信息为中心搜索目标运动信息,可以包括但不限于如下步骤:
[0169] 步骤1052B1,将原始运动信息确定为中心运动信息。
[0170] 步骤1052B2,确定与中心运动信息对应的边缘运动信息。
[0171] 步骤1052B3,根据当前图像块的模板获得中心运动信息的预测性能,并根据当前图像块的模板获得边缘运动信息的预测性能。
[0172] 步骤1052B1-步骤1052B3参见步骤1052A1-步骤1052A3,在此不再赘述。
[0173] 步骤1052B4,判断是否满足目标运动信息的迭代结束条件。
[0174] 如果是,则可以执行步骤1052B6;如果否,则可以执行步骤1052B5。
[0175] 其中,迭代结束条件可以包括但不限于:迭代次数达到次数阈值,或者,执行时间达到时间阈值,或者,参数S已经被修改为预设数值,如1。
[0176] 当然,上述只是迭代结束条件的几个示例,对此迭代结束条件不做限制。
[0177] 步骤1052B5,从中心运动信息和边缘运动信息中选择预测性能最优的运动信息,将预测性能最优的运动信息确定为中心运动信息,返回步骤1052B2。
[0178] 其中,当第一次执行步骤1052B2时,参数S的取值可以为初始值,如16。再次执行步骤1052B2时,对参数S取值进行调整,如调整为上次参数S减去2,或调整为上次参数S的一半,对此不做限制,只要小于上次参数S即可,后续以调整为上次参数S的一半为例。因此,当第二次执行步骤1052B2时,则参数S的取值为8;当第三次执行步骤1052B2时,则参数S的取值为4;以此类推。
[0179] 其中,在对参数S的取值进行调整后,判断调整后的参数S是否小于等于预设数值,如1。如果否,则基于调整后的参数S执行步骤1052B2,对此过程不再赘述。如果是,则将参数S的取值设置为1,并基于该参数S(即取值1)执行步骤1052B2,而在执行到步骤1052B4时,判断结果为满足迭代结束条件。
[0180] 步骤1052B6,根据中心运动信息的预测性能和边缘运动信息的预测性能,从中心运动信息和边缘运动信息中确定目标运动信息(如目标运动矢量)。
[0181] 其中,步骤1052B6的处理可以参见步骤1052A4,在此不再重复赘述。
[0182] 实施例13:针对步骤105,当前图像块为双向帧间预测块,所述原始运动信息包括当前图像块对应的第一参考帧和第二参考帧,以及第一参考帧对应的第一运动矢量、第二参考帧对应的第二运动矢量;参见图4所示,为解码方法的流程图,针对根据原始运动信息确定当前图像块的目标运动信息,可以包括:
[0183] 步骤401,根据第一运动矢量从第一参考帧中获取与当前图像块对应的第一初始参考块(第一参考帧中的图像块),根据第二运动矢量从第二参考帧中获取与当前图像块对应的第二初始参考块(第二参考帧中的图像块)。
[0184] 步骤402,基于第一初始参考块和第二初始参考块的相似度,在第一参考帧中,以第一运动矢量为中心,按照多个偏移方向和偏移量搜索第一目标参考块(第一参考帧中的图像块),在第二参考帧中,以第二运动矢量为中心,按照多个偏移方向和偏移量搜索第二目标参考块(第二参考帧中的图像块)。其中,第一目标参考块和第二目标参考块的相似度满足预设要求。
[0185] 在一个例子中,第一初始参考块和第二初始参考块的相似度可以通过以下方式确定:采用双线性插值方式确定第一初始参考块的预测值和第二初始参考块的预测值;获取第一初始参考块的预测值和第二初始参考块的预测值的下采样处理结果,基于所述下采样处理结果,确定第一初始参考块和第二初始参考块的SAD(sum of abstract difference,绝对差总和)或MRSAD(mean removed sum of abstract difference,去均值绝对误差和),基于SAD或MRSAD确定第一初始参考块和第二初始参考块的相似度,也就是说,所述SAD或MRSAD可以是所述相似度。
[0186] 为了搜索第一目标参考块和第二目标参考块,可以采用如下方式:
[0187] 将第一运动矢量确定为第一中心运动矢量,并将第二运动矢量确定为第二中心运动矢量;然后,确定与第一中心运动矢量对应的第一边缘运动矢量,并确定与第二中心运动矢量对应的第二边缘运动矢量。然后,根据第一中心运动矢量从第一参考帧中确定当前图像块对应的第一初始参考块,确定第一初始参考块的第一预测值。根据第二中心运动矢量从第二参考帧中确定当前图像块对应的第二初始参考块,确定第二初始参考块的第二预测值。根据第一边缘运动矢量从第一参考帧中确定当前图像块对应的第三初始参考块,确定第三初始参考块的第三预测值。根据第二边缘运动矢量从第二参考帧中确定当前图像块对应的第四初始参考块,确定第四初始参考块的第四预测值。
[0188] 进一步的,可以根据第一预测值与第二预测值确定第一相似度,并根据第三预测值与第四预测值,确定第二相似度。然后,可以根据第一相似度和第二相似度,确定第一目标参考块和第二目标参考块。具体的,若第一相似度高于第二相似度,则将第一初始参考块确定为第一目标参考块,将第二初始参考块确定为第二目标参考块;若该第二相似度高于该第一相似度,则可以将第三初始参考块确定为第一目标参考块,将第四初始参考块确定为第二目标参考块。
[0189] 在一个例子中,在根据第一相似度和第二相似度,确定第一目标参考块和第二目标参考块之前,还可以判断是否满足结束条件(如迭代次数达到次数阈值,或执行时间达到时间阈值等);如果是,则可以执行根据第一相似度和第二相似度,确定第一目标参考块和第二目标参考块的步骤;如果否,若第一相似度高于第二相似度,则可以执行确定与第一中心运动矢量对应的第一边缘运动矢量、与第二中心运动矢量对应的第二边缘运动矢量的步骤;若第二相似度高于第一相似度,则可以将第一边缘运动矢量确定为第一中心运动矢量,将第二边缘运动矢量确定为第二中心运动矢量,并执行确定与第一中心运动矢量对应的第一边缘运动矢量、与第二中心运动矢量对应的第二边缘运动矢量的步骤。
[0190] 在上述实施例中,第一相似度可以包括但不限于SAD或者MRSAD,第二相似度可以包括但不限于为SAD或MRSAD。
[0191] 在上述实施例中,根据第一预测值与第二预测值,确定第一相似度,包括:可以对第一预测值和第二预测值进行下采样,并利用下采样后的第一预测值和下采样后的第二预测值确定第一相似度;根据第三预测值与第四预测值,确定第二相似度,包括:可以对第三预测值和第四预测值进行下采样,利用下采样后的第三预测值和下采样后的第四预测值确定第二相似度。
[0192] 在上述实施例中,可以采用水平和竖直抽头数均小于等于N的插值策略(N优选为2(双线性插值),当然,N也可以为其它数值,对此不做限制)确定第一初始参考块的对应的第一预测值;可以采用水平和竖直抽头数均小于等于N的插值策略确定第二初始参考块的对应的第二预测值;可以采用水平和竖直抽头数均小于等于N的插值策略确定第三初始参考块的对应的第三预测值;可以采用水平和竖直抽头数均小于等于N的插值策略确定第四初始参考块的对应的第四预测值。
[0193] 在上述实施例中,确定与第一中心运动矢量对应的第一边缘运动矢量、与第二中心运动矢量对应的第二边缘运动矢量,可以包括:方式1:对第一中心运动矢量进行偏移处理(包括方向和偏移量),得到第一边缘运动矢量;对第二中心运动矢量进行偏移处理,得到第二边缘运动矢量。方式2:对第一中心运动矢量进行偏移处理,得到第一边缘运动矢量;根据第一边缘运动矢量与第一中心运动矢量的差值,推导第二边缘运动矢量与第二中心运动矢量的差值,利用该差值与第二中心运动矢量,确定第二边缘运动矢量;例如,若第一边缘运动矢量与第一中心运动矢量对应差值A,则第二边缘运动矢量与第二中心运动矢量是差值A,因此,第二边缘运动矢量为第二中心运动矢量与差值A的和;又例如,若第一边缘运动矢量与第一中心运动矢量对应差值A,则第二边缘运动矢量与第二中心运动矢量是-1*差值A,因此,第二边缘运动矢量为第二中心运动矢量与差值A的差。
[0194] 步骤403,将第一目标参考块的运动信息确定为当前图像块的目标运动信息,并将第二目标参考块的运动信息确定为当前图像块的目标运动信息。
[0195] 实施例14:当前图像块可以存在原始运动信息M,该原始运动信息M可以包括第一运动矢量M1和第二运动矢量M2。其中,该第一运动矢量M1可以对应参考帧A1,该第二运动矢量M2可以对应参考帧A2。
[0196] 将第一运动矢量M1确定为第一中心运动矢量T1,将第二运动矢量M2确定为第二中心运动矢量T2。将第一中心运动矢量T1向某方向偏移S,得到第一边缘运动矢量W1,将第二中心运动矢量T2向某方向偏移S,得到第二边缘运动矢量W2;当然,上述只是确定边缘运动信息的示例,对此不做限制。
[0197] 其中,可以根据第一中心运动矢量T1从参考帧A1中确定当前图像块对应的第一初始参考块,并确定该第一初始参考块的第一预测值。其中,可以采用水平和竖直抽头数均小于等于N的插值策略确定第一初始参考块的第一预测值,即第一初始参考块中的每个像素点的第一预测值(如像素值,可以是亮度值、色素值等);具体的,搜索若为分像素搜索,即搜索的最小精度小于1个像素,则第一初始参考块中的像素点可能不是整数像素点,如0.75等,因此,为了获知这个像素点的像素值,就可以采用水平和竖直抽头数均小于N的插值策略,例如,若水平和竖直抽头数均为2,则上述插值策略是双线性插值策略,也就是说,可以采用双线性插值策略确定像素点0.75的第一预测值(如像素值)。例如,可以利用像素点0.75四周的四个真实存在的像素值来决定第一预测值。
[0198] 其中,可以根据第二中心运动矢量T2从参考帧A2中确定当前图像块对应的第二初始参考块,并确定该第二初始参考块的第二预测值。根据第一边缘运动矢量W1从参考帧A1中确定当前图像块对应的第三初始参考块,并确定该第三初始参考块的第三预测值。根据第二边缘运动矢量W2从参考帧A2中确定当前图像块对应的第四初始参考块,并确定该第四初始参考块的第四预测值。
[0199] 进一步的,可以根据第一预测值与第二预测值确定相似度1,并根据第三预测值与第四预测值确定相似度2。在确定相似度1和相似度2时,若相似度1和相似度2为SAD,针对第一中间图像块中的每个像素点(如P1-P100)和第二中间图像块中的每个像素点(如Q1-Q100),则采用如下方式确定相似度1:
[0200] 首先,可以对像素点P1-P100的预测值进行下采样,并对像素点Q1-Q100的预测值进行下采样,例如,若下采样率为1,则下采样的结果是像素点P1-P100的预测值、像素点Q1-Q100的预测值;若下采样率为2,则下采样的结果是像素点P1-P50的预测值、像素点Q1-Q50的预测值;若下采样率为4,则下采样的结果是像素点P1-P25的预测值、像素点Q1-Q25的预测值;以此类推。
[0201] 假设下采样的结果是像素点P1-P25的预测值、像素点Q1-Q25的预测值,则可以计算P1的预测值与Q1的预测值的差值的绝对值,如X1,计算P2的预测值与Q2的预测值的差值的绝对值,如X2,以此类推,计算P25的预测值与Q25的预测值的差值的绝对值,如X25,然后,对X1、X2...X25取平均值,这个平均值就是SAD,也就是相似度1。同理,可以采用上述方式确定相似度2。
[0202] 在确定相似度1和相似度2时,若相似度1和相似度2为MRSAD,针对第一中间图像块中的每个像素点(如P1-P100)和第二中间图像块中的每个像素点(如Q1-Q100),则采用如下方式确定相似度1:首先,对像素点P1-P100的预测值进行下采样,并对像素点Q1-Q100的预测值进行下采样,例如,若下采样率为4,则下采样的结果是像素点P1-P25的预测值、像素点Q1-Q25的预测值。
[0203] 确定P1-P25的预测值的均值A,确定Q1-Q25的预测值的均值B;计算P1的预测值与均值A的差值C1,Q1的预测值与均值B的差值D1,并计算差值C1与差值D2的差值的绝对值,如Y1,以此类推,计算P25的预测值与均值A的差值C25,Q25的预测值与均值B的差值D25,并计算差值C25与差值D25的差值的绝对值,如Y25,然后,对Y1、Y2...Y25取平均值,这个平均值就是MRSAD,也就是相似度1。同理,可以采用上述方式确定相似度2。
[0204] 在确定出相似度1和相似度2后,判断是否满足结束条件;如果否,若相似度1高于相似度2(相似度的值越小,则相似度越高),则根据第一中心运动矢量T1重新搜索第一边缘运动矢量W3(与上述第一边缘运动矢量W1不同),并根据第一中心运动矢量T2重新搜索第二边缘运动矢量W4(与上述第二边缘运动矢量W2不同),基于第一中心运动矢量T1、第一边缘运动矢量W3、第一中心运动矢量T2、第二边缘运动矢量W4重新执行上述步骤,在此不再赘述。若相似度2高于相似度1,则将第一边缘运动矢量W1确定为第一中心运动矢量T3,将第二边缘运动矢量W2确定为第二中心运动矢量T4,根据第一中心运动矢量T3重新搜索第一边缘运动矢量W5,根据第二中心运动矢量T4重新搜索第二边缘运动矢量W6,基于第一中心运动矢量T3、第一边缘运动矢量W5、第一中心运动矢量T4、第二边缘运动矢量W6重新执行上述步骤,在此不再赘述。
[0205] 在判断是否满足结束条件后,如果是,则根据第一相似度和第二相似度(如相似度1和相似度2)确定第一目标参考块和第二目标参考块。若相似度1高于相似度2,则可以将第一初始参考块确定为第一目标参考块,并将第二初始参考块确定为第二目标参考块;若相似度2高于相似度1,则可以将第三初始参考块确定为第一目标参考块,并将第四初始参考块确定为第二目标参考块。
[0206] 实施例15:针对步骤105,原始运动信息包括当前图像块对应的第一原始运动矢量和第二原始运动矢量;所述根据原始运动信息确定当前图像块的目标运动信息,可以包括但不限于:根据该第一原始运动矢量确定当前图像块的第一目标运动矢量,具体确定方式参见上述实施例;然后,确定第一原始运动矢量与第一目标运动矢量的差值;根据第二原始运动矢量和所述差值确定第二目标运动矢量;根据第一目标运动矢量和第二目标运动矢量确定目标运动信息。
[0207] 例如,原始运动信息的参考方向可以是双向,即原始运动信息可以包括第一原始运动矢量和第二原始运动矢量。假设第一原始运动矢量为(V0x,V0y),第二原始运动矢量为(V1x,V1y),对于原始运动信息的某一个运动信息分量,以第一原始运动矢量(V0x,V0y)为例,可以采用实施例9-实施例14的实现方式,确定第一原始运动矢量对应的第一目标运动矢量,对此确定过程不做限制,假设第一目标运动矢量为(V0x+offset_x,V0y+offset_y)。
[0208] 在此基础上,可以确定第一目标运动矢量与第一原始运动矢量的差值为(offset_x,offset_y),然后,可以通过(offset_x,offset_y)直接推导第二原始运动矢量(V1x,V1y)对应的第二目标运动矢量,例如,第二目标运动矢量可以为(V1x-offset_x,V1y-offset_y),当然,上述只是示例,对此不做限制。
[0209] 进一步的,可以将第一目标运动矢量(V0x+offset_x,V0y+offset_y)和第二目标运动矢量(V1x-offset_x,V1y-offset_y),确定为目标运动信息。
[0210] 实施例16:针对步骤106,根据原始运动信息或目标运动信息对编码比特流进行解码,可以包括:解码端可以从编码比特流中获取第四指示信息,该第四指示信息用于指示采用原始运动信息对编码比特流进行解码,或者,采用目标运动信息对编码比特流进行解码。当然,上述方式只是示例,对此不做限制。
[0211] 例如,若编码端采用原始运动信息对比特流进行编码,则编码端在编码比特流中添加的第四指示信息可以为第一标识,表示采用原始运动信息对比特流进行编码;若编码端采用目标运动信息对比特流进行编码,则编码端在编码比特流中添加的第四指示信息可以为第二标识,表示采用目标运动信息对比特流进行编码。基于此,解码端在从编码比特流中获取到第四指示信息后,若第四指示信息为第一标识,则可以根据原始运动信息对编码比特流进行解码;若第四指示信息为第二标识,则可以根据目标运动信息对编码比特流进行解码。
[0212] 其中,针对编码端,可以采用原始运动信息对比特流进行预编码,并采用目标运动信息对比特流进行预编码,这样,可以基于率失真原则确定原始运动信息的编码性能和目标运动信息的编码性能。若原始运动信息的编码性能优于目标运动信息的编码性能,则确定采用原始运动信息对比特流进行编码;若目标运动信息的编码性能优于原始运动信息的编码性能,则确定目标运动信息对比特流进行编码。当然,上述方式只是一个示例,对此不做限制。
[0213] 实施例17:在步骤106之后,还可以确定当前图像块的最终运动信息。例如,若根据原始运动信息对编码比特流进行解码,则将原始运动信息存储为最终运动信息;或者,若根据目标运动信息对编码比特流进行解码,则将目标运动信息存储为最终运动信息;其中,最终运动信息用于后续图像块的解码参考,也就是说,在其它图像块的处理过程中,可以参考该最终运动信息。
[0214] 实施例18:
[0215] 参见图5所示,为编码方法的流程示意图,可以应用于编码端,可以包括:
[0216] 步骤501,获取当前图像块的运动模型。该运动模型可以包括但不限于:2参数的运动模型(如2参数的运动矢量)、4参数的运动模型(如4参数的仿射模型)、6参数的运动模型(如仿射模型)、8参数的运动模型(如投影模型)。
[0217] 步骤502,根据该运动模型建立当前图像块的运动信息列表。
[0218] 步骤503,从该运动信息列表中选择备选运动信息。
[0219] 步骤504,根据选择的备选运动信息和当前图像块的差值信息确定当前图像块的原始运动信息。具体的,步骤104之前,可以先获取当前图像块的差值信息,然后,才根据备选运动信息和差值信息确定当前图像块的原始运动信息。
[0220] 步骤505,根据该原始运动信息确定当前图像块的目标运动信息。其中,该目标运动信息可以是一个与该原始运动信息不同的运动信息。
[0221] 步骤506,根据原始运动信息或目标运动信息对当前图像块进行编码。
[0222] 由以上技术方案可见,本申请实施例中,可以根据原始运动信息确定当前图像块的目标运动信息,并根据该原始运动信息或者该目标运动信息进行编码,而不是直接根据原始运动信息进行编码,从而提高运动信息的精度,解决预测质量不高,预测错误等问题,并提高编码性能,提高编码效率,减少编码时延。
[0223] 实施例19:
[0224] 针对步骤501,获取当前图像块的运动模型,其实现方式可以参见实施例2,在此不再赘述。针对步骤502,根据运动模型建立当前图像块的运动信息列表,其实现方式可以参见实施例3-实施例5,在此不再赘述。针对步骤503,从运动信息列表中选择备选运动信息,其实现方式可以参见实施例6,在此不再赘述。
[0225] 步骤504之前,可以获取当前图像块的差值信息,具体实现方式可以参见实施例7,在此不再赘述。针对步骤504,根据选择的备选运动信息和差值信息确定当前图像块的原始运动信息,其实现方式可以参见实施例8,在此不再赘述。
[0226] 针对步骤505,根据该原始运动信息确定当前图像块的目标运动信息,其实现方式可以参见实施例9-15,在此不再赘述。针对步骤506,根据原始运动信息或目标运动信息对当前图像块进行编码,其实现方式可以参见实施例16。
[0227] 在根据原始运动信息或目标运动信息对当前图像块进行编码后,还可以确定当前图像块的最终运动信息。例如,若根据原始运动信息对当前图像块进行编码,则将原始运动信息存储为最终运动信息;或者,若根据目标运动信息对当前图像块进行编码,则将目标运动信息存储为最终运动信息。
[0228] 其中,最终运动信息用于后续图像块的编码参考,也就是说,在其它图像块的处理过程中,可以参考该最终运动信息,对此不做限制。
[0229] 实施例20:
[0230] 参见图6所示,为视频编码框架,可以使用视频编码框架实现上述编码方法,此外,视频解码框架与图6类似,在此不再赘述,可以使用视频解码框架实现上述解码方法。具体的,在视频编码框架/视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、返量化、熵编码器等模块。在编码端,通过这些模块的配合,可以实现上述编码方法;在解码端,通过这些模块的配合,可以实现上述解码方法。
[0231] 实施例21:
[0232] 基于与上述方法同样的申请构思,本申请实施例还提出一种解码装置,应用于解码端,如图7所示,为所述装置的结构图,所述装置包括:
[0233] 获取模块71,用于获取当前图像块的运动模型;
[0234] 建立模块72,用于根据所述运动模型建立当前图像块的运动信息列表;
[0235] 选择模块73,用于从所述运动信息列表中选择备选运动信息;
[0236] 确定模块74,用于根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;以及,
[0237] 根据所述原始运动信息确定所述当前图像块的目标运动信息;
[0238] 解码模块75,用于根据所述原始运动信息或所述目标运动信息对编码比特流进行解码。
[0239] 实施例22:
[0240] 基于与上述方法同样的申请构思,本申请实施例还提出一种编码装置,应用于编码端,如图8所示,为所述装置的结构图,所述装置包括:
[0241] 获取模块81,获取当前图像块的运动模型;
[0242] 建立模块82,根据所述运动模型建立所述当前图像块的运动信息列表;
[0243] 选择模块83,从所述运动信息列表中选择备选运动信息;
[0244] 确定模块84,根据选择的所述备选运动信息和所述当前图像块的差值信息确定所述当前图像块的原始运动信息;以及,
[0245] 根据所述原始运动信息确定所述当前图像块的目标运动信息;
[0246] 编码模块85,根据所述原始运动信息或所述目标运动信息对当前图像块进行编码。
[0247] 实施例23:
[0248] 本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9所示。包括:处理器91和机器可读存储介质92,其中:所述机器可读存储介质92存储有能够被所述处理器91执行的机器可执行指令;所述处理器91用于执行机器可执行指令,以实现本申请上述示例公开的解码方法。
[0249] 基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的解码方法。
[0250] 实施例24:
[0251] 本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图10所示。包括:处理器93和机器可读存储介质94,其中:所述机器可读存储介质94存储有能够被所述处理器93执行的机器可执行指令;所述处理器93用于执行机器可执行指令,以实现本申请上述示例公开的编码方法。
[0252] 基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编码方法。
[0253] 其中,上述机器可读存储介质可以是任何电子磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0254] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0255] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0256] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0257] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0258] 而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
[0259] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0260] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈