一种帧间预测方法、编码器、解码器及存储介质与流程

文档序号:26940428发布日期:2021-10-12 15:52阅读:71来源:国知局
一种帧间预测方法、编码器、解码器及存储介质与流程

1.本技术涉及视频图像处理技术,尤其涉及一种帧间预测方法、编码器、解码器及存储介质。


背景技术:

2.在视频编解码,对当前块进行编解码的过程中,除了有帧内预测外,还可以采用帧间预测方式。帧间预测可以包括运动估计和运动补偿,针对运动补偿在多功能视频编码(versatile video coding,vvc)的制定过程中,引入了正方形和矩形之外的其他形状划分。首先是三角形划分模式(triangular partition mode,tpm)的引入,以一个正方形或矩形的对角线、或反对角线为分割线,得到三角形的预测单元,从而更灵活的表示帧间预测数据,降低预测误差,从而提高编码效率。
3.在联合视频专家组(joint video experts team,jvet)会议中,引入了一种比tpm更为灵活的帧间几何划分预测模式(geometrical partition mode,gpm),gpm的帧间预测过程中,在计算像素点的权重索引值时需要用到角度映射表,而角度映射表中所有角度映射值全部为偶数,从而导致像素点的权重索引值也全部为偶数,也就是说所有像素点的权重索引值最后一个比特始终为0,这个情况下带来没有必要的比特开销,从而使得帧间预测时的数据的存储开销较大,文本和代码比较复杂。


技术实现要素:

