用于视频压缩的更准确的2抽头内插滤波器的制作方法

文档序号:26013352发布日期:2021-07-23 21:34阅读:98来源:国知局
用于视频压缩的更准确的2抽头内插滤波器的制作方法



背景技术:

数字视频可以用于例如经由视频会议的远程商务会议、高清视频娱乐、视频广告或用户生成的视频的共享。由于视频数据中涉及大量数据,因此传输和存储都需要高性能压缩。已经提出了各种方法来减少视频流中的数据量,所述方法包括压缩以及其他编码和解码技术。这些技术可能涉及用于分数运动的子像素内插。



技术实现要素:

一个方面是一种用于使用帧间预测对视频的块进行编码的方法。该方法包括:在针对块的运动估计期间,选择用于分数运动的子像素内插的第一子像素内插滤波器;在运动补偿期间,基于第一子像素内插滤波器来选择第二子像素内插滤波器;以及将第二子像素内插滤波器编码在压缩的比特流中。第一子像素内插滤波器是2抽头滤波器。第一子像素内插滤波器包括权重元组。每个权重元组包括两个权重,并且用于在第一像素与第二像素之间的子像素位置处的子像素内插。对于权重元组中的至少一个权重元组,两个权重不是基于子像素位置与第一像素之间的第一距离以及子像素位置与第二像素之间的第二距离。

另一方面是一种用于使用帧间预测来对视频的块进行编码的装置,该装置包括处理器和存储器。该存储器包括指令,所述指令可由处理器执行以:在针对块的运动估计期间,选择用于分数运动的子像素内插的第一子像素内插滤波器;基于率失真成本来选择第二子像素内插滤波器;以及将第二子像素内插滤波器编码在压缩的比特流中。第一子像素内插滤波器是2抽头滤波器。第一子像素内插滤波器包括权重元组。每个权重元组包括两个权重,并且用于在第一像素与第二像素之间的子像素位置处的子像素内插。对于权重元组中的至少一个权重元组,这两个权重不是基于子像素位置与第一像素之间的第一距离以及子像素位置与第二像素之间的第二距离。

另一方面是一种用于使用帧间预测来对视频的块进行解码的装置,该装置包括处理器和存储器。该存储器包括指令,所述指令可由处理器执行以:从编码的比特流中对子像素内插滤波器进行解码,所述子像素内插滤波器用于分数运动的子像素内插;从编码的比特流中对运动矢量进行解码;以及使用所述子像素内插滤波器和运动矢量对块进行解码。子像素内插滤波器是2抽头滤波器。子像素内插滤波器包括权重元组。每个权重元组包括两个权重,并且用于在第一像素与第二像素之间的子像素位置处的子像素内插。对于权重元组中的至少一个权重元组,两个权重不是基于子像素位置与第一像素之间的第一距离以及子像素位置与第二像素之间的第二距离。

将在下文中更详细地描述这些和其他方面的变化形式。

附图说明

本文的描述参考了附图,其中贯穿几个视图,相同的附图标记指代相同的部分。

图1是根据本公开的实施方式的计算设备的图解。

图2是根据本公开的实施方式的计算和通信系统的图解。

图3是根据本公开的实施方式的用于编码和解码的视频流的图解。

图4是根据本公开的实施方式的编码器的框图。

图5是根据本公开的实施方式的解码器的框图。

图6是根据本公开的实施方式的具有子像素准确度的运动矢量的框图。

图7是根据本公开的实施方式的双边滤波器的图示。

图8图示了根据本公开的实施方式的类似于高阶内核的2抽头滤波器。

图9是根据本公开的实施方式的用于使用帧间预测对视频的块进行编码的过程的示例的流程图。

图10是根据本公开的实施方式的用于使用帧间预测来对视频的块进行解码的过程的示例的流程图。

具体实施方式

视频压缩方案可以包括:将每个图像或帧分成较小的部分,诸如块;以及使用用于限制输出中每个块所包括的信息的技术来生成输出比特流。可以对编码的比特流进行解码,以根据有限的信息重新创建源图像。在一些实施方式中,可以通过减少空间冗余,减少时间冗余或它们的组合来限制输出中每个块所包括的信息。例如,可以通过以下来减小时间冗余或空间冗余:基于可用于编码器和解码器两者的信息而对帧进行预测,以及包括表示经预测的帧与原始帧之间的差或残差的信息。

使用时间相似性(例如,冗余度)的编码可以被称为帧间预测。帧间预测(例如,运动补偿型预测)试图使用来自时间上邻近的一个帧(即,参考帧)或多个帧的可能移位的一个或多个块来预测块的像素值。也就是说,可以使用运动补偿型预测(mcp)来利用视频帧之间的时间冗余。时间上邻近的帧是与正在被编码的块的帧相比在视频流中在时间上出现更早或更晚的帧。

mcp的准确度在很大程度上确定了压缩比。在编码过程中,并且如下文进一步描述的,视频帧可以被划分成具有各种大小的块。对于每个块,执行了运动估计。对于正在被编码的当前块(即,当前块),运动估计进行运动搜索以找出该块的运动矢量。运动矢量指示预测块在参考帧(即,时间上邻近的帧)中的位置。预测块用于对块进行预测。通常,运动矢量可以是分数。也就是说,运动矢量可以指代(例如,指向)参考帧中的子像素位置。也就是说,可以以子像素单位给出运动矢量。换句话说,运动矢量可以用子像素分辨率表达。不同的代码化标准支持不同的运动矢量分辨率(即,子像素单位、精确度)。例如,在hevc标准中,可以以四分之一亮度采样单位给出亮度运动矢量。例如,在vp9标准中,所支持的最大运动矢量精确度为1/16像素。

可以通过使用诸如有限脉冲响应(fir)滤波器的滤波器的内插来计算由运动矢量给出的子像素值。不同的内插滤波器可以具有不同数目的抽头,这些抽头指示使用多少邻近像素来内插子像素值。权重(即,系数)可以与每个抽头相关联。在大多数视频编解码器中,抽头的数目可以在从2至8的范围内。例如,鉴于具有八个权重w=(w0,w1,...,w7)和八个(整数或子整数)像素值a=(a0,a1,...,a7)的集合的8抽头滤波器,可将内插的像素值i计算为加权和

如所提及的,mcp可以涉及使用子像素内插滤波器,该子像素内插滤波器在沿着行、列或两者的全像素(也称为整数像素)之间的限定位置处生成经滤波的子像素值。内插滤波器可以是可用于在mcp中使用的若干内插滤波器中的一个。内插滤波器中的每个可以具有不同的频率分布图(例如,频率响应)。

可以从预定义的或可用的子像素内插滤波器类型的集合中选择子像素内插滤波器。例如,在vp9标准中,预定义的子像素内插滤波器类型包括平滑内插滤波器(eighttap_smooth)、锐内插滤波器(eighttap_sharp)、法线内插滤波器(eighttap)、双线性内插滤波器(双线性)。av1包括相似地命名的内插滤波器。下面关于图7进一步描述双线性滤波器。其他编解码器可能具有更少、更多或其他内插滤波器。内插滤波器类型的语义(例如,频率响应、抽头权重等)的描述对于理解或使用本公开不是必需的。

法线内插滤波器(eighttap)可以是8抽头拉格朗日内插滤波器。锐内插滤波器(eighttap_sharp)可以是基于dct的内插滤波器,具有更尖锐的响应,并且主要围绕较尖锐的边缘使用。平滑内插滤波器(eighttap_smooth)可以是8抽头滤波器,该8抽头滤波器可以使用带汉明窗的加窗傅里叶级数方法进行设计。如本领域技术人员将了解的,可以使用诸如的商业成品工具来设计滤波器(例如,内插滤波器),该工具是由themathinc.开发的数值计算环境和专有编程语言。

