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

用于视频译码中的帧间预测装置和方法的插值滤波器与流程

2022-05-18 12:43:06 来源:中国专利 TAG:

用于视频译码中的帧间预测装置和方法的插值滤波器
1.相关申请交叉引用
2.本技术要求于2019年9月30日提交的申请号为us 62/908,591的美国临时申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
3.本发明大体上涉及视频译码领域。更具体地,本发明涉及一种用于视频译码中的帧间预测装置和方法的插值滤波器以及包括这种帧间预测装置的编码装置和解码装置。


背景技术:

4.数码相机、蜂窝式无线电话、笔记本电脑、广播系统、视频会议系统等各种数字设备能够实现数字视频通信和存储应用。这些应用的最重要和最具挑战性的任务之一就是视频压缩。视频压缩是一项复杂的任务,受制于压缩效率和计算复杂度两个相互矛盾的参数。视频编码标准(例如itu-t h.264/avc或itu-t h.265/hevc)能够在压缩效率和计算复杂度两个参数之间实现平衡。为此,几乎所有的视频压缩应用都必须支持视频编码标准。
5.最新的视频编码标准以源帧或源图像分割成帧块或图像块为基础。这些块的处理方式取决于它们的大小和空间位置以及编码器指定的译码模式。根据预测类型,译码模式可以分为两类:帧内预测模式和帧间预测模式。帧内预测模式使用同一帧(也称为图像(picture/image))中的像素来生成参考样本,以计算正被重建的块中的像素的预测值。帧内预测也称为空间预测。帧间预测模式是为时间预测而设计的,使用前几帧或下几帧中的参考样本来预测当前帧的块中的像素。在预测阶段之后,对预测误差执行变换译码,其中,预测误差是原始信号与其预测值之间的差值。然后,使用熵译码器(例如,用于avc/h.264和hevc/h.265的cabac)对变换系数和边信息进行编码。最近采用的itu-t h.265/hevc标准(iso/iec 23008-2:2013,2013年11月的《信息技术—异构环境中的高效编码和媒体传送—第2部分:高效视频编码(information technology-high efficiency coding and media delivery in heterogeneous environments-part 2:high efficiency video coding)》宣布了一套最新的视频译码工具,这些译码工具可以在编码效率和计算复杂度之间实现合理平衡。gary j.sullivan于2012年12月发表在ieee视频技术电路和系统学报(ieee transactions on circuits and systems for video technology)第22卷第12期上的《高效视频编码(hevc)标准概述(overview of the high efficiency video coding(hevc)standard)》对itu-t h.265/hevc标准进行了概述,其全部内容通过引用并入本技术中。
6.与itu-t h.264/avc视频编码标准类似,hevc/h.265视频编码标准提出以编码单元(coding unit,cu)的形式将源帧划分为帧块。每个cu都可以进一步划分为更小的cu或预测单元(prediction unit,pu)。pu可以根据对pu中的像素应用的处理类型进行帧内预测或帧间预测。在帧间预测的情况下,pu表示使用为pu指定的运动矢量通过运动补偿来处理的像素区域。在帧内预测的情况下,使用相邻块中的相邻像素作为参考样本来预测当前块。pu指定预测模式,该预测模式是从用于该pu中包括的所有变换单元(transform unit,tu)的
一组帧内预测模式中选择的。tu可以具有不同的大小(例如,4
×
4个像素、8
×
8个像素、16
×
16个像素和32
×
32个像素),因此可以通过不同的方式处理。对tu进行变换译码,即通过离散余弦变换或离散正弦变换(在hevc/h.265标准中,离散余弦变换或离散正弦变换应用于经帧内译码的块)对预测误差进行变换,然后量化。因此,重建像素包括去块效应滤波器(deblocking filter,dbf)、样本自适应偏移(sample adaptive offset,sao)滤波器和自适应环路滤波器(adaptive loop filter,alf)等环内滤波器试图要抑制的量化噪声(由于存在单元间块效应、振铃伪影和锐边等,所以量化噪声会变得明显)。
7.为了提高帧间预测所能达到的压缩水平的预测精度,已经开发了子整数像素插值技术。在这种情况下,在运动补偿期间生成的用于对视频块进行译码的预测数据可以对应于子整数像素,它们的值可以是根据运动矢量参考的参考视频帧或其它经译码单元的视频块中的整像素的值进行插值得到的。视频编码器可以使用插值技术通过将插值滤波器应用于一组支持像素等方式,计算子整数像素位置的值,例如,全整数像素的值和/或其它子整数像素位置的先前已译码的值。
8.当前的h.264/avc和h.265/hevc标准以四分之一像素位移分辨率为基础。联合视频探索组(joint video exploration team,jvet)正在探索后hevc视频压缩技术,包括非平动运动补偿模型,例如仿射变换。为了估计和补偿分数像素(或子整数)位移,参考图像中的全整数像素必须插值在分数像素(即子整数位置)上。使用插值滤波器来获得分数像素位置上的插值图像。用于非平动运动模型的插值存在的问题是可变分数像素位移。
9.插值图像的质量很大程度上取决于一个或多个插值滤波器的性能。短抽头滤波器(例如双线性滤波器)可以抑制高频,并使插值图像模糊。相反,长抽头滤波器(例如,基于正弦的滤波器)需要更多的内存带宽,并可以保持高频,但在锐边附近生成一些振铃伪影。另一个考虑因素是,对于非平动模型的运动补偿,复杂度已经通过降低插值和预测的精度得到降低。
10.在所提出的jem仿射运动模型中,支持两类运动:缩放运动和旋转运动。大多数分数像素位置在预测单元内是变化的。为了加快插值速度,用子块代替像素。在一个子块内,位移矢量是不变和平动的。复杂度逐渐降低,但精度也降低。为了提高预测质量,通过增加插值滤波器的数量来提高子块的运动矢量位移精度,运动补偿精度得到了提高。用于非平动运动模型的插值滤波的当前精度还有待提高。
11.因此,需要提供一种用于视频译码中的帧间预测装置和方法的改进型插值滤波器,从而提高视频译码效率。


技术实现要素:

12.本发明的目的是提供一种在视频译码中用于帧间预测装置和方法的改进型插值滤波器,从而提高视频译码效率。
13.上述和其它目的通过独立权利要求请求保护的主题来实现。其它实现方式在从属权利要求、具体实施方式和附图中是显而易见的。
14.根据一个实施例,提供了一种对视频信号的当前帧的当前块的多个像素中的当前全整数像素的样本值进行帧间预测的装置。所述装置包括处理单元,用于:根据所述视频信号的所述当前帧和参考帧和/或运动补偿模型,确定所述当前全整数像素的运动矢量;根据
所述当前全整数像素的所述运动矢量,确定所述当前全整数像素在所述参考帧中的对应子整数像素;根据所述当前帧中的一组预定义的滤波器支持像素,生成所述参考帧中的一组对应滤波器支持像素,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值(尤其是亮度值)和所述参考帧中的所述对应滤波器支持像素的样本值(尤其是亮度值);通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前帧中的所述当前像素的帧间预测样本值。
15.因此,本发明提供了一种改进型帧间预测装置,能够提高视频译码的效率。
16.在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的半整数像素。
17.在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的全整数像素。
18.在一个实施例中,所述空间高通滤波器为5抽头滤波器或3抽头滤波器。在一种实现方式中,所述5抽头滤波器或所述3抽头滤波器为对称滤波器,即第一个和第五个滤波器系数(或者,在所述3抽头滤波器的情况下,第一个和第三个滤波器系数)相同且第二个和第四个滤波器系数相同的滤波器。在一种实现方式中,所述第一个滤波器系数和所述第五个滤波器系数为负,而所述5抽头滤波器的其它滤波器系数为正。
19.在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和半整数像素,所述5抽头滤波器具有以下滤波器系数:(

6,9,26,9,

6),这些滤波器系数可以通过因子1/32进行归一化。
20.在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和半整数像素,所述5抽头滤波器具有以下滤波器系数:(

1,0,10,0,

1),这些滤波器系数可以通过因子1/8进行归一化。可以理解的是,在没有中间半整数支持像素的另一种可能的实现方式中,所述滤波器变为具有系数(

1,10,

1)的3抽头滤波器。
21.在一个实施例中,所述装置中的所述处理单元用于根据所述参考帧中的各个相邻全整数像素的双线性插值,确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值和所述参考帧中的所述对应滤波器支持像素的所述样本值。
22.在一个实施例中,所述装置中的所述处理单元还用于根据所述当前全整数像素的所述运动矢量和所述当前全整数像素的相邻全整数像素的一个或多个运动矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。
23.在一个实施例中,所述装置中的所述处理单元用于通过确定所述当前全整数像素的所述运动矢量与所述当前全整数像素的相邻全整数像素的一个或多个运动矢量的平均矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。
24.在另一个可能的实施例中,所述装置中的所述处理单元还用于根据所述视频信号的所述当前帧和所述参考帧和/或运动补偿模型,确定所述当前全整数像素的相邻全整数像素的一个或多个运动矢量。
25.在一个实施例中,所述装置中的所述处理单元用于:如果所述当前全整数像素的所述运动矢量是根据非平动运动补偿模型确定的,则通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的样本值,确定所述当前帧中的所述当前像素的帧间预测样本值;如果所述当前全整数像素的所述运动矢量是根据平动运动补偿模型确定的,则根据传统方案(例如h.264/avc和h.265/hevc中定义的传统方案)确定所述当前帧中的所述当前像素的帧间预测样本值。
26.在一个实施例中,所述非平动运动补偿模型为仿射(affine)、扭曲(warping)和/或全景(panoramic)运动补偿模型。
27.在一个实施例中,提供了一种对视频信号的当前帧的当前块的多个像素中的当前全整数像素的样本值进行帧间预测的方法。所述方法包括以下步骤:根据所述视频信号的所述当前帧和参考帧和/或根据运动补偿模型,确定所述当前全整数像素的运动矢量;根据所述当前全整数像素的所述运动矢量,确定所述当前全整数像素在所述参考帧中的对应子整数像素;根据所述当前帧中的一组预定义的滤波器支持像素,生成所述参考帧中的一组对应滤波器支持像素,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值(尤其是亮度值)和所述参考帧中的所述对应滤波器支持像素的样本值(尤其是亮度值);通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前帧中的所述当前像素的帧间预测样本值。
28.因此,提供了一种改进型帧间预测方法,能够提高视频译码的效率。
29.根据上述实施例所述的方法可以由根据上述实施例所述的帧间预测装置执行。根据上述实施例所述的帧间预测方法的其它特征直接源自根据上述实施例及其上下文描述的不同实现方式所述的帧间预测装置的功能。
30.根据一个实施例,提供了一种对视频信号的当前帧进行编码的编码装置。所述编码装置包括根据任一上述实施例所述的帧间预测装置。
31.根据另一个实施例,提供了一种对压缩视频信号的当前重建帧进行解码的解码装置。所述解码装置包括根据任一上述实施例所述的帧间预测装置。
32.根据另一个实施例,提供了一种计算机程序产品。所述计算机程序产品包括程序代码,当所述程序代码在计算机或处理器上执行时,用于执行根据任一上述实施例所述的方法。
33.本文描述的实施例具体提供了以下优点。本发明实施例可以执行像素精度的插值,同时保持低复杂度。至少一些实施例可以支持任何类型的非平动运动。一些实施例可以去除跨子块边缘的块伪影。一些实施例可以减少存储带宽。此外,一些实施例可以降低用于存储一组滤波器系数的内存需求。一些实施例可以重用优化好的硬件(hw)双线性变换。一些其它实施例可以沿变换对准滤波方向。至少一些实施例可以减少由于长抽头运动插值滤波器产生的振铃伪影,同时提高插值边缘的质量。其它实施例可以提高重建图像中边缘的主观质量。此外,一些实施例可能不需要任何其它指示,因此可以无缝地替换现有的用于非
平动运动的插值方法。将插值分为两个步骤可以将分数偏移补偿与高通滤波分开。
34.根据一个实施例,提供了一种对与视频信号的当前帧的当前块相关的多个像素中的当前全整数像素的样本值进行帧间预测的装置。所述装置包括:
35.含有指令的存储器;
36.处理器,与所述存储器通信并在执行所述指令时用于:
37.根据运动补偿模型,确定所述当前全整数像素的运动矢量;
38.根据所述当前全整数像素的所述运动矢量,确定所述当前全整数像素在参考帧中的对应子整数像素;
39.根据所述当前帧中的一组预定义的滤波器支持像素的位置,确定所述参考帧中的一组对应滤波器支持像素的位置,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;
40.通过应用与解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值对应的双线性插值,获得所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值(l)和所述参考帧中的所述对应滤波器支持像素的样本值(l);
41.通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前全整数像素的帧间预测样本值。
42.在上述实施例和其它实施例的上下文中,术语“像素(pixel)”(例如在术语“全整数像素”和“子整数像素”中使用)可以在广义上认为和解释为表示阵列(例如矩阵)内的特定位置上的任何信息量。通常情况下,术语“像素(pixel)”可以理解为“样本(sample)”。这也适用于包括术语“像素”的组合,例如术语“全整数像素(full-integer pixel)”。这可以理解为“全整数样本(full-integer sample)”。因此,术语“像素”不应当被解释为必须指代显示器的像素。相反,在下面的描述和本文公开的实施例中,该术语应当被解释为帧内的特定位置上的信息的一部分,例如数字或值等。与全整数像素相比的子整数像素通常不能直接从当前帧缓冲区或参考帧缓冲区中获得。在本技术的上下文中,术语“子整数像素”对应于全整数像素之间的一些位置和这些位置处的对应值。通常需要特定过程,即插值,来获得子整数像素的值。在一些示例中,插值可以是双线性插值,或者是由基于dct的4抽头或8抽头插值滤波器(即离散余弦变换插值滤波器)执行的插值。
43.在本文提到的实施例的上下文中,术语“与当前块相关(associated with a current block)”应当理解为指代与当前块相关的像素。该术语视为包括块内的像素,但也可以包括位于当前块边界上或边界外部的像素。具体地,位于块外部但紧邻块边界的像素可以视为与当前块“相关”。
44.解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值可以是应用于dmvr中的双线性插值的具体实现。dmvr在基本视频编码(essential video coding,evc)标准中使用。
45.双线性插值“对应于”dmvr应当理解为,在数学函数和/或软件模块和/或译码方面,使用与dmvr具有相似性的双线性插值。具体地,双线性插值可以使用与dmvr中相同的等式。但是,双线性插值对应于dmvr不应当解释为要求向双线性插值提供与dmvr中相同的输入。
46.通过上述方法,其它视频译码软件中的双线性插值模块可以重用于对样本值进行帧间预测。这降低了内存和/或芯片面积,并可以使采用潜在的不同方法的编码更高效。
47.在一个实施例中,使用与dmvr中相同的双线性插值实现。本实施例涉及使用与dmvr中相同的等式,还可能涉及这种双线性插值的实际译码。这样可以进一步降低内存和/或芯片面积,因为很可能完全重用了dmvr模块。
48.在一个实施例中,所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值(l)可以根据以下等式确定:
49.a=(l0*t[fdx][0] l1*t[fdx][1] offset0)》》shift0,
[0050]
b=(l2*t[fdx][0] l3*t[fdx][1] offset0)》》shift0,
[0051]
l=(a*t[fdy][0] b*t[fdy][1] offset1)》》shift1,
[0052]
其中,表t是大小为n
×
2的预定义表,n表示分数位置的数量,值shift0、shift1、offset0和offset1是根据样本位深度和所述表t推导出的。
[0053]
所述表t可以是插值滤波器系数表。上述等式对应于dmvr,使得有可能在当前方法中重用dmvr模块,从而降低内存利用率和/或芯片面积利用率。
[0054]
在一个实施例中,所述表t具有两列t[0]和t[1],t[1]=64

t[0],所述表中的行数对应于分数样本位置的数量。同样,所述表可以是插值滤波器系数表。dmvr中也使用了这种表结构,同样使得有可能使用dvmr可用的信息,从而减少所需内存。
[0055]
具体地,在一个实施例中,所述表t包括n=16个分数样本位置,所述表t如下所示:
[0056]
分数位置pt[0]t[1]064016042568352124481654420640247362883232928361024401120441216481312521485615460
[0057]
所述表与dmvr中使用的表相同,进一步减少了所需内存量。
[0058]
在另一个实施例中,所述表t包括n=32个分数样本位置,所述表如下所示:
[0059][0060]
[0061]
所述表与dmvr中使用的表不同,因为提供了32个分数位置。这样改进了计算机实现方法中的样本预测,从而提高了预测精度。
[0062]
在一个实施例中,shift0=bitdepth

8,offset0=0,shift1=12

shift0,offset1=1《《(shift1

1)。上述等式中使用的这些值改进了预测。这些值还可以提高软件和硬件实现的效率,因为至少对于bitdepth等于10的最重要应用场景,中间结果a和b被限制在16位以内。
[0063]
具体地,在一个实施例中,所述样本位深度等于10,shift0=2,offset0=0,shift1=10,offset1=1《《9。这样进一步提高了预测精度。
[0064]
在一个实施例中,所述处理器还用于将以下信息作为对所述当前全整数像素的所述样本值进行帧间预测的输入:
[0065]

所述当前块的位置(xcb,ycb),以整样本为单位;
[0066]

两个变量cbwidth和cbheight,表示所述当前块的宽度和高度;
[0067]

所述运动矢量的水平变化,dx;
[0068]

所述运动矢量的垂直变化,dy;
[0069]

运动矢量,mvbasescaled;
[0070]

一个或多个选定的参考图像样本阵列,refpiclx;
[0071]

一个或多个样本位深度,bitdepth;
[0072]

所述帧的以样本为单位的宽度,pic_width;
[0073]

所述帧的以样本为单位的高度,pic_height;
[0074]

根据(cbwidth)
×
(cbheight)获取的阵列,称为预测样本值组成的(cbwidth)
×
(cbheight)阵列predsampleslx。
[0075]
这些输入可以用于对所述当前全整数像素的所述样本值进行可靠预测,从而提高预测精度。
[0076]
在一个实施例中,所述变量a和b是通过以下等式获得的:
[0077]
a=(refpiclx[xint][yint]*t[xfrac][0] refpiclx[xint 1][yint]*t[xfrac][1] offset0)》》shift0,
[0078]
b=(refpiclx[xint][yint 1]*t[xfrac][0] refpiclx[xint 1][yint 1]*t[xfrac][1] offset0)》》shift0,
[0079]
其中,
[0080]
mvx[0]=(mvbasescaled[0] dx[0]*x dy[0]*y),
[0081]
mvx[1]=(mvbasescaled[1] dx[1]*x dy[1]*y),
[0082]
xint=xcb (mvx[0]》》9) x,
[0083]
yint=ycb (mvx[1]》》9) y,
[0084]
xfrac=(mvx[0]》》4)&31,
[0085]
yfrac=(mvx[1]》》4)&31;
[0086]
所述选定的参考图像样本阵列refpiclx[xint][yint]中的位置xint和yint由下式给出:
[0087]
xint=clip3(0,pic_width

1,xint),
[0088]
yint=clip3(0,pic_height

1,yint)。
[0089]
以这种方式计算值a和b预测的计算效率提高了预测的计算效率。
[0090]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的半整数像素。使用的相邻像素越多,预测结果越好。
[0091]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的全整数像素。
[0092]
在一个实施例中,所述空间高通滤波器为5抽头滤波器或3抽头滤波器。这些滤波器支持对样本值进行可靠预测。
[0093]
更具体地,在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和半整数像素,所述5抽头滤波器具有以下滤波器系数:(

6,9,26,9,

6)。
[0094]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或半整数像素,所述5抽头滤波器具有滤波器系数(

1,0,10,0,

1)或所述3抽头滤波器具有滤波器系数(

1,10,

1)。
[0095]
在一个实施例中,所述装置中的所述处理单元用于根据所述参考帧中的各个相邻全整数像素的双线性插值,确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值和所述参考帧中的所述对应滤波器支持像素的所述样本值。还使用双线性插值来计算子整数像素的样本值可以进一步支持预测精度。
[0096]
在一个实施例中,所述装置中的所述处理单元还用于根据所述当前全整数像素的所述运动矢量和所述当前全整数像素的相邻全整数像素的一个或多个运动矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。这样可以进一步提高预测精度。
[0097]
在一个实施例中,所述装置中的所述处理单元用于通过确定所述当前全整数像素的所述运动矢量与所述当前全整数像素的相邻全整数像素的一个或多个运动矢量的平均矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。使用这种平均向量可以使更多计算的效率更高。
[0098]
在另一个实施例中,所述装置中的所述处理单元还用于根据运动补偿模型,确定所述当前全整数像素的相邻全整数像素的一个或多个运动矢量。所述运动补偿模型可以包括平动或非平动运动补偿模型等。
[0099]
在另一个实施例中,所述装置中的所述处理单元用于:如果所述当前全整数像素的所述运动矢量是根据非平动运动补偿模型确定的,则通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的样本值,确定所述当前全整数像素的帧间预测样本值;如果所述当前全整数像素的所述运动矢量是根据平动运动补偿模型确定的,则根据传统方案确定所述当前全整数像素的帧间预测样本值。非平动模型可以更节省预测中需要的计算资源,从而提高预测效率。
[0100]
更具体地,所述非平动运动补偿模型可以为仿射(affine)、扭曲(warping)和/或全景(panoramic)运动补偿模型。
[0101]
在另一个实施例中,所述处理单元用于构造一组可分离的4抽头滤波器,其中,所
述一组可分离的4抽头滤波器被构造为双线性滤波器与随后进行的高通滤波器的卷积。
[0102]
在一个实施例中,所述处理单元用于在滤波过程中应用中间取整运算。所述中间取整运算可以包括值的右移,从而可以减少计算中涉及的位数,进而可以提高预测的计算效率。
[0103]
在一个实施例中,提供了一种对与视频信号的当前帧的当前块相关的多个像素中的当前全整数像素的样本值进行帧间预测的方法。所述方法包括:
[0104]
根据运动补偿模型,确定(601)所述当前全整数像素的运动矢量;
[0105]
根据所述当前全整数像素的所述运动矢量,确定(603)所述当前全整数像素在参考帧中的对应子整数像素;
[0106]
根据所述当前帧中的一组预定义的滤波器支持像素的位置,确定(605)参考帧中的一组对应滤波器支持像素的位置,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;
[0107]
通过应用与解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值对应的双线性插值,获得(607)所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值和所述参考帧中的所述对应滤波器支持像素的样本值;
[0108]
通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定(609)所述当前全整数像素的帧间预测样本值。
[0109]
这种方法可以重用已经存在的模块,例如dmvr模块。具体地,如果dmvr对应于evc中使用的dmvr,则相应的模块也可以在当前插值中重用,从而降低内存需求。
[0110]
在一个实施例中,使用与dmvr中相同的双线性插值实现。这样可以将dmvr中使用的模块直接应用于当前插值中,从而进一步减少所需内存量。
[0111]
在一个实施例中,所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值(l)可以是根据以下等式确定的:
[0112]
a=(l0*t[fdx][0] l1*t[fdx][1] offset0)》》shift0,
[0113]
b=(l2*t[fdx][0] l3*t[fdx][1] offset0)》》shift0,
[0114]
l=(a*t[fdy][0] b*t[fdy][1] offset1)》》shift1,
[0115]
其中,表t是大小为n
×
2的预定义表,n表示分数位置的数量,值shift0、shift1、offset0和offset1是根据样本位深度和所述表t推导出的;
[0116]
所述样本位深度等于10,shift0=2,offset0=0,shift1=10,offset1=1《《9。
[0117]
这些计算的效率高,提高了预测效率。
[0118]
在一个实施例中,所述表t具有两列t[0]和t[1],t[1]=64

t[0],所述表中的行数对应于分数样本位置的数量。所述表可以是插值滤波器系数表。dmvr中使用了对应的表,使得更高效地重用对应于dmvr的双线性插值。
[0119]
更具体地,所述表t可以包括n=16个分数样本位置,所述表t如下所述:
[0120][0121][0122]
所述表与dmvr中使用的表相同,因此就计算复杂度而言,重用dmvr的效率更高。
[0123]
在一个实施例中,所述表t包括n=32个分数样本位置,所述表如下所述:
[0124][0125][0126]
本实施例使用不同于dmvr的表,具有两倍的分数位置。这提高了预测精度。
[0127]
在一个实施例中,所述样本位深度等于10,shift0=2,offset0=0,shift1=10,offset1=1《《9。
[0128]
在一个实施例中,所述处理单元将以下信息作为对所述当前全整数像素的所述样本值进行帧间预测的输入:
[0129]

所述当前块的位置(xcb,ycb),以整样本为单位;
[0130]

两个变量cbwidth和cbheight,表示所述当前块的宽度和高度;
[0131]

所述运动矢量的水平变化,dx;
[0132]

所述运动矢量的垂直变化,dy;
[0133]

运动矢量,mvbasescaled;
[0134]

一个或多个选定的参考图像样本阵列,refpiclx;
[0135]

一个或多个样本位深度,bitdepth;
[0136]

所述帧的以样本为单位的宽度,pic_width;
[0137]

所述帧的以样本为单位的高度,pic_height;
[0138]

根据(cbwidth)
×
(cbheight)获取的阵列,称为预测样本值组成的(cbwidth)
×
(cbheight)阵列predsampleslx。
[0139]
在一个实施例中,所述变量a和b是通过以下等式获得的:
[0140]
a=(refpiclx[xint][yint]*t[xfrac][0] refpiclx[xint 1][yint]*t[xfrac][1] offset0)》》shift0,
[0141]
b=(refpiclx[xint][yint 1]*t[xfrac][0] refpiclx[xint 1][yint 1]*t[xfrac][1] offset0)》》shift0,
[0142]
其中,
[0143]
mvx[0]=(mvbasescaled[0] dx[0]*x dy[0]*y),
[0144]
mvx[1]=(mvbasescaled[1] dx[1]*x dy[1]*y),
[0145]
xint=xcb (mvx[0]》》9) x,
[0146]
yint=ycb (mvx[1]》》9) y,
[0147]
xfrac=(mvx[0]》》4)&31,
[0148]
yfrac=(mvx[1]》》4)&31;
[0149]
所述选定的参考图像样本阵列refpiclx[xint][yint]中的位置xint和yint由下式给出:
[0150]
xint=clip3(0,pic_width

1,xint),
[0151]
yint=clip3(0,pic_height

1,yint)。
[0152]
在一个实施例中,提供了一种对视频信号的当前帧进行编码的编码装置。所述编码装置包括根据任一上述实施例所述的帧间预测装置。这样,对视频序列等进行编码可以获得上述优点。
[0153]
在一个实施例中,提供了一种对压缩视频信号的当前重建帧进行解码的解码装置。所述解码装置包括根据任一上述实施例所述的帧间预测装置。这样,对经编码视频序列等进行解码可以获得上述优点。
[0154]
在一个实施例中,提供了一种计算机程序产品。所述计算机程序产品包括程序代码,当所述程序代码在计算机或处理器上执行时,用于执行根据任一上述实施例所述的方
法。
[0155]
在一个实施例中,提供了一种编码器。所述编码器包括处理电路,用于执行根据任一上述实施例所述的方法。因此,对视频序列等进行编码也可以获得上述方法的优点。
[0156]
在另一个实施例中,提供了一种解码器。所述解码器包括处理电路,用于执行根据任一上述实施例所述的方法。这样,对经编码视频序列等进行解码可以获得上述优点。
[0157]
在一个实施例中,提供了一种计算机程序产品。所述计算机程序产品包括程序代码,当所述程序代码在计算机或处理器上执行时,用于执行根据任一上述实施例所述的方法。
[0158]
在一个实施例中,提供了一种解码器。所述解码器包括:
[0159]
一个或多个处理器;
[0160]
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述一个或多个处理器执行所述程序时,所述程序配置所述解码器执行根据任一上述实施例所述的方法。这样,对经编码视频序列等进行解码可以获得上述优点。
[0161]
在一个实施例中,提供了一种编码器。所述编码器包括:
[0162]
一个或多个处理器;
[0163]
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述一个或多个处理器执行所述程序时,所述程序配置所述编码器执行根据任一上述实施例所述的方法。
[0164]
在一个实施例中,提供了一种非瞬时性计算机可读存储介质。所述非瞬时性计算机可读存储介质包括程序代码,当计算机设备执行所述程序代码时,所述程序代码使得所述计算机设备执行根据任一上述实施例所述的方法。
[0165]
在一个实施例中,提供了一种对视频信号的当前帧的当前块的多个像素中的当前全整数像素的样本值进行帧间预测的装置。所述装置包括处理单元,用于:
[0166]
根据所述视频信号的所述当前帧和参考帧和/或运动补偿模型,确定所述当前全整数像素的运动矢量;
[0167]
根据所述当前全整数像素的所述运动矢量,确定所述当前全整数像素在所述参考帧中的对应子整数像素;
[0168]
根据所述当前帧中的一组预定义的滤波器支持像素,生成所述参考帧中的一组对应滤波器支持像素,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;
[0169]
确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值和所述参考帧中的所述对应滤波器支持像素的样本值;
[0170]
通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前帧中的所述当前像素的帧间预测样本值。
[0171]
这样可以高效地预测所述当前全整数像素的样本值。
[0172]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的半整数像素。这样提高
了预测精度。
[0173]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前帧中的所述当前全整数像素的一个或多个垂直和/或水平相邻的全整数像素。这样也进一步提高了预测精度。
[0174]
在一个实施例中,所述空间高通滤波器为5抽头滤波器或3抽头滤波器。这些滤波器高效地提高了预测精度。
[0175]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和半整数像素,所述5抽头滤波器具有以下滤波器系数:(

6,9,26,9,

6)。
[0176]
在一个实施例中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或半整数像素,所述5抽头滤波器具有滤波器系数(

1,0,10,0,

1)或所述3抽头滤波器具有滤波器系数(

1,10,

1)。
[0177]
在一个实施例中,所述装置中的所述处理单元用于根据所述参考帧中的各个相邻全整数像素的双线性插值,确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值和所述参考帧中的所述对应滤波器支持像素的所述样本值。这样可以进一步提高预测精度。
[0178]
在一个实施例中,所述装置中的所述处理单元还用于根据所述当前全整数像素的所述运动矢量和所述当前全整数像素的相邻全整数像素的一个或多个运动矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。
[0179]
在一个实施例中,所述装置中的所述处理单元用于通过确定所述当前全整数像素的所述运动矢量与所述当前全整数像素的相邻全整数像素的一个或多个运动矢量的平均矢量,确定所述当前帧中的所述滤波器支持像素的每个所述子整数像素的相应运动矢量。获得平均向量并将其用于进一步计算可以提高预测过程的计算效率。
[0180]
在一个实施例中,所述装置中的所述处理单元还用于根据所述视频信号的所述当前帧和所述参考帧和/或运动补偿模型,确定所述当前全整数像素的相邻全整数像素的一个或多个运动矢量。
[0181]
在一个实施例中,所述装置中的所述处理单元用于:如果所述当前全整数像素的所述运动矢量是根据非平动运动补偿模型确定的,则通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的样本值,确定所述当前帧中的所述当前像素的帧间预测样本值;如果所述当前全整数像素的所述运动矢量是根据平动运动补偿模型确定的,则根据传统方案确定所述当前帧中的所述当前像素的帧间预测样本值。这些模型可以在预测效率和/或精度方面提供优势。
[0182]
在一个实施例中,所述非平动运动补偿模型为仿射(affine)、扭曲(warping)和/或全景(panoramic)运动补偿模型。
[0183]
在另一个实施例中,所述处理单元用于构造一组可分离的4抽头滤波器,其中,所述一组可分离的4抽头滤波器被构造为双线性滤波器与随后进行的高通滤波器的卷积。
[0184]
此外,在一个实施例中,所述处理单元用于在滤波过程中应用中间取整运算。这种取整可以包括右移。这样可以降低计算的计算复杂度。
[0185]
在一个实施例中,提供了一种对视频信号的当前帧的当前块的多个像素中的当前全整数像素的样本值进行帧间预测的方法。所述方法包括:
[0186]
根据所述视频信号的所述当前帧和参考帧和/或根据运动补偿模型,确定所述当前全整数像素的运动矢量;
[0187]
根据所述当前全整数像素的所述运动矢量,确定所述当前全整数像素在所述参考帧中的对应子整数像素;
[0188]
根据所述当前帧中的一组预定义的滤波器支持像素,生成所述参考帧中的一组对应滤波器支持像素,其中,所述当前帧中的所述一组预定义的滤波器支持像素包括所述当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;
[0189]
确定所述当前全整数像素在所述参考帧中的所述对应子整数像素的样本值和所述参考帧中的所述对应滤波器支持像素的样本值;
[0190]
通过将空间高通滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值以及应用于所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前帧中的所述当前像素的帧间预测样本值。
[0191]
此外,在一个实施例中,提供了一种对视频信号的当前帧的当前块的多个像素中的当前全整数像素的样本值进行帧间预测的方法。所述方法包括:
[0192]
通过将滤波器应用于所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值l以及所述参考帧中的所述对应滤波器支持像素的所述样本值,确定所述当前帧中的所述当前像素的帧间预测样本值,
[0193]
其中,所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值(l)是根据一个或多个等式确定的。
[0194]
在一个实施例中,所述滤波过程以移位、偏移值和表t中的一个或多个表示。
[0195]
此外,在一个实施例中,所述当前全整数像素在所述参考帧中的所述对应子整数像素的所述样本值l可以根据以下等式确定:
[0196]
a=(l0*t[fdx][0] l1*t[fdx][1] offset0)》》shift0,
[0197]
b=(l2*t[fdx][0] l3*t[fdx][1] offset0)》》shift0,
[0198]
l=(a*t[fdy][0] b*t[fdy][1] offset1)》》shift1,
[0199]
其中,表t是大小为n
×
2的预定义表,n表示分数位置的数量,值shift0、shift1、offset0和offset1是根据样本位深度和所述表t推导出的。这样可以提高预测精度。
[0200]
在一个实施例中,所述表t包括16个分数位置。这样可以降低计算中的计算复杂性,但也降低了预测精度。
[0201]
在一个实施例中,所述表t可以定义如下:
[0202]
t[0]t[1]640604568521248164420
40243628323228362440204416481252856460
[0203]
在一个实施例中,l位深度等于10,shift0=2,offset0=0,shift1=10,offset1=1《《9。
[0204]
在一个实施例中,所述表t包括32个分数位置。这样增加了计算复杂度,但也提高了预测精度。
[0205]
具体地,所述表t可以定义如下:
[0206]
[0207][0208][0209]
在一个实施例中,l位深度等于10,shift0=2,offset0=0,shift1=10,offset1
=1《《9。
[0210]
在一个实施例中,所述滤波器与双线性插值相关,或者所述滤波器对应于evc中的dmvr中的双线性插值的实现(例如dmvr使用的双线性插值实现)。这使得有可能重用dmvr中使用的模块或等式,减少了所需内存。
[0211]
在一个实施例中,提供了一种对视频信号的当前帧进行编码的编码装置。所述编码装置包括根据任一上述实施例所述的帧间预测装置。这样,对视频序列等进行编码可以获得上述优点。
[0212]
在一个实施例中,提供了一种对压缩视频信号的当前重建帧进行解码的解码装置。所述解码装置包括根据任一上述实施例所述的帧间预测装置。这样,对经编码视频序列等进行解码可以获得上述优点。
[0213]
在另一个实施例中,提供了一种计算机程序产品。所述计算机程序产品包括程序代码,当所述程序代码在计算机或处理器上执行时,用于执行根据任一上述实施例所述的方法。
[0214]
此外,可以提供一种编码器。所述编码器包括处理电路,用于执行根据任一上述实施例所述的方法。这样,对视频序列等进行编码可以获得上述优点。
[0215]
在一个实施例中,提供了一种解码器。所述解码器包括处理电路,用于执行根据任一上述实施例所述的方法。这样,对经编码视频序列等进行解码可以获得上述优点。
[0216]
在一个实施例中,提供了一种计算机程序产品。所述计算机程序产品包括程序代码,当所述程序代码在计算机或处理器上执行时,用于执行根据任一上述实施例所述的方法。
[0217]
在一个实施例中,提供了一种解码器。所述解码器包括:
[0218]
一个或多个处理器;
[0219]
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述一个或多个处理器执行所述程序时,所述程序配置所述解码器执行根据任一上述实施例所述的方法。这样,对经编码视频序列等进行解码可以获得上述优点。
[0220]
在一个实施例中,提供了一种编码器。所述编码器包括:
[0221]
一个或多个处理器;
[0222]
非瞬时性计算机可读存储介质,与所述一个或多个处理器耦合并存储由所述一个或多个处理器执行的程序,其中,当所述一个或多个处理器执行所述程序时,所述程序配置所述编码器执行根据任一上述实施例所述的方法。这样,对视频序列等进行编码可以获得上述优点。
[0223]
在一个实施例中,提供了一种非瞬时性计算机可读存储介质。所述非瞬时性计算机可读存储介质包括程序代码;当计算机设备执行所述程序代码时,所述程序代码使得所述计算机设备执行根据任一上述实施例所述的方法。
附图说明
[0224]
本发明的其它实施例将结合以下附图进行描述。
[0225]
图1为一个实施例提供的编码装置的示意图,所述编码装置包括一个实施例提供
的帧间预测装置。
[0226]
图2为一个实施例提供的解码装置的示意图,所述解码装置包括一个实施例提供的帧间预测装置。
[0227]
图3为在一个实施例提供的帧间预测装置中实现的插值过程的一方面的示意图。
[0228]
图4为在一个实施例提供的帧间预测装置中实现的插值过程的不同方面的示意图。
[0229]
图5为在一个实施例提供的帧间预测装置中实现的插值过程的不同方面的示意图。
[0230]
图6为一个实施例提供的帧间预测方法的步骤的流程图。
[0231]
图7示出了指示一组可分离的4抽头滤波器的表1,其中,这组可分离的4抽头滤波器被构造为双线性滤波器与随后进行的高通滤波器的卷积。
[0232]
图8为一个实施例提供的方法的流程图。
[0233]
图9为编码装置或解码装置的一个示例的框图。
[0234]
图10为编码装置或解码装置的另一个示例的框图。
[0235]
图11示出了一个实施例提供的帧间预测装置。
[0236]
图12为实现内容分发业务的内容供应系统3100的一种示例性结构的框图。
[0237]
图13为终端设备的一个示例的结构的框图。
[0238]
在各种附图中,相同的附图标记用于表示相同特征或功能等同的特征。
具体实施方式
[0239]
以下描述中,参考组成本发明一部分并以说明的方式示出可以实施本发明的具体方面的附图。可以理解的是,在不脱离本发明范围的情况下,可以利用其它方面,并可以做出结构上或逻辑上的改变。因此,以下详细描述不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。
[0240]
例如,可以理解的是,与描述方法有关的公开内容可以对用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述了一个具体的方法步骤,则对应的设备可以包括一个单元来执行所描述的方法步骤,即使附图中未明确描述或示出这种单元。此外,可以理解的是,除非另外明确说明,本文中所描述的各种示例性方面的特征可以相互组合。
[0241]
图1示出了一个实施例提供的编码装置100。编码装置100包括一个实施例提供的帧间预测装置144。编码装置100可以用于对视频信号的帧中的块进行编码,其中,视频信号包括多个帧(在本文中还称为图像(picture/image)),每个帧可划分为多个块,每个块可以包括多个像素。像素可以是任何类型的信息,也可以表示任何类型的信息。具体地,术语“像素”可以不理解为限于物理显示器中的图像点。相反,术语“像素”应当理解为具有类似“样本”的含义,而不一定需要任何物理现实。虽然在下文称为像素,但该术语应解释为像素或样本。
[0242]
在一个实施例中,块可以是宏块、编码树单元(coding tree unit)、译码单元(coding unit)、预测单元和/或预测块。但是,这些实施例只是示例,块可以是在视频译码等中使用的任何块。此外,块可以具有任何大小和形状。在一个实施例中,每个块可以提供
为矩阵,包括多个像素(或样本)且大小为m
×
n;其中,m和n可以是相同的值,也可以是不相同的值。
[0243]
在图1中所示的示例性实施例中,编码装置100以混合视频译码编码器的方式实现。通常情况下,视频信号中的第一个帧是帧内编码帧,帧内编码帧只通过帧内预测进行编码。为此,在图2所示的实施例中,编码装置100还包括用于帧内预测的帧内预测单元154。帧内编码帧的解码可以不需要其它帧中的信息。帧内预测单元154可以根据帧内估计单元152提供的信息对块执行帧内预测。
[0244]
可以通过模式选择单元160选择的帧间预测或帧内预测对第一个帧内编码帧之后的后续帧中的块进行译码。通常情况下,帧间预测单元144可以用于根据运动估计对块执行运动补偿,下文将进一步详细描述。在一个实施例中,运动估计可以由编码装置中的帧间估计单元142执行。但是,在其它实施例中,帧间估计单元142的功能也可以实现为帧间预测单元144的一部分。
[0245]
此外,在图1所示的混合编码器实施例中,残差计算单元104确定原始块与其预测块之间的差值,即定义帧内/帧间预测的预测误差的残差块。变换单元106(例如通过dct)对这个残差块进行变换,量化单元108对变换系数进行量化。熵编码单元170对量化单元108的输出以及帧间预测单元144等提供的译码信息或边信息进一步编码。
[0246]
混合视频编码器(例如图1所示的编码装置100)的处理方式通常与解码器的处理方式相同,使得编码器和解码器生成相同的预测块。因此,在图1所示的实施例中,反量化单元110和逆变换单元执行变换单元106和量化单元108的逆操作并复制残差块的解码近似值。接着,重建单元114将经解码残差块数据添加到预测的结果(即预测块)中。然后,可以将重建单元114的输出提供给行缓冲区116以用于帧内预测,环内滤波器120对该输出进一步处理以去除图像伪影。将最终图像存储到解码图像缓冲区130中,并可以将最终图像用作参考帧以用于后续帧的帧间预测。
[0247]
图2示出了一个实施例提供的解码装置200。解码装置200包括一个实施例提供的帧间预测装置244。解码装置200用于对经编码视频信号的帧中的块进行解码。在图2所示的实施例中,解码装置200实现为混合解码器。熵解码单元204对经编码图像数据执行熵解码。经编码图像数据通常可以包括预测误差(即残差块)、运动数据和其它边信息,这些都是(尤其是)帧间预测装置244和帧内预测单元254以及解码装置200中的其它组件需要的。在图2所示的实施例中,图3所示的解码装置200中的帧间预测装置244或帧内预测单元254由模式选择单元260选择,并且与图1所示的编码装置100中的帧间预测装置144和帧内预测单元154具有相同功能,使得编码装置100和解码装置200可以生成相同的预测块。解码装置200中的重建单元214用于根据反量化单元210和逆变换单元212提供的残差块和经滤波的预测块对块进行重建。与在编码装置100的情况下一样,可以将重建块提供给用于帧内预测的行缓冲区216,而环内滤波器220可以将经滤波的块/帧提供给解码图像缓冲区230,以用于后续帧间预测。
[0248]
如上所述,装置144、244用于对与视频信号的当前帧中的当前块相关的多个像素中的当前全整数像素的样本值执行帧间预测。在这种情况下,相应的当前全整数像素不一定是当前块的一部分,还可以属于相邻块。具体地,如果当前块表示列范围为x=0..cbw

1和行范围为y=0..cbh

1(其中,cbwb表示当前块的宽度,cbh表示当前块的高度,
)的矩阵,则与当前块“相关”的当前全整数像素可以在位置x=

1和/或y=

1上。因此,虽然当前全整数像素不在当前块的内部,但它可以是当前块与紧邻块之间的边界区域的一部分。在这个意义上,虽然下面参考当前块“的”全整数像素,但应当理解的是,这种情况还包括如上所述的全整数像素与当前块“相关”。但是,为了便于论述,下面不提供这两种情况之间的语言区别。
[0249]
装置144、244包括可以在软件和/或硬件中实现的处理单元。
[0250]
装置144、244中的处理单元在一个实施例中用于确定当前全整数像素的运动矢量。在一个实施例中,装置144、244中的处理单元用于根据视频信号的当前帧和参考帧,通过确定参考帧中与当前帧中的当前全整数像素对应的像素的位置,确定当前全整数像素的运动矢量。在一个实施例中,装置144、244中的处理单元用于根据(采用的)运动补偿模型,确定当前全整数像素的运动矢量。例如,在平动或仿射运动补偿模型作为运动补偿模型特例的情况下,可以使用当前全整数像素所属的同一块的像素的一个或多个运动矢量来确定当前全整数像素的运动矢量。本文使用的“运动补偿模型”也称为运动变换模型、运动模型描述等。其它运动补偿模型,包括扭曲(warping)和/或全景(panoramic)运动模型,可以根据术语“运动补偿模型”理解,而且本发明在这方面不限于特定的运动补偿模型,除非另有明确说明。
[0251]
装置144、244中的处理单元在一些实施例中还用于根据当前全整数像素的运动矢量,确定当前全整数像素在参考帧中的对应子整数像素。
[0252]
装置144、244中的处理单元还用于根据当前帧中的一组预定义的滤波器支持像素,生成参考帧中的一组对应滤波器支持像素。当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素。
[0253]
在一个实施例中,当前帧中的一组预定义的滤波器支持像素包括当前帧中的当前全整数像素的一个或多个垂直和/或水平相邻的半整数像素。例如,在一个实施例中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的上方、左侧、下方和右侧相邻的半整数像素。
[0254]
在一个实施例中,当前帧中的一组预定义的滤波器支持像素包括当前帧中的当前全整数像素的一个或多个垂直和/或水平相邻的全整数像素。例如,在一个实施例中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的上方、左侧、下方和右侧相邻的全整数像素。在一个实施例中,当前帧中的一组预定义的滤波器支持像素可以包括当前帧中的当前全整数像素的上方、左侧、下方和右侧相邻的半整数像素和全整数像素。
[0255]
装置144、244中的处理单元还可以用于确定当前全整数像素在参考帧中的对应子整数像素的样本值(尤其是亮度值)和参考帧中的对应滤波器支持像素的样本值(尤其是亮度值)。
[0256]
在一个实施例中,装置144、244中的处理单元还可以用于根据参考帧中的各个相邻全整数像素的双线性插值,确定当前全整数像素在参考帧中的对应子整数像素的样本值和参考帧中的对应滤波器支持像素的样本值。图3为使用双线性插值来确定当前全整数像素在参考帧中的对应子整数像素的样本值的一个示例。在图3中,参考帧中的参考块相对于当前块进行放大和旋转。当前块包括当前帧的示例性当前像素。此外,图3示出了滤波器支持像素的分辨率提高。
[0257]
如图3中的放大视图所示,在一个实施例中,处理单元可以如下确定当前全整数像素在参考帧中的对应子整数像素的样本值l。当前全整数像素的对应子整数像素在参考帧的样本网格的对应单元格中具有分数位置(fdx,fdy)。l0、l1、l2和l3为参考帧中的相邻全整数像素的已知样本值(即,位于当前全整数像素的对应子整数像素所在的参考帧的样本网格的对应单元格的顶点上的全整数像素)。根据分数位置(fdx,fdy),与s0、s1、s2和s3对应的矩形的各自面积可以计算如下:s0=fdx*fdy,s1=(1

fdx)*fdy,s2=fdx*(1

fdy),s3=(1

fdx)*(1

fdy)。双线性插值可以使用具有水平系数(1

fdx,fdx)和垂直系数(1

fdy,fdy)的2抽头滤波器来表示。根据这些加权因子,可以基于以下等式确定当前全整数像素在参考帧中的对应子整数像素的样本值l:
[0258]
l=l0*s3 l1*s2 l2*s1 l3*s0。如上所述,相同的双线性插值可以用于确定参考帧中的对应滤波器支持像素的样本值。
[0259]
又如,可以基于以下等式确定当前全整数像素在参考帧中的对应子整数像素的样本值l:
[0260]
a=(l0*t[fdx][0] l1*t[fdx][1] offset0)》》shift0,
[0261]
b=(l2*t[fdx][0] l3*t[fdx][1] offset0)》》shift0,
[0262]
l=(a*t[fdy][0] b*t[fdy][1] offset1)》》shift1。
[0263]
在一些实施例中,上述等式中使用的表t是大小为n
×
2的预定义表,其中,n表示分数位置的数量;上述等式中的值shift0、shift1、offset0和offset1是根据样本位深度和表t等推导出的。在一个示例中,表t包括16个分数位置(对应于下面所示的各行):
[0264]
t[0]t[1]64060456852124816442040243628323228362440204416481252856460
[0265]
对于上述示例,可以选择以下值:样本位深度l可以等于10,其它值可以如下设置:shift0=2,offset0=0,shift1=10,offset1=1《《9。
[0266]
本实施例实现了双线性插值的特定形式。双线性插值的这种实现方式对应于evc
中的dmvr中的双线性插值的实现方式。在这个意义上,此处用于确定样本值l的双线性插值“对应于”dmvr应当理解表示用于双线性插值的等式与dmvr中使用的等式相似或相同。这样可以在当前解释的增强型插值滤波器(enhanced interpolation filter,eif)的方法中也重用dmvr中已经开发的模块。因此,在eif中使用这种实现方式提供了额外的优势,因为dmvr中的模块被重用,不需要提供单独模块进行双线性插值。但是,即使eif中使用的等式可能与dmvr中使用的等式非常类似或者甚至相同,但对于eif和dmvr,这些等式的输入不一定相同。不管怎样,即使输入可能不同,只要等式类似或者甚至相同,也可以认为双线性插值“对应于”dmvr。
[0267]
基本上,在一个实施例中,eif可以使用与dmvr中相同的双线性插值,另外还可以使用相同的输入(具体地,如上所述包括16个分数位置的表)。
[0268]
在另一个实施例中,虽然使用了类似或相同的等式,但双线性插值的输入可能与dmvr的不同,具体就表t而言。在这种实施例中,表t可以包括32个分数位置:
[0269]
[0270][0271]
这里,样本值l位深度可以选择等于10,shift0=2,offset0=0,shift1=10,offset1=1《《9。
[0272]
双线性插值的这种实现方式也接近于evc dmvr双线性插值。区别主要在于所使用的表t。使用32个相位(即分数位置)而不是16个相位提供了更精确的插值。与上述表t包括不超过16个分数位置的示例相比,这种情况可能为eif带来性能优势。
[0273]
下面描述了将这种双线性插值实现方式作为mpeg5/evc中的增强型插值滤波器的一部分的另一个示例。
[0274]
用于每个1/16分数样本位置p的插值滤波器系数t[p]的规范
[0275]
[0276][0277]
用于增强型插值滤波器的插值过程
[0278]
为了预测当前全整数样本的样本值,上述等式和下面提到的等式需要更多输入,这些输入可能包括以下参数或值:
[0279]

位置(xcb,ycb),以整样本为单位;
[0280]

两个变量cbwidth和cbheight(上面称为cbh和cbw),表示当前译码块(coding block)的宽度和高度;
[0281]

运动矢量的水平变化,dx;
[0282]

运动矢量的垂直变化,dy;
[0283]

运动矢量,mvbasescaled;
[0284]

选定的参考图像样本阵列,refpiclx;
[0285]

样本位深度位,bitdepth;
[0286]

图像的以样本为单位的宽度,pic_width;
[0287]

图像的以样本为单位的高度pic_height。
[0288]

该方法的输出(即预测样本值)是大小为(cbwidth)
×
(cbheight)的阵列,称为“predsampleslx”,包括每个全整数像素的预测样本值。
[0289]
变量shift1、shift2、shift3、offset1、offset2和offset3可以推导如下:
[0290]
shift0设置为bitdepth

8,offset0等于0,
[0291]
shift1设置为12

shift0,offset1等于2
shift1
–1。
[0292]
当x=

1..cbwidth且y=

1..cbheight时,以下内容适用:
[0293]

运动矢量mvx推导如下:
[0294]
mvx[0]=(mvbasescaled[0] dx[0]*x dy[0]*y)
ꢀꢀꢀꢀꢀꢀꢀ
(8-728)
[0295]
mvx[1]=(mvbasescaled[1] dx[1]*x dy[1]*y)
ꢀꢀꢀꢀꢀ
(8-729)
[0296]

变量xint、yint、xfrac和yfrac可以推导如下:
[0297]
xint=xcb (mvx[0]》》9) x
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-730)
[0298]
yint=ycb (mvx[1]》》9) y
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-731)
[0299]
xfrac=(mvx[0]》》4)&31
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-732)
[0300]
yfrac=(mvx[1]》》4)&31
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-733)
[0301]

