一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频编解码中的运动信息列表构建方法、装置及设备与流程

2022-02-24 13:50:46 来源:中国专利 TAG:


1.本技术实施例涉及视频编解码技术领域,特别涉及一种视频编解码中的运动信息列表构建方法、装置及设备。


背景技术:

2.在目前的视频压缩技术中,如vvc(versatile video coding,通用视频编码)和avs3(audio video coding standard 3,音视频编码标准3)中,视频编解码器通常需要构建运动信息列表以导出预测位移矢量。
3.但是,当运动信息列表中包含的位移矢量不足时,会导致该运动信息列表无法提供有效的预测位移矢量,这会影响到视频的压缩性能。


技术实现要素:

4.本技术实施例提供了一种视频编解码中的运动信息列表构建方法、装置及设备,能够在候选运动信息列表中包含的运动信息不足时,采用空域临近的运动信息进行填充,以取得更好的位移矢量预测效果,提升视频的压缩性能。所述技术方案如下:
5.根据本技术实施例的一个方面,提供了一种视频编解码中的运动信息列表构建方法,所述方法包括:
6.构建空域运动信息列表,所述空域运动信息列表中包括当前编解码块的空域临近块的运动信息,所述空域临近块至少包括帧内串复制isc块;
7.在候选运动信息列表中的运动信息不足的情况下,从所述空域运动信息列表中获取至少一个运动信息,采用所述至少一个运动信息对所述候选运动信息列表进行填充;
8.其中,所述候选运动信息列表用于为所述当前编解码块提供候选的预测位移矢量。
9.根据本技术实施例的一个方面,提供了一种视频编解码中的运动信息列表构建装置,所述装置包括:
10.列表构建模块,用于构建空域运动信息列表,所述空域运动信息列表中包括当前编解码块的空域临近块的运动信息,所述空域临近块至少包括帧内串复制isc块;
11.列表填充模块,用于在候选运动信息列表中的运动信息不足的情况下,从所述空域运动信息列表中获取至少一个运动信息,采用所述至少一个运动信息对所述候选运动信息列表进行填充;
12.其中,所述候选运动信息列表用于为所述当前编解码块提供候选的预测位移矢量。
13.根据本技术实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述视频编解码中的运动信息列表构建方法。
14.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述视频编解码中的运动信息列表构建方法。
15.还一方面,本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述视频编解码中的运动信息列表构建方法。
16.本技术实施例提供的技术方案可以包括如下有益效果:
17.通过在候选运动信息列表中包含的运动信息不足时,采用空域临近的运动信息进行填充,实现对该候选运动信息列表的内容扩充,从而在该候选运动信息列表中提供更多更有效的位移矢量,以取得更好的位移矢量预测效果,提升视频的压缩性能。
附图说明
18.图1是本技术示例性示出的一种视频编码过程的基本流程图;
19.图2是本技术一个实施例提供的帧间预测模式的示意图;
20.图3是本技术一个实施例提供的候选运动矢量的示意图;
21.图4是本技术一个实施例提供的帧内块复制模式的示意图;
22.图5是本技术一个实施例提供的帧内串复制模式的示意图;
23.图6是本技术一个实施例提供的通信系统的简化框图;
24.图7是本技术示例性示出的视频编码器和视频解码器在流式传输环境中的放置方式的示意图;
25.图8是本技术一个实施例提供的视频编解码中的运动信息列表构建方法的流程图;
26.图9是本技术一个实施例提供的空域临近块的示意图;
27.图10是本技术一个实施例提供的视频编解码中的运动信息列表构建装置的框图;
28.图11是本技术一个实施例提供的计算机设备的结构框图。
具体实施方式
29.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
30.在对本技术实施例进行介绍说明之前,首先结合图1对视频编码技术进行简单介绍。图1示例性示出了一种视频编码过程的基本流程图。
31.视频信号是指包括多个帧的图像序列。帧(frame)是视频信号空间信息的表示。以yuv模式为例,一个帧包括一个亮度样本矩阵(y)和两个色度样本矩阵(cb和cr)。从视频信号的获取方式来看,可以分为摄像机拍摄到的以及计算机生成的两种方式。由于统计特性的不同,其对应的压缩编码方式也可能有所区别。
32.在一些主流的视频编码技术中,如h.265/hevc(high efficient video coding,高效率视频压缩编码)、h.266/vvc(versatile video coding,通用视频编码)标准、avs
(audio video coding standard,音视频编码标准)(如avs3)中,采用了混合编码框架,对输入的原始视频信号进行如下一系列的操作和处理:
33.1、块划分结构(block partition structure):输入图像划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作ctu(coding tree unit,编码树单元),或者lcu(large coding unit,最大编码单元)。ctu再往下,可以继续进行更加精细的划分,得到一个或多个基本编码的单元,称之为cu(coding unit,编码单元)。每个cu是一个编码环节中最基本的元素。以下描述的是对每一个cu可能采用的各种编码方式。
34.2、预测编码(predictive coding):包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差视频信号。编码端需要为当前cu决定在众多可能的预测编码模式中,选择最适合的一种,并告知解码端。其中,帧内预测是指预测的信号来自于同一图像内已经编码重建过的区域。帧间预测是指预测的信号来自已经编码过的,不同于当前图像的其他图像(称之为参考图像)。
35.3、变换编码及量化(transform&quantization):残差视频信号经过dft(discrete fourier transform,离散傅里叶变换)、dct(discrete cosine transform,离散余弦变换)等变换操作,将信号转换到变换域中,称之为变换系数。在变换域中的信号,进一步进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。在一些视频编码标准中,可能有多于一种变换方式可以选择,因此,编码端也需要为当前cu选择其中的一种变换,并告知解码端。量化的精细程度通常由量化参数来决定。qp(quantization parameter,量化参数)取值较大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真,及较低的码率;相反,qp取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
36.4、熵编码(entropy coding)或统计编码:量化后的变换域信号,将根据各个值出现的频率,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码产生其他信息,例如选择的模式、运动矢量等,也需要进行熵编码以降低码率。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常见的统计编码方式有变长编码(variable length coding,简称vlc)或者基于上下文的二值化算术编码(content adaptive binary arithmetic coding,简称cabac)。
37.5、环路滤波(loop filtering):已经编码过的图像,经过反量化、反变换及预测补偿的操作(上述2~4的反向操作),可获得重建的解码图像。重建图像与原始图像相比,由于存在量化的影响,部分信息与原始图像有所不同,产生失真(distortion)。对重建图像进行滤波操作,例如去块效应滤波(deblocking),sao(sample adaptive offset,样本自适应偏移量)或者alf(adaptive lattice filter,自适应格型滤波器)等滤波器,可以有效的降低量化所产生的失真程度。由于这些经过滤波后的重建图像,将作为后续编码图像的参考,用于对将来的信号进行预测,所以上述的滤波操作也被称为环路滤波,及在编码环路内的滤波操作。
38.根据上述编码过程可以看出,在解码端,对于每一个cu,解码器获得压缩码流后,先进行熵解码,获得各种模式信息及量化后的变换系数。各个系数经过反量化及反变换,得到残差信号。另一方面,根据已知的编码模式信息,可获得该cu对应的预测信号,两者相加
之后,即可得到重建信号。最后,解码图像的重建值,需要经过环路滤波的操作,产生最终的输出信号。
39.一些主流的视频编码标准中,如hevc、vvc、avs3等标准中,均采用基于块的混合编码框架。它们将原始的视频数据分成一系列的编码块,结合预测、变换和熵编码等视频编码方法,实现视频数据的压缩。其中,运动补偿是视频编码常用的一类预测方法,运动补偿基于视频内容在时域或空域的冗余特性,从已编码的区域导出当前编码块的预测值。这类预测方法包括:帧间预测、帧内块复制预测、帧内串复制预测等,在具体的编码实现中,可能单独或组合使用这些预测方法。对于使用了这些预测方法的编码块,通常需要在码流显式或隐式地编码一个或多个二维的位移矢量,指示当前块(或当前块的同位块)相对它的一个或多个参考块的位移。
40.需要注意的是,在不同的预测模式下及不同的实现,位移矢量可能有不同的名称,本文统一按照以下方式进行描述:1)帧间预测模式中的位移矢量称为运动矢量(motion vector,简称mv);2)ibc(intra block copy,帧内块复制)预测模式中的位移矢量称为块矢量(block vector,简称bv);3)isc(intra string copy,帧内串复制)预测模式中的位移矢量称为串矢量(string vector,简称sv)。帧内串复制也称作“串预测”或“串匹配”等。
41.mv是指用于帧间预测模式的位移矢量,由当前图像指向参考图像,其值为当前块和参考块之间的坐标偏移量,其中,当前块与参考块在两个不同图像中。在帧间预测模式中,可以引入运动矢量预测,通过对当前块的运动矢量进行预测,得到当前块对应的预测运动矢量,对当前块对应的预测运动矢量与实际运动矢量之间的差值进行编码传输,相较于直接对当前块对应的实际运动矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测运动矢量是指通过运动矢量预测技术,得到的当前块的运动矢量的预测值。
42.bv是指用于ibc预测模式的位移矢量,其值为当前块和参考块之间的坐标偏移量,其中,当前块与参考块均在当前图像中。在ibc预测模式中,可以引入块矢量预测,通过对当前块的块矢量进行预测,得到当前块对应的预测块矢量,对当前块对应的预测块矢量与实际块矢量之间的差值进行编码传输,相较于直接对当前块对应的实际块矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测块矢量是指通过块矢量预测技术,得到的当前块的块矢量的预测值。
43.sv是指用于isc预测模式的位移矢量,其值为当前串和参考串之间的坐标偏移量,其中,当前串与参考串均在当前图像中。在isc预测模式中,可以引入串矢量预测,通过对当前串的串矢量进行预测,得到当前串对应的预测串矢量,对当前串对应的预测串矢量与实际串矢量之间的差值进行编码传输,相较于直接对当前串对应的实际串矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测串矢量是指通过串矢量预测技术,得到的当前串的串矢量的预测值。
44.下面对几种不同的预测模式进行介绍:
45.一、帧间预测模式
46.如图2所示,帧间预测利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的,能够有效节省编码残差数据的比特。其中,p为当前帧,pr为参考帧,b为当前待编码块,br是b的参考块。b’与b在图像中的坐标位置相同,br坐标为(xr,yr),b’坐标为(x,y)。当前待编码块与其参考块之间的位移,称
为运动矢量(mv),即:
47.mv=(xr-x,yr-y)。
48.考虑到时域或空域邻近块具有较强的相关性,可以采用mv预测技术进一步减少编码mv所需要的比特。在h.265/hevc中,帧间预测包含merge和amvp(advanced motion vector prediction,高级运动向量预测)两种mv预测技术。
49.merge模式会为当前pu(prediction unit,预测单元)建立一个mv候选列表,其中存在5个候选mv(及其对应的参考图像)。遍历这5个候选mv,选取率失真代价最小的作为最优mv。若编解码器依照相同的方式建立候选列表,则编码器只需要传输最优mv在候选列表中的索引即可。需要注意的是,hevc的mv预测技术还有一种skip模式,是merge模式的一种特例。在merge模式找到最优mv后,如果当前块和参考块基本一样,那么不需要传输残差数据,只需要传送mv的索引和一个skip flag。
50.merge模式建立的mv候选列表中包含了空域和时域的两种情形,对于b slice(b帧图像),还包含组合列表的方式。其中,空域最多提供4个候选mv,它的建立如图3中的(a)部分所示。空域列表按照a1