4.本技术实施例提供了一种帧间预测方法、编码器、解码器及存储介质,能够提高运动信息的表达效率,并提高视频编码和解码效率。
5.第一方面,本技术实施例提供了一种帧间预测方法,应用于编码器,所述方法包括:
6.确定当前块的预测模式参数;
7.当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;
8.根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;
9.根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;
10.基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;
11.基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。
12.第二方面,本技术实施例提供了一种帧间预测方法,应用于解码器,所述方法包
括:
13.解析码流,确定当前块的预测模式参数;
14.当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;
15.根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;
16.根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;
17.基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;
18.基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。
19.第三方面,本技术实施例提供了一种编码器,包括:
20.确定单元,用于确定当前块的预测模式参数;
21.第一处理单元,用于当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;
22.所述第一处理单元,还用于根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;
23.第一预测单元,用于基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。
24.第四方面,本技术实施例提供了一种解码器,包括:
25.解析单元,用于解析码流,确定当前块的预测模式参数;
26.第二处理单元,用于当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;
27.所述第二处理单元,还用于根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;
28.第二预测单元,还用于基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。
29.第五方面,本技术实施例还提供了一种编码器,包括:第一存储器和第一处理器;所述第一存储器存储有可在第一处理器上运行的计算机程序,所述第一处理器执行所述程序时实现编码器的所述帧间预测方法。
30.第六方面,本技术实施例还提供了一种解码器,包括:第二存储器和第二处理器;
所述第二存储器存储有可在第二处理器上运行的计算机程序,所述第二处理器执行所述程序时实现解码器的所述帧间预测方法。
31.第七方面,本技术实施例提供了一种存储介质,包括:其上存储有计算机程序,该计算机程序被第一处理器执行时,实现编码器的所述帧间预测方法;或者,该计算机程序被第二处理器执行时,实现解码器的所述帧间预测方法。
32.本技术实施例提供了一种帧间预测方法、编码器、解码器及存储介质,包括:确定当前块的预测模式参数;当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。这样,在计算像素点的权重索引时,采用预设的计算策略可以实现对权重索引的计算过程进行降幂处理,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,解决了原有方案中计算权重过程中中间索引数据带有冗余比特的问题,能够减少比特开销,提高存储效率。
附图说明
33.图1为本技术实施例提供的一种视频编码系统的组成框图示意图;
34.图2为本技术实施例提供的一种视频解码系统的组成框图示意图;
35.图3为本技术实施例提供的帧内预测方法的第一流程示意图;
36.图4a-4b为tpm模式两种划分示意图;
37.图5a-5g为gpm模式的7种划分示意图;
38.图6为本技术实施例提供的示例性当前块的角度和步长的示意图;
39.图7为本技术实施例中空间merge候选列表的相邻块位置示意图;
40.图8为本技术实施例中merge候选列表的组成结构示意图;
41.图9为本技术实施例中gpm模式预测流程示意图;
42.图10为本技术实施例中权重索引的确定流程示意图;
43.图11为本技术实施例中当前块的划分方式示意图;
44.图12a为本技术实施例提供的示例性的亮度的权重值的示意图;
45.图12b为本技术实施例提供的示例性的色度的权重值的示意图;
46.图13为本技术实施例中当前块内子块的运动索引信息确定方法的流程示意图;
47.图14为本技术实施例提供的帧内预测方法的第二流程示意图;
48.图15为本技术实施例中编码器的第一组成结构示意图;
49.图16为本技术实施例中编码器的第二组成结构示意图;
50.图17为本技术实施例中解码器的第一组成结构示意图;
51.图18为本技术实施例中解码器的第二组成结构示意图。
具体实施方式
52.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
53.本技术提供一种视频编码系统,如图1所示,该视频编码系统11包括:变换单元111、量化单元112、模式选择和编码控制逻辑单元113、帧内预测单元114、帧间预测单元115(包括:运动补偿和运动估计)、反量化单元116、反变换单元117、环路滤波单元118、编码单元119和解码图像缓存单元110;针对输入的原始视频信号,通过编码树块(coding tree unit,ctu)的划分可以得到一个视频重建块,通过模式选择和编码控制逻辑单元113确定编码模式,然后,对经过帧内或帧间预测后得到的残差像素信息,通过变换单元111、量化单元112对该视频重建块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内预测单元114用于对该视频重建块进行帧内预测;其中,帧内预测单元114用于确定该视频重建块的最优帧内预测模式(即目标预测模式);帧间预测单元115用于执行所接收的视频重建块相对于一或多个参考帧中的一或多个块的帧间预测编码,以提供时间预测信息;其中吗,运动估计为产生运动向量的过程,所述运动向量可以估计该视频重建块的运动,然后,运动补偿基于由运动估计所确定的运动向量执行运动补偿;在确定帧间预测模式之后,帧间预测单元115还用于将所选择的帧间预测数据提供到编码单元119,而且,将所计算确定的运动向量数据也发送到编码单元119;此外,反量化单元116和反变换单元117用于该视频重建块的重构建,在像素域中重构建残差块,该重构建残差块通过环路滤波单元118去除方块效应伪影,然后,将该重构残差块添加到解码图像缓存单元111的帧中的一个预测性块,用以产生经重构建的视频重建块;编码单元119是用于编码各种编码参数及量化后的变换系数。而解码图像缓存单元110用于存放重构建的视频重建块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频重建块,这些重构建的视频重建块都会被存放在解码图像缓存单元110中。
54.本技术实施例提供一种视频解码系统,图2为本技术实施例视频编码系统的组成结构示意图,如图2所示,该视频编码系统21包括:解码单元211、反变换单元217,与反量化单元212、帧内预测单元213、运动补偿单元214、环路滤波单元215和解码图像缓存单元216单元;输入的视频信号经过视频编码系统11进行编码处理之后,输出该视频信号的码流;该码流输入视频解码系统21中,首先经过解码单元211,用于得到解码后的变换系数;针对该变换系数通过反变换单元217与反量化单元212进行处理,以便在像素域中产生残差块;帧内预测单元213可用于基于所确定的帧内预测方向和来自当前帧或图片的先前经解码块的数据而产生当前视频解码块的预测数据;运动补偿单元214是通过剖析运动向量和其他关联语法元素来确定用于视频解码块的预测信息,并使用该预测信息以产生正被解码的视频解码块的预测性块;通过对来自反变换单元217与反量化单元212的残差块与由帧内预测单元213或运动补偿单元214产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频信号通过环路滤波单元215以便去除方块效应伪影,可以改善视频质量;然后将经解码的视频块存储于解码图像缓存单元216中,解码图像缓存单元216存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出,得到所恢复的原始视频信号。
55.本技术实施例提供的一种帧间预测方法主要作用于视频编码系统11的帧间预测单元115和视频解码系统21的帧内预测单元,即运动补偿单元214;也就是说,如果在视频编
码系统11能够通过本技术实施例提供的帧间预测方法得到一个较好的预测效果,那么,对应地,在解码端,也能够改善视频解码恢复质量。
56.基于此,下面结合附图和实施例对本技术的技术方案进一步详细阐述。在进行详细阐述之前,需要说明的是,说明书通篇中提到的“第一”、“第二”、“第三”等,仅仅是为了区分不同的特征,不具有限定优先级、先后顺序、大小关系等功能。
57.本技术实施例提供一种帧间预测方法,该方法应用于视频编码设备,即编码器。该方法所实现的功能可以通过视频编码设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该视频编码设备至少包括处理器和存储介质。
58.图3为本技术实施例提供的帧内预测方法的第一流程示意图,该方法应用于编码器,如图3所示,该方法包括:
59.步骤101、确定当前块的预测模式参数。
60.需要说明的是,预测模式参数指示了当前块的编码模式及该模式相关的参数。通常可以采用率失真优化(rate distortion optimization,rdo)的方式确定当前块的预测模式参数。
61.具体地,在一些实施例中,编码器确定当前块的预测模式参数的实现为:编码器确定当前块的待预测图像分量;基于当前块的参数,利用多种预测模式分别对待预测图像分量进行预测编码,计算多种预测模式下每一种预测模式对应的率失真代价结果;从计算得到的多个率失真代价结果中选取最小率失真代价结果,并将最小率失真代价结果对应的预测模式确定为当前块的预测模式参数。
62.也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对待预测图像分量进行编码。这里,多种预测模式通常包括有帧间预测模式、传统帧内预测模式和非传统帧内预测模式,而传统帧内预测模式又可以包括有直流(direct current,dc)模式、平面(planar)模式和角度模式等,非传统帧内预测模式又可以包括有mip模式、跨分量线性模型预测(cross-component linear model prediction,cclm)模式、帧内块复制(intra block copy,ibc)模式和plt(palette)模式等,帧间预测模式包括:gpm模式、三角预测模式(triangle partition mode,tpm)等。
63.这样,在利用多种预测模式分别对当前块进行编码之后,可以得到每一种预测模式对应的率失真代价结果;然后从所得到的多个率失真代价结果中选取最小率失真代价结果,并将该最小率失真代价结果对应的预测模式确定为当前块的预测模式参数;如此,最终可以使用所确定的预测模式对当前块进行编码,而且在这种预测模式下,可以使得预测残差小,能够提高编码效率。
64.步骤102、当所述预测模式参数指示使用几何划分预测模式gpm确定所述当前块的帧间预测值时,确定所述当前块的gpm参数;
65.在本技术实施例中,预测模式参数指示使用gpm确定当前块的帧间预测时,就可以获取或者确定出当前块的gpm参数。
66.在本技术实施例中,当前块的gpm参数包括:当前块分割线的角度索引信息和当前块的尺寸信息,还可以包括:当前块分割线的步长索引信息等等。
67.通常情况下,视频序列的图像被划分成图像块进行编码。在视频编码混合框架中,通常只以正方形和矩形的块为单位实施预测、变换和量化等编码技术。然而实际中运动物
体的边缘并不一定都是水平或者垂直方向的,即使是,也不一定刚好在可以划分的块边缘上,而运动边缘两侧的运动矢量往往不同,这样在编码的过程中以一个整块进行运动预测和补偿,易产生较大的预测误差,从而导致编码效率受限。
68.在vvc的制定过程中,tpm引入以一个正方形或矩形的对角线、或反对角线为分割线,得到三角形的预测单元,如图4a-图4b所示,从而更灵活的表示帧间预测数据,降低预测误差,从而提高编码效率。
69.在jvet第15次会议中,提出了一种比tpm更为灵活的帧间几何划分帧间预测模式(geometrical partitioning for inter blocks,geo),经过两次会议的讨论,jvet正式将geo预测模式采纳到vvc的标准中,并更名为gpm模式。gpm是针对图像中物体边缘部分,将当前块划分为两个非矩形的子分区分别进行预测后进行加权融合。例如,非矩形的形式可以如图5a-图5g所示。
70.在目前vvc draft8中gpm技术总共有64种划分模式,每种划分模式对应一种角度α和一种步长ρ,总共有20种角度,4种步长。
71.示例性的,如图6所示,每种角度和步长的组合构成一种划分模式。gpm将当前块划分为两个非矩形的子分区,每个子分区单独进行单向的运动补偿得到单向预测值,最后利用权重矩阵对两分区的单向预测值加权融合得到最终的gpm预测值。
72.在本技术实施例中,在编码器侧,确定是采用gmp进行帧间预测时,该编码器就可以获取该当前块采用gpm进行帧间预测时的gpm参数了,具体的,gpm参数包括当前块的划分方式,第一分区的mv信息的索引信息和第二分区的mv信息的索引信息。
73.需要说明的是,目前在vtm8.0中,每个当前块对应的编码单元对gpm预测模式的使用需要满足一些限制条件。示例性地,这些限制条件可以包括:
74.(a)序列层参数集(sequence parameter set,sps)允许采用gpm预测模式;
75.(b)当前块的编码图像区域属于双向预测片(b slice);
76.(c)当前块的尺寸限制,宽度和高度必须都大于或等于8,且小于或等于64,并且当前块的宽高比和高宽比都小于8;
77.(d)当前块为非普通融合(general merge)预测,非融合子块(merge_subblock)预测,非仿射预测,也非联合帧内帧间预测(composed intra inter prediction,ciip);
78.(e)对4:0:0格式的色度分量禁用gpm预测模式。
79.当前块对应的编码单元层语法描述如表1所示。
80.表1
[0081][0082]
这里,ae(v)表示context-adaptive arithmetic entropy-coded syntax element,即上下文自适应的算术熵编码语法元素。merge_gpm_partition_idx[x0][y0]为当前块的划分信息,merge_gpm_idx0[x0][y0],表示a分区的mv在merge列表中的位置,merge_gpm_idx1[x0][y0],表示b分区的mv在merge列表中的位置,maxnumgpmmergecand由
运动信息候选列表的表长所确定。
[0083]
帧间预测过程中进一步的根据所述当前块的gpm参数,构建当前块的运动信息候选列表。图7为本技术实施例中空间merge候选列表的相邻块位置示意图,如图7所示,merge候选列表中相邻块的构造顺序为:左侧相邻块a1,上侧相邻块b1,右上侧相邻块b0,左下侧相邻块a0,左上侧相邻块b2,参考帧对应位置块col为相邻块的运动矢量信息依次排列,且区分不同方向来源。需要说明的是,merge列表中还可以添加历史参考块his,第一、第二候选mv的平均mv avg,以及零运动矢量0。
[0084]
获取图7中5个相邻块的单向或双向mv信息,将每个相邻块的单向或双向mv信息按照相邻块的添加顺序(a1-b1-b0-a0(b2)),添加到merge候选列表中组成当前块的候选项,其中b2为替补,当前面四项有至少一项不可用时,需要使用b2的mv信息加入到候选列表。相邻块的添加顺序代表了各个mv信息与当前块的mv信息之间相关性大小,也就是merge候选列表的添加顺序代表了这个候选项被选为当前块的mv信息的可能性大小,也代表了这个候选项被选为当前块mv信息之后精确度的大小。
[0085]
图8为本技术实施例中merge候选列表的组成结构示意图,根据图7相邻块的位置示意图得到图8这种merge候选列表,如图8所示,merge候选列表中包括5个相邻块的mv信息,序号分别为0、1、2、3、4,每个相邻块包含双向预测mv信息,即list0和list1。因为在gpm预测模式中,每个分区都只会使用单向预测模式,而merge列表中每一项都可能是双向预测的mv信息,因此需要取出其中的单向预测mv来供使用。令x=(m&0x01),其中,x为参考列表指示信息,用于指示list0和list1,&为位与运算,即取出m的最后一个比特位(类似于奇偶校验)。这样,优先使用x对应的参考列表中的参考帧对应的mv信息predflaglxm用于分区预测,如图8中的阴影区域对应的选项。如果相应的mv不可用(相邻块的mv本身也可能是单向的),才使用对向位置的mv(与阴影区域水平对应的空白区域中表示的mv),即x=1-x。
[0086]
进一步的,两个分区(先a分区后b分区)的mv获取,具体的获取方法包括以下:
[0087]
merge_gpm_idx0[x0][y0],表示a分区的mv在merge列表中的位置;
[0088]
令m=merge_gpm_idx0[xcb][ycb],等待后续处理。
[0089]
merge_gpm_idx1[x0][y0],代表b分区的mv在merge列表中的位置,b分区的mv在merge列表中的位置可能因为a先选去了靠前位置的选项,而减小1。
[0090]
令n=merge_gpm_idx1[xcb][ycb]+(merge_gpm_idx1[xcb][ycb]>=m)?1:0,n表示的就是b分区选择的mv在merge候选列表中的实际位置,等待后续处理。
[0091]
令m=mergegpmcandlist[m],从运动信息候选列表中取出第m项用于a分区的mv构造。将相应的mv信息存入给a分区的处理变量,准备后续的预测块构造。
[0092]
因为在gpm预测模式中,每个分区都只会使用单向预测模式,而merge列表中每一项都可能是双向预测的mv信息,因此需要取出其中的单向预测mv来供使用。令x=(m&0x01),其中,x为参考列表指示信息,用于指示list0和list1的使用优先级,x=0表示优先使用list0中的mv信息,x=1表示优先使用list1中的mv信息,&为位与运算,即取出m的最后一个比特位(类似于奇偶校验)。这样,优先使用x对应的参考列表中的参考帧对应的mv信息predflaglxm用于分区预测,如图8中的阴影区域对应的选项。如果相应的mv不可用(相邻块的mv本身也可能是单向的),才使用对向位置的mv(与阴影区域水平对应的空白区域中表示的mv),即x=1-x。
[0093]
mva[0]=mvlxm[0]
[0094]
mva[1]=mvlxm[1]
[0095]
refidxa=refidxlxm
[0096]
predlistflaga=x
[0097]
其中,mva为a分区mv两个方向上的矢量,refidxa为该运动矢量对应的参考帧,predlistflaga表示当前选用了该运动矢量备选项的哪个list中的分量。
[0098]
令n=mergecandlist[n],从运动信息候选列表中取出第n项用于b分区的mv构造。
[0099]
第n项的单向运动矢量用于mvb构造,优先使用如图8中阴影区域对应的选项,如不可用,才使用对向的mv。因此令x=(n&0x01)。如果predflaglxn不可用,则x=1-x。
[0100]
此时,再将相应的mv信息存入给b分区的处理变量,准备后续的预测块构造。
[0101]
mvb[0]=mvlxn[0]
[0102]
mvb[1]=mvlxn[1]
[0103]
refidxb=refidxlxn
[0104]
predlistflagb=x
[0105]
其中mvb为b分区mv两个方向上的矢量,refidxb为该运动矢量对应的参考帧,predlistflagb表示当前选用了该运动矢量备选项的哪个list中的分量。
[0106]
在一些实施例中,构建运动信息候选列表之后,该方法还包括:当所述运动信息候选列表的候选项数量大于2时,从运动信息候选列表中获取所述第一分区的运动信息对应的第一索引信息,以及所述第二分区运动信息对应的第二索引信息;将所述第一索引信息和所述第二索引信息写入码流;或者,当所述运动信息候选列表的候选项数量等于2时,从所述gpm运动信息候选列表中获取所述第一分区的运动信息对应的第一索引信息,或者所述第二分区运动信息对应的第二索引信息;将所述第一索引信息或者所述第二索引信息写入码流。编码器将码流发送给解码器,解码器解析码流确定运动信息候选列表中第一分区的运动信息的第一索引信息,以及第二分区的运动信息的第二索引信息,进一步根据索引信息从解码端建立的运动信息候选列表中获取各个分区的运动信息。
[0107]
在本技术实施例中,划分信息(即角度索引信息和步长索引信息)也需要在编码时被写入码流,供解码时使用。
[0108]
步骤103、根据所述当前块的gpm参数,确定所述当前块的第一分区的第一预测值和所述当前块的第二分区的第二预测值;
[0109]
在本技术实施例中,由于gpm参数可以包括当前块的划分信息,划分信息具体包括角度索引信息和步长索引模式,因此,编码器可以根据划分信息对当前块进行划分,得到第一分区和第二分区;从运动信息候选列表中,确定出与第一分区对应的第一参考块的第一运动信息,以及与第二分区对应的第二参考块的第二运动信息;编码器根据第一运动信息进行运动补偿,得到第一分区的第一预测值,编码器根据第二运动信息进行运动补偿,得到第二分区的第二预测值。
[0110]
需要说明的是,在本技术实施例中,gpm采用原有vvc7中tpm的单向merge候选列表,即从单向merge候选列表,找到gpm的划分后的两个分区各自的mv,即运动信息,根据各自的运动信息获取各自的预测值。
[0111]
其中,merge候选列表中一般包括预设个数的参考块的元素,预设个数可以为6个,
每个元素是以结构体的形式存储数据的,每个结构体中可以包括:该参考块的运动信息、参考帧列表,预测方向等。而存储gpm对应的数据时,是按照4
×
4大小的块存储的。
[0112]
步骤104:根据所述当前块的gpm参数,确定所述当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;
[0113]
下面对vvc draft8相应的编码器中的gpm模式下当前块预测过程进行详细介绍:
[0114]
图9为本技术实施例中gpm模式预测流程示意图,预测流程的输入包括:
[0115]
a luma location(xcb,ycb)
[0116]
cbwidth,cbheight
[0117]
1/16fractional-sample accuracy mva and mvb
[0118]
mvca and mvcb
[0119]
refidxa and refidxb
[0120]
predlistflaga and predlistflagb。
[0121]
其中,xcb和ycb表示当前编码块(coding block,cb)的左上角像素位置,mva和mvb是亮度分量的mv,mvca和mvcb是1/32像素精度的色度分量的mv。
[0122]
图9中预测流程的输出包括:预测像素值predsamplesl、predsamplescb和predsamplescr。
[0123]
针对输入信息中间预测流程具体包括:
[0124]
s1:计算两个分区的单向预测值
[0125]
gpm模式重用现有的常规merge列表,按照奇偶校验的方式构造属于gpm的单向merge列表,gpm划分后的两个子分区各自的merge候选都是从该单向merge候选列表中选出的。
[0126]
然后为l、cb、cr三个分量推导参考帧列表refpicln、亚像素预测像素值predsamplesln,n为a或b,l、cb、cr中,l为luma,表示亮度;cb和cr都是chroma,为色差分量。该步骤同一般inter预测技术相同。即用现有的运动补偿方式,计算得到两个分区各自的单向运动补偿预测值,用于后面gpm最终的加权融合过程。这里的运动补偿和常规运动补偿过程一样,即通过运动矢量找到相应的区域的像素值并复制。
[0127]
s2:获取gmp模式的角度和步长
[0128]
编码器通过遍历gpm对应的64种划分模型,确定出率失真代价最小的划分模式,即确定出当前块的目标划分模式;该编码器就可以依据目标划分模式,通过预设划分模式、角度索引和步长索引的映射表,确定出该目标划分模式对应的角度索引信息和步长索引信息了。当前预测块是gpm模式时,会根据当前块选中的划分模式索引merge_gpm_partition_idx去查表得到对应的角度angleidx和步长distanceidx,该划分模式的映射表如表2所示:
[0129]
表2
[0130]
[0131][0132]
其中,wedge_partition_idx为划分模式索引,angleidx为角度索引信息,distanceidx为步长索引信息。
[0133]
本技术实施例中,所述当前块的gpm参数包括所述当前块的尺寸信息和角度索引信息;本技术实施例提供的一种步骤104的具体实现方法,如图10所示,该方法可以包括:
[0134]
步骤201:根据所述当前块的尺寸信息,确定所述当前块内像素点的位置信息;
[0135]
当前块的尺寸信息包括当前块的宽度和高度。具体的,根据当前块的宽度和高度,以及分割线的角度和步长,确定当前块在水平方向上的偏移值(offsetx),以及当前块在垂直方向上的偏移值(offsety);根据当前块的offsetx和offsety以及像素点在第一坐标系中的位置信息,确定当前块内像素点在第二坐标系中的位置信息。
[0136]
图11为本技术实施例中当前块的划分方式示意图,如图11所示,虚线表示分割线,其中白色背景是根据目前的限定条件,通过当前块(阴影区域为当前块)以及当前块的划分模式去计算当前块的左上角对应于坐标原点的偏移值(offsetx,offsetx),进而确定最大尺寸块(64x64)相对该坐标系的最大移动范围(112x112)。如果分割线不经过块中心点,那么就保持分割线相对位置不动,移动该块在坐标系中的位置,从而得到恰当的分割。
[0137]
这里,第一坐标系是以当前块左上角为坐标原点所构成的坐标系,即图11中右侧所示的坐标系,第二坐标系是如图11中左侧的坐标系,分割线经过该坐标系原点。偏移值的具体确定过程可以由如下公式(4)-公式(7)来实现。
[0138]
s3:为l、cb、cr三个分量推导加权预测像素值predsamples
[0139]
s3.1:当前块亮度预测值的计算
[0140]
s3.1.1:通过对预定义的权重矩阵裁剪获取当前亮度块的权重掩码矩阵:
[0141]
1)首先权重矩阵的获取需要通过当前块以及当前块的划分模式去计算当前块的左上角对应于坐标原点的偏移值offset(x,y),而坐标原点处于同样角度分割线穿过几何中心点的同样尺寸块的几何中心点。
[0142]
下面是偏移值计算所需要用到的核心参数:
[0143]
因为像素点点(x1,y1)到线cosα
·
x-sinα
·
y=0的距离d=cosα
·
x1-sinα
·
y1,首先需要获取当前角度所对应的cos(α)中α的索引号displacementx,以及对应的-sin(α)=cos(α+π/2)对应的α+π/2的索引号displacementy。
[0144]
displacementx=angleidx;
ꢀꢀ
(1)
[0145]
displacementy=(displacementx+8)%32;
ꢀꢀ
(2)
[0146]
其中,构造预定义权重矩阵时所使用的步长仅仅为第一个步长(即分割线一定与块的中心点相交)。
[0147]
由于a分区和b分区在码流中相关信息的传输是有先后顺序的,从而使得在两个分区的顺序安排上必须遵循一定的原则,即通过下式来计算partflip值,具体如下所示:
[0148]
partflip=(angleidx>=13&&angleidx<=27)?0:1
ꢀꢀ
(3)
[0149]
其中,partflip用于指示a分区和b分区在当前块内的分布位置。具体地,partflip为0,表示后续(8)式中得到的点与分割线距离weightidx为负值的一侧为a分区,分割线对侧为b分区;partflip为为1时则相反,即weightidx为正值的一侧为a分区,其对侧(即负值一侧)为b分区。
[0150]
通过下面两式计算获得关键参数shifthor:
[0151]
hwratio=nh/nw
ꢀꢀ
(4)
[0152]
即cu的高/cu的宽
[0153]
shifthor=(angleidx%16==8||(angleidx%16!=0&&hwratio>0))?0:1
ꢀꢀ
(5)
[0154]
shifthor的含义是在同一角度下不同分割线之间的位移方向的确定,如其值为0,分割线将在y轴上偏移;其值为1,分割线将在x轴上偏移。
[0155]
然后根据当前预测块的尺寸和划分信息,用式(6~7)计算当前预测块的偏移值offsetx和offsety:
[0156]
如果shifthor==0,这时候当前块在垂直方向上存在与当前块的高度相关的偏移值,此时的偏移信息如下所示:
[0157]
offsetx=(-nw)>>1
[0158]
offsety=((-nh)>>1)+angleidx<16?(distanceidx*nh)>>3:-((distanceidx*nh)>>3)
ꢀꢀ
(6)
[0159]
如果偏移方向标识值等于1,即shifthor等于1,这时候当前块在水平方向上存在与当前块的宽度相关的偏移值,此时的偏移信息如下所示:
[0160]
offsetx=((-nw)>>1)+angleidx<16?(distanceidx*nw)>>3:-((distanceidx*nw)>>3)
[0161]
offsety=(-nh)>>1
ꢀꢀ
(7)
[0162]
其中,“>>”表示右移运算符,nw表示当前块的宽度,nh表示当前块的高度。
[0163]
步骤202:根据所述当前块的角度索引信息,采用预设的确定策略确定所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;
[0164]
实际应用中,确定策略包括从预设的角度映射表获取角度索引信息对应的第一余弦值和第一正弦值,或者根据预设的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值。本技术实施例中针对这两种方式分别给出了3种具体的实现方式。
[0165]
步骤203:基于所述第一余弦值和所述第一正弦值,分别结合所述当前块内像素点的位置信息,确定所述当前块内像素点的权重索引。
[0166]
本技术实施例中,根据所述当前块的角度索引信息,采用预设的确定策略确定所述角度索引信息对应的第一余弦值和第一正弦值包括6种方式:
[0167]
方式一:根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据所述正弦角度索引信息,从预设角度映射表中获取所述第一正弦值;其中,所述
角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0168]
本技术实施例中,还包括构建角度映射表。
[0169]
具体的,构建角度映射表的方法包括:根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据m个角度索引信息,得到所述m个角度索引信息对应的第二余弦值;其中,m为偶数;对所述m个角度索引信息对应的第二余弦值进行降幂处理,得到所述m个角度索引信息对应的第一余弦值;利用所述m个角度索引信息及其对应的第一余弦值,构建所述角度映射表。
[0170]
也就是说,根据角度索引信息确定余弦角度索引信息和正弦角度索引信息,根据余弦角度索引信息查询角度映射表得到余弦角度索引信息对应的第一余弦值,根据正弦角度索引信息查询角度映射表得到正弦角度索引信息对应的第一正弦值。
[0171]
需要说明的是,因为像素点(x1,y1)到线cosα
·
x-sinα
·
y=0的距离d=cosα
·
x1-sinα
·
y1,在得到像素点的位置信息(x1,y1),可以根据α查找预先建立的角度索引信息和余弦值映射关系表,即角度映射表,查找α对应cos(α),另外由于-sin(α)=cos(α+π/2),因此,查找α+π/2对应cos(α+π/2)即为-sin(α)。
[0172]
当前角度所对应的cos(α)中α的索引号displacementx,以及对应的-sin(α)=cos(α+π/2)对应的α+π/2的索引号displacementy,根据上述公式(1)得到余弦角度索引信息,根据上述公式(2)得到正弦角度索引信息。
[0173]
另外,表3为本技术实施例中提供了一种角度映射表示例,idx即为角度索引信息(displacementx和displacementy),idx对应的dislut[idx]为角度对应的余弦值,根据displacementx查找表3得到第一余弦值,根据displacementy查找表3得到第二正弦值。
[0174]
表3
[0175]
idx02345681011121314dislut[idx]4442210-1-2-2-4-4idx161819202122242627282930dislut[idx]-4-4-4-2-2-1012244
[0176]
在确定出偏移信息offsetx和offsety后,通过式(8)根据当前块内像素点位置位置和第一正弦值(dislut[displacementx])和第一余弦值(dislut[displacementy])可以计算当前像素点处的权重索引值(用weightidx表示),进而通过式(9)~(10)能够计算出当前像素点处的权重值,以得到当前块的权重矩阵。
[0177]
weightidx=(((x*subw+offsetx)<<1)+1)*dislut[displacementx]
[0178]
+(((y*subh+offsety)<<1)+1)*dislut[displacementy].
ꢀꢀ
(8)
[0179]
weightidxl=partflip?16+weightidx:16