根据上述等式8-728至等式8-733,可以获得运动矢量和参考帧中的对应子整数像素的位置。该位置由xfrac和yfrac提供。
[0302]

给定阵列refpiclx内部的位置(xint,yint)(对应于参考帧中的全整数像素)可以推导如下:
[0303]
xint=clip3(0,pic_width

1,xint)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-734)
[0304]
yint=clip3(0,pic_height

1,yint)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-735)
[0305]

在一些实施例中,变量a和b可以通过应用如上所述的双线性插值推导(具体地,可以应用对应于dmvr的双线性插值)如下:
[0306]
a=(refpiclx[xint][yint]*t[xfrac][0] refpiclx[xint 1][yint]*t[xfrac][1] offset0)》》shift0,
[0307]
b=(refpiclx[xint][yint 1]*t[xfrac][0] refpiclx[xint 1][yint 1]*t[xfrac][1] offset0)》》shift0。
[0308]

通过使用值a和b以及相应的位置yfrac,与位置(x,y)对应的样本值b
x,y
推导如下:
[0309]bx,y
=(a*t[yfrac][0] b*t[yfrac][1] offset1)》》shift1
ꢀꢀꢀꢀꢀ
(8-740)
[0310]
值b
x,y
构成参考帧中的对应子整数像素的样本值。
[0311]
增强型插值滤波器系数ef[]表示为{

1,10,

1}。
[0312]
等于{

1,10,

1}的值ef[]构成空间高通滤波器系数。这里还可以使用其它值,本发明不限于使用这些特定的增强型滤波器系数。
[0313]
变量shift2、shift3、offset2和offset3推导如下:
[0314]
shift2设置为max(bit_depth

11,0),offset2等于2
shift2
–1,
[0315]
shift3设置为(6

max(bit_depth

11,0)),offset3等于2
shift3
–1,
[0316]
当x=0..cbwidth