b1

b0

a0

b2的顺序建立,其中b2为替补,即当a1,b1,b0,a0中有一个或多个不存在时,则需要使用b2的运动信息;时域最多只提供1个候选mv,它的建立如图3中的(b)部分所示,由同位pu的mv按下式伸缩得到:
51.curmv=td*colmv/tb;
52.其中,curmv表示当前pu的mv,colmv表示同位pu的mv,td表示当前图像与参考图像之间的距离,tb表示同位图像与参考图像之间的距离。若同位块上d0位置pu不可用,则用d1位置的同位pu进行替换。对于b slice中的pu,由于存在两个mv,其mv候选列表也需要提供两个mvp(motion vector predictor,预测运动矢量)。hevc通过将mv候选列表中的前4个候选mv进行两两组合,产生了用于b slice的组合列表。
53.类似的,amvp模式利用空域和时域邻近块的mv相关性,为当前pu建立mv候选列表。与merge模式不同,amvp模式的mv候选列表中选择最优的预测mv,与当前待编码块通过运动搜索得到的最优mv进行差分编码,即编码mvd=mv-mvp,其中mvd为运动矢量残差(motion vector difference);解码端通过建立相同的列表,仅需要mvd与mvp在该列表中的序号即可计算当前解码块的mv。amvp模式的mv候选列表也包含空域和时域两种情形,不同的是amvp模式的mv候选列表长度仅为2。
54.hmvp(history based motion vector prediction,基于历史的运动矢量预测)是h.266/vvc中新采纳的一种mv预测技术。hmvp是基于历史信息的运动矢量预测方法。历史编码块的运动信息被存储在hmvp列表中,并且用作当前cu(coding unit,编码单元)的mvp。h.266/vvc将hmvp添加至merge模式的候选列表中,其顺序在空域和时域mvp之后。hmvp技术以先进先出的队列(first input first output,简称fifo)存储先前编码块的运动信息。如果已存储的候选运动信息与刚刚编码完成的运动信息相同,这个重复的候选运动信息首先会被移除,然后将所有hmvp候选向前移动,并在fifo的尾部会加入当前编码单元的运动信息。如果当前编码单元的运动信息与fifo中任意候选的运动信息均不相同,则将最新的运动信息加到fifo末尾。在向hmvp列表添加新的运动信息时,如果列表已达到最大长度,就去掉fifo中第一个候选,再将最新的运动信息加到fifo末尾。在遇到新的ctu(coding tree unit,编码树单元)行时hmvp列表将重置(清空)。在h.266/vvc中,hmvp表大小s设置为6,为
了减少冗余检查操作的数量,引入了以下简化:
55.1.将用于merge列表生成的hmvp候选的数量设置为(n<=4)?m:(8-n),其中,n表示merge列表中现有候选的数量,m表示merge列表中可用的hmvp候选的数量。
56.2.一旦可用merge列表的长度达到最大允许的长度减1,则hmvp的合并候选者列表构建过程终止。
57.二、ibc预测模式
58.ibc是hevc屏幕内容编码(screen content coding,简称scc)扩展中采纳的一种帧内编码工具,它显著的提升了屏幕内容的编码效率。在avs3和vvc中,也采纳了ibc技术以提升屏幕内容编码的性能。ibc利用屏幕内容视频在空间的相关性,使用当前图像上已编码图像像素预测当前待编码块的像素,能够有效节省编码像素所需的比特。如图4所示,在ibc中当前块与其参考块之间的位移,称为bv(块矢量)。h.266/vvc采用了类似于帧间预测的bv预测技术进一步节省编码bv所需的比特。
59.三、isc预测模式
60.isc技术按照某种扫描顺序(如光栅扫描、往返扫描和zig-zag扫描等)将一个编码块分成一系列像素串或未匹配像素。类似于ibc,每个串在当前图像已编码区域中寻找相同形状的参考串,导出当前串的预测值,通过编码当前串像素值与预测值之间残差,代替直接编码像素值,能够有效节省比特。图5给出了帧内串复制的示意图,深灰色的区域为已编码区域,白色的28个像素为串1,浅灰色的35个像素为串2,黑色的1个像素表示未匹配像素。串1与其参考串之间的位移,即为图5中的串矢量1;串2与其参考串之间的位移,即为图5中的串矢量2。
61.帧内串复制技术需要编码当前编码块中各个串对应的sv、串长度以及是否有匹配串的标志等。其中,sv表示待编码串到其参考串的位移。串长度表示该串所包含的像素数量。在不同的实现方式中,串长度的编码有多种方式,以下给出几种示例(部分示例可能组合使用):1)直接在码流中编码串的长度;2)在码流中编码处理该串后续的待处理像素数量,解码端则根据当前块的大小n,已处理的像素数量n1,解码得到的待处理像素数量n2,计算得到当前串的长度,l=n-n1-n2;3)在码流中编码一个标志指示该串是否为最后一个串,如果是最后一个串,则根据当前块的大小n,已处理的像素数量n1,计算得到当前串的长度l=n-n1。如果一个像素在可参考的区域中没有找到对应的参考,将直接对未匹配像素的像素值进行编码。
62.四、avs3中的帧内预测运动矢量预测
63.ibc和isc是avs3中两种屏幕内容编码工具,他们均以当前图像为参考,通过运动补偿导出编码单元的预测值。考虑到ibc与isc具有相似的参考区域,bv和sv具有较高的相关性,可通过允许两者之间的预测进一步提高编码效率。avs3使用一个类似于hmvp的帧内预测历史运动信息表(intrahmvp)记录这两类编码块的位移矢量信息、位置信息、尺寸信息和重复次数,并由intrahmvp导出bvp(block vector predictor,预测块矢量)和svp(string vector predictor,预测串矢量)。其中,bvp即为块矢量的预测值,svp即为串矢量的预测值。为了支持并行编码,如果当前最大编码单元是片中当前行的第一个最大编码单元,帧内预测历史运动信息表中cntintrahmvp的值初始化为0。
64.1.预测块矢量的导出
65.avs3中采纳了基于类别的块矢量预测(class based block vector prediction,简称cbvp),类似于hmvp,该方法首先使用一个hbvp(history based block vector prediction,基于历史的块矢量预测)列表存储历史的ibc编码块的信息,除了记录历史编码块的bv信息以外,还记录了历史编码块的位置、大小等信息。对于当前编码块,按以下条件对hbvp中的候选bv进行分类:
66.类别0:历史编码块的面积大于或等于64像素;
67.类别1:bv的频率大于或等于2;
68.类别2:历史编码块左上角的坐标位于当前块左上角坐标的左方;
69.类别3:历史编码块左上角的坐标位于当前块左上角坐标的上方;
70.类别4:历史编码块左上角的坐标位于当前块左上角坐标的左上方;
71.类别5:历史编码块左上角的坐标位于当前块左上角坐标的右上方;
72.类别6:历史编码块左上角的坐标位于当前块左上角坐标的左下方;
73.其中,每个类别中的实例按编码顺序的逆序排列(编码顺序距离当前块越近,排序越靠前),第一个历史编码块对应的bv为该类对应的候选bv。然后按类别0到类别6的顺序添加每个类别对应的候选bv至cbvp列表。在向cbvp列表中添加新的bv时,需要检查cbvp列表中是否已存在重复的bv。仅当不存在重复的bv时,才将该bv添加至cbvp列表中。编码端在cbvp列表中选择最佳的候选bv作为bvp,并在码流中编码一个索引,表示最佳的候选bv所对应类别在cbvp列表中的索引。解码端根据该索引从cbvp列表中解码得到bvp。
74.完成当前预测单元的解码后,如果当前预测单元的预测类型为块复制帧内预测(即ibc),当numofintrahmvpcand大于0时,根据当前预测块的块复制帧内预测运动信息,按下文介绍的方式更新intrahmvp。当前预测块的帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数,其中块复制帧内预测块的位移矢量信息为块矢量;位置信息包括当前预测块左上角横坐标,左上角纵坐标;尺寸信息为宽度与高度的乘积;当前预测块的重复次数初始化为0。
75.2.预测串矢量的导出
76.avs3为isc编码块中的每个串编码一个索引,指示该串的svp在intrahmvp中的位置。类似于帧间预测中的skip模式,当前串的sv等于svp,无需编码sv与svp之间的残差。
77.完成当前预测单元的解码后,如果当前预测单元的预测类型为串复制帧内预测(即isc),当numofintrahmvpcand大于0时,根据当前预测块的串复制帧内预测运动信息,按下文介绍的方式更新intrahmvp。当前预测块的串复制帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数,其中当前串的位移矢量信息为串矢量;位置信息包括该串第一个像素样本的横坐标和纵坐标,即(xi,yi);尺寸信息为该部分的串长度,即strlen[i];重复次数初始化为0。
[0078]
3.帧内预测历史运动信息表更新
[0079]
帧内预测运动信息包括位移矢量信息、位置信息、尺寸信息和重复次数。完成当前预测单元的解码后,如果当前预测单元的预测类型为块复制帧内预测或串复制帧内预测,且numofintrahmvpcand大于0时,根据当前预测块的帧内预测运动信息,更新帧内预测历史运动信息表intrahmvpcandidatelist,intrahmvpcandidatelist[x]的位移矢量信息、位置信息、尺寸信息和重复次数分别记为intramvcandx、poscandx、sizecandx和cntcandx;否
则,不执行本条定义的操作。
[0080]
a)将x初始化为0,将cntcur初始化为0。
[0081]
b)如果cntintrahmvp等于0,则intrahmvpcandidatelist[cntintrahmvp]为当前预测单元的帧内预测运动信息,cntintrahmvp加1。
[0082]
c)否则,根据intramvcur和intramvcandx是否相等判断当前预测块的帧内预测运动信息和intrahmvpcandidatelist[x]是否相同:
[0083]
1)如果intramvcur和intramvcandx相同,执行步骤d),否则,x加1。
[0084]
2)如果x小于cntintrahmvp,执行步骤c);否则,执行步骤e)。
[0085]
d)cntcur等于cntcandx的值加1。如果sizecur小于sizecandx,则当前sizecur分别等于sizecandx。
[0086]
e)如果x小于cntintrahmvp,则:
[0087]
1)i从x到cntintrahmvp-1,令intrahmvpcandidatelist[i]等于intrahmvpcandidatelist[i 1];
[0088]
2)intrahmvpcandidatelist[cntintrahmvp-1]等于当前预测单元的帧内预测运动信息。
[0089]
f)否则,如果x等于cntintrahmvp且cntintrahmvp等于numofintrahmvpcand,则:
[0090]
1)i从0到cntintrahmvp-1,令intrahmvpcandidatelist[i]等于intrahmvpcandidatelist[i 1];
[0091]
2)intrahmvpcandidatelist[cntintrahmvp-1]等于当前预测单元的帧内预测运动信息。
[0092]
g)否则,如果x等于cntintrahmvp且cntintrahmvp小于numofintrahmvpcand,则intrahmvpcandidatelist[cntintrahmvp]等于当前预测单元的帧内预测运动信息,cntintrahmvp加1。
[0093]
在目前的avs3标准中,在进行位移矢量预测时,仅通过构建帧内预测历史运动信息(intrahmvp)表来构建候选运动信息列表并导出预测块矢量(bvp)或预测串矢量(svp)。intrahmvp的长度最大为12,候选运动信息列表的最大长度为7。当intrahmvp的长度不足或为空时,也会导致候选运动信息列表无法填满,从而导致无法提供足够多的运动信息用于位移矢量的预测。
[0094]
本技术提出了一种运动信息列表的构建方法,与历史运动信息列表结合使用。例如,当候选运动信息不足时,该方法为候选运动信息列表提供额外的运动信息,以提供充足的运动信息用于位移矢量的预测,从而提升视频的压缩性能。
[0095]
如图6所示,其示出了本技术一个实施例提供的通信系统的简化框图。通信系统200包括多个设备,所述设备可通过例如网络250彼此通信。举例来说,通信系统200包括通过网络250互连的第一设备210和第二设备220。在图6的实施例中,第一设备210和第二设备220执行单向数据传输。举例来说,第一设备210可对视频数据例如由第一设备210采集的视频图片流进行编码以通过网络250传输到第二设备220。已编码的视频数据以一个或多个已编码视频码流形式传输。第二设备220可从网络250接收已编码视频数据,对已编码视频数据进行解码以恢复视频数据,并根据恢复的视频数据显示视频图片。单向数据传输在媒体服务等应用中是较常见的。
[0096]
在另一实施例中,通信系统200包括执行已编码视频数据的双向传输的第三设备230和第四设备240,所述双向传输可例如在视频会议期间发生。对于双向数据传输,第三设备230和第四设备240中的每个设备可对视频数据(例如由设备采集的视频图片流)进行编码,以通过网络250传输到第三设备230和第四设备240中的另一设备。第三设备230和第四设备240中的每个设备还可接收由第三设备230和第四设备240中的另一设备传输的已编码视频数据,且可对所述已编码视频数据进行解码以恢复视频数据,且可根据恢复的视频数据在可访问的显示装置上显示视频图片。
[0097]
在图6的实施例中,第一设备210、第二设备220、第三设备230和第四设备240可为服务器、个人计算机和智能电话等计算机设备,但本技术公开的原理可不限于此。本技术实施例适用于pc(personal computer,个人计算机)、手机、平板电脑、媒体播放器和/或专用视频会议设备。网络250表示在第一设备210、第二设备220、第三设备230和第四设备240之间传送已编码视频数据的任何数目的网络,包括例如有线连线的和/或无线通信网络。通信网络250可在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本技术的目的,除非在下文中有所解释,否则网络250的架构和拓扑对于本技术公开的操作来说可能是无关紧要的。
[0098]
作为实施例,图7示出视频编码器和视频解码器在流式传输环境中的放置方式。本技术所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字tv(电视)、在包括cd(compact disc,光盘)、dvd(digital versatile disc,数字通用光盘)、存储棒等的数字介质上存储压缩视频等等。
[0099]
流式传输系统可包括采集子系统313,所述采集子系统可包括数码相机等视频源301,所述视频源创建未压缩的视频图片流302。在实施例中,视频图片流302包括由数码相机拍摄的样本。相较于已编码的视频数据304(或已编码的视频码流),视频图片流302被描绘为粗线以强调高数据量的视频图片流,视频图片流302可由电子装置320处理,所述电子装置320包括耦接到视频源301的视频编码器303。视频编码器303可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流302,已编码的视频数据304(或已编码的视频码流304)被描绘为细线以强调较低数据量的已编码的视频数据304(或已编码的视频码流304),其可存储在流式传输服务器305上以供将来使用。一个或多个流式传输客户端子系统,例如图7中的客户端子系统306和客户端子系统308,可访问流式传输服务器305以检索已编码的视频数据304的副本307和副本309。客户端子系统306可包括例如电子装置330中的视频解码器310。视频解码器310对已编码的视频数据的传入副本307进行解码,且产生可在显示器312(例如显示屏)或另一呈现装置(未描绘)上呈现的输出视频图片流311。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视频数据304、视频数据307和视频数据309(例如视频码流)进行编码。
[0100]
应注意,电子装置320和电子装置330可包括其它组件(未示出)。举例来说,电子装置320可包括视频解码器(未示出),且电子装置330还可包括视频编码器(未示出)。其中,视频解码器用于对接收到的已编码视频数据进行解码;视频编码器用于对视频数据进行编码。
[0101]
需要说明的一点是,本技术实施例提供的技术方案可以应用于h.266/vvc标准、h.265/hevc标准、avs(如avs3)或者下一代视频编解码标准中,本技术实施例对此不作限
定。
[0102]
还需要说明的一点是,本技术实施例提供的方法,各步骤的执行主体可以是解码端设备,也可以是编码端设备。在视频解码和视频编码的过程中,都可以采用本技术实施例提供的技术方案,来构建运动信息列表。解码端设备和编码端设备均可以是计算机设备,该计算机设备是指具备数据计算、处理和存储能力的电子设备,如pc、手机、平板电脑、媒体播放器、专用视频会议设备、服务器等等。
[0103]
另外,本技术所提供的方法可以单独使用或以任意顺序与其他方法合并使用。基于本技术所提供方法的编码器和解码器,可以由1个或多个处理器或是1个或多个集成电路来实现。
[0104]
在示例性实施例中,以解码端为例,预测位移矢量的导出可以包括以下3个步骤:
[0105]
1、使用一个历史运动信息列表以先入先出(first input first output,简称fifo)的方式记录解码过程中历史预测单元(如已解码块或已解码串)的运动信息;
[0106]
2、在对当前预测单元(如当前块或当前串)的位移矢量进行解码时,由历史运动信息列表结合其他运动信息,导出候选运动信息列表;
[0107]
3、从码流中获取当前预测单元的预测位移矢量在候选运动信息列表中的位置(或称为索引),导出当前预测单元的预测位移矢量。
[0108]
在本技术实施例中,历史预测单元是指已编码(或已解码)的图像单元,该图像单元可以包括一个或者多个像素,该图像单元可以是块状也可以是串状。对于ibc预测模式来说,历史预测单元也称为历史块,是指已编码(或已解码)的图像块。对于isc预测模式来说,历史预测单元也称为历史串,是指已编码(或已解码)的图像串。
[0109]
当前预测单元是指当前编码(或解码)的图像单元,该图像单元同样可以包括一个或者多个像素,该图像单元可以是块状也可以是串状。
[0110]
本技术提出了一种运动信息列表的构建方法,当候选运动信息列表中的运动信息不足时,该方法能够为候选运动信息列表提供额外的运动信息。下面,通过几个实施例对本技术技术方案进行介绍说明。
[0111]
请参考图8,其示出了本技术一个实施例提供的视频编解码中的运动信息列表构建方法的流程图。为了便于说明,仅以各步骤执行主体为计算机设备进行介绍说明。该方法可以包括如下几个步骤(801~802):
[0112]
步骤801,构建空域运动信息列表,该空域运动信息列表中包括当前编解码块的空域临近块的运动信息,空域临近块至少包括isc块。
[0113]
在本技术实施例中,当前编解码块的空域临近块是指与当前编解码块属于同一图像,且空间位置上与当前编解码块临近的编解码块。这里所谓的“临近”可以是与当前编解码块之间的距离小于阈值,该阈值可以结合实际情况进行设定。另外,两个编解码块之间的距离的计算方式,也可以灵活设定,例如可以是两个编解码块的左上角坐标之间的距离,也可以是两个编解码块的左上角横坐标(或纵坐标)之间的距离,还可以是两个编解码块的中心位置之间的距离,还可以是两个编解码块之间的最短距离等等,本技术实施例对此不作限定。在一个示例中,假设当前编解码块的左上角坐标为(x0,y0),另一编解码块的左上角坐标为(x1,y1),如果满足条件|x0-x1|<a或|y0-y1|<b,则确定该另一编解码块属于当前编解码块的空域临近块。其中,a和b的值可以相等,也可以不相等。示例性地,a=b=8。
[0114]
空域临近块包括空域相邻块和空域非相邻块。其中,当前编解码块的空域相邻块是指与当前编解码块属于同一图像,且空间位置上与当前编解码块临近且相邻的编解码块。所谓“临近且相邻”可以是指与当前编解码块存在重合的边或者顶点。例如,如图9所示,当前编解码块f的空域相邻块可以包括a、b、c、d、e等编解码块。当前编解码块的空域非相邻块是指与当前编解码块属于同一图像,且空间位置上与当前编解码块临近且非相邻的编解码块。所谓“临近且非相邻”可以是指与当前编解码块之间的距离小于阈值,但与当前编解码块不存在重合的边或者顶点。例如,如图9所示,当前编解码块f的空域非相邻块可以包括a