weightidx
ꢀꢀ
(9)
[0180]
wvalue=clip3(0,8,(weightidxl+2)>>2)
ꢀꢀ
(10)
[0181]
其中,clip3表示钳位运算符,0表示下界值,8表示上界值,比如clip3(i,j,x)表示:当x小于i时,其取值为i;当x大于j时,其取值为j;当x大于或等于i且小于或等于j时,其取值为x。(((x*subw+offsetx)<<1)+1)为像素点的原始横坐标放大两倍后的横坐标,(((y*subh+offsety)<<1)+1)为像素点的原始纵坐标放大两倍后的纵坐标,displacementx为余弦角度索引信息,dislut[displacementx]用于从表3中获取第一余弦值,displacementy为
正弦角度索引信息,dislut[displacementy]用于从表3中获取第一正弦值。
[0182]
式(8)中所使用的dislut[]如表4所示,subw和subh表示下采样率,如果当前块的yuv格式为420格式,subw和subh都可以为2。其中使用的dislut[]如表4所示。subw和subh表示下采样率,如果是420格式,subw和subh都为2。亮度不需要下采样,色度权重是对亮度权重下采样得到的,见s3.2节。
[0183]
实际应用中公式(9)中weightidxl是对公式(8)中weightidx进行扩大后的权重索引扩大值,二者都可视为权重索引,本技术实施例中提出的权重索引确定方法是指weightidx。
[0184]
表4为现有角度映射表示例,由于角度索引对应的余弦值全部为偶数,如此,导致在任何角度索引下公式(8)得到的weightidx全部为偶数,也就是说最后一个比特始终为0,这个情况下带来没有必要的比特开销。现有的角度映射表将余弦值的取值放大了8倍,导致每一个余弦值均为偶数,从而权重索引也全部为偶数。而本技术通过修改角度映射表,即对现有的角度映射表中的余弦值进行了一个次幂,使每项存储比特数从5项减少到4项,使更新后的角度映射表中余弦值不全为偶数,余弦值的取值范围变为[-4,-4],使角度映射表每项比特数从5降调4,省去一个比特,降低了比特开销。
[0185]
表4
[0186]
idx02345681011121314dislut[idx]8884420-2-4-4-8-8idx161819202122242627282930dislut[idx]-8-8-8-4-4-2024488
[0187]
步骤105:基于所述当前块内像素点的权重索引,确定所述当前块内像素点的第一权重值和第二权重值;
[0188]
本技术实施例中,根据第一权重值得到第二权重值。比如第二权重值=1-第一权重值。通过上述公式(9)和(10)确定当前像素点的第一权重值,由于公式(10)中权重值的取值范围为0到8,此时第二权重值=8-第一权重值。
[0189]
步骤106:基于所述第一分区内像素点的第一预测值和第一权重值,以及所述第二分区内像素点的第二预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。
[0190]
本技术一些实施例中,s3.1.2给出了亮度预测值的加权融合计算公式,s3.2为色度预测值确定步骤。
[0191]
s3.1.2:对两个分区的单向预测值进行逐像素加权,得到最终的gpm预测块,具体加权的计算如式(11)所示:
[0192]
pbsamples[x][y]=clip3(0,(1<<bitdepth)-1,(predsamplesla[x][y]*wvalue+
[0193]
predsampleslb[x][y]*(8-wvalue)+offset1)>>shift1)
ꢀꢀ
(11)
[0194]
其中,bitdepth表示比特深度,offset1用于四舍五入,shift1用于使得加权平均后的预测值恢复到与输入视频相同的比特深度,predsamplesla[x][y]为a分区像素点亮度的第一预测值,predsampleslb[x][y]为b分区像素点亮度的第二预测值,通过公式(11)得到当前块内像素点的亮度预测值;而offset1和shift1的计算如式(12~13)所示:
[0195]
shift1=max(5,17-bitdepth
ꢀꢀ
(12)
[0196]
offset1=1<<(shift1-1)
ꢀꢀ
(13)
[0197]
s3.2:当前色度块(cb和ct)预测值的计算
[0198]
通过获取图12a中每个2*2块的左上角的亮度样本权重直接作为当前(x,y)处的色度样本权重,即对亮度样本权重进行下采样,得到图12b当前块色度权重矩阵。色度加权的计算也如式(11)所示,根据第一分区内像素点的第一色度预测值和第一权重值,以及第二分区内像素点的第二色度预测值和第二权重值,对所述第一预测值和所述第二预测值进行加权融合,计算当前块色度预测值。
[0199]
亮度和色度权重矩阵的采样关系如图12a和图12b所示。
[0200]
采用上述步骤s3.1和s3.2得到当前图像块的亮度预测值和色度预测值。
[0201]
s4:存储mv信息用于后续预测mvn、refidxn、predlistflagn;即在得到当前块的预测值之后,还需要存储当前块的mv信息用于后续图像块预测mv信息。
[0202]
实际应用中,存储当前块的mv信息即存储当前块中4
×
4子块的mv信息,存储mv需要先确定子块的运动索引信息,根据子块的运动索引信息判断子块是存储单向mv信息还是双向mv信息。
[0203]
图13为本技术实施例中当前块内子块的运动索引信息确定方法的流程示意图,如图13所示,确定当前块内子块的运动索引信息的方法具体可以包括:
[0204]
步骤301:根据所述当前块的尺寸信息,确定所述当前块内子块中心像素点的位置信息;
[0205]
当前块的尺寸信息包括当前块的宽度和高度。具体的,根据当前块的宽度和高度,以及分割线的角度和步长,确定当前块在水平方向上的偏移值(offsetx),以及当前块在垂直方向上的偏移值(offsety);根据当前块的offsetx和offsety以及子块中心像素点在第一坐标系中的位置信息,确定子块中心像素点在第二坐标系中的位置信息。
[0206]
当前块的运动掩码矩阵仍是以4
×
4子块为单位进行计算的,当前块内子块中心像素点的位置信息即每个4
×
4子块中心位置(4i+2,4j+2)的位置信息,每个4
×
4子块中心位置(4i+2,4j+2)处的运动索引(motionidx)的计算与当前块内像素点权重索引的计算相同,即如式(8)中weightidx的计算。
[0207]
步骤302:根据所述当前块的角度索引信息,采用预设的确定策略确定所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;
[0208]
具体的,根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据所述正弦角度索引信息,从预设角度映射表中获取所述第一正弦值;其中,所述角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0209]
本技术实施例中,还包括构建角度映射表。
[0210]
具体的,构建角度映射表的方法包括:根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据m个角度索引信息,得到所述m个角度索引信息对应的第二余弦值;其中,m为偶数;对所述m个角度索引信息对应的第二余弦值进行降幂处理,得到所述m个角度索引信息对应的第一余弦值;利用所述m个角度索引信息及其对应的第一
余弦值,构建所述角度映射表。
[0211]
也就是说,根据角度索引信息确定余弦角度索引信息和正弦角度索引信息,根据余弦角度索引信息查询角度映射表得到余弦角度索引信息对应的第一余弦值,根据正弦角度索引信息查询角度映射表得到正弦角度索引信息对应的第一正弦值。
[0212]
步骤303:基于所述第一余弦值和所述第一正弦值,分别结合所述当前块内子块中心像素点的位置信息,确定所述当前块内子块中心像素点的权重索引;
[0213]
步骤304:将所述当前块内子块中心像素点的权重索引作为所述当前块内子块的运动索引;
[0214]
步骤305:基于所述当前块内子块的运动索引信息,确定所述当前块内子块的运动信息的存储类型;其中,所述存储类型包括存储单向运动信息或存储双向运动信息。
[0215]
运动信息(也称“mv信息”)的存储过程是利用当前亮度块的运动掩码矩阵来实现的,预测值完全来自于a分区的,则记录a分区的运动矢量,完全来自于b分区的,记录b分区的运动矢量;否则同时记录两个分区的运动矢量。运动掩码的计算同计算亮度权重矩阵的过程基本一致,首先计算偏移值offset,该offset的计算如式(14~15)所示:
[0216]
如果偏移方向标识值等于0,即shifthor等于0,这时候的偏移信息如下所示:
[0217]
offsetx=(-cbwidth)>>1
[0218]
offsety=((-cbheight)>>1)+(angleidx<16?(distanceidx*cbheight)>>3:-((distanceidx*cbheight)>>3))
ꢀꢀ
(14)
[0219]
如果偏移方向标识值等于1,即shifthor等于1,这时候的偏移信息如下所示:
[0220]
offsetx=((-cbwidth)>>1)+(angleidx<16?(distanceidx*cbwidth)>>3:-((distanceidx*cbwidth)>>3))
[0221]
offsety=(-cbheight)>>1
ꢀꢀ
(15)
[0222]
其中,cbwidth表示当前块的宽度,cbheight表示当前块的高度。
[0223]
由于gpm预测块的运动掩码矩阵仍是以4
×
4子块为单位进行计算的,那么每个4
×
4子块的几何中心位置(4i+2,4j+2)处的运动索引(可以用motionidx表示)的计算类似于式(8)权重索引值weightidx的计算,具体如下所示,
[0224]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*dislut[displacementx]+(((4*ysbidx+offsety)<<1)+5)*dislut[displacementy] (16)
[0225]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,dislut[displacementx]用于从表3中获取第一余弦值,dislut[displacementy]用于从表3中获取第一正弦值。然后,再确定当前4
×
4的子块需要存储的mv信息。同预测加权时一样,需要首先确定出当前子块处于a分区还是b分区。
[0226]
partidx=(angleidx>=13&&angleidx<=27)?0:1
ꢀꢀ
(17)
[0227]
其中(xsbidx,ysbidx)表示每个4
×
4子块(subblock,sb)在当前cu中的子块坐标。坐标的范围为xsbidx=0..numsbx