1且y=

1..cbheight时,以下内容适用:
[0317]
–hx,y
=(ef[0]*b
x

1,y
ef[1]*b
x,y
ef[2]*b
x 1,y
offset2)》》shift2
ꢀꢀ
(8-741)
[0318]
当x=0..cbwidth

1且y=0..cbheight

1时,以下内容适用:
[0319]

predsampleslx
l
[x][y]=clip3(0,(1《《bitdepth)

1,(ef[0]*h
x,y
–1 ef[1]*h
x,y
ef[2]*b
x,y 1
offset3)》》shift3)
ꢀꢀ
(8-742)
[0320]
然后,等式8-741和等式8-742的结果构成与当前块相关的相应当前全整数像素的一个或多个预测样本值。
[0321]
装置144、244中的处理单元还可以用于通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定当前帧中的当前像素的帧间预测样本值。
[0322]
在一个实施例中,空间高通滤波器为5抽头滤波器。在一个实施例中,5抽头滤波器是对称滤波器,即第一个滤波器系数与第五个滤波器系数相同且第二个滤波器系数与第四个滤波器系数相同的滤波器。在一个实施例中,第一个滤波器系数和第五个滤波器系数为负,而5抽头滤波器的其它滤波器系数为正。在一个实施例中,空间高通滤波器可以在垂直方向和水平方向分别应用。但是,本发明并不限于使用哪种滤波器。相反,任何高通滤波器都可以用作增强型插值滤波器。
[0323]
在一个实施例中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的5个相邻全整数像素和半整数像素,5抽头滤波器具有以下给定数值精度下的滤波器系数(

6,9,26,9,

6)。这些滤波器系数可以通过因子1/32进行归一化。
[0324]
在另一实施例中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的5个相邻的全整数像素和半整数像素,5抽头滤波器具有以下给定数值精度下的滤波器系数(

1,0,10,0,

1)。这些滤波器系数可以通过因子1/8进行归一化。可以理解的是,在没有中间半整数支持像素的实施例中,5抽头滤波器变为具有3个全整数支持像素且具有系数(

1,10,

1)的3抽头滤波器。
[0325]
在一个实施例中,装置144、244中的处理单元用于根据二维可分离的卷积过程和滤波器支持像素,确定当前帧中的当前像素的帧间预测样本值。例如,对于5抽头滤波器的情况,装置144、244中的处理单元用于将5抽头滤波器应用于由当前像素的5个水平和垂直相邻的半整数像素和全整数像素定义的每条水平线和垂直线。
[0326]
图4示出了装置144、244中的处理单元针对图3中的示例在垂直方向和水平方向上使用5抽头滤波器执行处理单元的不同阶段。与在图3所示的示例中一样,参考块相对于当前块进行放大和旋转(对应于仿射变换),在当前帧中垂直和水平的5抽头滤波器在参考帧中旋转。
[0327]
下文描述了帧间预测装置144、244,编码装置100和解码装置200的其它实施例。在这种情况下,可以理解的是,帧间预测装置144、244的实施例涉及在编码装置100中实现的帧间预测装置133的实施例以及在解码装置200中实现的帧间预测装置244的实施例。
[0328]
在一个实施例中,装置144、244中的处理单元还用于根据当前全整数像素的运动矢量和当前全整数像素的相邻全整数像素的一个或多个运动矢量,确定当前帧中的滤波器支持像素的每个子整数像素的对应运动矢量。为此,在一个实施例中,装置144、244中的处理单元用于确定当前全整数像素的运动矢量与当前全整数像素的相邻全整数像素的一个或多个运动矢量之间的平均矢量。例如,为了确定当前帧中的当前全整数像素上方的半整数像素的运动矢量,装置144、244中的处理单元可以计算当前全整数像素的运动矢量与当前全整数像素上方的相邻全整数像素的运动矢量的平均值(即均值)。
[0329]
与确定当前像素的运动矢量类似,装置144、244中的处理单元可以用于根据视频信号的当前帧和参考帧和/或运动补偿模型,确定当前全整数像素的相邻全整数像素的一
个或多个运动矢量。
[0330]
在一个实施例中,装置144、244中的处理单元用于:如果当前全整数像素的运动矢量是根据非平动运动补偿模型确定的,则通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定当前帧中的当前像素的帧间预测样本值;如果当前全整数像素的运动矢量是根据平动运动补偿模型确定的,则根据传统方案(例如h.264/avc和h.265/hevc中定义的传统方案)确定当前帧中的当前像素的帧间预测样本值。在一个实施例中,非平动运动补偿模型为仿射(affine)、扭曲(warping)和/或全景(panoramic)运动补偿模型。
[0331]
在用于平动运动补偿模型的另一个实施例中,装置144、244中的处理单元用于通过对所提出的滤波器(即双线性滤波器和随后进行的高通滤波器)进行卷积,构造一组可分离的4抽头滤波器,例如,如下所述:[f,1

f]*[c0,c1,c2]=[(1

f)*(c0),f*(c0) (1

f)*c1,f*(c1) (1

f)*c2,f*(c2)],其中,f表示运动矢量在水平方向或垂直方向上的分数偏移,[c0,c1,c2]表示高通滤波器的系数。在这种情况下,分数位置可以是离散的,具有一定精度,以得到有限表大小。系数的最终值可以乘以范数因子并取整,使得每个偏移的系数之和等于范数因子。对于某些特定场景,具有零分数偏移的滤波器可以等于1(701)(零偏移时无滤波)。例如,当范数因子等于64且分数偏移精度为1/32时,一组滤波器系数(700)可以是表1所示的一组滤波器系数。例如,该技术可以用于滤波色度分量。该技术还可以用于小块的滤波,以便保持最坏情况复杂度和/或低存储带宽。
[0332]
在任何实施例中,可以在任何实现步骤中应用中间取整或限幅,以便保持固定位数作为计算操作的输入范围。例如,在滤波(例如水平滤波)的任何可分离步骤之后,中间值可以归一化并取整到16位精度,以便在下一步骤(例如垂直滤波)乘以滤波器系数。
[0333]
图5概括了上述实施例的几个方面。
[0334]
图6为一个实施例提供的对应帧间预测方法600的步骤的流程图。方法600包括以下步骤:根据视频信号的当前帧和参考帧和/或根据运动补偿模型,确定601当前全整数像素的运动矢量;根据当前全整数像素的运动矢量,确定603当前全整数像素在参考帧中的对应子整数像素;根据当前帧中的一组预定义的滤波器支持像素,生成605参考帧中的一组对应滤波器支持像素,其中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素;确定607当前全整数像素在参考帧中的对应子整数像素的样本值和参考帧中的对应滤波器支持像素的样本值;通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定609当前帧中的当前像素的帧间预测样本值。
[0335]
图8示出了对与视频信号的当前帧中的当前块相关的多个像素的当前全整数像素的样本值执行帧间预测的方法的另一个实施例。
[0336]
图8所示的方法包括多个步骤。但是,所制作的实施例和本发明不限于所执行的步骤的数量。还可以执行当前未示出的其它步骤。
[0337]
在图8的实施例中,该方法包括以下步骤:
[0338]
首先,根据运动补偿模型确定(801)当前全整数像素的运动矢量。
[0339]
之后,根据当前全整数像素的运动矢量,确定(803)当前全整数像素在参考帧中的对应子整数像素。
[0340]
根据当前帧中的一组预定义的滤波器支持像素的位置,可以确定(805)参考帧中的一组对应滤波器支持像素的位置,其中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素。
[0341]
由此,通过应用双线性插值,获得(807)当前全整数像素在参考帧中的对应子整数像素的样本值和参考帧中的对应滤波器支持像素的样本值。如前所述,这种插值可以对应于解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值。例如,evc中使用的dmvr可以在这里使用。
[0342]
然后,通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定(809)当前全整数像素的帧间预测样本值。
[0343]
图9为本发明一个实施例提供的视频译码设备900的示意图。视频译码设备900适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备900可以是解码器(例如图2的视频解码器200)或编码器(例如图1的视频编码器100)。
[0344]
视频译码设备900包括:用于接收数据的入端口910(或输入端口910)和接收单元(rx)920;用于处理所述数据的处理器、逻辑单元或中央处理单元(central processing unit,cpu)930;用于发送所述数据的发送单元(tx)940和出端口950(或输出端口950);用于存储所述数据的存储器960。视频译码设备900还可以包括与入端口910、接收单元920、发送单元940和出端口950耦合的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用作光信号或电信号的出口或入口。
[0345]
处理器930通过硬件和软件来实现。处理器930可以实现为一个或多个cpu芯片、一个或多个核(例如多核处理器)、一个或多个fpga、一个或多个asic和一个或多个dsp。处理器930与入端口910、接收单元920、发送单元940、出端口950和存储器960通信。处理器930包括译码模块970。译码模块970用于实现上文描述的公开实施例。例如,译码模块970执行、处理、准备或提供各种译码操作。因此,将译码模块970包括在内为视频译码设备900的功能提供了实质性的改进,并且影响了视频译码设备900到不同状态的转换。可选地,以存储在存储器960中并由处理器930执行的指令来实现译码模块970。
[0346]
存储器960可以包括一个或多个磁盘、一个或多个磁带机和一个或多个固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。例如,存储器960可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0347]
如图9所示,装置900可以用于执行图8的实施例所述的方法。
[0348]
装置900用于对与视频信号的当前帧中的当前块相关的多个像素的当前全整数像素的样本值执行帧间预测。装置900包括:
[0349]
包含指令的存储器960;
[0350]
与所述存储器通信的处理器930,其中,所述处理器用于在执行所述指令时执行以下步骤:
[0351]
根据运动补偿模型确定当前全整数像素的运动矢量;
[0352]
之后,根据当前全整数像素的运动矢量,确定当前全整数像素在参考帧中的对应子整数像素。
[0353]
由此,处理器可以根据当前帧中的一组预定义的滤波器支持像素的位置,确定参考帧中的一组对应滤波器支持像素的位置,其中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素。
[0354]
基于此,处理器可以通过应用双线性插值获得当前全整数像素在参考帧中的对应子整数像素的样本值(l)和参考帧中的对应滤波器支持像素的样本值(l)。如上所述,这种双线性插值在一些实施例中可以对应于解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值。具体地,双线性插值可以是evc中使用的dmvr。此外,处理器用于通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定当前全整数像素的帧间预测样本值。
[0355]
图10为本发明一个实施例提供的视频译码设备1000的示意图。视频译码设备1000适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备1000可以是解码器(例如图2的视频解码器200)或编码器(例如图1的视频编码器100)。
[0356]
装置1000中的处理器1002可以是中央处理单元。可选地,处理器1002可以是现有的或今后开发出的能够操作或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器1002等单个处理器来实施所公开的实现方式,但使用多个处理器可以提高速度和效率。
[0357]
在一种实现方式中,装置1000中的存储器1004可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。任何其它合适类型的存储设备都可以用作存储器1004。存储器1004可以包括处理器1002通过总线1012访问的代码和数据1006。存储器1004还可包括操作系统1008和应用程序1010,应用程序1010包括至少一个程序,这个程序使得处理器1002执行本文描述的方法。例如,应用程序1010可以包括应用1至应用n,还包括执行本文描述的方法的视频译码应用。
[0358]
装置1000还可以包括一个或多个输出设备,例如显示器1018。在一个示例中,显示器1018可以是将显示器与触敏元件组合的触敏显示器,该触敏元件能够用于感测触摸输入。显示器1018可以通过总线1012与处理器1002耦合。
[0359]
虽然装置1000中的总线1012在这里示为单个总线,但是可以包括多个总线。此外,辅助存储器1014可以直接与装置1000中的其它组件耦合或可以通过网络访问,并且可以包括单个集成单元(例如一个存储卡)或多个单元(例如多个存储卡)。因此,装置1000可以具有各种各样的构造。
[0360]
图11为本发明实施例提供的帧间预测装置1100的一个示例的框图。具体地,图11示出了帧间预测装置(模块)1100。在一个示例中,帧间预测装置1100可以实现为图1中的142和/或144或图2中的244等。装置1100为对与视频信号的当前帧中的当前块相关的多个像素中的当前全整数像素的样本值进行帧间预测的装置。该装置包括确定单元1110和帧间预测处理单元1120。
[0361]
确定单元1110用于:根据运动补偿模型,确定当前全整数像素的运动矢量;根据当前全整数像素的运动矢量,确定当前全整数像素在参考帧中的对应子整数像素;根据当前
帧中的一组预定义的滤波器支持像素的位置,确定参考帧中的一组对应滤波器支持像素的位置,其中,当前帧中的一组预定义的滤波器支持像素包括当前全整数像素的一个或多个相邻的全整数像素和/或子整数像素。
[0362]
帧间预测处理单元1120用于:通过应用与解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)中的双线性插值对应的双线性插值,获得当前全整数像素在参考帧中的对应子整数像素的样本值(l)和参考帧中的对应滤波器支持像素的样本值(l);通过将空间高通滤波器应用于当前全整数像素在参考帧中的对应子整数像素的样本值以及应用于参考帧中的对应滤波器支持像素的样本值,确定当前全整数像素的帧间预测样本值。
[0363]
图8的实施例提供的方法可以由本发明实施例提供的装置执行。本发明实施例提供的方法的其它特征和实现方式对应于本发明实施例提供的装置的特征和实现方式。
[0364]
实施例提供的方法的优点与实施例提供的装置的对应实现方式的优点相同。
[0365]
虽然本发明的特定特征或方面可能已经仅结合几种实现方式或实施例中的一种进行公开,但这些特征或方面可以与其它实现方式或实施例中的一个或多个其它特征或方面相结合,只要对于任何给定或特定应用是有需要或有利的。此外,在一定程度上,术语“包括”、“有”、“具有”或这些词的其它变形在详细说明或权利要求书中使用,这些术语与术语“包括”是类似的,都是表示包括的含义。同样,术语“示例性地”、“例如”仅表示为示例,而不是最好或最优的。可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可以用于指示两个元件彼此协作或交互,而不管它们是直接物理接触还是电接触,或者它们彼此不直接接触。
[0366]
虽然本文中已说明和描述特定方面,但本领域普通技术人员应了解,多种替代和/或等效实现方式可在不脱离本发明范围的情况下替代所示和描述的特定方面。本技术旨在覆盖本文描述的特定方面的任何修改或变更。
[0367]
虽然以上权利要求书中的元件是利用对应的标签按照特定顺序列举的,除非对权利要求的阐述另外暗示用于实施部分或所有这些元件的特定顺序,否则这些元件不必限于以该特定顺序来实施。
[0368]
通过以上启示,对于本领域的技术人员来说,许多替代、修改和变化是显而易见的。当然,本领域技术人员容易认识到,除本文所述的应用之外,还存在本发明的众多其它应用。虽然已结合一个或多个特定实施例描述了本发明,但本领域技术人员认识到,在不脱离本发明范围的情况下,仍可对本发明作出许多改变。因此,应当理解,只要是在所附权利要求书及其等效物的范围内,可以用不同于本文具体描述的方式来实践本发明。
[0369]
下面对上述实施例中所示的编码方法和解码方法的应用以及使用这些应用的系统进行解释说明。
[0370]
图12为用于实现内容分发业务的内容供应系统3100的框图。内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102通过通信链路3104与终端设备3106通信。通信链路可以包括上文描述的通信信道13。通信链路3104包括但不限于wi-fi、以太网、电缆、无线(3g/4g/5g)、usb或者其任何种类的组合等。
[0371]
捕获设备3102用于生成数据,并且可以通过上文实施例中所示的编码方法对数据进行编码。可选地,捕获设备3102可以将数据分发到流媒体服务器(图中未示出),该服务器
对数据进行编码并将经编码数据发送给终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、pda、车载设备或其任意组合等。例如,捕获设备3102可以包括上文描述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即声音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将经编码视频数据和经编码音频数据一起复用来分发经编码视频数据和经编码音频数据。对于其它实际场景,例如在视频会议系统中,不复用经编码音频数据和经编码视频数据。捕获设备3102将经编码音频数据和经编码视频数据分别分发到终端设备3106。
[0372]
在内容供应系统3100中,终端设备3106接收并再生成经编码数据。终端设备3106可以为具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络视频录像机(network video recorder,nvr)/数字视频录像机(digital video recorder,dvr)3112、电视3114、机顶盒(set top box,stb)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,pda)3122、车载设备3124,或能够对上述经编码数据进行解码的以上设备中任何一个的组合等。例如,终端设备3106可以包括上文描述的目的地设备14。当经编码数据包括视频时,终端设备中包括的视频解码器30优先执行视频解码。当经编码数据包括音频时,终端设备中包括的音频解码器优先执行音频解码处理。
[0373]
对于具有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络视频录像机(network video recorder,nvr)/数字视频录像机(digital video recorder,dvr)3112、电视3114、个人数字助理(personal digital assistant,pda)3122或车载设备3124,终端设备可以将解码数据馈送到其显示器。对于不配备显示器的终端设备,例如stb 3116、视频会议系统3118或视频监控系统3120,在其中连接外部显示器3126以接收和显示经解码数据。
[0374]
当该系统中的每个设备执行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
[0375]
图13为终端设备3106的一个示例的一种结构的示意图。在终端设备3106从捕获设备3102接收到流后,协议处理单元3202分析该流的传输协议。该协议包括但不限于实时流协议(real time streaming protocol,rtsp)、超文本传输协议(hyper text transfer protocol,http)、http直播流媒体协议(http live streaming protocol,hls)、mpeg-dash、实时传输协议(real-time transport protocol,rtp)、实时消息传输协议(real time messaging protocol,rtmp),或其任何种类的组合等。
[0376]
在协议处理单元3202对流进行处理之后,生成流文件。文件被输出到解复用单元3204。解复用单元3204可以将复用数据分离成经编码音频数据和经编码视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用经编码音频数据和经编码视频数据。在这种情况下,不通过解复用单元3204,将经编码数据发送给视频解码器3206和音频解码器3208。
[0377]
通过解复用处理,生成视频基本流(elementary stream,es)、音频es和可选的字幕。视频解码器3206,包括上述实施例中说明的视频解码器30,通过上述实施例中所示的解
码方法对视频es进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208对音频es进行解码以生成音频帧,并将此数据馈送到同步单元3212。可选地,在将视频帧馈送到同步单元3212之前可以将视频帧存储在缓冲区(图y中未示出)中。类似地,在将音频帧馈送到同步单元3212之前可以将音频帧存储在缓冲区(图y中未示出)中。
[0378]
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频信息和音频信息的呈现。信息可以使用经译码音频和可视数据的呈现有关的时间戳以及与数据流本身的传送有关的时间戳而以语法进行译码。
[0379]
如果流中包括字幕,则字幕解码器3210对字幕进行解码,使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
[0380]
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以包括在汽车系统等其它系统中。
[0381]
虽然上面的描述使用了编程语言c或提供了c语言中的编程代码,但在至少一些实施例中,本发明不限于此。事实上,在一些实施例中,本发明可以使用除上面和下面所述之外的其它编程语言和/或其它编程工具和/或其它软件模块来实现。
[0382]
在这个意义上,在一些实施例中,c语言或c程序代码的使用可以认为是伪代码,反映了根据本发明实施例发生的事情,但不限于本发明应用特定编程代码。相反,实施例可以使用上文描述的实际功能,独立于程序代码中的任何特定实现方式和/或特定编程语言的使用。
[0383]
数学运算符
[0384]
本技术中使用的数学运算符与c编程语言中使用的数学运算符类似,但是,本技术准确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,例如幂运算和实值除法。编号和计数规范通常从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
[0385]
算术运算符
[0386]
算术运算符定义如下:
[0387]
加法运算
[0388]