、b

、c

、d

、e

等编解码块。
[0115]
在本技术实施例中,空域临近块包括isc块,所谓“isc块”是指采用isc预测模式进行运动矢量预测的编解码块。可选地,空域临近块包括以下至少一种:空域相邻的isc块、空域非相邻的isc块。其中,当前编解码块的空域相邻的isc块,是指当前编解码块的空域相邻块且该空域相邻块为isc块。当前编解码块的空域非相邻的isc块,是指当前编解码块的空域非相邻块且该空域非相邻块为isc块。
[0116]
可选地,空域临近块还包括ibc块,所谓“ibc块”是指采用ibc预测模式进行运动矢量预测的编解码块。可选地,空域临近块还包括以下至少一种:空域相邻的ibc块、空域非相邻的ibc块。其中,当前编解码块的空域相邻的ibc块,是指当前编解码块的空域相邻块且该空域相邻块为ibc块。当前编解码块的空域非相邻的ibc块,是指当前编解码块的空域非相邻块且该空域非相邻块为ibc块。
[0117]
可选地,在空域临近块包括isc块的情况下,由于一个isc块可以包括一个或者多个编解码串(或称为“isc串”或者“串”等,但本领域技术人员可以理解其含义),因此该isc块的运动信息可以包括该isc块中某一个编解码串的sv,也可以包括该isc块中多个编解码串的sv,还可以包括基于该isc块中的某一个/多个编解码串的sv确定出的一个或多个sv,本技术实施例对此不作限定。
[0118]
示例性地,在空域临近块包括isc块的情况下,该isc块的运动信息包括以下至少一项:
[0119]
1、isc块中按扫描顺序的第一个编解码串的sv;
[0120]
2、isc块中按扫描顺序的最后一个编解码串的sv;
[0121]
3、isc块中按扫描顺序的第一个编解码串的sv和最后一个编解码串的sv的均值;
[0122]
4、isc块中按扫描顺序的第一个编解码串的sv和最后一个编解码串的sv的加权均值;
[0123]
5、isc块中多个编解码串的sv。
[0124]
当然,上述列出的isc块的运动信息仅是示例性和解释性的,本技术实施例并不限定还可以有其他实现方式。
[0125]
在示例性实施例中,上文提及的空域临近块,包括如图9示出的空域相邻块a~e和空域非相邻块a