较长的内插滤波器(例如,8抽头滤波器)较之较短的滤波器(例如,2抽头滤波器)可以提供更高的预测准确度。为此,使用较长的内插滤波器会导致较高的压缩。然而,虽然较长的滤波器(例如,8抽头滤波器)提供较高的预测准确度,但是较短的滤波器(例如,2抽头滤波器)具有较低的复杂性。代码化算法的复杂性可以依据存储器带宽和算法所需的运算数目来测量。就存储器带宽而言,与较短的滤波器(例如,2抽头滤波器)相比,利用较长的抽头滤波器(例如,8抽头滤波器)增加了要从存储器中取出的数据量。相似地,较长的抽头长度滤波器(例如,8抽头滤波器)增加了获得内插值所需的算术运算的数目。例如,8抽头滤波器总共执行15个乘法和加法运算(mac);也就是8个乘法和7个加法。另一方面,2抽头滤波器仅执行3个mac;也就是,2个乘法和1个加法。

使用内插滤波器的内插运算可以在编码过程中的运动估计阶段期间以及在编码过程和解码过程两者中的运动补偿阶段期间执行。内插滤波器的设计可能影响代码化性能以及编码速度和解码速度。内插滤波器的设计可以包括用于内插运算的权重(例如,系数)的设计(例如,选择)。

可以在编码的比特流中,在包含要预测的块的帧的报头中用信号通知要由解码器使用以生成预测块的内插滤波器。为此,可以使用同一内插滤波器来为帧的所有块生成子像素预测块。也可以在代码化单元级别上用信号通知内插滤波器。为此,可以对代码化单元的每个块(例如,每个预测块)使用同一内插滤波器,从而为代码化单元的块生成子像素预测块。代码化单元可以是视频帧的64x64、更小或更大的像素块,并且可以进一步分割成更小的块。编码器可以基于可用内插滤波器中的每个而生成预测块。

编码器可以选择(例如,在编码的比特流中以信号通知解码器)导致例如最佳率失真成本的内插滤波器。率失真成本指代在失真量(即,视频质量的损失)与编码所需的速率(即,比特数目)之间取得平衡的比率。

替代地,编码器(在运动估计过程期间)可以使用低复杂性滤波器(诸如,2抽头滤波器)来识别最佳子像素分辨率(即,对应于最佳预测的子像素分辨率),并且然后在比特流中编码较长的内插滤波器,以用于在运动补偿期间以识别的子像素分辨率的内插。例如,可以使用编码器在找出运动矢量时挑选的一个内插滤波器来执行(例如,实施等)运动估计。在示例中,一个内插滤波器可以是2抽头滤波器,诸如下面提及的双边滤波器filter1。随后,可以使用找出的运动矢量执行运动补偿。运动补偿阶段可以包括内插滤波器搜索。也就是说,可以尝试不同的候选(例如,可用的)内插滤波器,并且可以选择导致最佳率失真成本的一个内插滤波器。可以在比特流中传输选择的内插滤波器,以使得编码器和解码器可以使用同一内插滤波器。如以下进一步描述的,并且为了实现更好的代码化性能,选择的内插滤波器的抽头通常等于或大于在运动估计期间使用的内插滤波器的抽头。为此,选择的滤波器可能是2抽头滤波器、eighttap、eighttap_sharp或eighttap_smooth滤波器中的一个,下面将对它们进行进一步描述。

另外,一些实时视频应用(诸如,视频会议、屏幕共享等)可能会牺牲质量,以便提高应用的响应性。例如,代替使用较长的内插滤波器,可以在运动估计和运动补偿两者中使用2抽头内插滤波器。2抽头滤波器的示例是双边滤波器,该双边滤波器使用如关于图7所描述的三角形内核。

使用双边滤波器的代码化性能可能不如使用具有较高数目的抽头的滤波器所能达成的代码化性能那样最优。为此,合乎需要的是使用可以提供近似于较长滤波器的代码化性能并且比双边滤波器的代码化性能更好的代码化性能的2抽头滤波器。

使用具有低复杂性(例如,具有较少数目的抽头的内插滤波器)但是提供近似于较长内插滤波器的预测准确度的高预测准确度的内插滤波器可以提高视频编解码器的整体性能。

根据本公开的实施方式可以使用权重重分布三角形内核(例如,滤波器)以获得近似于较长内插滤波器的性能的代码化性能。众所周知,关于图7进一步描述的三角形滤波器是2抽头卷积滤波器,该2抽头卷积滤波器在采样点(即,内插像素值)处根据采样点到两个相邻像素中的每个的距离来计算两个相邻像素的加权平均值。也就是说,权重与距离成反比。

权重重分布三角形滤波器使得对于采样点中的至少一些(即,采样位置、子像素位置等),权重与距离不成比例(例如,成反比)。使用本文所描述的2抽头内插滤波器更好地保存了视频帧中的边缘和/或为至少一些视频块提供了更准确的预测。对于具有边缘的视频的集合,使用本文所述的滤波器(即,权重重分布三角形内核)可能导致0.5%至0.8%的比特率降低。

图1是根据本公开的实施方式的计算设备100的图解。计算设备100可以包括通信接口110、通信单元120、用户接口(ui)130、处理器140、存储器150、指令160、电源170或它们的任何组合。如本文所使用的,术语“计算设备”(例如,装置)包括能够执行本文所公开的任何方法、过程或它们的任一个或多个部分的任何单元或单元的组合。

计算设备100可以是固定计算设备,诸如个人计算机(pc)、服务器、工作站、小型计算机或大型计算机;或可以是移动计算设备,诸如移动电话、个人数字助理(pda)、笔记本计算机或平板pc。虽然示出为单个单元,但是计算设备100的任一个或多个元件可以被集成到任何数目的单独的物理单元中。例如,ui130和处理器140可以集成在第一物理单元中,而存储器150可以集成在第二物理单元中。

通信接口110可以是无线天线,如图所示,是诸如以太网端口、红外端口、串行端口的有线通信端口,或者是能够与有线或无线电子通信介质180接合的任何其他有线或无线单元。

通信单元120可以被配置为经由有线或无线介质180传输或接收信号。例如,如图所示,通信单元120操作性地连接至被配置成经由无线信号进行通信的天线。虽然图1中未显式地示出,但是通信单元120可以被配置成经由任何有线或无线通信介质(诸如,射频(rf)、紫外线(uv)、可见光、光纤、金属线或它们的组合)进行传输、接收或两者。虽然图1示出了单个通信单元120和单个通信接口110,可以使用任何数目的通信单元和任何数目的通信接口。

ui130可以包括能够与用户接合的任何单元,诸如虚拟或物理键盘、触摸板、显示器、触摸显示器、扬声器、麦克风、视频相机、传感器或它们的任何组合。ui130可以如图所示与处理器或与计算设备100的任何其他元件(诸如,电源170)操作性地耦合。虽然被示出为单个单元,但是ui130可以包括一个或多个物理单元。例如,ui130可以包括用于执行与用户的音频通信的音频接口,以及用于执行与用户的基于视觉和触摸的通信的触摸显示器。虽然被示出为单独的单元,但是通信接口110、通信单元120和ui130或它们的各部分可以被配置为组合单元。例如,通信接口110、通信单元120和ui130可以被实现为能够与外部触摸屏设备接合的通信端口。