减法运算(二元运算符)或者取反(一元前缀运算符)
[0389]
*乘法运算,包括矩阵乘法运算
[0390][0391][0392]
÷
表示数学等式中的除法运算,不做截断或取整。
[0393]
表示数学等式中的除法运算,不做截断或取整。
[0394]
i取x到y(包括y)的所有整数值时,函数f(i)的累加和。
[0395]
x%y模运算,表示x除y的余数,其中,x和y都是整数,并且x》=0和y》0。
[0396]
逻辑运算符
[0397]
逻辑运算符定义如下:
[0398]
x&&yx和y的布尔逻辑“与”运算
[0399]
x||yx和y的布尔逻辑“或”运算
[0400]
!布尔逻辑“非”运算
[0401]
x?y:z如果x为真(true)或不等于0,则求y的值,否则,求z的值。
[0402]
关系运算符
[0403]
关系运算符定义如下:
[0404]
》大于
[0405]
》=大于或等于
[0406]
《小于
[0407]
《=小于或等于
[0408]
==等于
[0409]
!=不等于
[0410]
当一个关系运算符应用于一个已被赋值“na”(不适用)的语法元素或变量时,值“na”被视为该语法元素或变量的不同值。值“na”被视为不等于任何其它值。
[0411]
按位运算符
[0412]
按位运算符定义如下:
[0413]
&按位“与”运算。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0414]
|按位“或”运算。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0415]
^按位“异或”运算。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0416]
x》》y将x以2的补码整数表示的形式向右算术移动y个二进制位。只有y为非负整数值时才有这个函数定义。右移的结果是移进最高有效位(mostsignificantbit,msb)的比特位等于移位操作之前的x的msb。
[0417]
x《《y将x以2的补码整数表示的形式向左算术移动y个二进制位。只有y为非负整数值时才有这个函数定义。左移的结果是移进最低有效位(leastsignificantbit,lsb)的比特位等于0。
[0418]
赋值运算符
[0419]
算术运算符定义如下:
[0420]
=赋值运算符
[0421]
递增,即,x 相当于x=x 1;当在用于数组下标时时,在自加运算前先求变量值。
[0422]
––
递减,即,x
––
相当于x=x