~e

,均是指最小编解码单元,也即允许划分的cu的最小尺寸(如4*4)。对于任意一个空域临近块,如果该空域临近块是ibc块或者isc块,它所对应的bv或者sv信息,是指该空域临近块(4*4的小块)所在的整个编解码块的bv或者sv信息。在存储某一编解码块的bv或者sv信息时,可以将属于该编解码块的每一个最小编解码单元(如4*4的小块)对应的bv或者sv信息都存储上。
[0126]
可选地,在存储最小编解码单元对应的sv时,包括但不限于以下方式之一:
[0127]
1、存储编解码块中的第一个编解码串的sv;
[0128]
2、存储编解码块中的最后一个编解码串的sv;
[0129]
3、存储编解码块中的第一个编解码串的sv和最后一个编解码串的sv;
[0130]
4、对于空域相邻块,存储编解码块中的第一个编解码串的sv和最后一个编解码串的sv;对于空域非相邻块,存储编解码块中的第一个编解码串的sv或最后一个编解码串的sv。
[0131]
当然,上述列出的存储最小编解码单元对应的sv的方式仅是示例性和解释性的,本技术实施例并不限定还可以有其他实现方式。
[0132]
结合图9,假设当前编解码块f的左上角坐标为(cur_x_pos,cur_y_pos),当前编解码块f的宽为cu_width且高为cu_height。下述表1示出了当前编解码块f的空域相邻块a~e的左上角坐标。在表1中,neig_x_pos表示空域相邻块的左上角坐标的横坐标,neig_y_pos表示空域相邻块的左上角坐标的纵坐标,且空域相邻块a~e的尺寸为4*4。
[0133]
表1
[0134]
空域相邻块位置neig_x_posneig_y_pos左(a)cur_x_pos-4cur_y_pos cu_height/2上(b)cur_x_pos cu_width/2cur_y_pos-4左上(c)cur_x_pos-4cur_y_pos-4右上(d)cur_x_pos cu_widthcur_y_pos-4左下(e)cur_x_pos-4cur_y_pos cu_height
[0135]
下述表2示出了当前编解码块f的空域非相邻块a