1和ysbidx=0..numsby

1。partidx表示是否需要对两个分区进行翻转。
[0228]
stype=abs(motionidx)<32?2:(motionidx<=0?(1-partidx):partidx)
ꢀꢀ
(18)
[0229]
需要说明的是公式(18)以上关系式应该是笔误,正确的应该是下面公式(19):
[0230]
stype=abs(motionidx)<16?2:(motionidx<=0?partidx:(1-partidx))
ꢀꢀ
(19)
[0231]
或者将(17)式中的0和1取值翻转,也可以达到同样的更正效果。
[0232]
本技术实施例同样使用上述修改前和修改后的帧间预测。
[0233]
如此,根据每个4
×
4子块的几何中心位置(4i+2,4j+2)处abs(motionidx)的大小得到stype,用stype来判断当前子块存储单向mv还是双向mv;具体判断过程如下:如果stype为2,当前子块存储构造的双向mv;否则,如果stype为0,当前子块存储第一个分区的mva;如果stype为1,当前子块存储第二个分区的mvb。
[0234]
也就是说,在基于所述当前块内子块的运动索引信息,确定所述当前块内子块的运动信息的存储类型时,先根据子块的运动索引信息确定stype,再根据stype确定子块的运动信息的存储类型。这些存储下来的mv信息将用于后续编码块的mv预测。
[0235]
进一步的,编码器针对gpm预测模式相关语法的编码过程
[0236]
编码器中将gpm与其他帧间预测模式视为相互竞争的模式,依照率失真优化(rdo)或其他策略在模式之间进行选择,将选择的结果以码流中语法元素的形式传送给解码端。即编码单元的语法的写入操作。该过程与解析过程相反,首先得到的m和n这两个a、b分区各自在merge列表中所选择的参考选项位置信息,然后再依照下式对语法元素进行赋值。
[0237]
merge_gpm_idx0[xcb][ycb]=m
[0238]
merge_gpm_idx1[xcb][ycb]=n-(merge_gpm_idx1[xcb][ycb]>=m)?1:0
[0239]
再对其进行二值化、熵编码,从而最终写入码流传输。
[0240]
采用上述技术方案,在计算像素点的权重索引时,采用预设的计算策略可以实现对权重索引的计算过程进行降幂处理,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,解决了原有方案中计算权重过程中中间索引数据带有冗余比特的问题,修改相应的前后文计算参数,节省了中间运算过程所需的比特数,能够减少比特开销,提高存储效率。
[0241]
本技术实施例中,还给出了确定第一余弦值和第一正弦值的第二种方式。
[0242]
方式二:根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据所述正弦角度索引信息,从预设角度映射表中获取所述第一正弦值;其中,所述角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0243]
本技术实施例中,还包括构建角度映射表。
[0244]
具体的,构建角度映射表的方法包括:根据所述当前块的角度索引信息,确定所述当前块的余弦角度索引信息和正弦角度索引信息;根据所述余弦角度索引信息,从预设角度映射表中获取所述第一余弦值;根据m个角度索引信息,得到所述m个角度索引信息对应的第二余弦值;其中,m为偶数;对所述m个角度索引信息对应的第二余弦值进行降幂处理,得到所述m个角度索引信息对应的第一余弦值;根据所述m个角度索引信息及其对应的第一余弦值,从所述m个角度索引信息获取前m/2个角度索引信息对应的第一余弦值;利用所述前m/2个角度索引信息及其对应的第一余弦值,构建所述角度映射表。
[0245]
从表3中可以看出,角度索引信息对应的第一余弦值按照预设排列顺序循环分布,因此,为了节约存储空间可以省去表3中后半部分的重复内容,利用前半部分可以推到出后半部分的内容。
[0246]
表3中m为24,取表3中前12组映射关系得到新的角度映射表(表5)。
[0247]
表5
[0248]
idx02345681011121314dislut[idx]4442210-1-2-2-4-4
[0249]
根据表5公式(8)可以变形为公式(8-1):
[0250]
weightidx=(((x*subw+offsetx)<<1)+1)*(displacementx>=16?-dislut[displacementx%16]:dislut[displacementx])
[0251]
+(((y*subh+offsety)<<1)+1)*(displacementy>=16?-dislut[displacementy%16]:dislut[displacementy])
ꢀꢀ
(8-1)
[0252]
其中,(((x*subw+offsetx)<<1)+1)为像素点的原始横坐标放大两倍后的横坐标,(((y*subh+offsety)<<1)+1)为像素点的原始纵坐标放大两倍后的纵坐标,与公式(8)中含义相同。(displacementx>=16?-dislut[displacementx%16]:dislut[displacementx])用于从表5中获取第一余弦值,(displacementy>=16?-dislut[displacementy%16]:dislut[displacementy])用于从表5中获取第一正弦值。
[0253]
当displacementx>=16,displacementx%16得到的取余值,根据取余值再查询表5即可得到displacementx对应的余弦值,将该余弦值的负值作为第一余弦值,当displacementx<16,直接获取displacementx对应的余弦值;
[0254]
同理,当displacementy>=16,displacementy%16得到的取余值,根据取余值再查询表5即可得到displacementy对应的余弦值,将该余弦值的负值作为作为第一正弦值,当displacementx<16,直接获取displacementx对应的余弦值作为第一正弦值。
[0255]
公式(9)和公式(10)不变。
[0256]
同样的,在计算运动矢量存储相关参数时,也可以根更新后的角度映射表确定所述当前块内子块的运动索引。
[0257]
根据表5公式(16)可以变形为公式(16-1):
[0258]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*(displacementx>=16?-dislut[displacementx%16]:dislut[displacementx])
[0259]
+(((4*ysbidx+offsety)<<1)+5)*(displacementy>=16?-dislut[displacementy%16]:dislut[displacementy])
ꢀꢀ
(16-1)
[0260]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,与公式(16)含义相同,(displacementx>=16?-dislut[displacementx%16]:dislut[displacementx])用于从表5中获取第一余弦值,(displacementy>=16?-dislut[displacementy%16]:dislut[displacementy])用于从表5中获取第一正弦值。
[0261]
当displacementx>=16,displacementx%16得到的取余值,根据取余值再查询表5即可得到displacementx对应的余弦值,将该余弦值的负值作为第一余弦值,当displacementx<16,直接获取displacementx对应的余弦值作为第一余弦值;
[0262]
同理,当displacementy>=16,displacementy%16得到的取余值,根据取余值再查询表5即可得到displacementy对应的余弦值,将该余弦值的负值作为作为第一正弦值,当displacementx<16,直接获取displacementx对应的余弦值作为第一正弦值。公式(17)和
dislut[displacementy-16]:dislut[32-displacementy])用于从表6中获取第一正弦值。
[0277]
当displacementx<8,直接获取displacementx对应的余弦值作为第一余弦值;当displacementx>=8且displacementx<16时,取16-displacementx对应的余弦值,将该余弦值的负值作为第一余弦值;当displacementx>=8且displacementx>=16且displacementx<24时,displacementx-16对应的余弦值,将该余弦值的负值作为第一余弦值;当displacementx>=8且displacementx>=16且displacementx>=24时,取32-displacementx对应的余弦值,将该余弦值作为第一余弦值。
[0278]
当displacementy<8,直接获取displacementy对应的余弦值作为第一正弦值;当displacementy>=8且displacementy<16时,取16-displacementy对应的余弦值,将该余弦值的负值作为第一正弦值;当displacementy>=8且displacementy>=16且displacementy<24时,displacementy-16对应的余弦值,将该余弦值的负值作为第一正弦值;当displacementy>=8且displacementy>=16且displacementy>=24时,取32-displacementy对应的余弦值,将该余弦值作为第一正弦值。
[0279]
公式(9)和公式(10)不变。
[0280]
同样的,在计算运动矢量存储相关参数时,也可以根更新后的角度映射表确定所述当前块内子块的运动索引。
[0281]
根据表6公式(16)可以变形为公式(16-2):
[0282]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*(displacementx<8?dislut[displacementx]:displacementx<16?-dislut[16-displacementx]:displacementx<24?-dislut[displacementx-16]:dislut[32-displacementx])
[0283]
+(((4*ysbidx+offsety)<<1)+5)*(displacementy<8?dislut[displacementy]:displacementy<16?-dislut[16-displacementy]:
[0284]
displacementy<24?-dislut[displacementy-16]:dislut[32-displacementy])
ꢀꢀ
(16-2)
[0285]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,与公式(16)含义相同。
[0286]
(displacementx<8?dislut[displacementx]:displacementx<16?-dislut[16-displacementx]:displacementx<24?-dislut[displacementx-16]:dislut[32-displacementx])用于从表6中获取第一余弦值,
[0287]
(displacementy<8?dislut[displacementy]:displacementy<16?-dislut[16-displacementy]:displacementy<24?-dislut[displacementy-16]:dislut[32-displacementy])用于从表6中获取第一正弦值。
[0288]
当displacementx<8,直接获取displacementx对应的余弦值作为第一余弦值;当displacementx>=8且displacementx<16时,取16-displacementx对应的余弦值,将该余弦值的负值作为第一余弦值;当displacementx>=8且displacementx>=16且displacementx<24时,displacementx-16对应的余弦值,将该余弦值的负值作为第一余弦值;当displacementx>=8且displacementx>=16且displacementx>=24时,取32-displacementx对应的余弦值,将该余弦值作为第一余弦值。
[0289]
可以理解的是,角度映射表中记录了0-360
°
中24个角度对应的余弦值,由于四个
象限中每个角度对应的余弦值的数值和符号呈现一定循环规律,因此,可以只利用其中一个象限中的角度余弦值映射关系建立角度映射表,再利用角度映射表推导出剩余三个象限中角度余弦值的映射关系。如此,将原始表3的长度缩短的四分之一,节省了存储空间,与现有技术相比图像的帧间预测效果完全等同。
[0290]
采用方式一,通过对原始角度映射表中的角度映射值进行降幂处理得到更新后的角度映射表,采用更新后的角度映射表得到角度信息对应的权重索引,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,能够减少权重索引比特开销,以及存储角度映射表的比特开销提高存储效率。方式二和方式三利用更新后的角度映射表中的部分角度映射值得到角度信息对应的权重索引,进一步减少了存储角度映射表的比特开销。
[0291]
本技术实施例中,所述根据所述当前块的角度索引信息,采用预设的确定策略确定所述角度索引信息对应的第一余弦值和第一正弦值,包括:根据所述当前块的角度索引信息,采用预设的计算策略计算得到所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0292]
具体的,根据余弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据正弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。
[0293]
或者,根据正弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据余弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。
[0294]
本技术实施例中,还给出了确定第一余弦值和第一正弦值的第四种方式。
[0295]
方式四:根据所述当前块的角度索引信息,采用第一计算策略采用预设的计算策略计算得到所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0296]
也就是说方式四去掉角度映射表,计算得到角度索引信息对应的第一余弦值和第一正弦值,公式(8)可以变形为公式(8-3)和公式(8-4):
[0297]
weightidx=displacementx%16==8?0:(((x*subw+offsetx)<<1)+1)*(((distancementx>8&&distancementx<24)?(-1):1)*(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))
[0298]
+displacementy%16==8?0:(((x*subw+offsetx)<<1)+1)*(((distancementy>8&&distancementy<24)?(-1):1)*
[0299]
(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))
ꢀꢀ
(8-3)
[0300]
其中,(((x*subw+offsetx)<<1)+1)为像素点的原始横坐标放大两倍后的横坐标,(((y*subh+offsety)<<1)+1)为像素点的原始纵坐标放大两倍后的纵坐标,与公式(8)中含义相同。
[0301]
当displacementx%16==8时,weightidx=0;当displacementx%16不等于8时,(((distancementx>8&&distancementx<24)?(-1):1)*(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值
的正负,(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))用于确定第一余弦值的取值,(displacementx+4)%16<=8&&(displacementx+4)%16!=0)成立,第一余弦值取值为4;且(displacementx+4)%16<=8&&(displacementx+4)%16!=0)不成立,且abs(displacementx%16-8)>2成立,第一余弦值取值为2;(displacementx+4)%16<=8&&(displacementx+4)%16!=0)不成立,且abs(displacementx%16-8)>2不成立,第一余弦值取值为1。
[0302]
当displacementy%16==8时,weightidx=0;当displacementy%16不等于8时,(((distancementy>8&&distancementy<24)?(-1):1)*(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))用于确定第一正弦值的取值,(displacementy+4)%16<=8&&(displacementy+4)%16!=0)成立,第一正弦值取值为4;且(displacementy+4)%16<=8&&(displacementy+4)%16!=0)不成立,且abs(displacementy%16-8)>2成立,第一正弦值取值为2;(displacementy+4)%16<=8&&(displacementy+4)%16!=0)不成立,且abs(displacementy%16-8)>2不成立,第一正弦值取值为1。
[0303]
公式(8-3)是根据余弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据正弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。
[0304]
公式(8-3)的等价形式为公式(8-4),公式(8-4)具体为:
[0305]
weightidx=displacementx%16==8?0:(((x*subw+offsetx)<<1)+1)*((displacementy>16?(-1):1)*(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))
[0306]
+displacementy%16==8?0:(((x*subw+offsetx)<<1)+1)*((displacementx>16?(-1):1)*(((displacementy+4)%16<=8
[0307]
&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))
ꢀꢀ
(8-4)
[0308]
(displacementy>16?(-1):1)与公式(8-3)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(8-3)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;即正弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据余弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。其他部分相同,在此不再赘述。
[0309]
公式(9)和公式(10)不变。
[0310]
同样的,在计算运动矢量存储相关参数时,也可以根更新后的角度映射表确定所述当前块内子块的运动索引。
[0311]
去掉角度映射表,通过计算确定角度索引信息对应的第一余弦值和第一正弦值,公式(16)可以变形为公式(16-3)和公式(16-4):
[0312]
motionidx=displacementx%16==8?0:(((4*xsbidx+offsetx)<<1)+5)*(((distancementx>8&&distancementx<24)?(-1):1)*(((displacementx+4)%16<=8&&
(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))
[0313]
+displacementy%16==8?0:(((4*ysbidx+offsety)<<1)+5)*(((distancementy>8&&distancementy<24)?(-1):1)*
[0314]
(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))
ꢀꢀ
(16-3)
[0315]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,与公式(16)含义相同,
[0316]
当displacementx%16==8时,motionidx=0;当displacementx%16不等于8时,(((distancementx>8&&distancementx<24)?(-1):1)*(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值的正负,(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))用于确定第一余弦值的取值,(displacementx+4)%16<=8&&(displacementx+4)%16!=0)成立,第一余弦值取值为4;且(displacementx+4)%16<=8&&(displacementx+4)%16!=0)不成立,且abs(displacementx%16-8)>2成立,第一余弦值取值为2;(displacementx+4)%16<=8&&(displacementx+4)%16!=0)不成立,且abs(displacementx%16-8)>2不成立,第一余弦值取值为1。
[0317]
当displacementy%16==8时,motionidx=0;当displacementy%16不等于8时,(((distancementy>8&&distancementy<24)?(-1):1)*(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacem enty%16-8)>2?2:1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,(((displacementy+4)%16<=8&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))用于确定第一正弦值的取值,(displacementy+4)%16<=8&&(displacementy+4)%16!=0)成立,第一正弦值取值为4;且(displacementy+4)%16<=8&&(displacementy+4)%16!=0)不成立,且abs(displacementy%16-8)>2成立,第一正弦值取值为2;(displacementy+4)%16<=8&&(displacementy+4)%16!=0)不成立,且abs(displacementy%16-8)>2不成立,第一正弦值取值为1。
[0318]
公式(16-3)的等价形式为公式(16-4),公式(16-4)具体为:
[0319]
motionidx=displacementx%16==8?0:(((4*xsbidx+offsetx)<<1)+5)*((displacementy>16?(-1):1)*(((displacementx+4)%16<=8&&(displacementx+4)%16!=0)?4:(abs(displacementx%16-8)>2?2:1)))
[0320]
+displacementy%16==8?0:(((4*ysbidx+offsety)<<1)+5)*((displacementx>16?(-1):1)*(((displacementy+4)%16<=8
[0321]
&&(displacementy+4)%16!=0)?4:(abs(displacementy%16-8)>2?2:1)))
ꢀꢀ
(16-4)
[0322]
(displacementy>16?(-1):1)与公式(16-3)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(16-3)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;其他部分相同,在此不再赘述。公式(17)和公式(18)不
变。
[0323]
本技术实施例中,还给出了确定第一余弦值和第一正弦值的第五种方式。
[0324]
方式五:根据所述当前块的角度索引信息,采用第二计算策略采用预设的计算策略计算得到所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0325]
也就是说方式五同样去掉角度映射表,采用与方式四不同的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值,公式(8)可以变形为公式(8-5)和公式(8-6):
[0326]
weightidx=displacementx%16==8?0:(((x*subw+offsetx)<<1)+1)*(((distancementx>8&&distancementx<24)?(-1):1)<<clip(0,2(abs(displacementx%16-8)-1)>>1))
[0327]
+displacementy%16==8?0:(((x*subw+offsetx)<<1)+1)*(((distancementy>8&&distancementy<24)?(-1):1)
[0328]
<<clip(0,2(abs(displacementy%16-8)-1)>>1))
ꢀꢀ
(8-5)
[0329]
其中,(((x*subw+offsetx)<<1)+1)为像素点的原始横坐标放大两倍后的横坐标,(((y*subh+offsety)<<1)+1)为像素点的原始纵坐标放大两倍后的纵坐标,与公式(8)中含义相同。
[0330]
当displacementx%16==8时,weightidx=0;当displacementx%16不等于8时,(((distancementx>8&&distancementx<24)?(-1):1)<<clip(0,2(abs(displacementx%16-8)-1)>>1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值的正负,<<clip(0,2(abs(displacementx%16-8)-1)>>1))表示将确定的+1或者-1左移0位、1位或2位,得到对应第一余弦值4、2、1、-1、-2或-4。
[0331]
当displacementy%16==8时,weightidx=0;当displacementy%16不等于8时,(((distancementy>8&&distancementy<24)?(-1):1)<<clip(0,2(abs(displacementy%16-8)-1)>>1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,<<clip(0,2(abs(displacementy%16-8)-1)>>1))表示将确定的+1或者-1左移0位、1位或2位,得到对应第一正弦值4、2、1、-1、-2或-4。
[0332]
公式(8-5)的等价形式为公式(8-6),公式(8-6)具体为:
[0333]
weightidx=displacementx%16==8?0:(((x*subw+offsetx)<<1)+1)*((displacementy>16?(-1):1)
[0334]
<<clip(0,2(abs(displacementx%16-8)-1)>>1))
[0335]
+displacementy%16==8?0:(((x*subw+offsetx)<<1)+1)*((displacementx>16?(-1):1)
[0336]
<<clip(0,2(abs(displacementy%16-8)-1)>>1))
ꢀꢀ
(8-6)
[0337]
(displacementy>16?(-1):1)与公式(8-5)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(8-5)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;其他部分相同,在此不再赘述。
[0338]
公式(9)和公式(10)不变。
[0339]
同样的,在计算运动矢量存储相关参数时,也可以根更新后的角度映射表确定所
述当前块内子块的运动索引。
[0340]
去掉角度映射表,采用与方式四不同的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值,公式(16)可以变形为公式(16-5)和公式(16-6):
[0341]
motionidx=displacementx%16==8?0:(((4*xsbidx+offsetx)<<1)+5)*(((distancementx>8&&distancementx<24)?(-1):1)<<clip(0,2(abs(displacementx%16-8)-1)>>1))
[0342]
+displacementy%16==8?0:(((4*ysbidx+offsety)<<1)+5)*(((distancementy>8&&distancementy<24)?(-1):1)
[0343]
<<clip(0,2(abs(displacementx%16-8)-1)>>1))
ꢀꢀ
(16-5)
[0344]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,与公式(16)含义相同。
[0345]
当displacementx%16==8时,motionidx=0;当displacementx%16不等于8时,(((distancementx>8&&distancementx<24)?(-1):1)<<clip(0,2(abs(displacementx%16-8)-1)>>1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值的正负,<<clip(0,2(abs(displacementx%16-8)-1)>>1))表示将确定的+1或者-1左移0位、1位或2位,得到对应第一余弦值4、2、1、-1、-2或-4。
[0346]
当displacementy%16==8时,motionidx=0;当displacementy%16不等于8时,(((distancementy>8&&distancementy<24)?(-1):1)<<clip(0,2(abs(displacementy%16-8)-1)>>1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,<<clip(0,2(abs(displacementy%16-8)-1)>>1))表示将确定的+1或者-1左移0位、1位或2位,得到对应第一正弦值4、2、1、-1、-2或-4。
[0347]
公式(16-5)的等价形式为公式(16-6),公式(16-6)具体为:
[0348]
motionidx=displacementx%16==8?0:(((4*xsbidx+offsetx)<<1)+5)*((displacementy>16?(-1):1)
[0349]
<<clip(0,2(abs(displacementx%16-8)-1)>>1))
[0350]
+displacementy%16==8?0:(((4*ysbidx+offsety)<<1)+5)*((displacementx>16?(-1):1)
[0351]
<<clip(0,2(abs(displacementy%16-8)-1)>>1))
ꢀꢀ
(16-6)
[0352]
(displacementy>16?(-1):1)与公式(16-5)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(16-5)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;其他部分相同,在此不再赘述。
[0353]
本技术实施例中,还给出了确定第一余弦值和第一正弦值的第六种方式。
[0354]
方式六:根据所述当前块的角度索引信息,采用第三计算策略采用预设的计算策略计算得到所述角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0355]
也就是说方式六同样去掉角度映射表,采用与方式四和方式五不同的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值,公式(8)可以变形为公式(8-7)、公
式(8-8)和公式(8-9):
[0356]
weightidx=(((x*subw+offsetx)<<1)+1)*(((distancementx>8&&distancementx<24)?(-1):1)*
[0357]
((abs((displacementx%16)-8)+1)>>1))
[0358]
+(((y*subh+offsety)<<1)+1)*(((distancementy>8&&distancementy<24)<16?(-1):1)*
[0359]
((abs((displacementy%16)-8)+1)>>1)).
ꢀꢀ
(8-7)
[0360]
其中,(((x*subw+offsetx)<<1)+1)为像素点的原始横坐标放大两倍后的横坐标,(((y*subh+offsety)<<1)+1)为像素点的原始纵坐标放大两倍后的纵坐标,与公式(8)中含义相同。
[0361]
(((distancementx>8&&distancementx<24)?(-1):1)*((abs((displacementx%16)-8)+1)>>1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值的正负,((abs((displacementx%16)-8)+1)>>1))用于确定第一余弦值的取值,第一余弦值的取值包括4、3、2、1、0。
[0362]
(((distancementy>8&&distancementy<24)?(-1):1)*((abs((displacementy%16)-8)+1)>>1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,((abs((displacementy%16)-8)+1)>>1))用于确定第一正弦值的取值,第一正弦值的取值包括4、3、2、1、0。
[0363]
公式(8-7)的等价形式为公式(8-8),公式(8-8)具体为:
[0364]
weightidx=(((x*subw+offsetx)<<1)+1)*((displacementy>=16)?(-1):1)*((abs((displacementx%16)-8)+1)>>1))
[0365]
+(((y*subh+offsety)<<1)+1)*(((displacementx<16)?(-1):1)*((abs((displacementy%16)-8)+1)>>1))
ꢀꢀ
(8-8)
[0366]
(displacementy>16?(-1):1)与公式(8-7)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(8-7)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;其他部分相同,在此不再赘述。
[0367]
公式(8-7)的等价形式为公式(8-9),公式(8-9)具体为:
[0368]
weightidx=(((x*subw+offsetx)<<1)+1)*((displacementy&0x10)?(-1):1)*((displacementx&0x08)?((~(displacementx&0x07)+2)>>1):(((displacementx&0x07)+1)>>1))
[0369]
+(((y*subh+offsety)<<1)+1)*((displacementx&0x10?1:(-1))*((displacementy&0x08)?((~(displacementy&0x07)+2)>>1):
[0370]
(((displacementy&0x07)+1)>>1)).
ꢀꢀ
(8-9)
[0371]
((displacementy&0x10)?(-1):1)与公式(8-7)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,((displacementx&0x10?1:(-1))与公式(8-7)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负。
[0372]
((displacementx&0x08)?((~(displacementx&0x07)+2)>>1):
(((displacementx&0x07)+1)>>1))用于确定第一余弦值的取值,第一余弦值的取值包括4、3、2、1、0。
[0373]
((displacementy&0x08)?((~(displacementy&0x07)+2)>>1):(((displacementy&0x07)+1)>>1))用于确定第一正弦值的取值,第一正弦值的取值包括4、3、2、1、0。
[0374]
公式(9)和公式(10)不变。
[0375]
同样的,在计算运动矢量存储相关参数时,也可以根更新后的角度映射表确定所述当前块内子块的运动索引。
[0376]
也就是说方式六同样去掉角度映射表,采用与方式四和方式五不同的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值,公式(16)可以变形为公式(16-7)、公式(16-8)和公式(16-9):
[0377]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*(((distancementx>8&&distancementx<24)?(-1):1)*
[0378]
((abs((displacementx%16)-8)+1)>>1))
[0379]
+(((4*ysbidx+offsety)<<1)+1)*(((distancementy>8&&distancementy<24)<16?(-1):1)*
[0380]
((abs((displacementy%16)-8)+1)>>1))
ꢀꢀ
(16-7)
[0381]
其中,(((4*xsbidx+offsetx)<<1)+5)为子块内中心像素点的原始横坐标放大两倍后的横坐标,(((4*ysbidx+offsety)<<1)+5)为自块内中心像素点的原始纵坐标放大两倍后的纵坐标,与公式(16)含义相同。
[0382]
(((distancementx>8&&distancementx<24)?(-1):1)*((abs((displacementx%16)-8)+1)>>1))用于表示获取第一余弦值,具体的,(distancementx>8&&distancementx<24)?(-1):1)用于确定第一余弦值的正负,((abs((displacementx%16)-8)+1)>>1))用于确定第一余弦值的取值,第一余弦值的取值包括4、3、2、1、0。
[0383]
(((distancementy>8&&distancementy<24)?(-1):1)*((abs((displacementy%16)-8)+1)>>1))用于表示获取第一正弦值,具体的,(distancementy>8&&distancementy<24)?(-1):1)用于确定第一正弦值的正负,((abs((displacementy%16)-8)+1)>>1))用于确定第一正弦值的取值,第一正弦值的取值包括4、3、2、1、0。
[0384]
公式(16-7)的等价形式为公式(16-8),公式(16-8)具体为:
[0385]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*((displacementy>=16)?(-1):1)*((abs((displacementx%16)-8)+1)>>1))
[0386]
+(((4*ysbidx+offsety)*(((displacementx<16)?(-1):1)*((abs((displacementy%16)-8)+1)>>1))
ꢀꢀ
(16-8)
[0387]
(displacementy>16?(-1):1)与公式(16-7)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,(displacementx>16?(-1):1)与公式(16-7)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负;其他部分相同,在此不再赘述。
[0388]
公式(16-7)的等价形式为公式(16-9),公式(16-9)具体为:
[0389]
motionidx=(((4*xsbidx+offsetx)<<1)+5)*((displacementy&0x10)?(-1):1)*
((displacementx&0x08)?((~(displacementx&0x07)+2)>>1):(((displacementx&0x07)+1)>>1))
[0390]
+(((4*ysbidx+offsety)*((displacementx&0x10?1:(-1))*((displacementy&0x08)?((~(displacementy&0x07)+2)>>1):
[0391]
(((displacementy&0x07)+1)>>1)).
ꢀꢀ
(16-9)
[0392]
((displacementy&0x10)?(-1):1)与公式(16-7)中((distancementx>8&&distancementx<24)?(-1):1)作用相同,都是为了确定第一余弦值的正负,((displacementx&0x10?1:(-1))与公式(16-7)((distancementy>8&&distancementy<24)?(-1):1)作用相同,都是为了确定第一正弦值的正负。
[0393]
((displacementx&0x08)?((~(displacementx&0x07)+2)>>1):(((displacementx&0x07)+1)>>1))用于确定第一余弦值的取值,第一余弦值的取值包括4、3、2、1、0。
[0394]
((displacementy&0x08)?((~(displacementy&0x07)+2)>>1):(((displacementy&0x07)+1)>>1))用于确定第一正弦值的取值,第一正弦值的取值包括4、3、2、1、0。
[0395]
通过方式六中第三计算策略得到的角度索引信息和第一余弦值和第一正弦值的映射关系,等价于表7中的映射关系。
[0396]
表7
[0397]
idx02345681011121314dislut[idx]4332210-1-2-2-3-3idx161819202122242627282930dislut[idx]-4-3-3-2-2-1012233
[0398]
采用方式四至方式六,去掉了表构建角度映射表的步骤,直接计算得到角度信息对应的权重索引,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,能够减少权重索引比特开销,以及存储角度映射表的比特开销提高存储效率。
[0399]
本技术精简了权重值运算的计算,对原始角度映射表(即表4)中各项进行降幂处理,减少了中间计算量存储所需的部分比特数。从表7中可以看出,角度映射表中每项减少了一个比特,权重索引weightidx减少了一个比特,权重索引扩大值weightidxl减小了一个比特,运动索引信息motionidx也减少了一个比特。
[0400]
图14为本技术实施例提供的帧内预测方法的第二流程示意图,应用于解码器,如图14所示,该方法包括:
[0401]
步骤401:解析码流,确定当前块的预测模式参数;
[0402]
步骤402:当预测模式参数指示使用几何划分预测模式gpm确定当前块的帧间预测值时,确定当前块的gpm参数;
[0403]
步骤403:根据当前块的gpm参数,确定当前块的第一分区的第一预测值和当前块的第二分区的第二预测值;
[0404]
步骤404:根据当前块的gpm参数,确定当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;
[0405]
步骤405:基于当前块内像素点的权重索引,确定当前块内像素点的第一权重值和
第二权重值;
[0406]
步骤406:基于第一分区内像素点的第一预测值和第一权重值,以及第二分区内像素点的第二预测值和第二权重值,对第一预测值和第二预测值进行加权融合,得到当前块的帧间预测值。
[0407]
在本技术实施例中,预测模式参数指示使用gpm确定当前块的帧间预测时,就可以获取或者确定出当前块的gpm参数。
[0408]
具体的,当前块的gpm参数包括:当前块分割线的角度索引信息和当前块的尺寸信息,还可以包括:当前块分割线的步长索引信息等等。解码器解析码流获取当前块分割线的角度索引信息、补偿信息和当前块的尺寸信息等信息。
[0409]
本技术实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;根据当前块的gpm参数,确定当前块内像素点的权重索引,包括:根据当前块的尺寸信息,确定当前块内像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内像素点的位置信息,确定当前块内像素点的权重索引。
[0410]
本技术实施例中,根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值,包括:根据当前块的角度索引信息,确定当前块的余弦角度索引信息和正弦角度索引信息;根据余弦角度索引信息,从预设角度映射表中获取第一余弦值;根据正弦角度索引信息,从预设角度映射表中获取第一正弦值;其中,角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0411]
本技术实施例中,根据余弦角度索引信息,从预设角度映射表中获取第一余弦值之前,方法还包括:根据m个角度索引信息,得到m个角度索引信息对应的第二余弦值;其中,m为偶数;对m个角度索引信息对应的第二余弦值进行降幂处理,得到m个角度索引信息对应的第一余弦值;利用m个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0412]
本技术实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;利用m个角度索引信息及其对应的第一余弦值,构建角度映射表,包括:根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/2个角度索引信息对应的第一余弦值;利用前m/2个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0413]
本技术实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;利用m个角度索引信息及其对应的第一余弦值,构建角度映射表,包括:根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/4+1个角度索引信息对应的第一余弦值;利用前前m/4+1个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0414]
本技术实施例中,根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值,包括:根据当前块的角度索引信息,采用预设的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0415]
具体的,根据余弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据正弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。
[0416]
或者,根据正弦角度索引信息确定第一余弦值的正负号,根据余弦角度索引信息计算第一余弦值的绝对值;根据余弦角度索引信息确定第一正弦值的正负号,根据正弦角度索引信息计算第一正弦值的绝对值。
[0417]
本技术实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;根据当前块的gpm参数,确定当前块内像素点的权重索引,包括:根据当前块的尺寸信息,确定当前块内子块中心像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内子块中心像素点的位置信息,确定当前块内子块中心像素点的权重索引;方法还包括:将当前块内子块中心像素点的权重索引作为当前块内子块的运动索引;基于当前块内子块的运动索引信息,确定当前块内子块的运动信息的存储类型;其中,存储类型包括存储单向运动信息或存储双向运动信息。
[0418]
本技术实施例中,根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值包括6种方式:
[0419]
根据当前块的角度索引信息,确定当前块的余弦角度索引信息和正弦角度索引信息;根据余弦角度索引信息,从预设角度映射表中获取第一余弦值;根据正弦角度索引信息,从预设角度映射表中获取第一正弦值;其中,角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0420]
即根据预先构建角度映射表获取权重索引信息的第一余弦值和第一正弦值,本技术实施例中,具体给出的三种角度映射表的构建方式,在编码器端已经详细阐述这里不再赘述。
[0421]
本技术实施例中还给出了三种根据计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值,具体的第一计算策略、第二计算策略和第三计算策略在编码器端已经详细阐述这里不再赘述。
[0422]
在一些实施例中,该方法还包括构建运动信息候选列表,解析码流,确定运动信息候选列表中当前块第一分区的运动信息对应的第一索引信息,以及当前块第二分区运动信息对应的第二索引信息;基于第一索引信息,从运动信息候选列表中获取第一分区的运动信息;基于第二索引信息,从运动信息候选列表中获取第二分区的运动信息;利用第一分区的运动信息计算第一分区的第一预测值,利用第二分区的运动信息计算第二分区的第二预测值;对第一预测值和第二预测值进行加权融合,得到当前块的帧间预测值。
[0423]
具体的,解析码流,当运动信息候选列表的候选项数量大于2时,从运动信息候选列表中获取第一分区的运动信息对应的第一索引信息和第二分区运动信息对应的第二索引信息;
[0424]
当运动信息候选列表的候选项数量等于2时,从运动信息候选列表中获取第一分区的运动信息对应的第一索引信息,或者第二分区运动信息对应的第二索引信息。
[0425]
在本技术实施例中,解码器可以根据每个像素点的第一预测值与第一权重值相乘,加上对应的每个像素点的第二预测值与第二权重值之积,完成对当前块内像素点的加权融合,得到当前块的帧间预测值。
[0426]
实际应用中,解码器解析码流获取第一分区的第一索引信息和第二分区的第二索
引信息,再根据索引信息从解码器建立的运动信息候选列表中确定各自分区的运动信息。解码器端对merge列表查重去重操作构建运动信息候选列表的方法与解码端相同,解码器端的其他帧间预测过程与编码器端相同,这里不再赘述。
[0427]
采用上述方案,解码器在进行帧间预测的过程中,在计算像素点的权重索引时,采用预设的计算策略可以实现对权重索引的计算过程进行降幂处理,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,解决了原有方案中计算权重过程中中间索引数据带有冗余比特的问题,能够减少比特开销,提高存储效率。
[0428]
本技术实施例提供一种编码器,图15为本技术实施例中编码器的第一组成结构示意图,如图15所示,该编码器50包括:
[0429]
确定单元501,用于确定当前块的预测模式参数;
[0430]
第一处理单元502,用于当预测模式参数指示使用几何划分预测模式gpm确定当前块的帧间预测值时,确定当前块的gpm参数;根据当前块的gpm参数,确定当前块的第一分区的第一预测值和当前块的第二分区的第二预测值;
[0431]
第一处理单元502,还用于根据当前块的gpm参数,确定当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;基于当前块内像素点的权重索引,确定当前块内像素点的第一权重值和第二权重值;
[0432]
第一预测单元503,用于基于第一分区内像素点的第一预测值和第一权重值,以及第二分区内像素点的第二预测值和第二权重值,对第一预测值和第二预测值进行加权融合,得到当前块的帧间预测值。
[0433]
在本技术的一些实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;
[0434]
第一处理单元502,具体用于根据当前块的尺寸信息,确定当前块内像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内像素点的位置信息,确定当前块内像素点的权重索引。
[0435]
在本技术的一些实施例中,第一处理单元502,具体用于根据当前块的角度索引信息,确定当前块的余弦角度索引信息和正弦角度索引信息;根据余弦角度索引信息,从预设角度映射表中获取第一余弦值;根据正弦角度索引信息,从预设角度映射表中获取第一正弦值;其中,角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0436]
在本技术的一些实施例中,第一处理单元502,具体用于根据m个角度索引信息,得到m个角度索引信息对应的第二余弦值;其中,m为偶数;对m个角度索引信息对应的第二余弦值进行降幂处理,得到m个角度索引信息对应的第一余弦值;利用m个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0437]
在本技术的一些实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;
[0438]
第一处理单元502,具体用于根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/2个角度索引信息对应的第一余弦值;利用前m/2个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0439]
在本技术的一些实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;
[0440]
第一处理单元502,具体用于根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/4+1个角度索引信息对应的第一余弦值;利用前前m/4+1个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0441]
在本技术的一些实施例中,第一处理单元502,具体用于根据当前块的角度索引信息,采用预设的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0442]
在本技术的一些实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;
[0443]
第一处理单元502,具体用于根据当前块的尺寸信息,确定当前块内子块中心像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内子块中心像素点的位置信息,确定当前块内子块中心像素点的权重索引;
[0444]
第一处理单元502,还用于将当前块内子块中心像素点的权重索引作为当前块内子块的运动索引;基于当前块内子块的运动索引信息,确定当前块内子块的运动信息的存储类型;其中,存储类型包括存储单向运动信息或存储双向运动信息。
[0445]
在本技术的一些实施例中,编码器50还包括写入单元,用于将当前块的角度索引信息写入码流。
[0446]
在实际应用中,本技术实施例还提供了一种编码器,图16为本技术实施例中编码器的第二组成结构示意图如图16所示,编码器50包括:
[0447]
第一存储器504和第一处理器505;第一存储器504存储有可在第一处理器505上运行的计算机程序,第一处理器505执行程序时编码器侧的帧间预测方法。
[0448]
采用上述方案,编码器在进行帧间预测的过程中,在计算像素点的权重索引时,采用预设的计算策略可以实现对权重索引的计算过程进行降幂处理,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,解决了原有方案中计算权重过程中中间索引数据带有冗余比特的问题,能够减少比特开销,提高存储效率。
[0449]
本技术实施例提供一种解码器器,图17为本技术实施例中解码器的第一组成结构示意图,如图17所示,该解码器60包括:
[0450]
解析单元601,用于解析码流,确定当前块的预测模式参数;
[0451]
第二处理单元602,用于当预测模式参数指示使用几何划分预测模式gpm确定当前块的帧间预测值时,确定当前块的gpm参数;根据当前块的gpm参数,确定当前块的第一分区的第一预测值和当前块的第二分区的第二预测值;
[0452]
第二处理单元602,还用于根据当前块的gpm参数,确定当前块内像素点的权重索引;其中,根据不同gpm参数确定的像素点的权重索引不全为偶数;基于当前块内像素点的权重索引,确定当前块内像素点的第一权重值和第二权重值;
[0453]
第二预测单元603,还用于基于第一分区内像素点的第一预测值和第一权重值,以及第二分区内像素点的第二预测值和第二权重值,对第一预测值和第二预测值进行加权融
合,得到当前块的帧间预测值。
[0454]
在本技术的一些实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;
[0455]
第二处理单元602,具体用于根据当前块的尺寸信息,确定当前块内像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内像素点的位置信息,确定当前块内像素点的权重索引。
[0456]
在本技术的一些实施例中,第二处理单元602,具体用于根据当前块的角度索引信息,确定当前块的余弦角度索引信息和正弦角度索引信息;根据余弦角度索引信息,从预设角度映射表中获取第一余弦值;根据正弦角度索引信息,从预设角度映射表中获取第一正弦值;其中,角度映射表中不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数。
[0457]
在本技术的一些实施例中,第二处理单元602,具体用于根据m个角度索引信息,得到m个角度索引信息对应的第二余弦值;其中,m为偶数;对m个角度索引信息对应的第二余弦值进行降幂处理,得到m个角度索引信息对应的第一余弦值;利用m个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0458]
在本技术的一些实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;
[0459]
第二处理单元602,具体用于根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/2个角度索引信息对应的第一余弦值;利用前m/2个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0460]
在本技术的一些实施例中,m个角度索引信息对应的第一余弦值按照预设排列顺序循环分布;
[0461]
第二处理单元602,具体用于根据m个角度索引信息及其对应的第一余弦值,从m个角度索引信息获取前m/4+1个角度索引信息对应的第一余弦值;利用前前m/4+1个角度索引信息及其对应的第一余弦值,构建角度映射表。
[0462]
在本技术的一些实施例中,第二处理单元602,具体用于根据当前块的角度索引信息,采用预设的计算策略计算得到角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息计算得到的第一余弦值和第二余弦值不全为偶数。
[0463]
在本技术的一些实施例中,当前块的gpm参数包括当前块的尺寸信息和角度索引信息;
[0464]
第二处理单元602,具体用于根据当前块的尺寸信息,确定当前块内子块中心像素点的位置信息;根据当前块的角度索引信息,采用预设的确定策略确定角度索引信息对应的第一余弦值和第一正弦值;其中,不同角度索引信息对应的第一余弦值和第一正弦值不全为偶数;基于第一余弦值和第一正弦值,分别结合当前块内子块中心像素点的位置信息,确定当前块内子块中心像素点的权重索引;
[0465]
第二处理单元602,还用于将当前块内子块中心像素点的权重索引作为当前块内子块的运动索引;基于当前块内子块的运动索引信息,确定当前块内子块的运动信息的存储类型;其中,存储类型包括存储单向运动信息或存储双向运动信息。
[0466]
在实际应用中,本技术实施例还提供了一种解码器,图18为本技术实施例中解码器的第二组成结构示意图,如图18所示,解码器60包括:
[0467]
第二存储器604和第二处理器605;第二存储器604存储有可在第二处理器605上运行的计算机程序,第二处理器605执行程序时解码器侧的帧间预测方法。
[0468]
可以理解的是,解码器在进行帧间预测的过程中,在计算像素点的权重索引时,采用预设的计算策略可以实现对权重索引的计算过程进行降幂处理,使得到的权重索引不全为偶数,在不改变编解码性能的基础上,解决了原有方案中计算权重过程中中间索引数据带有冗余比特的问题,能够减少比特开销,提高存储效率。
[0469]
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0470]
相应的,本技术实施例提供了一种存储介质,其上存储有计算机程序,该计算机程序被第一处理器执行时,实现编码器的帧间预测方法;或者,该计算机程序被第二处理器执行时,实现解码器的帧间预测方法。
[0471]
这里需要指出的是:以上存储介质和装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质和装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0472]
以上,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1