1;当用于数组下标时,在自减运算前先求变量值。
[0423]
=递增指定值,即,x =3相当于x=x 3,x =(

3)相当于x=x (

3)。
[0424]

=递减指定值,即,x

=3相当于x=x

3,x

=(

3)相当于x=x

(

3)。
[0425]
范围表示法
[0426]
下面的表示法用来说明值的范围:
[0427]
x=y..zx取从y到z(包括y和z)的整数值,其中,x、y和z是整数,z大于y。
[0428]
数学函数
[0429]
数学函数定义如下:
[0430][0431]
asin(x)三角反正弦函数,对参数x运算,x在

1.0至1.0(包括端值)范围之间,输出值在

π
÷
2至π
÷
2(包括端值)范围之间,单位为弧度。
[0432]
atan(x)三角反正切函数,对参数x运算,输出值在

π
÷
2至π
÷
2(包括端值)范围之间,单位为弧度。
[0433][0434]
ceil(x)大于或等于x的最小整数。
[0435]
clip1y(x)=clip3(0,(1《《bitdepthy)

1,x)
[0436]
clip1c(x)=clip3(0,(1《《bitdepthc)

1,x)
[0437][0438]
cos(x)三角余弦函数,对参数x运算,单位为弧度。
[0439]
floor(x)小于或等于x的最大整数。
[0440][0441]
ln(x)返回x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828
……
)。
[0442]
log2(x)x以2为底的对数。
[0443]
log10(x)x以10为底的对数。
[0444][0445][0446]
round(x)=sign(x)*floor(abs(x) 0.5)
[0447][0448]
sin(x)表示三角正弦函数,对参数x运算,单位为弧度。
[0449][0450]
swap(x,y)=(y,x)
[0451]
tan(x)表示三角正切函数,对参数x运算,单位为弧度。
[0452]
运算优先级顺序
[0453]
当没有使用括号来显式表示表达式中的优先顺序时,以下规则适用:
[0454]