处理器140可以包括能够操纵或处理信号或其他现有或今后开发的信息的任何设备或系统,包括光学处理器、量子处理器、分子处理器或它们的组合。例如,处理器140可以包括特殊用途处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑阵列、可编程逻辑控制器、微代码、固件、任何类型的集成电路(ic)、状态机或它们的任何组合。如本文所使用的,术语“处理器”包括单个处理器或多个处理器。处理器可以与通信接口110、通信单元120、ui130、存储器150、指令160、电源170或它们的任何组合操作性地耦合。

存储器150可以包括任何非暂时性计算机可用或计算机可读介质,诸如可能例如包含、存储、传达或输送供处理器140或与该处理器140结合使用的指令160或与之相关联的任何信息的任何有形设备。非暂时性计算机可用或计算机可读介质可以是例如固态驱动器、存储卡、可移动介质、只读存储器(rom)、随机存取存储器(ram)、任何类型的磁盘(包括硬盘、软盘、光盘、磁卡或光卡)、专用集成电路(asic)或适合存储电子信息的任何类型的非暂时性介质或它们的任何组合。存储器150可以通过例如存储器总线(未显式地示出)连接至例如处理器140。

指令160可以包括用于执行本文所公开的任何方法、过程或其任一个或多个部分的指导。指令160可以以硬件、软件或它们的任何组合来实现。例如,指令160可以被实现为存储在存储器150中的信息,诸如计算机程序,所述计算机程序可以由处理器140实行以执行如本文所描述的相应方法、算法、方面或它们的组合中的任一个。指令160或其一部分可以被实现为特殊用途处理器或电路,它们可以包括用于实施如本文所描述的方法、算法、方面或它们的组合中的任一个的专用硬件。指令160的各部分可以分布在同一机器或不同机器上的多个处理器之间,或者分布在诸如局域网、广域网、互联网或它们的组合的网络上。

电源170可以是用于为计算设备100供电的任何合适的设备。例如,电源170可以包括有线电源;一个或多个干电池,诸如镍镉(nicd)、镍锌(nizn)、镍金属氢化物(nimh)、锂离子(li-ion);太阳能电池;燃料电池;或能够为计算设备100供电的任何其他设备。通信接口110、通信单元120、ui130、处理器140、指令160、存储器150或它们的任何组合可以与电源170操作性地耦合。

虽然被示出为单独的元件,但是可以将通信接口110、通信单元120、ui130、处理器140、指令160、电源170、存储器150或它们的任何组合可以集成在一个或多个电子单元、电路或芯片中。

图2是根据本公开的实施方式的计算和通信系统200的图解。计算和通信系统200可以包括一个或多个计算和通信设备100a/100b/100c、一个或多个接入点210a/210b、一个或多个网络220或它们的组合。例如,计算和通信系统200可以是向诸如计算和通信设备100a/100b/100c的一个或多个有线或无线通信设备提供诸如语音、数据、视频、消息传递、广播或它们的组合的通信的多路访问系统。虽然为简单起见图2示出了三个计算和通信设备100a/100b/100c、两个接入点210a/210b和一个网络220,但是可以使用任何数目的计算和通信设备、接入点和网络。

计算和通信设备100a/100b/100c可以是例如计算设备,诸如图1中示出的计算设备100。例如,如图所示,计算和通信设备100a/100b可以是用户设备,诸如移动计算设备、笔记本计算机、瘦客户端或智能电话,并且计算和通信设备100c可以是服务器,诸如大型机或群集。虽然将计算和通信设备100a/100b描述为用户设备,并且将计算和通信设备100c描述为服务器,但是任何计算和通信设备都可以执行服务器的功能中的一些或全部,用户设备的功能中的一些或全部,或服务器和用户设备的功能中的一些或全部。

每个计算和通信设备100a/100b/100c可以被配置成执行有线或无线通信。例如,计算和通信设备100a/100b/100c可以被配置成传输或接收有线或无线通信信号,并且可以包括用户装备(ue)、移动台、固定或移动订户单元、蜂窝电话、个人计算机、平板计算机、服务器、消费者电子产品或任何相似设备。虽然每个计算和通信设备100a/100b/100c被示为单个单元,但是计算和通信设备可以包括任何数目的互连元件。

每个接入点210a/210b可以是被配置成经由有线或无线通信链路180a/180b/180c与计算和通信设备100a/100b/100c、网络220或两者通信的任何类型的设备。例如,接入点210a/210b可以包括基站、基地收发台(bts)、节点b、增强型节点b(enode-b)、家庭节点b(hnode-b)、无线路由器、有线路由器、集线器、中继器、交换机或任何相似的有线或无线设备。虽然每个接入点210a/210b被示出为单个单元,但是接入点也可以包括任何数目的互连元件。

网络220可以是被配置成通过有线或无线通信链路提供诸如语音、数据、应用、互联网协议语音(voip)或任何其他通信协议或通信协议的组合的服务的任何类型的网络。例如,网络220可以是局域网(lan)、广域网(wan)、虚拟私人网络(vpn)、移动或蜂窝电话网络、互联网或任何其他电子通信手段。网络可以使用通信协议,诸如传输控制协议(tcp)、用户数据报协议(udp)、互联网协议(ip)、实时输送协议(rtp)超文本输送协议(http)或它们的组合。

计算和通信设备100a/100b/100c可以使用一个或多个有线或无线通信链路,或者经由有线和无线通信链路的组合,经由网络220彼此通信。例如,如图所示,计算和通信设备100a/100b可以经由无线通信链路180a/180b进行通信,并且计算和通信设备100c可以经由有线通信链路180c进行通信。计算和通信设备100a/100b/100c中的任一个都可以使用任一个或多个有线或无线通信链路进行通信。例如,第一计算和通信设备100a可以使用第一类型的通信链路经由第一接入点210a进行通信,第二计算和通信设备100b可以使用第二类型的通信链路经由第二接入点210b进行通信,而第三计算和通信设备100c可以使用第三类型的通信链路经由第三接入点(未示出)进行通信。相似地,接入点210a/210b可以经由一种或多种类型的有线或无线通信链路230a/230b与网络220通信。虽然图2示出了经由网络220进行通信的计算和通信设备100a/100b/100c,但是计算和通信设备100a/100b/100c可以经由任何数目的通信链路(诸如,直接有线或无线通信链路)彼此通信。

计算和通信系统200的其他实施方式是可能的。例如,在实施方式中,网络220可以是自组织网络,并且可以省略接入点210a/210b中的一个或多个。计算和通信系统200可以包括图2中未示出的设备、单元或元件。例如,计算和通信系统200可以包括更多的通信设备、网络和接入点。

图3是根据本公开的实施方式的用于编码和解码的视频流300的图解。视频流300(诸如由视频相机捕获的视频流或由计算设备生成的视频流)可以包括视频序列310。视频序列310可以包括邻接帧320的序列。虽然示出了三个邻接帧320,视频序列310可以包括任何数目的邻接帧320。来自邻接帧320的每个帧330可以代表来自视频流的单个图像。帧330可以包括块340。虽然图3中未示出,块可以包括像素。例如,块可以包括16×16像素组、8×8像素组、8×16像素组或任何其他像素组。除非本文另外指出,否则术语“块”可以包括帧的超级块、宏块、片段、切片或任何其他部分。帧、块、像素或它们的组合可以包括显示信息,诸如亮度信息、色度信息或可用于存储、修改、传达或显示视频流或其一部分的任何其他信息。

图4是根据本公开的实施方式的编码器400的框图。编码器400可以在诸如图1中示出的计算设备100或在图2中示出的计算和通信设备100a/100b/100c的设备中实现为例如计算机软件程序,该计算机软件程序存储在数据存储单元(诸如,图1中示出的存储器150)中。该计算机软件程序可以包括可由诸如图1中示出的处理器140的处理器执行的机器指令,并且可以致使设备如本文所述对视频数据进行编码。编码器400可以被实现为例如计算设备100中包括的专门硬件。