~e

的左上角坐标。在表2中,neig_x_pos表示空域非相邻块的左上角坐标的横坐标,neig_y_pos表示空域非相邻块的左上角坐标的纵坐标,且空域非相邻块a

~e

的尺寸也为4*4。
[0136]
表2
[0137]
空域非相邻块位置neig_x_posneig_y_pos左(a

)cur_x_pos-8cur_y_pos cu_height/2上(b

)cur_x_pos cu_width/2cur_y_pos-8左上(c

)cur_x_pos-8cur_y_pos-8右上(d

)cur_x_pos cu_widthcur_y_pos-8左下(e

)cur_x_pos-8cur_y_pos cu_height
[0138]
步骤802,在候选运动信息列表中的运动信息不足的情况下,从空域运动信息列表中获取至少一个运动信息,采用该至少一个运动信息对候选运动信息列表进行填充。
[0139]
候选运动信息列表用于为当前编解码块提供候选的预测位移矢量。
[0140]
在一个示例中,在当前编解码块为ibc块的情况下,如果候选运动信息列表中的运动信息不足,则从空域运动信息列表中获取至少一个运动信息,并采用该至少一个运动信息对候选运动信息列表进行填充。
[0141]
在另一个示例中,在当前编解码块为isc块的情况下,如果候选运动信息列表中的运动信息不足,则从空域运动信息列表中获取至少一个运动信息,并采用该至少一个运动信息对候选运动信息列表进行填充。
[0142]
另外,候选运动信息列表中的运动信息不足,可以是指候选运动信息列表的长度小于门限值。其中,候选运动信息列表的长度,是指该候选运动信息列表中包含的运动信息的数量。可选地,上述门限值是候选运动信息列表的最大长度,例如假设该候选运动信息列表的最大长度为7,那么在候选运动信息列表的长度小于7的情况下,采用额外的运动信息对该候选运动信息列表进行填充。可选地,上述门限值小于候选运动信息列表的最大长度,例如假设该候选运动信息列表的最大长度为7,门限值可以设置为5,那么在候选运动信息列表的长度小于5的情况下,采用额外的运动信息对该候选运动信息列表进行填充。
[0143]
通过将从空域运动信息列表获取的至少一个运动信息,添加至候选运动信息列表中,从而实现对该候选运动信息列表进行填充。
[0144]
在一个示例中,不进行查重比对,直接将上述至少一个运动信息添加至候选运动信息列表中。例如,在候选运动信息列表为空的情况下,可以直接将上述至少一个运动信息添加至候选运动信息列表中,不进行查重比对;或者,即便在候选运动信息列表不为空的情况下,也可以直接将上述至少一个运动信息添加至候选运动信息列表中,不进行查重比对。
[0145]
在另一个示例中,将待添加的运动信息与候选运动信息列表中已有的运动信息进行查重比对;根据查重比对结果对候选运动信息列表进行更新。例如,如果待添加的运动信息与候选运动信息列表中某个已有的运动信息(记为目标运动信息)相同,那么说明存在重复,计算机设备可以将目标运动信息从候选运动信息列表中删除之后,再将该待添加的运动信息添加至候选运动信息列表中,也可以不将该待添加的运动信息添加至候选运动信息列表中。可选地,往候选运动信息列表中逐个添加运动信息,每添加一个运动信息与列表中已有的运动信息进行一次查重比对。当然,上文介绍的查重比对的方式仅是示例性和解释性的,本技术实施例并不限定还可采用其他方式。
[0146]
在一个示例中,候选运动信息列表用于为ibc块提供候选的bvp。在当前编解码块为ibc块的情况下,对于编码端来说可以从该候选运动信息列表中找到当前块的bvp的索引,并将该索引编码至码流中;对于解码端来说可以从码流中获取当前块的bvp的索引,然后根据该索引从候选运动信息列表中导出当前块的bvp。在本技术实施例中,通过采用空域临近的isc块(可选地还包括空域临近的ibc块)的运动信息对当前块的候选运动信息列表进行填充,从而为当前块提供更多更有效的候选bvp,有助于提升视频的压缩性能。
[0147]
在另一个示例中,候选运动信息列表用于为isc块提供候选的svp。在当前编解码块为isc块的情况下,对于编码端来说可以从该候选运动信息列表中找到当前串的svp的索引,并将该索引编码至码流中;对于解码端来说可以从码流中获取当前串的svp的索引,然后根据该索引从候选运动信息列表中导出当前串的svp。在本技术实施例中,通过采用空域临近的isc块(可选地还包括空域临近的ibc块)的运动信息对当前串的候选运动信息列表进行填充,从而为当前串提供更多更有效的候选svp,有助于提升视频的压缩性能。
[0148]
在另一个示例中,候选运动信息列表用于为ibc块提供候选的bvp以及为isc串提供候选的svp。也即,ibc块和isc串可以共用同一个候选运动信息列表,从而不需要维护多个候选运动信息列表,降低编解码的复杂度。
[0149]
采用本技术实施例提供的技术方案,一方面可以从历史运动信息列表中导出运动信息填充至候选运动信息列表中,另一方面还可以从空域运动信息列表中导出运动信息填充至候选运动信息列表中。对于上述两种不同来源运动信息在候选运动信息列表中的排布
位置,包括但不限于有如下几种可能的实现方式:
[0150]
1、从空域运动信息列表中导出的运动信息在候选运动信息列表中的位置,位于从历史运动信息列表中导出的运动信息在候选运动信息列表中的位置之前。
[0151]
2、从空域运动信息列表中导出的运动信息在候选运动信息列表中的位置,位于从历史运动信息列表中导出的运动信息在候选运动信息列表中的位置之后。
[0152]
3、从空域运动信息列表中导出的运动信息位于候选运动信息列表中的设定位置。
[0153]
4、当候选运动信息列表中的至少一个位置不存在运动信息时,从空域运动信息列表中导出的运动信息填入上述至少一个位置。
[0154]
对于上述第3点,例如,候选运动信息列表存在第0~6共7个位置,空域运动信息列表中包括图9中a、b、c、d、e共5个空域相邻块的运动信息,那么上述7个位置可以分别填入a、b、a、b、c、d、e的运动信息。又例如,在上述7个位置也可以均填入a的运动信息。
[0155]
对于上述第4点,在填入时,按照运动信息在空域运动信息列表中的顺序,依次填入上述至少一个位置。例如,空域运动信息列表中按序包括a、b、c、d、e共5个空域相邻块的运动信息,候选运动信息列表中的第1、3、4个位置为空,那么可以将a的运动信息填入候选运动信息列表的第1个位置,将b的运动信息填入候选运动信息列表的第3个位置,将c的运动信息填入候选运动信息列表的第4个位置。或者,将空域运动信息列表中指定位置的运动信息,填入上述至少一个位置。例如,空域运动信息列表中按序包括a、b、c、d、e共5个空域相邻块的运动信息,候选运动信息列表中的第1、3、4个位置为空,将空域运动信息列表中指定位置(如第1和2个位置)的运动信息填入上述3个位置,那么在一个示例中可以将a的运动信息填入候选运动信息列表的第1个位置,将b的运动信息填入候选运动信息列表的第3个位置,将a的运动信息填入候选运动信息列表的第4个位置。
[0156]
以候选运动信息列表为上文介绍的cbvp列表为例,如果某个类别中的运动信息不足(例如从历史运动信息列表中未导出该类别的运动信息或者导出的数量不够),那么如果空域运动信息列表中包含该类别的运动信息,可以从空域运动信息列表中导出该类别的运动信息添加到该类别中。
[0157]
可选地,在候选运动信息列表中的运动信息不足的情况下,还可以采用预设运动信息对候选运动信息列表进行填充。预设运动信息可以在标准或协议中预先规定。例如,预设运动信息包括位移矢量(0,0)。
[0158]
在一个示例中,如果某个类别中的运动信息不足(例如历史运动信息列表中不存在该类别的运动信息),且空域运动信息列表中也不存在该类别的运动信息或者空域运动信息列表无法提供足够的运动信息,那么可以采用预设运动信息(如(0,0))对候选运动信息列表进行填充。
[0159]
综上所述,本技术实施例提供的技术方案,通过在候选运动信息列表中包含的运动信息不足时,采用空域临近的运动信息进行填充,实现对该候选运动信息列表的内容扩充,从而在该候选运动信息列表中提供更多更有效的位移矢量,以取得更好的位移矢量预测效果,提升视频的压缩性能。
[0160]
由于当前编解码块可能存在多个空域临近块,如包括左方、上方、左上方、右上方、左下方等多个不同位置的空域临近块,因此在构建空域运动信息列表时,可以按照一定的顺序选择空域临近块的运动信息添加至空域运动信息列表中。下面,通过几个示例对空域
运动信息列表的构建过程进行介绍说明。
[0161]
示例1:构建空域运动信息列表可以包括如下几个步骤:
[0162]
1、检测当前编解码块是否存在可用的空域相邻块的运动信息;
[0163]
在本技术实施例中,空域相邻块包括空域相邻的isc块,可选地还包括空域相邻的ibc块。
[0164]
以空域相邻块包括空域相邻的isc块为例,如果当前编解码块存在空域相邻的isc块,且该isc块能够提供可用的运动信息(如存储有该isc块的运动信息),那么确定该当前编解码块存在可用的空域相邻块的运动信息;否则,如果当前编解码块不存在空域相邻的isc块,或者即便存在空域相邻的isc块但该isc块无法提供可用的运动信息(如未存储有该isc块的运动信息),那么确定该当前编解码块不存在可用的空域相邻块的运动信息。
[0165]
2、若当前编解码块存在可用的空域相邻块的运动信息,则获取可用的空域相邻块的运动信息添加至空域运动信息列表中;
[0166]
3、若当前编解码块不存在可用的空域相邻块的运动信息,或者所构建的空域运动信息列表未填满时,则检测当前编解码块是否存在可用的空域非相邻块的运动信息;
[0167]
在本技术实施例中,空域非相邻块包括空域非相邻的isc块、空域非相邻的ibc块中的至少一种。另外,可用的空域非相邻块的运动信息的解释说明,可参考针对可用的空域相邻块的运动信息的解释说明,此处不再赘述。
[0168]
4、若当前编解码块存在可用的空域非相邻块的运动信息,则获取可用的空域非相邻块的运动信息添加至空域运动信息列表中。
[0169]
另外,若当前编解码块不存在可用的空域相邻块和空域非相邻块的运动信息,则说明无法从空域临近块为候选运动信息列表提供额外的运动信息。
[0170]
另外,在当前编解码块存在多个空域相邻块的情况下,可以按照第一设定顺序逐个检测空域相邻块是否存在可用的运动信息;类似地,在当前编解码块存在多个空域非相邻块的情况下,可以按照第二设定顺序逐个检测空域非相邻块是否存在可用的运动信息。例如,参考图9,上述第一设定顺序可以是a
→b→c→d→
e,上述第二设定顺序可以是a
′→b′→c′→d′→e′
。当然,这里针对第一设定顺序和第二设定顺序的介绍说明仅是示例性和解释性的,本技术并不限定还可以采用其他顺序。
[0171]
在本示例中,优先采用空域相邻块的运动信息来填充候选运动信息列表,在空域相邻块无法提供可用的运动信息的情况下或者所提供的可用运动信息不足的情况下,采用空域非相邻块的运动信息来填充候选运动信息列表,尽可能保证候选运动信息列表的填充效果。
[0172]
示例2:构建空域运动信息列表可以包括如下几个步骤:
[0173]
1、按照设定顺序遍历多个位置组,每个位置组包括一个空域相邻块和一个空域非相邻块;
[0174]
2、对于每个位置组,检测该位置组中包含的空域相邻块是否存在可用的运动信息;
[0175]
3、若空域相邻块存在可用的运动信息,则获取空域相邻块的可用的运动信息添加至空域运动信息列表中;
[0176]
4、若空域相邻块不存在可用的运动信息,则检测位置组中包含的空域非相邻块是
否存在可用的运动信息;
[0177]
5、若空域非相邻块存在可用的运动信息,则获取空域非相邻块的可用的运动信息添加至空域运动信息列表中。
[0178]
另外,若空域非相邻块也不存在可用的运动信息,则说明该位置组无法提供可用的运动信息。
[0179]
例如,参考图9,包括5个位置组:(a,a

)、(b,b

)、(c,c

)、(d,d

)、(e,e

)。上述设定顺序可以是{a
→a′
,b
→b′
,c
→c′
,d
→d′
,e
→e′
}。例如,对于每个位置x(包含空域相邻块和空域非相邻块,x=a,b,c,d,e),先检查空域相邻块x是否为isc块,如果是,获得其对应的sv,然后,转向下一个位置;否则,检查空域非相邻块x