高优先级的运算在低优先级的任何运算之前计算。
[0455]

相同优先级的运算从左到右依次计算。
[0456]
下表从最高到最低的顺序说明运算的优先级,表中位置越高,优先级越高。
[0457]
对于c编程语言中也使用的运算符,本规范中运算符优先级顺序与c编程语言中优先级顺序相同。
[0458]
表:运算优先级按照最高(表格顶部)到最低(表格底部)排序
[0459]
逻辑运算的文本描述
[0460]
在文本中,用数学形式描述如下的逻辑运算语句:
[0461][0462]
可以用以下方式描述:
[0463]
……
如下/
……
以下为准:
[0464]

如果条件0,则语句0
[0465]

否则,如果条件1,则语句1
[0466]
‑……
[0467]

否则(关于剩余条件的提示性说明),则语句n
[0468]
文本中的每个“如果
……
否则,如果
……
否则,
……”
语句都以
“……
如下”或
“……
以下为准”引入,后面紧跟着“如果
……”
。”。“如果
……
否则,如果
……
否则,
……”
的最后一个条件总有一个“否则,
……”
。中间有“如果
……
否则,如果
……
否则”语句可以通过使
“……
如下”或
“……
以下为准”与结尾“否则
……”
匹配来识别。
[0469]
在文本中,用数学形式描述如下的逻辑运算语句:
[0470][0471]
可以用以下方式描述:
[0472]
……
如下/
……
以下为准:
[0473]