编码器400可以对视频流402(诸如,图3中示出的视频流300)进行编码,以生成编码(压缩)的比特流404。在一些实施方式中,编码器400可以包括用于生成经压缩的比特流404的前向路径。前向路径可以包括帧内/帧间预测单元410、变换单元420、量化单元430、熵编码单元440或它们的任何组合。在一些实施方式中,编码器400可以包括重构路径(由断续的连接线指示),以重构帧用于对其他块进行编码。重构路径可以包括去量化单元450、逆变换单元460、重构单元470、环路滤波单元480或它们的任何组合。编码器400的其他结构变化形式可以用于对视频流402进行编码。

为了对视频流402进行编码,可以以块为单位处理视频流402内的每个帧。因此,可以从帧中的各块中识别出当前块,并且可以对当前块进行编码。

在帧内/帧间预测单元410处,可以使用可能在单个帧内的帧内预测或可能是帧之间的帧间预测来对当前块进行编码。帧内预测可以包括从当前帧中先前已被编码和重构的样本来生成预测块。帧间预测可以包括从一个或多个先前构建的参考帧中的样本生成预测块。为当前帧中的当前块生成预测块可以包括执行运动估计以生成指示参考帧中的适当参考块的运动矢量。

帧内/帧间预测单元410可以从当前块(原始块)减去预测块以产生残差块。变换单元420可以执行基于块的变换,该基于块的变换可以包括将残差块变换成在例如频域中的变换系数。基于块的变换的示例包括karhunen-loève变换(klt)、离散余弦变换(dct)和奇异值分解变换(svd)。在示例中,dct可以包括将块变换成频域。dct可以包括使用基于空间频率的变换系数值,其中在矩阵的左上角具有最低的频率(即,dc)系数,而在矩阵的右下角具有最高的频率系数。

量化单元430可以将变换系数转换成离散的量子值,该量子值可以被称为经量化的变换系数或量化水平。经量化的变换系数可以由熵编码单元440进行熵编码以产生经熵编码的系数。熵编码可以包括使用概率分布度量。可以将可以包括所使用的预测类型、运动矢量和量化器值的用于对块进行解码的经熵编码的系数和信息输出至压缩的比特流404。可以使用诸如游程长度编码(rle)和零游程代码化的各种技术来对压缩的比特流404进行格式化。

重构路径可以用于维持编码器400与诸如图5中示出的解码器500的对应的解码器之间的参考帧同步。重构路径可以与下面讨论的解码过程相似,并且可以包括在去量化单元450处对量化的变换系数进行去量化并且在逆变换单元460处对去量化的变换系数进行逆变换以产生导数残差块。重构单元470可以将由帧内/帧间预测单元410生成的预测块添加到导数残差块以创建重构的块。环路滤波单元480可以应用于重构的块以减少失真,诸如块伪像。

编码器400的其他变化形式可以用于对压缩的比特流404进行编码。例如,基于非变换的编码器可以直接对残差块进行量化而无需变换单元420。在一些实施方式中,量化单元430和去量化单元450可以被组合成单个单元。

图5是根据本公开的实施方式的解码器500的框图。解码器500可以在诸如图1中示出的计算设备100或在图2中示出的计算和通信设备100a/100b/100c的设备中实现为例如计算机软件程序,该计算机软件程序存储在诸如图1中示出的存储器150的数据存储单元中。该计算机软件程序可以包括可由诸如图1中示出的处理器140的处理器执行的机器指令,并且可以致使设备如本文所述对视频数据进行解码。解码器500可以被实现为例如计算设备100中包括的专业的硬件。

解码器500可以接收诸如图4中示出的压缩的比特流404的压缩的比特流502,并且可以对压缩的比特流502进行解码,以生成输出视频流504。解码器500可以包括熵解码单元510、去量化单元520、逆变换单元530、帧内/帧间预测单元540、重构单元550、环路滤波单元560、去块滤波单元570或它们的任何组合。解码器500的其他结构变化形式可以用于对压缩的比特流502进行解码。

熵解码单元510可使用例如背景自适应二进制算术解码来对压缩的比特流502内的数据要素进行解码,以产生经量化的变换系数的集合。去量化单元520可以对经量化的变换系数进行去量化,并且逆变换单元530可以对去量化的变换系数进行逆变换以产生导数残差块,该导数残差块可以与图4中示出的逆变换单元460生成的导数残差块相对应。使用从压缩的比特流502解码的报头信息,帧内/帧间预测单元540可以生成对应于在编码器400中创建的预测块的预测块。在重构单元550处,可以将预测块添加到导数残差块以创建重构的块。环路滤波单元560可以应用于重构的块以减少块伪像。去块滤波单元570可以应用于重构的块以减小块失真,并且可以输出结果作为输出视频流504。

解码器500的其他变化形式可以用于对压缩的比特流502进行解码。例如,解码器500可以产生输出视频流504而无需去块滤波单元570。

在一些实施方式中,减少时间冗余可包括使用帧之间的相似性以基于一个或多个参考帧而使用相对少量的数据对帧进行编码,所述一个或多个参考帧可以是视频流的先前编码、解码和重构的帧。例如,当前帧的块或像素可以与参考帧的空间上对应的块或像素相似。在一些实施方式中,当前帧的块或像素可在不同部分处与参考帧的块或像素相似,并且减少时间冗余可以包括生成运动信息,该运动信息指示当前帧中的块或像素的位置与参考帧中的块或像素的对应位置之间的空间差异或转变。

在一些实施方式中,减少时间冗余可包括识别参考帧或参考帧的一部分中的与当前帧的当前块或像素相对应的块或像素。例如,可以针对最佳块或像素搜索可能存储在存储器中的参考帧或参考帧的一部分,以用于对当前帧的当前块或像素进行编码。例如,搜索可以识别参考块与当前块之间的像素值的差异被最小化的参考帧的块,并且可以被称为运动搜索。在一些实施方式中,搜索到的参考帧的部分可能是有限的。例如,可以被称为搜索区域的所搜索的参考帧的部分可以包括参考帧的有限行数目。在示例中,识别参考块可以包括计算在搜索区域中的块的像素与当前块的像素之间的成本函数,诸如绝对差之和(sad)。在一些实施方式中,可以提供一个以上的参考帧。例如,可以从八个候选参考帧中选择三个参考帧。

在一些实施方式中,参考块在参考帧中的位置与当前块在当前帧中的位置之间的空间差异可以表示为运动矢量。参考块与当前块之间的像素值的差可以被称为差分数据、残差数据或残差块。在一些实施方式中,生成运动矢量可以称为运动估计,可以基于使用笛卡尔坐标的位置而将当前块的像素指示为fx,y。相似地,可以基于使用笛卡尔坐标的位置而将参考帧的搜索区域的像素指示为rx,y。可以基于例如当前帧的像素与参考帧的对应像素之间的sad而确定当前块的运动矢量(mv)。

虽然本文为了清楚起见参考帧的矩阵或笛卡尔表示进行了描述,但是可以以任何数据结构来存储、传输、处理帧或它们的任何组合,以使得可以针对帧或图像高效地表示像素值。例如,可以以诸如矩阵的二维数据结构或诸如矢量阵列的一维数据结构来对帧进行存储、传输、处理或它们的任何组合。

在一些实施方式中,对于帧间预测,编码器400可以在块端点处传达预测块的编码的信息,包括但不限于预测模式、预测参考帧、运动矢量(如果需要)、子像素内插滤波器类型。