是否为isc或ibc块,如果是,则获得其对应sv或者bv;否则,认为该位置不可得,转向下一个位置。当然,这里针对设定顺序的介绍说明仅是示例性和解释性的,本技术并不限定还可以采用其他顺序。
[0180]
在本示例中,按照设定顺序遍历多个位置组来选择空域相邻块的运动信息,对于每一个位置组,优先采用空域相邻块的运动信息,在空域相邻块无法提供可用的运动信息的情况下,采用空域非相邻块的运动信息,尽可能保证候选运动信息列表的填充效果。
[0181]
示例3:构建空域运动信息列表可以包括如下几个步骤:
[0182]
1、检测当前编解码块是否存在可用的空域非相邻块的运动信息;
[0183]
在本技术实施例中,空域非相邻块包括空域非相邻的isc块、空域非相邻的ibc块中的至少一种。
[0184]
2、若当前编解码块存在可用的空域非相邻块的运动信息,则获取可用的空域非相邻块的运动信息添加至空域运动信息列表中;
[0185]
3、若当前编解码块不存在可用的空域非相邻块的运动信息,或者所构建的空域运动信息列表未填满时,则检测当前编解码块是否存在可用的空域相邻块的运动信息;
[0186]
在本技术实施例中,空域相邻块包括空域相邻的isc块,可选地还包括空域相邻的ibc块。
[0187]
4、若当前编解码块存在可用的空域相邻块的运动信息,则获取可用的空域相邻块的运动信息添加至空域运动信息列表中。
[0188]
另外,若当前编解码块不存在可用的空域非相邻块和空域相邻块的运动信息,则说明无法从空域临近块为候选运动信息列表提供额外的运动信息。
[0189]
另外,在当前编解码块存在多个空域非相邻块的情况下,可以按照第二设定顺序逐个检测空域非相邻块是否存在可用的运动信息;类似地,在当前编解码块存在多个空域相邻块的情况下,可以按照第一设定顺序逐个检测空域相邻块是否存在可用的运动信息。例如,参考图9,上述第一设定顺序可以是a
→b→c→d→
e,上述第二设定顺序可以是a
′→b′→c′→d′→e′
。当然,这里针对第一设定顺序和第二设定顺序的介绍说明仅是示例性和解释性的,本技术并不限定还可以采用其他顺序。
[0190]
在本示例中,优先采用空域非相邻块的运动信息来填充候选运动信息列表,在空域非相邻块无法提供可用的运动信息的情况下或者所提供的可用运动信息不足的情况下,采用空域相邻块的运动信息来填充候选运动信息列表,尽可能保证候选运动信息列表的填充效果。
[0191]
示例4:构建空域运动信息列表可以包括如下几个步骤:
[0192]
1、按照设定顺序遍历多个位置组,每个位置组包括一个空域相邻块和一个空域非相邻块;
[0193]
2、对于每个位置组,检测该位置组中包含的空域非相邻块是否存在可用的运动信息;
[0194]
3、若空域非相邻块存在可用的运动信息,则获取空域非相邻块的可用的运动信息添加至空域运动信息列表中;
[0195]
4、若空域非相邻块不存在可用的运动信息,则检测位置组中包含的空域相邻块是否存在可用的运动信息;
[0196]
5、若空域相邻块存在可用的运动信息,则获取空域相邻块的可用的运动信息添加至空域运动信息列表中。
[0197]
另外,若空域相邻块也不存在可用的运动信息,则说明该位置组无法提供可用的运动信息。
[0198]
例如,参考图9,包括5个位置组:(a,a

)、(b,b

)、(c,c

)、(d,d

)、(e,e

)。上述设定顺序可以是{a
′→
a,b
′→
b,c
′→
c,d
′→
d,e
′→
e}。例如,对于每个位置x(包含空域相邻块和空域非相邻块,x=a,b,c,d,e),先检查空域非相邻块x