如果以下所有条件为真,则语句0:
[0474]

条件0a
[0475]

条件0b
[0476]

否则,如果满足以下一个或多个条件,则语句1:
[0477]

条件1a
[0478]

条件1b
[0479]-—
……
[0480]

否则,语句n
[0481]
在文本中,用数学形式描述如下的逻辑运算语句:
[0482]
if(condition 0)
[0483]
statement 0
[0484]
if(condition 1)
[0485]
statement 1
[0486]
可以用以下方式描述:
[0487]
当条件0时,语句0
[0488]
当条件1时,语句1
[0489]
虽然本发明实施例主要根据视频译码进行了描述,但需要说明的是,译码系统10、编码器20和解码器30(相应地,系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即,对视频译码中独立于任何先前或连续图像的单个图像进行处理或译码。一般而言,如果图像处理译码限于单个图像17,则仅帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可以用于静止图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。
[0490]
编码器20和解码器30等的实施例以及本文参照编码器20和解码器30等描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则这些功能可以作为一个或多个指令或代码存储在计算机可读介质中或通过通信介质发送,且由基于硬件的处理单元执行。计算机可读介质可以包括与有形介质(例如,数据存储介质)对应的计算机可读存储介质,或包括任何便于将计算机程序从一处传送到另一处的介质(例如,根据通信协议)的通信介质。通过这种方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)信号或载波等通信介质。数据存储介质可以是通过一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实施本发明所述技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0491]
作为示例而非限制,这些计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可以用于存储指令或数据结构形式的所需程序代码并且可以由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴缆线、光纤缆线、双绞线、数字用户线(digital subscriber line,dsl)或红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,则同轴缆线、光纤缆线、双绞线、dsl或红外线、无线电和微波等无线技术包括在介质的定义中。但是,应当理解的是,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是涉及非瞬时性有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(compact disc,cd)、激光光盘、光学光盘、数字多功能光盘(digital versatile disc,dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包括在计算机可读介质的范围内。
[0492]
指令可以通过一个或多个数字信号处理器(digital signal processor,dsp)、一个或多个通用微处理器、一个或多个专用集成电路(application specific integrated circuit,asic)、一个或多个现场可编程逻辑阵列(field programmable logic array,fpga)或其它同等集成或离散逻辑电路等一或多个处理器来执行。因此,本文所使用的术语“处理器”可以指上述结构中的任一种或适于实施本文所述技术的任何其它结构。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块
内,或者并入在组合编解码器中。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0493]
本发明技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integrated circuit,ic)或一组ic(例如芯片组)。本发明描述了各种组件、模块或单元,以强调用于执行所公开技术的设备的功能方面,但未必需要由不同的硬件单元实现。实际上,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。
再多了解一些

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

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

相关文献