图6是根据本公开的实施方式的使用子像素内插滤波器的帧间预测的表示的框图。在一些实施方式中,可以在诸如图5中示出的解码器500的解码器、诸如图4中示出的编码器400的编码器或它们的组合中实现使用子像素内插滤波器的帧间预测。

在一些实施方式中,帧间预测可以包括参考参考帧620而对当前帧610或诸如块612或块614的其一部分进行编码。例如,运动矢量632/634可以相对于对应块612/614在当前帧610中的位置而指示参考块622/624在参考帧620中的空间位置,参考块622/624可以是参考帧620的被识别为最准确匹配当前帧610中的对应块612/614的部分,并且参考块622/624可以用于生成用于对当前帧610进行编码的预测块。

在一些实施方式中,参考帧620的与当前帧610的当前块(例如,块614)最准确地匹配的部分622可能会偏离块或像素边界,并且帧间预测可以包括使用子像素内插滤波器。例如,帧间预测可以包括使用1/2pel、1/4pel或1/8pel的运动矢量精确度,并且可以使用子像素内插滤波器。

在一些实施方式中,对当前块进行代码化可以包括:从多个候选预测模式中识别出用于对当前块进行代码化的预测模式。例如,视频代码化器可以评估可以包括帧内预测模式、帧间预测模式或两者的候选预测模式以识别最优预测模式,所述最优预测模式可为例如使当前块的诸如率失真成本的误差度量最小化的预测模式。

在一些实施方式中,帧间预测模式可以包括新运动矢量模式(newmv)、零运动矢量模式(zeromv)、最近运动矢量模式(nearestmv)和近运动矢量模式(nearmv)。新运动矢量模式(newmv)可以指示可以在编码的视频流中明确地或显式地用信号通知当前块的新运动矢量。在一些实施方式中,可以以不同方式用信号通知新的运动矢量。例如,可以使用新运动矢量与参考运动矢量之间的差异来用信号通知新运动矢量,该参考运动矢量诸如是用于对先前代码化的相邻块进行编码的运动矢量。零运动矢量模式(zeromv)可以指示可能指示无运动的零运动矢量(0,0)可以用于预测当前块,并且可以从编码的视频流中省略用于预测当前块的明确或显式运动矢量。在一些实施方式中,最近运动矢量模式(nearestmv)可以指示被识别为最近运动矢量的用于对先前编码的相邻块进行编码的运动矢量可以用于预测当前块,并且可以从编码的视频流中省略用于预测当前块的明确或显式运动矢量。在一些实施方式中,近运动矢量模式(nearmv)可以指示被识别为近运动矢量的用于对先前编码的相邻块进行编码的运动矢量可以用于预测当前块,并且可以从编码的视频流中省略用于预测当前块的明确或显式运动矢量。

在一些实施方式中,编码器可识别用于对当前块进行编码的候选运动矢量。例如,候选运动矢量可以包括零运动矢量、新运动矢量、近运动矢量和最近运动矢量。在一些实施例中,编码器可以评估相邻的或紧接(proximal)的、先前编码的块,以识别近运动矢量和最近运动矢量。例如,可以从第一相邻的或紧接的、先前编码的块中识别出近运动矢量,并且可以从第二相邻的或紧接的、先前编码的块中识别出最近的运动矢量。

在一些实施方式中,解码器可以识别候选运动矢量以用于对当前块进行解码。例如,候选运动矢量可以包括近运动矢量和最近运动矢量。在一些实施例中,解码器可以评估相邻的或紧接的、先前解码的块,以识别近运动矢量和最近运动矢量。例如,可以从第一相邻的或紧接的、先前解码的块中识别出近运动矢量,并且可以从第二相邻的或紧接的先前解码的块中识别出最近运动矢量。

在一些实施方式中,对当前块进行代码化可以包括识别用于预测当前块的内插滤波器。例如,可以从候选内插滤波器中选择内插滤波器。在一些实施方式中,候选内插滤波器可以是1/16pel精确度的滤波器,并且可以包括双线性滤波器、8抽头滤波器(eighttap)、锐8抽头滤波器(eighttap_sharp)、平滑8抽头滤波器(eighttap_smooth)、本文所描述的任何其他滤波器(例如,以下所述的滤波器2和滤波器3)或它们的组合。

在实践中,如本领域技术人员所理解的,可以将内插滤波分离成两个1维滤波通路。例如,第一通路可以在x方向上执行内插滤波;并且第二通路在y方向上执行内插滤波。然而,为了简化解释,在本文中仅关于1维滤波来描述内插滤波。

图7是根据本公开的实施方式的双边滤波器的图示700。在示例中,编码器可以在运动估计阶段期间使用双边滤波器,诸如关于图4的帧内/帧间预测单元410所描述的。在示例中,并且为了确保快速编码和解码,图4的帧内/帧间预测单元410和重构单元470以及图5的重构单元550可以排他地使用2抽头双线性滤波器。双边滤波器在本文中称为滤波器1。

曲线图710图示了双边滤波器(即,滤波器1)的操作。如曲线图710中所示,p0和p1是两个连续像素的像素值。在示例中,像素值p0和p1在视频块的像素(在整数或子pel位置处)的同一行(或等效地,同一列)中。例如,像素值p0可以在像素行的水平位置x0处;并且像素值p1可以在像素行的水平位置x1处。将根据像素值p0和p1计算(即,内插)位置x处的子像素值p。可以使用公式(1)来计算子像素值p。

p=p0*d(x,x1)+p1*d(x,x0)(1)

公式(1)可以被描述为2个邻近像素的加权和。权重(即,d(x,x0)和d(x,x1))分别是位置x与位置x0和x1之间的归一化距离。例如,如果x

在x0与x1的中间,则权重可以为d(x,x0)=d(x,x1)=0.5。例如,如果x是x0与x1之间的距离的1/4,并且与x1相比更接近x0,则权重可能是d(x,x0)=0.25和d(x,x1)=0.75。也就是说,距离(即,权重)指示一个像素的将被贡献给内插值的量(即,有多少)。

可以以公式2的一般形式来重写公式(1),其中f0和f1是滤波器系数:

p=(p0*f0)+(p1*f1)(2)

如上面所提及的,可以基于对应的像素距离而设计双线性内插滤波器。假设运动矢量精确度为1/16像素,则双边滤波器(即,滤波器1)的系数可以如表i中所示。

表i–滤波器1权重

应当注意,因为合乎需要的是在代码化操作期间执行整数运算,所以使用7位精确度将滤波器1的权重表示为整数。也可以使用其他整数精确度。为了说明双边滤波器的使用,假设两个连贯的像素值为p0=220和p1=63。可以通过p(3/8像素)=(220*80+48*63)>>7获得3/8像素位置处的子像素,其中“>>”为右移位运算。为此,p(3/8)=161。如关于表i所描述的,本领域技术人员可以容易地确定除1/16以外的子像素精确度的双边滤波器的权重。

内插的目的是从邻近的像素估计未知的子像素。内插试图从整数像素位置处的经采样图像重构原始连续图像。重构是使用定义的内核的卷积过程。例如,以上双线性内插滤波器使用三角形内核。在三角形内核720中示出了三角形滤波器。

三角形内核720通过根据样本到两个相邻值的距离取两个相邻值的加权平均值来充当线性内插滤波器。可以如以下示例中所示实施卷积运算。使三角形内核722直接在全像素位置x0上方居中,三角形内核722的峰值是像素值p0。三角形内核722示出了像素值p0对子像素位置处的最终内插像素值的贡献。相似地,使三角形内核724直接在全像素位置x1上方居中,三角形内核724的峰值是像素值p1。三角形内核724示出了像素值p1对子像素位置处的最终内插像素值的贡献。例如,如图7中所示,要计算在位置x处的样本,即x0(具有像素值p0)与x1(具有像素值p1)之间的3/像素,将p0的贡献(即,p0x)和p1的贡献(即,p1x)加在一起,其中p0x=p0*w0且p1x=p1*w1。要使用的权重为w0=0.25和w1=0.75(或等效地,使用7位整数表示为32和96)。为此,卷积运算导致p=0.25p0+0.75p1。

