视频编码的运动补偿方法与流程

文档序号:29865960发布日期:2022-04-30 14:17阅读:518来源:国知局
视频编码的运动补偿方法与流程
视频编码的运动补偿方法
对相关申请的交叉引用
1.本技术要求2019年9月24日提交的第62/904,718号美国临时申请的优先权,其全部内容通过引用并入本文。
技术领域
2.本公开主要涉及视频处理,更具体地说,涉及运动补偿的插值滤波器。


背景技术:

3.视频是一组捕捉视觉信息的静态图片(或“帧”)。为了减少存储内存和传输带宽,可以将视频压缩后再存储或传输,解压后再显示。压缩过程通常被称为编码,解压过程通常被称为解码。目前有多种采用标准化视频编码技术的视频编码格式,最常见的是基于预测、变换、量化、熵编码和环内滤波的视频编码格式。所述视频编码标准,如hevc/h.265(high efficiency video coding)标准、vvc/h.266(versatile video coding)标准、avs(avs standards)标准,由标准化组织制定具体的视频编码格式。随着所述视频标准中越来越多先进的视频编码技术的应用,新的视频编码标准的编码效率也越来越高。


技术实现要素:

4.本公开的实施例提供了一种处理视频内容的计算机实现的方法。该方法包括:确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数;以及,在图片帧上应用所述多个整数插值系数来执行运动补偿预测。
5.本公开的实施例还提供用于处理视频内容的系统。该系统可以包括:存储一组指令集的存储器;以及配置为执行所述指令集的至少一个处理器,以使所述系统执行:确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数;以及,在图片帧上应用所述多个整数插值系数来执行运动补偿预测。
6.本公开的实施例还提供了一种非易失性计算机可读介质,存储有指令集,所述指令集由计算机系统的至少一个处理器执行,其中,所述指令集的执行使该计算机系统执行一种方法,包括:确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自的多个整数,确定所述插值滤波器的多个整数插值系数;以及,在图片帧上应用所述多个整数插值系数来执行运动补偿预测。
附图说明
7.本公开的实施例和各方面在以下详细描述和附图中加以说明。图中所示的各种特征并不是按比例画的。
8.图1示出与本发明公开的实施例一致的示例性视频序列的结构。
9.图2a示出与本公开实施例一致的混合视频编码系统的示例性编码过程的原理图。
10.图2b示出与本公开实施例一致的混合视频编码系统的另一个示例性编码过程的原理图。
11.图3a示出与本发明实施例一致的混合视频编码系统的示例性解码过程的原理图。
12.图3b示出与本公开实施例一致的混合视频编码系统的另一个示例性解码过程的原理图。
13.图4是与本公开的实施例一致的用于编码或解码视频的示例性装置的框图。
14.图5示出了与本发明实施例一致的低通滤波器的示例性频率响应的示意图。
15.图6示出了与本发明的实施例一致的示例性亮度插值滤波器。
16.图7示出了与本发明的实施例一致的示例性色度插值滤波器。
17.图8示出了与本发明实施例一致的另一个示例性的亮度插值滤波器。
18.图9示出与本发明的实施例一致的另一个示例性的色度插值滤波器。
19.图10示出了与本发明实施例一致的用于4
×
4运动补偿的示例性亮度插值滤波器。
20.图11示出了与本发明实施例一致的示例性平滑参数。
21.图12示出与本发明实施例一致的示例性6抽头实数亮度插值滤波器。
22.图13示出了与本公开实施例一致的示例性6抽头整数亮度插值滤波器。
23.图14示出了与本发明实施例一致的示例性6抽头整数亮度插值滤波器。
24.图15示出了与本发明实施例一致的示例性平滑参数。
25.图16示出了与本发明实施例一致的示例性6抽头实数亮度插值滤波器。
26.图17示出了与本发明的实施例一致的示例性6抽头整数亮度插值滤波器。
27.图18示出了与本发明实施例一致的示例性的无平滑窗口函数的6抽头实数亮度插值滤波器。
28.图19示出了与本发明实施例一致的示例性的无平滑窗口函数的6抽头整数亮度插值滤波器。
29.图20是与本公开的实施例一致的用于处理视频内容的计算机实现的方法的流程图。
具体实施方式
30.现在将详细说明优选实施例,所述例子在附图中提供图示说明。除另有说明外,下列描述参照所述附图,其中,不同图中的相同数字表示相同或相似元素。下列示例性实施例描述中所述的实现方式并不代表与本发明一致的所有实现方式。相反,它们仅仅是与所附权利要求书中所述的与本发明有关的方面相一致的装置和方法的例子。除非另有明确说明,术语“或”包括所有可能的组合,但不可行的除外。例如,如果表达为一个元件可能包括a或b,则除非另有特别规定或不可行,可能包括元件a,或b,或者a和b。第二个例子,如果表达为某个元件可能包括a、b或c,则除非另有特别规定或不可行,所述元件可以包括元件a、或
b、或c、或者a和b、或者a和c、或者b和c、或者a和b和c。
31.视频编码系统通常用于压缩数字视频信号,例如减少与这些信号相关的存储空间或传输带宽的消耗。随着高清视频(如1920
×
1080像素分辨率)在视频压缩的各种应用中——如在线视频流、视频会议、视频监控等——越来越受欢迎,开发能够提高视频数据压缩效率的视频编码工具是一个持续性的需求。
32.例如,视频监控应用在安全、交通、环境监控等许多应用场景中得到了越来越广泛的应用,监控设备的数量和分辨率也在快速增长。许多视频监控应用场景更倾向于为用户提供高清视频,以获取更多的信息,而高清视频每帧有更多的像素来捕获这些信息。然而,高清视频比特流可能有较高的比特率,需要高带宽传输和大的存储空间。例如,一个平均1920
×
1080分辨率的监控视频流可能需要高达4mbps的带宽来进行实时传输。此外,视频监控通常会进行7
×
24的持续监控,如果要存储视频数据,这对存储系统来说是一个很大的挑战。高清视频对高带宽和大容量存储的需求成为其大规模部署在视频监控中的主要限制。
33.视频是一组按时间顺序排列的静态图片(或“帧”),用来存储视觉信息。视频采集设备(如相机)可以用来在一个时间序列中捕获和储存这些图片,视频播放设备(如电视、电脑、智能手机、平板电脑、视频播放器,或任何具有显示功能的末端用户终端)可以用于在时间序列中显示这些图片。此外,在一些应用程序中,视频获取设备可以实时地将获取的视频传输到视频播放设备(例如,带监控器的计算机),例如用于监控、会议或直播。
34.为了减少此类应用所需的存储空间和传输带宽,可以将所述视频在存储和传输前压缩,在显示前解压缩。压缩和解压缩可以由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现。用于压缩的模块通常被称为“编码器”,用于解压的模块通常被称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以以各种合适的硬件、软件中,或它们的组合的任何一种来实现。例如,编码器和解码器的硬件实现可以包括电路,例如一个或多个微处理器、数字信号处理器(dsp)、特定应用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑或它们的任何组合。编码器和解码器的软件实现可以包括程序代码、计算机可执行指令、固件或固定在计算机可读介质中的任何合适的计算机实现的算法或过程。视频压缩解压缩可以采用多种算法或标准实现,如mpeg-1、mpeg-2、mpeg-4、h.26x系列等。在某些应用程序中,编解码器可以从第一编码标准解压缩视频,然后使用第二编码标准重新压缩解压缩后的视频,在这种情况下,编解码器可以称为“转码器”。
35.视频编码过程可以识别并保留有用的信息,这些信息可用于重建图像,而在重建图像时可以忽略不重要的信息。如果被忽略的、不重要的信息不能被完全重构,这样的编码过程可以称为“有损的”。否则,它可以被称为“无损的”。大多数编码过程都是有损耗的,这是为了减少所需的存储空间和传输带宽的一种折衷。
36.一幅正在被编码的图片帧(称为“当前帧”)的有用信息包括相对于参考帧(例如,一幅先前经过编码和重新构建的图片帧)的变化。这些变化可以包括像素的位置变化、亮度变化或颜色变化,其中最受关注的是位置变化。代表一个目标体的一组像素的位置变化可以反映出所述目标体在参考帧和当前帧之间的运动。
37.某个没有引用其他帧的帧(即,它是它自己的参考帧)被称为“i-帧”。使用某个先前帧作为参考帧来编码的帧称为“p-帧”。使用某个先前帧和某个未来帧作为参考帧来编码的图片帧(即,参考是“双向的”)被称为“b-帧”。
38.如前所述,使用高清视频的视频监控面临着需要高带宽和大存储的挑战。为了解决这一问题,可以降低视频编码的比特率。在i-、p-和b-帧中,i帧的比特率最高。由于大多数监控视频的背景几乎是静态的,降低编码视频的总体比特率的一种方法是使用更少的i-帧进行视频编码。
39.然而,使用较少的i-帧的改进可能是微不足道的,因为i-帧在编码视频中通常不是主要的。例如,在一个典型的视频比特流中,i-、b-和p-帧的比例可以是1∶20∶9,其中i-帧占总比特率的比例不足10%。换句话说,在上面这个例子中,即使去掉了所有的i-帧,降低的比特率也不会能超过10%。
40.图1示出与本公开的实施例一致的示例性视频序列100的结构。视频序列100可以是实时视频,也可以是已经获取并存档的视频。视频100可以是真实生活中的视频,电脑生成的视频(如电脑游戏视频),或两者的组合(如带有增强现实效果的真实生活视频)。视频序列100可以从视频获取设备(如摄像机)、包含先前获取的视频的视频档案(如存储在存储设备中的视频文件)或从视频内容提供商接收视频的视频馈送接口(如视频广播收发器)输入。
41.如图1所示,视频序列100可以包括一系列沿时间轴排列的帧,包括帧102、104、106、108。帧102-106是连续的,在帧106和帧108之间有更多的帧。在图1中,帧102是一幅i-帧,它的参考帧是帧102本身。帧104为p-帧,其参考帧为帧102,如图中箭头所示。图106为b-帧,其参考帧为帧104和108,如图箭头所示。在某些实施例中,某个帧(例如,帧104)的参考帧可以不是直接在帧的前面或后面。例如,帧104的参考帧可以是帧102前面的帧。应当注意的是,帧102-106的参考帧只是示例,本公开的参考帧的实施例并不限于如图1所示的示例。
42.通常,由于此类任务的计算复杂性,视频编解码器不会一次对整个帧进行编码或解码。相反,它们可以将帧分割成基本的片段,并对图像一个片段一个片段地进行编码或解码。这种基本片段在本公开中被称为基本处理单元(bpus)。例如,图1中的结构110显示了视频序列100的帧的示例结构(例如,帧102-108中的任何一个)。在结构110中,一个帧被划分为4
×
4基本处理单元,其边界以虚线表示。在一些实施例中,基本处理单元在一些视频编码标准(例如,mpeg族,h.261,h.263,或h.264/avc)中可以被称为“宏块”,或者,在一些其他视频编码标准(例如,h.265/hevc或h.266/vvc)中被称为“编码树单元”(“ctus”)。图中的基本处理单元大小可以是一个图像帧中的可变的尺寸,例如128
×
128、64
×
64、32
×
32、16
×
16、4
×
8、16
×
32,或者是任意形状和大小的像素。根据编码效率和要保留在基本处理单元中的细节的程度的平衡,可以为帧选择基本处理单元的大小和形状。
43.基本处理单元可以是逻辑单元,逻辑单元包括一组存储在计算机存储器(如视频帧缓存器)中的不同类型的视频数据。例如,一个彩色图片帧的基本处理单元可以包含一个亮度分量(y)代表无色的亮度信息,一个或多个色度分量(例如,cb和cr)代表颜色信息和相关的语法元素,亮度和色度分量可以有相同的基本处理单元的大小。在一些视频编码标准(例如h.265/hevc或h.266/vvc)中,亮度和色度分量可以称为“编码树块”(ctbs)。对基本处理单元执行的任何操作都可以重复地对其亮度和色度分量执行。
44.视频编码有多个操作阶段,具体示例详见图2a-2b和图3a-3b。对于每个阶段,基本处理单元的大小仍然可能太大而无法处理,因此可以进一步划分为在本公开中称为“基本处理子单元”的片段。在一些实施例中,基本处理子单元可以在一些视频编码标准(例如,
mpeg族,h.261,h.263,或h.264/avc)中称为“块”,或在一些其他视频编码标准(例如,h.265/hevc或h.266/vvc)中称为“编码单元”(“cus”)。基本处理子单元可以具有与基本处理单元相同或更小的大小。与基本处理单元类似,基本处理子单元也是逻辑单元,它可以包括一组不同类型的视频数据(例如y、cb、cr,以及相关的语法元素),这些数据存储在计算机内存(例如视频帧缓存区)中。对基本处理子单元执行的任何操作都可以重复地对其亮度和色度分量执行。应该注意的是,这种划分可以根据处理需要进一步执行到更进一步的层级。还应该注意的是,不同的阶段可以使用不同的方案来划分基本的处理单元。
45.例如,在模式决策阶段(详见图2b所示),所述编码器可以为一个基本处理单元确定所使用的预测模式(例如,帧内预测或帧间预测),但可能由于该单元太大,无法做出这样的决策。编码器可以将基本处理单元拆分为多个基本处理子单元(例如,在h.265/hevc或h.266/vvc中的cus),并为每个基本处理子单元确定一个预测类型。
46.再举一个例子,在预测阶段(如图2a所示),编码器可以在基本处理子单元(如cus)级别上进行预测操作。但是,在某些情况下,基本的处理子单元可能仍然太大而无法处理。编码器可以进一步将基本处理子单元分割成更小的片段(例如,在h.265/hevc或h.266/vvc中指“预测块”或“pbs”),在这个级别上可以执行预测操作。
47.再举一个例子,在变换阶段(详见图2a),编码器可以对残差基本处理子单元(如cus)进行变换操作。但是,在某些情况下,基本的处理子单元可能仍然太大而无法处理。编码器可以进一步将基本处理子单元分割成更小的片段(例如,在h.265/hevc或h.266/vvc中称为“变换块”或“tbs”),在这个级别上可以执行变换操作。需要注意的是,同一基本处理子单元在预测阶段和变换阶段的划分方案可能不同。例如,在h.265/hevc或h.266/vvc中,同一cu的预测块和变换块可以有不同的大小和数量。
48.在图1的结构110中,将基本处理单元112进一步划分为3
×
3基本处理子单元,子单元的边界以虚线表示。在不同的方案中,同一图片帧的不同基本处理单元可以划分为不同的基本处理子单元。
49.在一些实施方式中,为了对视频编码和解码提供并行处理和容错的能力,图片帧可被划分为多个区域进行处理,这样,对所述图片帧的某个区域,编码或解码过程可以不依赖该帧其他任何区域的信息。换句话说,帧中的每个区域都可以独立处理。通过这样处理,编解码器可以并行处理图像的不同区域,从而提高编码效率。此外,当一个区域的数据在处理过程中被破坏或在网络传输中丢失时,编解码器可以正确地对同一图片帧的其他区域进行编码或解码,而不依赖于被破坏或丢失的数据,从而提供了容错能力。在一些视频编码标准中,可以将一个图片帧划分为不同类型的区域。例如,h.265/hevc和h.266/vvc提供了两种类型的区域:“条行片(slices)”和“矩形片(tiles)”。还需要注意的是,对于将某个图片帧划分为多个区域,视频序列100中的不同图片帧可以有不同的划分方案。
50.例如,在图1中,将结构110划分为114、116、118三个区域,区域的边界以结构110内部的实线表示。区域114包括四个基本处理单元。区域116和区域118各包括六个基本处理单元。应该指出的是,图1中结构110的基本处理单元、基本处理子单元和区域只是示例,而且本公开并不限制其具体实施方式。
51.图2a示出与本发明实施例一致的示例性编码进程200a的示意图。按照进程200a,编码器可以将视频序列202编码成视频比特流228。与图1中的视频序列100相似,视频序列
202可以包括一组按时间顺序排列的图片帧(称为“初始帧”)。与图1中的结构110相似,视频序列202的每个初始帧都可以被编码器划分为基本处理单元、基本处理子单元或用于处理的区域。在一些实施例中,所述编码器能够在基本处理单元级别上对视频序列202的每个原始帧执行进程200a。例如,编码器可以以迭代的方式执行进程200a,其中编码器可以在进程200a的一次迭代中编码一个基本处理单元。在一些实施例中,编码器可以对视频序列202的每个初始帧的区域(例如,区域114-118)并行执行进程200a。
52.在图2a中,编码器可以将视频序列202的初始帧的基本处理单元(称为“初始bpu”)输入到预测阶段204,生成预测数据206和预测bpu 208。所述编码器可以从初始bpu中减去预测bpu 208,得到残差bpu210。该编码器可将残差bpu 210提供给变换阶段212和量化阶段214,生成量化变换系数216。该编码器可以将预测数据206和量化变换系数216输入到二进制编码阶段226以生成视频比特流228。组件202、204、206、208、210、212、214、216、226和228可以被称为“前向路径”。在进程200a中,经过量化阶段214后,编码器可以将量化后的变换系数216提供给反向量化阶段218和反向变换阶段220,生成重构残差bpu 222。编码器可以将重构残差bpu 222加入到预测bpu 208中,生成预测参考224,用于进程200a的下一次迭代的预测阶段204。进程200a的组件218、220、222和224可以称为“重构路径”。可以使用重构路径来确保编码器和解码器都使用相同的参考数据进行预测。
53.编码器可迭代执行进程200a,以对初始帧的每个初始bpu进行编码(在前向路径中),并生成预测参考224,用于对初始帧的下一个初始bpu进行编码(在重构路径中)。在对初始帧的所有初始bpu进行编码后,所述编码器可以继续对视频序列202中的下一图片帧进行编码。
54.参考进程200a,所述编码器可以接收由视频获取设备(如摄像机)产生的视频序列202。这里所使用的“接收”一词可以指接收、输入、获得、检索、获取、读取、访问或以任何方式输入数据的任何动作。
55.在预测阶段204,在当前迭代中,所述编码器可以接收初始bpu和预测参考224,并执行预测操作以生成预测数据206和预测bpu 208。预测参考224可以从进程200a的前一次迭代的重构路径获得。预测阶段204的目的是通过提取预测数据206来减少信息冗余,所述预测数据206可用于从预测数据206和预测参考224中重构所述初始bpu为预测bpu 208。
56.理想情况下,预测bpu 208可以与初始bpu完全相同。但是,由于非理想的预测和重构操作,预测bpu208通常与初始bpu208略有不同。为了记录这些差异,在生成预测bpu208后,所述编码器可以将其从初始bpu中减去,生成残差bpu210。例如,所述编码器可以从初始bpu的像素值中减去预测bpu 208的相应像素值(如灰度值或rgb值)。残差bpu210的每个像素都可以有一个残差值,该残差值是初始bpu与预测bpu208的对应像素相减的结果。与初始bpu相比,预测数据206和残差bpu 210的比特数可以更少,但可用于初始bpu的重构,且质量没有明显下降。因此,所述初始bpu被压缩。
57.为了进一步压缩残差bpu 210,在变换阶段212,编码器可以通过将残差bpu 210分解成一组二维“基本图案”来减少其空间冗余,每个基本图案都与一个“变换系数”相关。所述基本图案可以具有相同的大小(例如,残差bpu 210的大小)。每个基本图案可以代表残差bpu210的一个变化频率(如亮度变化频率)分量。任何基本图案都不能从任何其他基本图案的任何组合(例如,线性组合)中复制出来。换句话说,所述分解可以将残差bpu210的变化分
解到一个频域。这种分解类似于函数的离散傅里叶变换,其中的基本图案类似于离散傅里叶变换的基函数(例如,三角函数),而变换系数类似于与基函数相关的系数。
58.不同的变换算法可以使用不同的基本图案。在变换阶段212中可以使用各种变换算法,例如,离散余弦变换、离散正弦变换或类似的变换。变换阶段212的变换是可逆的。也就是说,所述编码器可以通过变换的反运算(称为“反向变换”)恢复残差bpu210。例如,要恢复残差bpu210的某个像素,可以将基本图案对应像素的值乘以各自的相关系数,然后将所述乘积相加,得到一个加权和。对于某一个视频编码标准,所述编码器和所述解码器都可以使用相同的变换算法(因此,相同的基本图案)。因此,所述编码器可以只记录变换系数,所述解码器可以在无需接收编码器的基本图案的情况下重构残差bpu210。与残差bpu210相比,变换系数可以有更少的比特,但它们可以用来重建残差bpu210而不会有明显的质量劣化。由此,残差bpu210被进一步压缩。
59.所述编码器可以在量化阶段214进一步压缩变换系数。在所述变换过程中,不同的基本图案可以表示不同的变化频率(如,亮度变化频率)。由于人眼通常更善于识别低频变化,编码器可以忽略高频变化的信息,而不会造成解码质量的显著下降。例如,在量化阶段214,编码器可以通过将每个变换系数除以一个整数值(称为“量化参数”)并将商取整到其最接近的整数来生成量化变换系数216。经过这样的运算,可以将高频基本图案的某些变换系数转换为零,将低频基本图案的变换系数转换为更小的整数。编码器可以忽略零值的量化变换系数216,从而进一步压缩变换系数。量化过程也是可逆的,其中量化变换系数216可以通过量化的逆运算(简称“逆量化”)重构为所述变换系数。
60.由于所述编码器在取整操作中忽略了这些除法的余数,量化阶段214可能是有损的。通常,在进程200a中,量化阶段214会造成最多的信息损失。信息损失越大,量化变换系数216所需的比特就越少。为了获得不同程度的信息损失,所述编码器可以使用不同的量化参数值或量化过程中的任何其他参数值。
61.在二进制编码阶段226,所述编码器可以使用二进制编码技术对预测数据206和量化变换系数216进行编码,例如熵编码、变长编码、算术编码、霍夫曼编码、背景自适应二进制算术编码,或任何其他无损或有损压缩算法。在某些实施例中,除预测数据206和量化变换系数216外,所述编码器还可以在二进制编码阶段226对其他信息进行编码,例如,在预测阶段204中使用的预测模式、预测操作的参数、在变换阶段212中的变化类型、量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数),或类似的参数。编码器可以利用二进制编码阶段226的输出数据生成视频比特流228。在一些实施例中,视频比特流228可以被进一步打包以用于网络传输。
62.参考进程200a的重构路径,在反向量化阶段218,所述编码器可以对量化变换系数216进行反向量化,生成重构变换系数。在反向变换阶段220,所述编码器可以根据重构变换系数生成重构残差bpu222。所述编码器可以将重构残差bpu222加入到预测bpu208中,生成预测参考224,在进程200a的下次迭代中使用。
63.需要注意的是,进程200a的其他变体也可以用来对视频序列202进行编码。在一些实施例中,进程200a的各个阶段可以由编码器按不同的顺序执行。在一些实施例中,进程200a的一个或多个阶段可以合并成单个阶段。在一些实施例中,进程200a的单个阶段可以分为多个阶段。例如,变换阶段212和量化阶段214可以合并成一个单独的阶段。在一些实施
例中,进程200a可以包括额外的阶段。在一些实施例中,进程200a可以省略图2a中的一个或多个阶段。
64.图2b示出与本公开的实施例一致的另一个示例性编码进程200b的示意图。进程200b可以从进程200a修改而来。例如,进程200b可用于符合混合视频编码标准(如h.26x系列)的编码器。与进程200a相比,进程200b的前向路径增加了模式决策阶段230,并将预测阶段204分为空间预测阶段2042和时间预测阶段2044。所述进程200b的重构路径还包括环路滤波器阶段232和缓存区234。
65.一般而言,预测技术可分为两类:空间预测和时间预测。空间预测(例如,帧内预测或“内预测”)可以使用来自同一帧中一个或多个已编码的相邻bpu的像素来预测所述当前bpu。也就是说,空间预测中的预测参考224可以包含所述相邻bpus。所述空间预测可以减少所述图片帧的固有的空间冗余。时间预测(例如,帧间预测或“间预测”)可以使用来自已编码帧中的一个或多个区域来预测所述当前bpu。即,时间预测中的预测参考224可以包含所述已编码帧。所述时间预测可以减少所述帧的固有的时间冗余。
66.参考进程200b,在前向路径中,所述编码器分别在空间预测阶段2042和时间预测阶段2044进行预测操作。例如,在空间预测阶段2042,所述编码器可以执行所述内预测。对于正在编码的图片帧的初始bpu,预测参考224可以在同一图片帧中包含一个或多个已编码(在前向路径中)和已重构(在重构路径中)的相邻bpu。所述编码器可以通过所述相邻bpu推算,来生成预测bpu208。所述推算技术可以包括,例如,线性外推或内插,多项式外推或内插,或类似的。在某些实施例中,所述编码器可以在像素级执行所述推算,例如,为预测bpu208的每个像素推算相应像素的值。用于推算的所述相邻bpus可以相对于初始bpu位于不同的方向,如在垂直方向上(例如,在所述初始bpu上部),水平方向(例如,在所述初始bpu左侧),对角线方向(例如,所述初始bpu的下左侧,下右侧、上左侧,或上右侧),或者,所使用的视频编码标准中定义的任何方向。对于所述内预测,预测数据206可以包括,例如,已使用的相邻bpu的位置(如坐标),已使用的相邻bpu的大小,所述推测的参数,所使用的相邻bpu相对于所述初始bpu的方向,等等。
67.再例如,在时间预测阶段2044,所述编码器可以进行间预测。对于某个当前帧的初始bpu,预测参考224可以包含一个或多个经过编码(在前向路径中)和重构(在重构路径中)的图片帧(称为“参考帧”)。在某些实施例中,可以通过bpu逐个对一个参考帧进行编码和重构。例如,所述编码器可以将重构残差bpu222添加到预测bpu208上,生成一个重构bpu。当同一图片帧的所有重构bpu都生成后,所述编码器就可以生成一个重构图片帧作为参考帧。所述编码器可以执行“运动估计”的操作,在参考帧的作用域(称为“搜索窗口”)中搜索匹配区域。参考帧中搜索窗口的位置可以根据当前帧中初始bpu的位置来确定。例如,所述搜索窗口可以位于参考帧中具有与当前帧的初始bpu具有相同坐标的位置的中间,并且可以向外扩展到预定的距离。当所述编码器在搜索窗口中识别出(例如,通过使用递归算法、块匹配算法或类似的方法)一个与初始bpu相似的区域时,编码器可以确定该区域为匹配区域。匹配的区域可以与所述初始bpu具有不同的尺寸(例如小于、等于、大于或形状不同)。由于所述参考帧和当前帧在时间轴上是时间分离的(如图1所示),可以认为所述匹配区域随着时间的推移“移动”到初始bpu的位置。编码器可以将这种运动的方向和距离记录为“运动矢量”。当使用多个参考帧时(如图1中的帧106),所述编码器可以为每个参考帧搜索匹配区域
并确定其相关的运动矢量。在某些实施例中,所述编码器可以为分别匹配的参考帧的匹配区域的像素值分配权重。
68.运动估计可以用来识别各种各样的运动,例如,平移、旋转、缩放等等。对于间预测,预测数据206可以包括,例如,匹配区域的位置(如坐标),与所述匹配区域相关联的运动向量,参考帧的数量,与参考帧相关联的权重,等等。
69.为了生成预测bpu208,所述编码器可以执行“运动补偿”操作。所述运动补偿可以基于预测数据206(如运动向量)和预测参考224重构预测bpu208。例如,所述编码器可以根据运动向量量移动参考帧的所述匹配区域,通过所述运动矢量编码器可以预测当前帧的初始bpu。当使用多个参考帧时(如图1中的帧106),所述编码器可以根据对应的运动向量和匹配区域的平均像素值对参考帧的匹配区域进行移动。在某些实施例中,如果所述编码器已对各自的匹配参考帧的匹配区域的像素值分配权重,则编码器可以对所述移动匹配区域的像素值加权求和。
70.在一些实施例中,所述间预测可以是单向的或双向的。单向间预测可以使用相对于当前帧在同一时间方向上的一个或多个参考帧。例如,图1中的图104是一个单向间预测帧,其中参考图(即帧102)在图104之前。双向预测可以在相对于当前帧的两个时间方向上使用一个或多个参考帧。例如,图1中的帧106是一个双向间预测帧,其中所述参考帧(即帧104和帧108)相对于帧104在两个时间方向上。
71.请继续参考进程200b的前向路径,在空间预测阶段2042和时间预测阶段2044之后,在模式决策阶段230,所述编码器可以为进程200b的当前迭代选择一种预测模式(如,所述内预测或间预测中的一种)。例如,所述编码器可以执行率失真优化技术,通过该技术,依据所述候选预测模式的比特率以及所述候选预测模式下的重建参考帧的失真,所述编码器可以选择一种预测模式来最小化代价函数的值。根据所选的预测模式,所述编码器可以生成相应的预测bpu 208和预测数据206。
72.在进程200b的重构路径中,如果在前向路径中选择了内预测模式,在生成预测参考224(如,所述当前bpu已经在当前帧中被编码和被重构)后,所述编码器可以直接将预测参考224输入到空间预测阶段2042,以供以后使用(例如,对当前帧的下一个bpu进行推算)。如果在前向路径中选择了所述间预测模式,在生成预测参考224(例如,其中所有bpus都已经被编码和被重构的当前帧)后,编码器可以将预测参考224提供给给环路滤波器阶段232,其中,所述编码器可以对预测参考224应用环路滤波器以减少或消除由所述间预测引入的失真(例如,块效应)。所述编码器可以在环路滤波器阶段232中应用各种环路滤波器技术,例如,去块、采样自适应偏移、自适应环路滤波器或类似的技术。所述经过环路滤波的参考帧可以存储在缓存区234(或“已解码帧缓存区”)中供以后使用(例如,作为视频序列202的某个未来帧的间预测参考帧)。该编码器可以在缓存区234中存储一个或多个参考帧,以便在时间预测阶段2044使用。在某些实施例中,所述编码器可以在二进制编码阶段226编码环路滤波器的参数(例如,环路滤波器强度),以及量化变换系数216、预测数据206和其他信息。
73.图3a示出与本发明实施例一致的示例性解码进程300a的示意图。进程程300a可以是与图2a中的压缩进程200a相对应的解压过程。在某些实施例中,进程300a可以类似于进程200a的重构路径。解码器可以根据进程300a将视频比特流228解码为视频流304。视频流
304可以非常类似于视频序列202。但是,由于压缩和解压缩过程中的信息丢失(例如,图2a-ab中的量化阶段214),通常,视频流304与视频流202不完全相同。类似图2a-2b中的进程200a和进程200b,所述解码器可以在基本处理单元(bpu)级别对视频比特流228中已编码的每一帧执行进程300a。例如,解码器可以以迭代的方式执行进程300a,其中所述解码器可以在进程300a的一次迭代中解码一个基本处理单元。在某些实施例中,所述解码器能够对视频比特流228的每个已编码帧的区域(例如,区域114-118)并行执行进程300a。
74.在图3a中,所述解码器可以将与已编码帧的基本处理单元(称为“已编码bpu”)相关的视频比特流228的一部分提供给二进制解码阶段302。在二进制解码阶段302,所述解码器可以将该部分解码为预测数据206和量化变换系数216。该解码器可将量化变换系数216提供给反向量化阶段218和反向变换阶段220,以生成重构残差bpu 222。该解码器可将预测数据206提供给预测阶段204,以生成预测bpu208。该解码器可以将重构残差bpu222加入预测bpu208中,生成预测参考224。在一些实施例中,预测参考224可以存储在缓存器中(例如,计算机存储器中的解码帧缓存器)。所述解码器可以将预测参考224提供给预测阶段204,以便在进程300a的下一次迭代中执行预测操作。
75.所述解码器可对进程300a进行迭代处理,以便对已编码帧的每个已编码bpu进行解码,并生成预测参考224,用于对所述已编码帧的下一个编码bpu进行编码。解码所述已编码帧的所有编码bpu后,所述解码器可以将该图像帧输出到视频流304中显示,并开始对视频比特流228中的下一编码帧进行解码。
76.在二进制解码阶段302,所述解码器可以对编码器使用的二进制编码技术(如熵编码、变长编码、算术编码、霍夫曼编码、背景自适应二进制算术编码或任何其他无损压缩算法)进行逆运算。在某些实施例中,除预测数据206和量化变换系数216外,所述解码器还可以在二进制解码阶段302解码其他信息,例如,预测模式、预测操作的参数、变换类型、所述量化进程的参数(例如量化参数)、编码器控制参数(例如,比特率控制参数),或类似的参数。在某些实施例中,如果视频比特流228以包的形式通过网络传输,所述解码器可以在将视频比特流228送入二进制解码阶段302之前对其进行解包处理。
77.图3b示出与本发明实施例一致的另一个示例性解码进程300b的示意图。进程300b可以从300a改进获得。例如,进程300b可由符合混合视频编码标准(如,h.26x系列)的解码器使用。与进程300a相比,进程300b额外的将预测阶段204划分为空间预测阶段2042和时间预测阶段2044,并增设环路滤波器阶段232和缓存区234。
78.在进程300b中,对于正在解码的已编码帧(称为“当前帧”)的已编码基本处理单元(称为“当前bpu”),由解码器从二进制解码阶段302解码的预测数据206可以包括各种类型的数据,这取决于编码器使用何种预测模式对所述当前bpu进行编码。例如,如果所述编码器使用内预测来编码所述当前bpu,预测数据206可以包括表明内预测的预测模式标识(例如,某个标志位值),所述内预测操作的参数,或类似的东西。内预测操作的参数可以包括,例如,用作参考的一个或多个相邻bpu的位置(例如坐标),相邻bpu的大小,推算参数,相邻bpu相对于初始bpu的方向,等等。再举一个例子,如果所述编码器使用间预测来编码所述当前bpu,则预测数据206可以包含一个表明所述间预测的预测模式标识(例如,某个标志位的值),所述间预测操作的参数,或者类似的东西。间预测操作的参数可以包括,例如,与当前bpu相关联的参考帧的数量、与各个参考帧相关联的权重、各参考帧中一个或多个匹配区域
的位置(如坐标)、分别与匹配区域相关联的一个或多个运动向量,或类似的东西。
79.根据所述预测模式标识,所述解码器可以在空间预测阶段2042进行空间预测(如,内预测),还是在时间预测阶段2044进行时间预测(如,间预测)。执行这种空间预测或时间预测的细节已经在图2b中描述,下面不再重复。在进行这种空间预测或时间预测后,所述解码器可以生成预测bpu208。如图3a所示,所述解码器可将预测bpuu208和重构残差bpu222相加,生成预测参考224。
80.在进程300b中,所述解码器可以将预测参考224提供给空间预测阶段2042或时间预测阶段2044,以便在进程300b的下一次迭代中进行预测操作。例如,如果所述当前bpu解码使用空间预测阶段2042的内预测解码,在生成预测参考224(例如,所述已解码当前bpu)后,所述解码器可以直接将预测参考224提供给空间预测阶段2042,以便后续使用(例如,用于当前帧的下一个bpu的推算)。如果在时间预测阶段2044使用间预测解码当前bpu,在生成预测参考224(例如,所有bpus已经被解码的参考帧)后,编码器可以将预测参考224提供给环路滤波器232以减少或消除失真(如,块效应)。所述解码器可以按照图2b所述的方式将环路滤波器应用于预测参考224。所述环路滤波后的参考帧可以存储在缓存区234(例如,计算机存储器中的已解码帧缓存区)中供以后使用(例如,用作视频比特流228中的未来编码帧的间预测参考帧)。该解码器可以在缓存区234中存储一个或多个参考帧,以便在时间预测阶段2044使用。在某些实施例中,当预测数据206的预测模式标识表明使用间预测对当前bpu进行编码时,预测数据可以进一步包括环路滤波器的参数(例如环路滤波器强度)。
81.图4是与本发明的实施例一致的用于视频编码或解码的示例性装置400的框图。如图4所示,装置400可以包括处理器402。当处理器402执行本文描述的指令集时,装置400可以成为视频编码或解码的专用机器。处理器402可以是适于操作或处理信息的任何类型的电路。例如,处理器402可以包含任意数量的任意组合的中央处理单元(cpu)、图形处理单元(gpu)、神经处理单元(“npu”)、微控制器单元(mcu)、光学处理器、可编程逻辑控制器、单片机、微处理器、数字信号处理器、ip核、可编程逻辑阵列(pla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)、复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、片上系统(soc)、专用集成电路(asic)等。在某些实施例中,处理器402还可以是一组分组为单个逻辑组件的处理器。例如,如图4所示,处理器402可以包含多个处理器,包括处理器402a、处理器402b和处理器402n。
82.装置400还可以包括配置用来存储数据(例如,一组指令集、计算机代码、中间数据等)的内存404。例如,如图4所示,所存储的数据可以包括程序指令(例如,用于实现进程200a、200b、300a或300b中的各个阶段的程序指令)和用于处理的数据(例如,视频序列202、视频比特流228或视频流304)。处理器402可以访问程序指令和数据以进行处理(例如,通过总线410),以及执行所述程序指令以对当前处理数据执行操作或控制。内存404可以包含高速随机访问存储设备或非易失性存储设备。在一些实施例中,内存404可以包括任意组合的任意数量的随机存取存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘闪存驱动器、安全数字(sd)卡、记忆棒,紧凑型闪存(cf)卡,或类似的。内存404也可以是作为单个逻辑组件的一组内存(图4中没有显示)。
83.总线410可以是在装置400内部组件之间传输数据的通信设备,例如内部总线(例如中央处理器-内存总线)、外部总线(例如,通用串行总线端口、外围组件互连快速端口),
或类似设备。
84.为了便于解释而不引起歧义,处理器402和其他数据处理电路在本公开中统称为“数据处理电路”。数据处理电路可以完全以硬件实现,也可以以软件、硬件或固件的组合实现。此外,数据处理电路可以是一个独立的模块,也可以全部或部分地组合进设备400的其他元件。
85.装置400还可以包括网络接口406,以提供与网络(例如,因特网、内部网、局域网、移动通信网等)的有线或无线通信。在一些实施例中,网络接口406可以包括网络接口控制器(nic)、射频(rf)模块、应答器、收发器、调制解调器、路由器、网关、有线网卡、无线网卡、蓝牙网卡、红外网卡、近场通信(nfc)适配器、蜂窝网络芯片,或类似的装置。
86.在一些实施例中,可选地,装置400还可以包括外围接口408,以提供到一个或多个外围设备的连接。如图4所示,外围设备可以包括,但不限于,游标控制装置(如鼠标,触摸板或触摸屏),键盘,显示器(例如,阴极射线管显示器,液晶显示器,或发光二极管显示),视频输入设备(例如,摄像头或与视频档案连接的输入接口),或类似的东西。
87.需要注意的是,视频编解码器(例如,编解码器执行进程200a、200b、300a或300b)可以通过装置400中的任何软件或硬件模块的任意组合来实现。例如,进程200a、200b、300a或300b的部分或所有阶段可以作为装置400的一个或多个软件模块来实现,例如,可加载到内存404中的程序指令。另一个例子是,进程200a、200b、300a或300b的某些或所有阶段可以采用装置400的一个或多个硬件模块来实现,例如,专门的数据处理电路(例如,fpga、asic、npu等)。
88.由于物体从一个图片帧到另一个图片帧的真实位移独立于相机的采样网格,插值任务在视频编码的背景下自然产生。因此,在运动补偿(mc)预测中,采用分数样本精度来更准确地捕捉连续运动。在整数位置的有效样本被过滤,以估计(有效样本)在分数位置的值。hevc支持亮度分量的像素精度为四分之一,色度分量的像素精度为八分之一的运动矢量。如果所述运动矢量具有二分之一或四分之一像素精度,则可以使用整数采样位置上的样本对分数位置上的样本进行插值。这种空间域的运算可以在所述频域中被看作是对单个频率分量引入相位延迟。理想的用于带宽受限信号的插值滤波器导致对所有频率产生恒定的相位延迟,且不改变其大小,这使得所有低于截止频率的频率以幅度为1通过,而以幅度为零阻断所有高于所述截止频率的频率,如图5所示。
89.插值滤波器的一个重要参数是滤波器抽头的数量,因为它直接影响编码效率和实现复杂度。一般来说,有更多抽头的滤波器可以获得更好的插值性能。从实现角度而言,它不仅对所述算术运算有影响,而且对访问所述参考样本所需的所述内存带宽也有影响。在一些实施例中,所述亮度插值过程对二分之一像素位置使用对称的8抽头滤波器,对四分之一像素位置使用非对称的7抽头滤波器,以最小化所述运动补偿过程的所述额外复杂度。对于色度样本,可引入4抽头滤波器。
90.hevc插值滤波器可以将所述已知的整数样本前向变换到所述离散余弦变换(discrete cosine transform,dct)域,并利用在期望的分数位置而不是整数位置采样的dct基数将所述dct系数反向变换到所述空间域。这些运算可以组合成单一的有限脉冲响应(fir)滤波器。所述fir滤波器的所述系数是用所述离散余弦变换的傅立叶分解设计的。由此产生的所述插值滤波器被命名为基于dct的插值滤波器(dctif)。以下是对所述dctif的
简要概述。
91.设l(l=-(n/2)+1,...,n/2)表示整数样本的位置,α表示所期望的分数位置(例如1/4,1/2,...)。当所述滤波器抽头被设置为n时,根据下方公式(1)导出所述系数filter
l
(α)。其中,其中,
92.s(m)是使所述滤波器内核为有限长度的所述平滑窗口函数,可以以下方公式(2)定义。其中,m为所述平滑参数。
93.滤波器系数filter
l
(α)为幅值不大于1的实数。为了实现定点启用,所有的滤波器系数都乘以缩放因子2s(其中,s在hevc中是6),并根据以下公式(3)取整到所述最接近的整数。filter
l
(α)=round(filter
l
(α)
·2s
)
ꢀꢀꢀ
(公式3)
94.亮度分量和色度分量得到的所述hevc插值滤波器的所述系数分别如图6-7中表6-7所示。
95.在一些实施例中,所述运动矢量分辨率可以扩展到十六分之一精度。dctif仍可被用于所述运动补偿插值,亮度分量和色度分量的所述滤波器系数分别如图8-9中表8-9所示。
96.对于所述亮度分量,如果选择了二分之一像素自适应运动矢量分辨率(amvr)模式,且插值位置为二分之一像素,则可以使用6抽头滤波器(如[3,9,20,20,9,3])。否则,如果所述运动补偿块大小为4
×
4,则可以使用图10中表10所示的以下6抽头滤波器。
[0097]
图10中表10所示的所述6抽头滤波器用于所述4
×
4运动补偿块。然而,这个滤波器不是基于所述dctif得出的。由所述系数可知,6抽头滤波器的所述系数p[-2],p[3]是将8抽头滤波器的所述系数p[-3]和p[4]分别加到p[-2]和p[3]上得到的。用这种方法得到的所述滤波器不可能近似于所述理想的脉冲响应滤波器,也不能与其他运动补偿块的所述8抽头dctif对齐。
[0098]
根据本公开的实施例的滤波器如下所述。
[0099]
在一些实施例中,可以将滤波器抽头数设置为6。设l(l=-2,

,3)表示整数样本所在位置,α表示所述期望的分数位置(例如,1/4,1/2...)。所述系数filter
l
(α)由以下的公式(4)导出。所述基于dct的插值滤波器可表示为:
其中
[0100]
s(m)为使所述滤波器内核为有限长度的所述平滑窗口函数,定义为以下公式(6)。其中m为所述平滑参数。这里将所述平滑参数依图11中表11设置。
[0101]
然后,计算出所述实数滤波器系数,如图12中表12所示。
[0102]
当将所述实数滤波器取整到所述整数系数时,这里可以使用缩放因子64。由此产生的所述6抽头dctif如图13中表13所示。
[0103]
与图10中表10所示的所述6抽头滤波器相比,图13中表13提出的基于dct的所述6抽头滤波器在某些阶段可以更加平滑。也就是说,不同位置间的所述系数变异会降低到较小范围。
[0104]
为了实现定点启用,所述滤波器系数乘以缩放因子2s,并取整到最接近的整数。因此,所述缩放和取整过程也会影响所得到的滤波器。在一些实施例中,根据本公开实施例,可以如下所示提供另一种取整方法,所述取整方法可以包括如下所示步骤。
[0105]
在步骤1,对于分数位置α的所述n抽头实数系数f
l
(α)(l=-(n/2)+1,...,n/2),设f
l
(α)表示取整后的整数系数。满足下方公式(7)的所述系数首先取整到最接近的整数。其中,β(0<β<1)为一个阈值,此处设为0.3。
[0106]
在步骤2,在不丧失一般性的情况下,设fi(α)表示第1步中取整后的所述滤波系数,fj(α)表示其他滤波系数。则,公式8可以导出如下。∑fj(α)=2
s-∑fi(α)
ꢀꢀꢀ
(公式8)其中,s表示所述缩放因子,在此被设置为6。在此限制下,fj(α)的所述取整通过最小化所述取整位移来确定,如下方公式(9)所示:
[0107]
以α=1/4为例,所述f1(1/4)为:
[0108]
在步骤1中,发现l={-1,1,2,3}满足所述取整条件,因此:
[0109]
在步骤2中,首先推断f-2
(1/4)+f0(1/4)=2
6-(-8+18-5+1)=58
ꢀꢀꢀ
(公式10)
[0110]
那么,f-2
(1/4)可以是{1,2},f0(1/4)可以是{56,57}。对所有所述组合进行检验,发现当f-2
(1/4)=1,f0(1/4)=57时可以使所述取整误差最小。最后,1/4分数位置的所述整数滤波器系数为:
[0111]
在这种方式下,所述提出的基于dct的整数6抽头插值滤波器如图14中表14所示。
[0112]
值得注意的是,可以使用其他取整方法。例如,步骤1中的所述阈值β可以设置为0.4。否则,步骤1中取整的系数的所述数目也可以设置为与滤波器所述抽头数相关的参数,例如n-2。
[0113]
具有所述平滑窗口函数的插值滤波器的目标是尽可能接近所述理想插值的频率响应。在hevc和vvc的所述dctif中,所述平滑窗口函数使用所述余弦函数cos(π
·
(l-α)/m)。然而,适当的平滑函数在各种情况下可能是不同的。在一些实施例中,所述平滑窗口可以使用正弦函数。例如,所述正弦窗口函数可以表示为下方公式(11)。其中,m为所述平滑参数,l为整数样本的所述位置,α为所述期望的分数位置。
[0114]
所述平滑参数m的值可以是不固定的。若根据图15中表15给m取值,则所提出的滤波器系数如图16-17中表16-17所示。
[0115]
如果可以去掉所述平滑窗口函数,则所述dctif可改写为下方公式(12)。其中,wk(α)和d
l,k
的定义与前述相同。在这种情况下,所述滤波器系数如图18-19中表18-19所示。
[0116]
图20是与公开的实施例一致的用于处理视频内容的计算机实现的方法2000的流程图。在一些实施例中,方法2000可由编解码器执行(例如,在图2a-2b中使用编码过程200a
或200b的编码器,或在图3a-3b中使用解码过程300a或300b的解码器)。例如,所述编解码器可被实现为某个设备(例如,设备400)的一个或多个软件或硬件组件,用于对视频序列进行编码或转码。在某些实施例中,所述视频序列可以是未压缩的视频序列(例如,视频序列202)或已解码的压缩视频序列(例如,视频流304)。在一些实施例中,所述视频序列可以是监控视频序列,所述视频序列可以由与所述设备的处理器(例如,处理器402)相关联的监控设备(例如,图4中的所述视频输入设备)获取。所述视频序列可以包含多个图片。所述设备可以在图片帧水平上执行方法2000。例如,在方法2000中,所述设备可以一次处理一幅图片帧。再举一个例子,在方法2000中,所述设备可以一次处理多个图片帧。方法2000可以包括如下步骤。
[0117]
在步骤2002,可以根据整数样本的位置和分数样本的分数参考位置生成插值滤波器的中间插值系数。在一些实施例中,可以确定中间插值系数是否满足条件,所述条件关联于所述中间插值系数和最接近所述中间插值系数的所述整数之间的差值。所述条件可参考前述公式(7)。所述中间插值系数与最接近所述中间插值系数的所述整数之间的所述差值小于给定阈值。所述给定阈值可以设置为0.3。
[0118]
在一些实施例中,当所述中间插值系数不满足以上所述条件时,可确定至少一个不满足所述条件的中间插值系数。然后,通过将不满足所述条件的所述至少一个中间插值系数的每一个取整到下一个整数,可以生成至少一个取整的中间插值系数的至少一个组合。可以从所述至少一个组合中选择第一组合。所述第一组合可以包括具有最小取整误差和的至少一个取整的中间插值系数。
[0119]
在步骤2004,通过将每一个所述中间插值系数取整到最接近所述中间插值系数的整数,可以得到所述插值滤波器的整数插值系数。即,当满足步骤2004的所述条件时,可以将所述中间插值系数取整到最接近所述中间插值系数的整数。
[0120]
在步骤2006,可以将所述整数插值系数应用到图像上进行运动补偿预测。在一些实施例中,可以基于平滑窗口函数进一步平滑所述整数插值系数。
[0121]
所述平滑窗口函数可以是以下的至少一个:与所述整数样本的所述位置、所述分数样本的所述分数参考位置和平滑参数相关的余弦函数;或者,与所述整数样本的所述位置、所述分数样本的所述分数参考位置和平滑参数相关的正弦函数。例如,所述平滑窗函数如以上公式(2)所示。
[0122]
在一些实施例中,所述平滑窗口函数的输出是一个常数值。例如,所述常数值等于1。
[0123]
在一些实施例中,还提供了包括指令集的非易失性计算机可读存储介质,并且所述指令集可以由用于执行上述方法的设备(如所述编码器和解码器)执行。常见形式的非易失性介质包括,例如,软盘、柔性磁盘、硬盘、固态驱动器、磁带、或任何其他磁数据存储介质、cd-rom,任何其他光学数据存储介质,任何打孔的物理介质模式,ram,prom,和eprom,闪存式eprom或者其他闪存,nvram,高速缓存、寄存器、任何其他存储芯片或磁带,以及同类的网络版本。所述设备可以包括一个或多个处理器(cpu)、输入/输出接口、网络接口和/或内存。
[0124]
所述实施例可使用下列条款进一步予以描述:1、一种计算机实现的处理视频内容的方法,包括:
确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数;和在图片帧上应用所述多个整数插值系数来执行运动补偿预测。2、根据第2条所述的方法,其中,所述通过将多个中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数,还包括:将所述多个中间插值系数的取整误差之和最小化。3、根据第3条所述的方法,进一步包括,确定多个中间插值系数中的每一个是否满足条件;以及对于满足条件的第一中间插值系数,将所述第一中间插值系数舍入取整为最接近第一中间插值系数的整数。4、根据3条所述的方法,其中条件包括:中间插值系数与最接近中间插值系数的整数之间的差值小于给定的阈值。5、根据第3条所述的方法,进一步包括:对于多个中间插值系数中的一个或多个不满足所述条件的认定,将所述一个或多个中间插值系数分别取整为一个或多个整数,其中,所述多个中间插值系数的所述舍入取整误差之和具有最小值。6、根据第1条所述的方法,其中,所述在图片帧上应用所述多个整数插值系数的方法还包括:基于平滑窗口函数平滑所述多个整数插值系数。7、根据第6条所述的方法,其中,平滑窗口函数至少为:关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的余弦函数;或关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的正弦函数。8、根据第6条所述的方法,其中,所述平滑窗口函数的输出为常数值。9、根据第8条所述的方法,其中,所述常数值等于1。10、一种处理视频内容的系统,包括:用于存储一组指令集的存储器;和至少一个处理器,被配置为执行一组指令集以使所述系统执行:确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数;和在图片帧上应用所述多个整数插值系数来执行运动补偿预测。11、根据第10条所述的系统,其中,所述通过将多个中间插值系数分别取整为各自
对应的多个整数,确定所述插值滤波器的多个整数插值系数,所述至少一个处理器被配置为执行所述指令集,以使系统进一步执行:将所述多个中间插值系数的取整误差之和最小化。12、根据第11条所述的系统,其中,所述至少一个处理器被配置为执行所述指令集,以使系统进一步执行:确定多个中间插值系数中的每一个是否满足条件;以及对于满足条件的第一中间插值系数,将所述第一中间插值系数取整为最接近第一中间插值系数的整数。13、根据第12条所述的系统,其中,所述条件包括:中间插值系数与最接近中间插值系数的整数之间的差值小于给定的阈值。14、根据第12条所述的系统,其中,至少一个处理器被配置为执行所述指令集,以使系统进一步执行:对于多个中间插值系数中的一个或多个不满足所述条件的认定,将所述一个或多个中间插值系数分别取整为一个或多个整数,其中,所述多个中间插值系数的所述取整误差之和具有最小值。15、根据第10条所述的系统,其中,所述在图片帧上进一步应用多个整数插值系数时,所述至少一个处理器被配置为执行所述指令集以使系统进一步执行:基于平滑窗口函数平滑所述多个整数插值系数。16、根据第15条所述的系统,其中,所述平滑窗口函数至少为:关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的余弦函数;或关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的正弦函数。17、根据第15条所述的系统,其中,所述平滑窗口函数的输出为常数值。18、根据第17条所述的系统,其中,所述常数值等于1。19、一种非易失性计算机可读介质,存储有由计算机系统的至少一个处理器执行的指令集,其中,所述指令集的执行使所述计算机系统执行一种方法,该方法包括:确定插值滤波器的多个中间插值系数,其中,所述确定多个中间插值系数包括:基于多个整数样本各自的位置,和基于多个分数样本各自的分数参考位置;通过将中间插值系数分别取整为各自对应的多个整数,确定所述插值滤波器的多个整数插值系数;和在图片帧上应用所述多个整数插值系数来执行运动补偿预测。20、根据第19条所述的非易失性计算机可读介质,其中,所述通过将多个中间插值系数分别取整为各自对对应的多个整数,确定所述插值滤波器的多个整数插值系数,所述指令集的执行使所述计算机系统进一步执行:将所述多个中间插值系数的取整误差之和最小化。21、根据第20条所述的非易失性计算机可读介质,其中,所述指令集的执行使所述计算机系统进一步执行:
确定多个中间插值系数中的每一个是否满足条件;以及对于满足条件的第一中间插值系数,将所述第一中间插值系数取整为最接近第一中间插值系数的整数。22、根据第21条所述的非易失性计算机可读介质,其中,所述条件包括:中间插值系数与最接近中间插值系数的整数之间的差值小于给定的阈值。23、根据第21条所述的非易失性计算机可读介质,其中,所述指令集的执行使所述计算机系统进一步执行:对于多个中间插值系数中的一个或多个不满足所述条件的认定,将所述一个或多个中间插值系数分别取整为一个或多个整数,其中,所述多个中间插值系数的所述取整误差之和具有最小值。24、根据第19条所述的非易失性计算机可读介质,其中,在对所述图像帧进一步应用所述多个整数插值系数时,所述指令集的执行使所述计算机系统进一步执行:基于平滑窗口函数平滑所述多个整数插值系数。25、根据第24条所述的非易失性计算机可读介质,其中,所述平滑窗口函数至少是:关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的余弦函数;或关联于所述多个整数样本的位置、所述多个分数样本的所述分数参考位置以及平滑参数的正弦函数。26、根据第24条所述的非易失性计算机可读介质,其中,所述平滑窗口函数的输出为常数值。27、根据第26条所述的非易失性计算机可读介质,其中,所述常数值等于1。
[0125]
需要注意的是,本文中的“第一”、“第二”等关系术语仅用于区分一个实体或操作与另一个实体或操作,并不要求或暗示这些实体或操作之间存在任何实际的关系或顺序。此外,“包括”、“有”,“包含”和“包括”和其他类似形式的词语在含义上是相同的,并且,在上述任何一个词语之后的任何一个或者多个项目的结尾是开放式的,上述任何一个名词均不表示所述一个或多个项目已经列举穷尽,或者仅限于这些已列举的一个或者多个项目。
[0126]
在此处使用时,除非另有明确说明,术语“或”包括所有可能的组合,但不可行的除外。例如,如果表达为一个数据库可能包括a或b,则除非另有特别规定或不可行,可能包括数据库a,或b,或者a和b。第二个例子,如果表达为某个数据库可能包括a、b或c,则除非另有特别规定或不可行,所述数据库可以包括数据库a、或b、或c、或者a和b、或者a和c、或者b和c、或者a和b和c。
[0127]
值得注意的是,上述实施例可以通过硬件或软件(程序代码),或硬件和软件的组合来实现。如果由软件实现,则可将其存储在上述计算机可读介质中。该软件在由处理器执行时,可以执行上述已披露的方法。本公开中描述的计算单元和其他功能单元可以由硬件或软件,或硬件和软件的组合来实现。本领域普通技术人员,也会理解上述多个模块/单元可以组合成一个模块/单元,而上述每个模块/单元可以进一步划分为多个子模块/子单元。
[0128]
在上述详细说明中,实施例已参照许多具体细节进行了描述,这些细节可能因实施而异。可以对所述实施例进行某些适配和修改。对于本领域的技术人员,可以从本发明公
开的具体实施方式中,显而易见的获得其它一些实施方式。本说明书和示例仅出于示例性的目的,本发明的真实范围和本质由权利要求说明。示图所示的步骤顺序也仅出于解释说明的目的,并不意味着限定于任何特定的步骤、顺序。因此,那些精通本领域的技术人员会意识到,在实施相同的方法时,这些步骤可以以不同的顺序执行。
[0129]
在本技术的示图和详细说明中,公开了示例性的实施例。但是,可以对这些实施例进行许多变化和修改。相应的,尽管使用了具体的术语,但这些术语只是一般和描述性的,而不是出于限定的目的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1