是否为isc或ibc块,如果是,获得其对应的sv或者bv,然后,转向下一个位置;否则,检查空域相邻块x是否为isc块,如果是,则获得其对应sv;否则,认为该位置不可得,转向下一个位置。当然,这里针对设定顺序的介绍说明仅是示例性和解释性的,本技术并不限定还可以采用其他顺序。
[0199]
在本示例中,按照设定顺序遍历多个位置组来选择空域相邻块的运动信息,对于每一个位置组,优先采用空域非相邻块的运动信息,在空域非相邻块无法提供可用的运动信息的情况下,采用空域相邻块的运动信息,尽可能保证候选运动信息列表的填充效果。
[0200]
示例5:构建空域运动信息列表可以包括如下几个步骤:
[0201]
1、检测当前编解码块是否存在可用的空域相邻块的运动信息;
[0202]
在本技术实施例中,空域相邻块包括空域相邻的isc块,可选地还包括空域相邻的ibc块。
[0203]
2、若当前编解码块存在可用的空域相邻块的运动信息,则获取可用的空域相邻块的运动信息添加至空域运动信息列表中。
[0204]
另外,若当前编解码块不存在可用的空域相邻块的运动信息,则说明无法从空域临近块为候选运动信息列表提供额外的运动信息。
[0205]
在一个示例中,按照设定顺序遍历多个位置,每个位置包括一个空域相邻块;对于每个位置,检测该位置的空域相邻块是否存在可用的运动信息;若该空域相邻块存在可用的运动信息,则获取该空域相邻块的可用的运动信息添加至空域运动信息列表中。
[0206]
例如,在当前编解码块存在多个空域相邻块的情况下,可以按照第一设定顺序逐个检测空域相邻块是否存在可用的运动信息。例如,参考图9,上述第一设定顺序可以是a
→b→c→d→
e。当然,这里针对第一设定顺序的介绍说明仅是示例性和解释性的,本技术并不限定还可以采用其他顺序。
[0207]
本技术实施例提供了多种构建空域运动信息列表的方式,当然本技术并不限定还可以采用其他方式来构建空域运动信息列表,这可以灵活设计。
[0208]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实
施例中未披露的细节,请参照本技术方法实施例。
[0209]
请参考图10,其示出了本技术一个实施例提供的视频编解码中的运动信息列表构建装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备上。该装置1000可以包括:列表构建模块1010和列表填充模块1020。
[0210]
列表构建模块1010,用于构建空域运动信息列表,所述空域运动信息列表中包括当前编解码块的空域临近块的运动信息,所述空域临近块至少包括isc块。
[0211]
列表填充模块1020,用于在候选运动信息列表中的运动信息不足的情况下,从所述空域运动信息列表中获取至少一个运动信息,采用所述至少一个运动信息对所述候选运动信息列表进行填充;其中,所述候选运动信息列表用于为所述当前编解码块提供候选的预测位移矢量。
[0212]
在示例性实施例中,所述空域临近块包括以下至少一种:空域相邻的isc块、空域非相邻的isc块。
[0213]
在示例性实施例中,所述空域临近块还包括以下至少一种:空域相邻的ibc块、空域非相邻的ibc块。
[0214]
在示例性实施例中,所述候选运动信息列表用于为ibc块提供候选的bvp;或者,所述候选运动信息列表用于为isc串提供候选的svp;或者,所述候选运动信息列表用于为ibc块提供候选的bvp以及为isc串提供候选的svp。
[0215]
在示例性实施例中,在所述空域临近块包括isc块的情况下,所述isc块的运动信息包括以下至少一项:
[0216]
所述isc块中按扫描顺序的第一个编解码串的串矢量sv;
[0217]
所述isc块中按扫描顺序的最后一个编解码串的sv;
[0218]
所述isc块中按扫描顺序的第一个编解码串的sv和最后一个编解码串的sv的均值;
[0219]
所述isc块中按扫描顺序的第一个编解码串的sv和最后一个编解码串的sv的加权均值;
[0220]
所述isc块中多个编解码串的sv。
[0221]
在示例性实施例中,所述列表构建模块1010,用于:
[0222]
检测所述当前编解码块是否存在可用的空域相邻块的运动信息,所述空域相邻块包括空域相邻的isc块;
[0223]
若所述当前编解码块存在所述可用的空域相邻块的运动信息,则获取所述可用的空域相邻块的运动信息添加至所述空域运动信息列表中;
[0224]
若所述当前编解码块不存在所述可用的空域相邻块的运动信息,或者所构建的所述空域运动信息列表未填满时,则检测所述当前编解码块是否存在可用的空域非相邻块的运动信息,所述空域非相邻块包括空域非相邻的isc块、空域非相邻的ibc块中的至少一种;
[0225]
若所述当前编解码块存在所述可用的空域非相邻块的运动信息,则获取所述可用的空域非相邻块的运动信息添加至所述空域运动信息列表中。
[0226]
在示例性实施例中,所述列表构建模块1010,用于:
[0227]
按照设定顺序遍历多个位置组,每个位置组包括一个空域相邻块和一个空域非相
邻块;
[0228]
对于每个位置组,检测所述位置组中包含的空域相邻块是否存在可用的运动信息;
[0229]
若所述空域相邻块存在可用的运动信息,则获取所述空域相邻块的可用的运动信息添加至所述空域运动信息列表中;
[0230]
若所述空域相邻块不存在可用的运动信息,则检测所述位置组中包含的空域非相邻块是否存在可用的运动信息;
[0231]
若所述空域非相邻块存在可用的运动信息,则获取所述空域非相邻块的可用的运动信息添加至所述空域运动信息列表中。
[0232]
在示例性实施例中,所述列表构建模块1010,用于:
[0233]
检测所述当前编解码块是否存在可用的空域非相邻块的运动信息,所述空域非相邻块包括空域非相邻的isc块、空域非相邻的ibc块中的至少一种;
[0234]
若所述当前编解码块存在所述可用的空域非相邻块的运动信息,则获取所述可用的空域非相邻块的运动信息添加至所述空域运动信息列表中;
[0235]
若所述当前编解码块不存在所述可用的空域非相邻块的运动信息,或者所构建的所述空域运动信息列表未填满时,则检测所述当前编解码块是否存在可用的空域相邻块的运动信息,所述空域相邻块包括空域相邻的isc块;
[0236]
若所述当前编解码块存在所述可用的空域相邻块的运动信息,则获取所述可用的空域相邻块的运动信息添加至所述空域运动信息列表中。
[0237]
在示例性实施例中,所述列表构建模块1010,用于:
[0238]
按照设定顺序遍历多个位置组,每个位置组包括一个空域相邻块和一个空域非相邻块;
[0239]
对于每个位置组,检测所述位置组中包含的空域非相邻块是否存在可用的运动信息;
[0240]
若所述空域非相邻块存在可用的运动信息,则获取所述空域非相邻块的可用的运动信息添加至所述空域运动信息列表中;
[0241]
若所述空域非相邻块不存在可用的运动信息,则检测所述位置组中包含的空域相邻块是否存在可用的运动信息;
[0242]
若所述空域相邻块存在可用的运动信息,则获取所述空域相邻块的可用的运动信息添加至所述空域运动信息列表中。
[0243]
在示例性实施例中,所述列表构建模块1010,用于:
[0244]
按照设定顺序遍历多个位置,每个位置包括一个空域相邻块;
[0245]
对于每个位置,检测所述位置的空域相邻块是否存在可用的运动信息;
[0246]
若所述空域相邻块存在可用的运动信息,则获取所述空域相邻块的可用的运动信息添加至所述空域运动信息列表中。
[0247]
在示例性实施例中,从所述空域运动信息列表中导出的运动信息在所述候选运动信息列表中的位置,位于从历史运动信息列表中导出的运动信息在所述候选运动信息列表中的位置之前;
[0248]
或者,从所述空域运动信息列表中导出的运动信息在所述候选运动信息列表中的
位置,位于从历史运动信息列表中导出的运动信息在所述候选运动信息列表中的位置之后;
[0249]
或者,从所述空域运动信息列表中导出的运动信息位于所述候选运动信息列表中的设定位置;
[0250]
或者,当所述候选运动信息列表中的至少一个位置不存在运动信息时,从所述空域运动信息列表中导出的运动信息填入所述至少一个位置;填入时,按照所述运动信息在所述空域运动信息列表中的顺序,依次填入所述至少一个位置;或者,将所述空域运动信息列表中指定位置的运动信息,填入所述至少一个位置。
[0251]
在示例性实施例中,所述列表填充模块1020,还用于在所述候选运动信息列表中的运动信息不足的情况下,采用预设运动信息对所述候选运动信息列表进行填充。
[0252]
在示例性实施例中,所述列表填充模块1020,还用于将待添加的运动信息与所述候选运动信息列表中已有的运动信息进行查重比对;根据查重比对结果对所述候选运动信息列表进行更新。
[0253]
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0254]
请参考图11,其示出了本技术一个实施例提供的计算机设备的结构框图。该计算机设备可以是上文介绍的编码端设备,也可以是上文介绍的解码端设备。该计算机设备150可以包括:处理器151、存储器152、通信接口153、编码器/解码器154和总线155。
[0255]
处理器151包括一个或者一个以上处理核心,处理器151通过运行软件程序以及模块,从而执行各种功能应用以及信息处理。
[0256]
存储器152可用于存储计算机程序,处理器151用于执行该计算机程序,以实现上述视频编解码中的运动信息列表构建方法。
[0257]
通信接口153可用于与其它设备进行通信,如收发音视频数据。
[0258]
编码器/解码器154可用于实现编码和解码功能,如对音视频数据进行编码和解码。
[0259]
存储器152通过总线155与处理器151相连。
[0260]
此外,存储器152可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,易失性或非易失性存储设备包括但不限于:磁盘或光盘,eeprom(electrically erasable programmable read-only memory,电可擦除可编程只读存储器),eprom(erasable programmable read-only memory,可擦除可编程只读存储器),sram(static random-access memory,静态随时存取存储器),rom(read-only memory,只读存储器),磁存储器,快闪存储器,prom(programmable read-only memory,可编程只读存储器)。
[0261]
本领域技术人员可以理解,图11中示出的结构并不构成对计算机设备150的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0262]
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少
一段程序、所述代码集或所述指令集在被处理器执行时实现上述视频编解码中的运动信息列表构建方法。
[0263]
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述视频编解码中的运动信息列表构建方法。
[0264]
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0265]
以上所述仅为本技术的示例性实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献