绘图730绘出了上述双边滤波器(即,滤波器1)的三角形内核720的权重。如绘图730中所示,三角形内核720的权重形成等腰三角形。为此,双边滤波器可被表征为具有权重元组的集合(参见表1)的2抽头滤波器;并且每个元组包括两个权重,并且用于在第一像素与第二像素之间的相应子像素位置处进行子像素内插。对于权重元组中的每个元组,两个权重基于子像素位置与第一像素之间的第一距离以及子像素位置与第二距离之间的第二距离。换句话说,双边滤波器的权重元组的绘图形成三角形(例如,等腰三角形)。第一像素可以在整数像素位置或子像素位置处。第二像素可以在整数像素位置或子像素位置处。

曲线图740图示了在四个整数位置x0至x3处的给定像素值的情况下恢复图像的连续部分742(即,帧、帧的块等)。内核744至750图示了用于从四个整数位置x0至x3处的像素值得出(即,计算、获得等)连续部分742的三角形内核。应当注意,在曲线图740中示出了内核748的仅一侧面和内核750的仅一侧面,因为在曲线图740中未示出其他所需像素值(即,x0之前的像素和x3之后的像素)。

如已经提及的,内核可以提供以下问题的答案:内插像素值中使用了某一位置处的多少像素值?例如,并且如在曲线图740中可见,在x1处,像素权重为1(通过内核744的中心与像素位置x1的对准来指示)。x0和x2的权重为零。也就是说,像素值是位置x0和x2不向x1贡献其相应值中的任一个。相似地,在x2处,像素权重为1(通过内核746的中心与像素位置x2的对准来指示)。例如,对于在x0与x1之间的位置处的子像素值,可以将沿着内核744和748获得的相应值相加以获得连续部分742上的像素值。

合乎需要的是使用在频域中提供理想低通滤波器的密切近似的内核。理想的低通滤波器可以被描述为这样一种滤波器:它完全消除高于截止频率的所有频率,同时使低于截止频率的那些频率不变地通过。也就是说,理想的低通滤波器仅恢复在原始图像中的那些频率。

虽然上述双边滤波器(即,滤波器1)是低复杂性滤波器,但是它在频域中不能充分近似理想的低通滤波器。三角形内核的傅立叶变换是sinc2函数。sinc2函数包括许多旁瓣,并且因此,在滤波后的结果(即,内插的值)中引入了高频率。为此,作为1阶滤波器的三角形内核(例如,双边滤波器)不能提供与高阶内核一样好的结果。

图8图示了根据本公开的实施方式的类似于高阶内核的2抽头滤波器内核。描述了分别称为滤波器2和滤波器3的滤波器内核810和滤波器内核820。滤波器内核810和820中的每个定义2抽头滤波器。因此,滤波器内核810和820中的每个在内插运算中只能使用两个连续的像素。类似于高阶内核可能意味着在频域中表现出相似的响应。

如下面进一步描述的,滤波器内核810和820中的每个可以被表征为具有权重元组的集合(参见表ii和iii)的2抽头滤波器。每个元组包括两个权重,并且用于在第一像素与第二像素之间的相应子像素位置处的子像素内插。对于权重元组中的至少一些,两个权重不是基于子像素位置与第一像素之间的第一距离和/或子像素位置与第二距离之间的第二距离。换句话说,滤波器2的权重元组的绘图(即,滤波器内核810)不形成三角形(例如,等腰三角形,诸如关于绘图730所描述的);并且滤波器3的权重元组的绘图(即,滤波器内核820)不形成三角形。也就是说,滤波器内核810和820中的每个的侧面包括弯曲并且不是直线。第一像素可以在整数像素位置或子像素位置处。第二像素可以在整数像素位置或子像素位置处。

滤波器内核810和820的元组中的至少一些的权重不是基于对应的子像素位置与在内插运算中使用的像素位置之间的距离而分布的。

表ii列出了给定子像素位置处的滤波器内核810(滤波器2)的权重元组。表iii列出了给定子像素位置处的滤波器内核820(滤波器3)的权重元组。与表i相似,滤波器2和滤波器3的权重使用7位精确度表示为整数。

表ii–滤波器2权重

表iii–滤波器3权重

滤波器2和滤波器3(分别用滤波器内核810和滤波器内核820图示)是权重重分布三角形内核。之所以这样称呼滤波器2和滤波器3(即,权重重分布的三角形内核)是因为,虽然总体形状可能类似于三角形,但却使权重重分布,以使得对于权重元组中的至少一些,将比由滤波器1指派给较接近的像素的权重更高的权重分配给该像素。应当理解,关于表i至表iii,x0和x1指代正被内插的两个像素值的位置。关于第一像素位置(即,x0)给出了子像素位置。

作为权重重分布的说明性示例,并使用1/4像素分辨率,鉴于滤波器1使用权重元组(96,32),滤波器2使用(100,28),从而将较高的权重(即,100高于96)指派给较接近的像素(即,x0);并且滤波器3使用(102,26),从而将较高的权重(即,102高于96)指派给较接近的像素(即,x0)。作为权重重分布的另一示例,并使用3/4像素分辨率,鉴于滤波器1使用权重元组(32,96),滤波器2使用(28,100),从而将较高的权重(即,100高于96)指派给较接近的像素(即,x1);并且滤波器3使用(26,102),从而将较高的权重(即,102高于96)指派给较接近的像素(即,x1)。

滤波器2的傅立叶变换的频率不如三角形内核(即,滤波器1)的频率高。为此,较之三角形内核,可以使用滤波器2达成更好的代码化性能。为了设计与滤波器2相似的滤波器(例如,权重重分布的三角形滤波器),可以选择相对较高的截止频率(c)。截止频率可以是0.5、0.75或其他截止频率。在滤波器2的设计中使用了截止频率c=0.75。滤波器2提供了比双边滤波器(即,滤波器1)“更尖锐”的响应。为此,与锐内插滤波器(eighttap_sharp)相似,滤波器2可以比双边滤波器更好地保存视频帧中的边缘。滤波器3是类高斯内核。因为高斯滤波器的傅立叶变换是高斯,所以可以将滤波器3视为良好的低通滤波器。虽然关于滤波器2和滤波器3描述了权重重分布技术,但是也可以使用其他技术来获得具有权重的2抽头滤波器,所述权重,与滤波器1不同,至少对于子像素位置中的一些不是基于像素距离。

图9是根据本公开的实施方式的用于使用帧间预测对视频的块进行编码的过程900的示例的流程图。使用帧间预测对块进行编码。在一些实施方式中,可以在诸如图4中示出的编码器400的编码器中实现使用帧间预测对视频的块进行编码。

在示例中,并且在高级别上,可以基于运动矢量而在参考帧中识别出参考块,并且可以使用内插滤波器从参考块生成预测块。在一些实施方式中,块与预测块之间的残差或预测误差可包括在诸如图4的压缩的比特流404的压缩的比特流中。在一些实施方式中,用于对块进行代码化的运动矢量和内插滤波器的标识符可以包括在压缩的比特流中,诸如在第一块的报头中。在一些实施方式中,用于对块进行代码化的运动矢量可以与用于对块进行代码化的内插滤波器相关联。

在示例中,并且众所周知,编码器中的帧间预测可能需要两个单独的过程:运动估计过程和运动补偿过程。运动估计过程可以由诸如图4的帧内/帧间预测单元410的预测单元执行。可以由诸如图4的重构单元470的重构单元来执行运动补偿过程。

在运动估计过程期间,可以确定块的运动矢量。在一些实施方式中,对块进行编码可以包括识别用于对块进行编码的运动矢量。在一些实施方式中,可识别运动矢量以对块进行编码,且可识别内插滤波器以对块进行编码。在示例中,可以在运动矢量具有子像素准确度时识别内插滤波器。为此,可以使用整数像素位所处的样本(即,像素值)对分数位所处的样本(即,像素值)进行内插。

在内插过程中使用内插滤波器。可能有几个滤波器可用。在示例中,运动估计期间的可用内插滤波器(即,候选内插滤波器)可以包括上述的eighttap_smooth、eighttap_sharp、eighttap、滤波器1、滤波器2和滤波器3。在另一示例中,可能有更多、更少或其他滤波器可用。

在一些实施方式中,可以基于被识别用于对块进行编码的运动矢量而识别用于对块进行编码的内插滤波器。在一些实施方式中,识别内插滤波器可以包括评估候选内插滤波器以识别最优内插滤波器。在示例中,可以评估可用候选内插滤波器中的每个,以确定最优内插滤波器。最优内插滤波器可以是导致块与预测块之间的最小残留误差的滤波器。

在另一示例中,评估了候选内插滤波器中的仅一些。如上所述,eighttap_smooth、eighttap_sharp和eighttap是8抽头滤波器;鉴于滤波器1、滤波器2和滤波器3是2抽头滤波器。对于一些应用(例如,视频会议、屏幕共享等),仅会评估2抽头滤波器。这样可以提高压缩速度,即使以较低质量的压缩为代价。更一般地,在运动估计过程期间评估较短的滤波器。为此,选择的内插滤波器的标识符被包括在压缩的比特流中。

在一些编码示例中,可以使用快速搜索运动估计技术。此类快速运动估计技术可以包括在运动估计阶段期间使用较短的滤波器(例如2抽头滤波器,诸如滤波器1、滤波器2和滤波器3),但是在运动补偿期间使用对应的较长滤波器,如下面进一步描述的。

使用滤波器1、滤波器2和滤波器3中的一个可以包括识别运动矢量的期望的子像素精确度并使用对应的权重元组。例如,如果期望的子像素精确度是3/8像素,则使用滤波器2作为内插滤波器包括选择如表ii中示出的权重元组(82,46)用于内插运算。

在示例中,较短的滤波器与较长的滤波器之间可能存在对应关系。也就是说,较短的滤波器可以具有与对应的较长滤波器相似或近似的频率响应。为此,当在运动估计期间选择了较短的滤波器时,可以将对应的较长的滤波器编码(例如,包括)在压缩的比特流中,以使得解码器可以将较长的滤波器用于解码。在另一示例中,该对应关系可能不基于频率响应相似性。将内插滤波器编码在压缩的比特流中可以意味着将内插滤波器的指示、标识符等编码在压缩的比特流中。在示例中,如果在运动估计阶段期间选择了滤波器2,则可以将eighttap_sharp滤波器编码在压缩的比特流中。在示例中,如果在运动估计阶段期间选择了滤波器3,并且即使滤波器3与eighttap_smooth之间的对应关系可能比滤波器2与eighttap_sharp滤波器之间的对应关系弱,则可以将eighttap_smooth滤波器编码在压缩的比特流中。在示例中,如果在运动估计阶段期间选择了滤波器1,则可以将eighttap滤波器编码在压缩的比特流中。较短的滤波器与较长的滤波器之间的其他对应关系也是可能的。

在运动补偿阶段期间,从压缩的比特流中对运动矢量、内插滤波器和残差进行解码,并将其用于对块进行重构。

返回过程900,在910处,过程900选择第一子像素内插滤波器。如上所述,可以在针对块的运动估计期间选择第一子像素内插滤波器。第一子像素内插滤波器可以用于分数运动的子像素内插(即,在子像素位置处)。

第一子像素内插滤波器可能是2抽头滤波器。为此,第一子像素内插滤波器可能是上述的滤波器2或滤波器3中的一个,或者是展示出本文所述特性的任何其他权重重分布三角形内核。如上面进一步描述的,诸如在表ii和表iii中,第一子像素内插滤波器包括权重元组。每个权重元组包括两个权重,并且用于在第一像素与第二像素之间的相应子像素位置处的子像素内插。在示例中,第一像素和第二像素可以是整数像素位置处的像素。在示例中,第一像素或第二像素中的至少一个可以在子像素位置。也就是说,第一像素或第二像素中的至少一个自身可以是内插的像素。在示例中,内插可以被划分成多个阶段。为此,例如,第一内插运算从与像素相邻的全像素内插1/2像素值,并且第二内插运算进一步使用1/2像素值内插其他子像素值。

如所提及的,第一子像素内插滤波器可能是滤波器2。为此,并且使用7位精确度,并且如表ii中所述,权重元组包括分别针对全像素、1/16像素、1/8像素、3/16像素、1/4像素、5/16像素、3/8像素、7/16像素、1/2像素、9/16像素、5/8像素、11/16像素、3/4像素、13/16像素、7/8像素和15/16像素的子像素精确度的元组(128,0)、(122,6)、(116,12)、(108,20)、(100,28)、(92,36)、(82,46)、(74,54)、(64,64)、(54,74)、(46,82)、(36,92)、(28,100)、(20,108)、(12,116)和(6,122)。

如所提及的,第一子像素内插滤波器可能是滤波器3。为此,并且使用7位精确度,并且如表iii中所述,权重元组包括针对全像素、1/16像素、1/8像素、3/16像素、1/4像素、5/16像素、3/8像素、7/16像素、1/2像素、9/16像素、5/8像素、11/16像素、3/4像素、13/16像素、7/8像素和15/16像素的相应子像素精确度的元组(128,0)、(124,4)、(118,10)、(110,18)、(102,26)、(94,34)、(84,44)、(74,54)、(64,64)、(54,74)、(44,84)、(34,94)、(26,102)、(18,110)、(10,118)和(4,124)。

如所提及的,并且如关于图7所描述的,双边(即,滤波器1)的权重元组使得权重与内插位置(即,子像素位置)与内插中使用的像素的位置之间的距离成反比。对比地,第一子像素内插的特性在于,对于权重元组中的至少一个权重元组,两个权重不是基于子像素位置与第一像素之间的第一距离以及子像素位置与第二像素之间的第二距离。

在示例中,并且如上所述,第一子像素内插可以使得权重被重新分布,以使得对于权重元组中的至少一些,将比由滤波器1指派给较接近的像素的权重更高的权重分配给该像素。换句话说,在子像素位置比第二像素更靠近第一像素的情况下,对于权重元组的至少一个权重元组,该一个权重元组的第一权重高于基于第二距离的双边权重,所述第一权重用于第一像素。

在示例中,选择第一子像素内插滤波器可以包括:在针对块的运动估计期间选择具有分数分辨率的运动矢量,并且使用第一子像素内插滤波器来确定分数分辨率处的内插的值,以生成预测块。

在920处,过程900选择第二子像素内插滤波器。第二子像素内插滤波器可以基于第一子像素内插滤波器。在示例中,第二子像素内插滤波器可以在运动补偿过程期间使用,诸如由编码器的重构单元使用。在示例中,第二子像素内插滤波器可以是第一子像素内插滤波器。在示例中,可以基于率失真成本而选择第二子像素内插滤波器。例如,第二子像素内插滤波器可以是较长的内插滤波器中的一个,该较长的内插滤波器导致最小的率失真成本。在示例中,可以基于第一子像素内插滤波器的频率响应而选择第二子像素内插滤波器。例如,可以基于第一内插滤波器与第二内插滤波器之间的对应关系而选择第二子像素内插滤波器。

在930处,过程900将第二子像素内插滤波器编码在压缩的比特流中。例如,过程900可以对第二子像素内插滤波器的标识符进行编码。

图10是根据本公开的实施方式的用于使用帧间预测来对视频的块进行解码的过程1000的示例的流程图。在一些实施方式中,可以在诸如图5中示出的解码器500的解码器中实现使用帧间预测对视频的块进行解码。在一些实施方式中,可以至少部分地在编码器中诸如通过诸如图4的重构单元470的编码器的重构单元实现使用帧间预测对视频的块进行解码。

对块进行解码可以包括从压缩的比特流中对用于对块进行解码的运动矢量进行解码。在一些实施方式中,对块进行解码可以包括从压缩的比特流中对运动矢量和内插滤波器的标识符进行解码,该内插滤波器诸如是用于对块进行解码的子像素内插滤波器。在一些实施方式中,对块进行解码可以包括从压缩的比特流中对块的残差或预测误差进行解码。在一些实施方式中,对块进行解码可以包括:基于解码的运动矢量而识别参考帧中的参考块;使用由解码的内插滤波器标识符所指示的内插滤波器从参考块生成预测的块;以及通过将解码的残差添加到预测的块来生成重构的块。在一些实施方式中,可以在压缩的比特流中从块的报头对运动矢量、内插滤波器的标识符或它们的组合进行解码。在一些实施方式中,重构的块可以包括在输出(诸如用于呈现的输出)中。压缩的比特流可以如关于图5的压缩的比特流502所描述的。压缩的比特流可以如关于由重构路径(诸如,关于图4所描述的重构路径)接收到的比特流所描述的。

在1010处,过程1000从压缩的比特流中对子像素内插滤波器进行解码。子像素内插滤波器可以用于分数运动的子像素内插。子像素内插滤波器可以是2抽头滤波器。子像素内插滤波器包括权重元组。每个元组包括两个权重,并且用于在第一像素与第二像素之间的子像素位置处的子像素内插。对于权重元组中的至少一个权重元组,两个权重不是基于子像素位置与第一像素之间的第一距离以及子像素位置与第二像素之间的第二距离。这与双边滤波器(滤波器1)的权重元组形成对比。

在示例中,并且如上所述,子像素内插可以使得权重被重新分布,以使得对于权重元组中的至少一些,将比由滤波器1指派给较接近的像素的权重更高的权重分配给该像素。换句话说,在子像素位置比第二像素更靠近第一像素的情况下,对于权重元组的至少一个权重元组,该一个权重元组的第一权重高于基于第二距离的双边权重,其中所述第一权重用于第一像素。

子像素内插滤波器可以是滤波器2。为此,并且使用7位精确度,并且如表ii中所述,权重元组包括分别针对全像素、1/16像素、1/8像素、3/16像素、1/4像素、5/16像素、3/8像素、7/16像素、1/2像素、9/16像素、5/8像素、11/16像素、3/4像素、13/16像素、7/8像素和15/16像素的子像素精确度的元组(128,0)、(122,6)、(116,12)、(108,20)、(100,28)、(92,36)、(82,46)、(74,54)、(64,64)、(54,74)、(46,82)、(36,92)、(28,100)、(20,108)、(12,116)和(6,122)。

子像素内插滤波器可能是滤波器3。为此,并且使用7位精确度,并且如表iii中所述,权重元组包括针对全像素、1/16像素、1/8像素、3/16像素、1/4像素、5/16像素、3/8像素、7/16像素、1/2像素、9/16像素、5/8像素、11/16像素、3/4像素、13/16像素、7/8像素和15/16像素的相应子像素精确度的元组(128,0)、(124,4)、(118,10)、(110,18)、(102,26)、(94,34)、(84,44)、(74,54)、(64,64)、(54,74)、(44,84)、(34,94)、(26,102)、(18,110)、(10,118)和(4,124)。

在1020处,过程1000从压缩的比特流中对运动矢量进行解码。在1030处,过程1000使用子像素内插滤波器和运动矢量对块进行解码。例如,对运动矢量进行解码可以包括识别参考帧。使用参考帧、运动索引和子像素内插滤波器,可以生成预测块。另外,可以从压缩的比特流中对残差进行解码。可以将残差添加到预测块中以重构所述块。

词语“示例”或“示例性”在本文中用来表示充当示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为比其他方面或设计更优选或更具优势。而是,词语“示例”或“示例性”的使用意在以具体风格呈现概念。如在本申请中使用的,术语“或”意在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有规定或从上下文可以清楚地看出,否则“x包括a或b”意在表示自然包括性排列中的任一个。也就是说,如果x包括a;x包括b;或x包括a和b两者,则在上述实例中的任一个下均满足“x包括a或b”。另外,如在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为表示“一个或多个”,除非另有规定或从上下文清楚地指向单数形式。此外,除非如此描述,否则贯穿全文使用术语“实施例”或“一种实施例”或“实施方式”或“一种实施方式”并不意在表示相同的实施例或实施方式。如本文所使用的,术语“确定”和“识别”或它们的任何变化形式包括使用图1中示出的设备中的一个或多个以任何方式进行选择、查明、计算、查找、接收、确定、建立、获得或以其他方式进行识别或确定。

此外,为了简化解释,虽然本文的附图和描述可以包括步骤或阶段的序列或系列,但是本文所公开的方法或过程的要素可以以各种顺序发生和/或同时发生。另外,本文所公开的方法的要素可以与本文未明确呈现和描述的其他要素一起发生。此外,可能不需要本文描述的方法的所有要素来实现根据所公开的主题的方法或过程。

传输站(诸如,计算和通信设备100a)和/或接收站(诸如,计算和通信设备100b)的实施方式,以及上面存储的和/或由其实施的算法、方法、指令、可实行指令等可以在硬件、软件或它们的任何组合来实现。硬件可以包括例如,计算机、知识产权(ip)核心、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应被理解为单独地或组合地涵盖前述硬件中的任一个。可互换地使用术语“信号”和“数据”。此外,传输站和接收站的各部分不一定必须以相同的方式实现。

此外,在一种实施方式中,例如,可以使用计算机程序来实现传输站或接收站,该计算机程序在被执行时实施本文所述的相应方法、算法和/或指令中的任一个。另外或替代地,例如,可以利用特殊用途计算机/处理器,该特殊用途计算机/处理器可以包含用于实施本文所描述的方法、算法或指令中的任一个的专业的硬件。

传输站和接收站可以例如在实时视频系统中的计算机上实现。替代地,传输站可以在服务器上实现,而接收站可以在与服务器分开的设备(诸如,手持式通信设备)上实现。在该实例中,传输站可以使用编码器400将内容编码成编码的视频信号,并且将编码的视频信号传输至通信设备。继而,通信设备然后可以使用解码器500对编码的视频信号进行解码。替代地,通信设备可以对本地存储在通信设备上的内容进行解码,例如未由传输站传输的内容。其他合适的传输站实施方案和接收站实施方案也是可用的。例如,接收站可能通常是固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。

此外,所有或部分实施方式可采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、通信或输送程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。其他合适的介质也可用。

已经描述了上述实施方式,以便允许对本申请的容易理解而不是限制性的。相反,本申请覆盖了包括在所附权利要求的范围内的各种修改和等效布置,该范围应被赋予最宽泛的解释,以便涵盖如法律所容许的所有此类修改和等效结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1