用于比特率减少的视频流自适应滤波的制作方法

文档序号:26013089发布日期:2021-07-23 21:34阅读:74来源:国知局
用于比特率减少的视频流自适应滤波的制作方法

相关申请的交叉引用

本公开要求2018年12月24日提交的美国临时申请no.62/784,626的权益,其全部公开内容通过引用合并于此。



背景技术:

数字视频流可以使用帧或静止图像的序列来表示视频。数字视频能够被用于各种应用,包括例如视频会议、高清晰度视频娱乐、视频广告或用户生成的视频共享。数字视频流可以包含大量数据并且消耗计算设备的大量计算或通信资源以进行视频数据的处理、传输或存储。已经提出各种方法来减少视频流中的数据量,包括编码或者解码技术。



技术实现要素:

根据本公开的实施方式,一种用于将输入视频流编码为输出比特流的方法包括将所述输入视频流的第一副本编码为参考比特流。该方法进一步包括将所述输入视频流和所述参考比特流比较,以确定所述参考比特流的第一失真值和第一比特率。该方法进一步包括对于多个候选滤波器中的每个候选滤波器:将该候选滤波器应用于所述输入视频流的第二副本的每一帧,以产生所述输入视频流的滤波的第二副本;将所述输入视频流的滤波的第二副本编码为候选比特流;将所述输入视频流和候选比特流进行比较,以确定所述候选比特流的第二失真值和第二比特率;以及基于所述第一失真值与所述第二失真值之间的差以及基于所述第一比特率与所述第二比特率之间的差,确定该候选滤波器的成本值。该方法进一步包括将与具有成本值中的最低成本值的候选滤波器相对应的候选比特流选择为所述输出比特流。该方法进一步包括输出或存储所述输出比特流。

在该方法的一些实施方式中,使用遗传算法、梯度下降算法或另一种非线性优化技术中的至少一种来获得所述候选滤波器。

在该方法的一些实施方式中,将给定候选滤波器应用于所述输入视频流的第二副本的给定帧以产生所述输入视频流的滤波的第二副本包括:将所述给定帧内的值从空间域变换为频域;变换后,将所述给定候选滤波器应用于所述给定帧的每个块,以产生滤波的频域值;以及将所述滤波的频域值从频域逆变换为空间域。

在该方法的一些实施方式中,将所述给定候选滤波器应用于所述帧的每个块以产生所述滤波的频域值包括使用所述给定候选滤波器对所述帧的重叠块区域进行去噪。

在该方法的一些实施方式中,所述重叠块区域是半重叠块区域。

在该方法的一些实施方式中,确定所述多个候选滤波器中的给定候选滤波器的成本值包括:通过对所述第一失真值与所述第二失真值之间的差应用权重来计算加权值;以及通过从所述第一比特率与所述第二比特率之间的差中减去所述加权值来确定所述成本值。

在该方法的一些实施方式中,基于所述第二失真值的目标来定义所述权重。

根据本公开的实施方式,一种用于将输入视频流编码为输出比特流的装置包括存储器以及处理器,该处理器被配置为执行存储在所述存储器中的指令。该指令包括将所述输入视频流的第一副本编码为参考比特流的指令。该指令进一步包括将所述输入视频流和所述参考比特流比较,以确定所述参考比特流的第一失真值和第一比特率的指令。该指令进一步包括用于以下的指令:对于多个候选滤波器中的每个候选滤波器:将该候选滤波器应用于所述输入视频流的第二副本的每一帧,以产生所述输入视频流的滤波的第二副本;将所述输入视频流的滤波的第二副本编码为候选比特流;将所述输入视频流和候选比特流进行比较,以确定所述候选比特流的第二失真值和第二比特率;以及基于所述第一失真值与所述第二失真值之间的差以及基于所述第一比特率与所述第二比特率之间的差,确定该候选滤波器的成本值。该指令进一步包括将与具有成本值中的最低成本值的候选滤波器相对应的候选比特流选择为所述输出比特流的指令。该指令进一步包括输出或存储所述输出比特流的指令。

在该装置的一些实施方式中,使用遗传算法、梯度下降算法或另一种非线性优化技术中的至少一种来获得所述候选滤波器。

在该装置的一些实施方式中,将给定候选滤波器应用于所述输入视频流的第二副本的给定帧以产生所述输入视频流的滤波的第二副本的指令包括用于执行下述操作的指令:将所述给定帧内的值从空间域变换为频域;变换后,将所述给定候选滤波器应用于所述给定帧的每个块,以产生滤波的频域值;以及将所述滤波的频域值从频域逆变换为空间域。

在该装置的一些实施方式中,将所述给定候选滤波器应用于所述帧的每个块以产生所述滤波的频域值的指令包括用于执行下述操作的指令:使用所述给定候选滤波器对所述帧的重叠块区域进行去噪。

在该装置的一些实施方式中,所述重叠块区域是半重叠块区域。

在该装置的一些实施方式中,确定所述多个候选滤波器中的给定候选滤波器的成本值的指令包括用于执行下述操作的指令:通过对所述第一失真值与所述第二失真值之间的差应用权重来计算加权值;以及通过从所述第一比特率与所述第二比特率之间的差中减去所述加权值来确定所述成本值。

在该装置的一些实施方式中,基于所述第二失真值的目标来定义所述权重。

根据本公开的实施方式,一种用于将输入视频流编码为输出比特流的编码器执行包括将所述输入视频流的第一副本编码为参考比特流的操作。该操作进一步包括将所述输入视频流和所述参考比特流比较,以确定所述参考比特流的第一失真值和第一比特率。该操作进一步包括对于多个候选滤波器中的每个候选滤波器:将该候选滤波器应用于所述输入视频流的第二副本的每一帧,以产生所述输入视频流的滤波的第二副本;将所述输入视频流的滤波的第二副本编码为候选比特流;将所述输入视频流和候选比特流进行比较,以确定所述候选比特流的第二失真值和第二比特率;以及基于所述第一失真值与所述第二失真值之间的差以及基于所述第一比特率与所述第二比特率之间的差,确定该候选滤波器的成本值。该操作进一步包括将与具有成本值中的最低成本值的候选滤波器相对应的候选比特流选择为所述输出比特流。该操作进一步包括输出或存储所述输出比特流。

在该编码器的一些实施方式中,使用遗传算法、梯度下降算法或另一种非线性优化技术中的至少一种来获得所述候选滤波器。

在该编码器的一些实施方式中,将给定候选滤波器应用于所述输入视频流的第二副本的给定帧以产生所述输入视频流的滤波的第二副本包括:将所述给定帧内的值从空间域变换为频域;变换后,将所述给定候选滤波器应用于所述给定帧的每个块,以产生滤波的频域值;以及将所述滤波的频域值从频域逆变换为空间域。

在该编码器的一些实施方式中,将所述给定候选滤波器应用于所述帧的每个块以产生所述滤波的频域值包括使用所述给定候选滤波器对所述帧的重叠块区域进行去噪。

在该编码器的一些实施方式中,所述重叠块区域是半重叠块区域。

在该编码器的一些实施方式中,确定所述多个候选滤波器中的给定候选滤波器的成本值包括:通过对所述第一失真值与所述第二失真值之间的差应用权重来计算加权值;以及通过从所述第一比特率与所述第二比特率之间的差中减去所述加权值来确定所述成本值。

在该编码器的一些实施方式中,基于所述第二失真值的目标来定义所述权重。

在下述实施方式、所附权利要求和附图的详细描述中公开了本公开的这些和其它方面。

附图说明

本文的描述参考下文描述的附图,其中,贯穿若干视图,相似的附图标记指代相似的部分。

图1是视频编码和解码系统的示例的示意图。

图2是可以实现发送站或接收站的计算设备的示例的框图。

图3是待编码并随后解码的视频流的示例的图。

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

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

图6是将自适应滤波用于减少比特率的视频流处理流水线的示例的框图。

图7是使用自适应滤波,为选择输出比特流而执行的操作的示例的框图。

图8a-b是使用自适应滤波,将视频流编码为输出比特流的技术的示例的流程图。

图9是基于为候选滤波器确定的成本值来选择输出比特流的技术的示例的流程图。

具体实施方式

视频压缩方案可以包括将相应图像或帧分解成诸如块的较小的部分,并且使用限制输出中对相应块所包括的信息的技术生成压缩比特流。压缩比特流可以被解码,以从有限的信息重新创建源图像。典型的视频压缩技术包括减少视频流的比特率,诸如减少视频托管和服务平台的传输成本。

但是,减少视频流的比特率通常会导致质量损失,从而使后来解压缩的视频流的质量低于使用压缩技术处理的原始视频流的质量。例如,在压缩视频流期间可能引入不期望的块伪像。在一些情况下,那些块伪像可能会在视频流解压缩后保留在视频流中。

在一些情况下,可以在使用视频压缩方案压缩视频流之前对视频流执行预处理。执行预处理可以导致提高固定比特率视频流的视频质量,或最小化固定质量视频流的比特率。例如,预处理可以包括在将视频流编码为输出比特流之前,对视频流应用滤波器以去除噪声并减少视频流内的伪像(例如,块、条带、振铃、时间闪烁等)。然而,这种基于滤波器的方法使用固定滤波器,其取决于视频流的选定比特率和/或选定质量。因此,如在视频流预处理中使用的典型的固定滤波器不能最小化比特率或最大化质量。

此外,由这种固定滤波器使用的参数取决于视频流的帧内的图像块的内容。这样,与从图像块的同质区域中去除伪像时相比,典型的固定滤波器通常在从视频边缘纹理中去除伪像时更有用。然而,用于估计固定滤波器参数的常规方法经常在视频流的帧内引起不期望的失真,并且还可能以复杂且非线性的方式影响压缩过程。

本发明的实施方式通过使用自适应滤波来预处理视频流以减少比特率来解决诸如此类的问题。将输入视频流的第一副本编码为参考比特流。将多个候选滤波器中的每一个应用于输入视频流的第二副本的每个帧,以产生输入视频流的滤波的第二副本。将滤波的第二副本编码为候选比特流。基于候选比特流和参考比特流之间的失真值和比特率差来确定候选滤波器的成本值。将与具有成本值中的最低成本值的候选滤波器相对应的候选比特流选择为输出比特流,然后输出或存储该比特流。使用自适应滤波器并在编码之前处理输入视频流可能会导致比特率减少,从而提高压缩、解压缩和其他性能。

用于视频流自适应滤波以减少比特率的技术的更多细节首先参考可以实现它们的系统来在本文中描述。图1是视频编码和解码系统100的示例的示意图。发送站102可以是例如诸如在图2中所述的、具有硬件的内部配置的计算机。然而,发送站102的其它实施方式是可能的。例如,发送站102的处理可以分布在多个设备中。

网络104可以连接发送站102和接收站106以编码和解码视频流。具体地,可以在发送站102编码视频流,并且可以在接收站106解码编码后的视频流。网络104可以是例如因特网。网络104也可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、蜂窝电话网络,或将视频流从发送站102传送到该示例中的接收站106的任何其它手段。

在一个示例中,接收站106可以是诸如图2中所述的、具有硬件的内部配置的计算机。然而,接收站106的其它合适的实施方式是可能的。例如,接收站106的处理可以分布在多个设备中。

视频编码和解码系统100的其它实施方式是可能的。例如,一个实施方式可以省略网络104。在另一实施方式中,可以对视频流进行编码,并且然后存储以供在稍后的时间向接收站106或具有存储器的任何其它设备的传输。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或一些通信路径)接收编码视频流并且存储该视频流以供以后解码。在示例性实施方式中,实时传输协议(rtp)被用于通过网络104编码视频的传输。在另一实施方式中,可以使用除rtp以外的传输协议(例如,基于超文本传输协议(基于http)的视频流协议)。

例如,当用在视频会议系统中时,发送站102和/或接收站106可以包括如下所述既对视频流进行编码又对视频流进行解码的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码视频比特流以解码和查看,并且进一步对他或者她自己的视频比特流进行编码并发送到视频会议服务器以由其它参与者解码和查看。

在一些实施方式中,视频编码和解码系统100可替代地用于对视频数据以外的数据进行编码和解码。例如,视频编码和解码系统100可以用于处理图像数据。图像数据可以包括来自图像的数据块。在这样的实施方式中,发送站102可以被用来对图像数据进行编码,而接收站106可以被用来对图像数据进行解码。

可替代地,接收站106可以表示存储编码的图像数据以供以后(诸如在从发送站102接收到编码的或预编码的图像数据之后)使用的计算设备。作为又一可替代方案,发送站102可以表示诸如在将解码的图像数据发送到接收站106以显示之前对图像数据进行解码的计算设备。

图2是可以实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实现图1的发送站102和接收站106中的一者或两者。计算设备200可以以包括多个计算设备的计算系统的形式,或者以一个计算设备(例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等)的形式。

计算设备200中的处理器202可以是常规的中央处理单元。可替代地,处理器202可以是能够操纵或处理现有的或此后开发的信息的另一类型的设备或多个设备。例如,尽管所公开的实施方式可以利用如所示的一个处理器(例如,处理器202)来实施,但是可以通过使用一个以上处理器来实现速度和效率上的优势。

在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。然而,可以将其它合适类型的存储设备用作存储器204。存储器204可以包括由处理器202使用总线212来访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括允许处理器202执行本文所述的技术的至少一个程序。例如,应用程序210可以包括应用1至应用n,这些应用进一步包括执行本文所述的技术的视频和/或图像代码化应用。

计算设备200还可以包括辅助存储214,该辅助存储214例如可以是与移动计算设备一起使用的存储卡。因为视频通信会话可能包含大量信息,所以可以将它们全部或部分地存储在辅助存储214中并且视需要加载到存储器204中以进行处理。

计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与可操作来感测触摸输入的触敏元件组合在一起的触敏显示器。显示器218可以经由总线212耦合到处理器202。除了显示器218之外或作为显示器218的替代方案,还可以提供允许用户对计算设备200进行编程或以其它方式使用计算设备200的其它输出设备。当输出设备是显示器或包括显示器时,可以以各种方式实现该显示器,包括通过液晶显示器(lcd)、阴极射线管(crt)显示器、或发光二极管(led)显示器,诸如有机led(oled)显示器。

计算设备200还可以包括图像感测设备220或与之通信,该图像感测设备220例如为相机或现存的或此后开发的可以感测图像(诸如操作计算设备200的用户的图像)的任何其它图像感测设备220。图像感测设备220可以被定位为使得它朝向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置为使得视场包括与显示器218直接相邻并且显示器218从其中可见的区域。

计算设备200还可以包括声音感测设备222或与之通信,该声音感测设备222例如为麦克风或现存的或此后开发的可以感测计算设备200附近的声音的任何其它声音感测设备。声音感测设备222可以被定位为使得它朝向操作计算设备200的用户,并且可以被配置成接收由该用户在该用户操作计算设备200的同时发出的声音,例如语音或其它话语。

尽管图2将计算设备200的处理器202和存储器204描绘为被集成到一个单元中,但是可以利用其它配置。处理器202的操作可以跨可以直接或跨局域网或其它网络耦合的多个机器(其中,单独机器可以具有一个或多个处理器)分布。存储器204可以跨多个机器(诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器)分布。

尽管在此被描绘为一个总线,但是计算设备200的总线212可以包括多个总线。另外,辅助存储214可以直接耦合到计算设备200的其它组件或者可以经由网络访问并且可以包括集成单元(诸如存储卡)或多个单元(诸如多个存储卡)。因此可以以各种广泛的配置实现计算设备200。

图3是要被编码并随后被解码的视频流300的示例的图。视频流300包括视频序列302。在下一阶段,视频序列302包括多个相邻帧304。虽然将三个帧描述为相邻帧304,但是视频序列302可以包括任何数量的相邻帧304。然后可以将相邻帧304进一步细分成单独帧,例如,帧306。

在下一阶段,可以将帧306分成一系列平面或片段308。例如,片段308可以是例如允许并行处理的帧的子集。片段308也可以是可以将视频数据分离成分离颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对片段308进行采样。

无论帧306是否被划分成片段308,都可以将帧306进一步细分成块310,所述块310可以包含与例如帧306中的16x16像素相对应的数据。块310还可以被布置成包括来自像素数据的一个或多个片段308的数据。块310还可以具有任何其它合适的大小,诸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或更大。除非另有说明,否则术语块和宏块在本文中可互换使用。

图4是编码器400的示例的框图。如上所述,可以诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序来在发送站102中实现编码器400。计算机软件程序可以包括机器指令,这些机器指令当由诸如处理器202的处理器执行时,使发送站102以在图4中描述的方式对视频数据进行编码。也可以将编码器400实现为包括在例如发送站102中的专用硬件。在一个特别可取的实施方式中,编码器400是硬件编码器。

编码器400具有在(由实线连接线示出的)正向路径中执行各种功能以将视频流300用作输入来产生编码或压缩比特流420的下述阶段:帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408。编码器400还可以包括(由虚线连接线示出的)重构路径以重构用于对将来块进行编码的帧。在图4中,编码器400具有在重构路径中执行各种功能的下述阶段:去量化阶段410、逆变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其它结构变型可以被用来对视频流300进行编码。

在一些情况下,由编码器400执行的功能可以在对视频流300进行滤波之后发生。也就是说,在编码器400接收到视频流300之前,根据本公开的一种或多种实施方式视频流300可以经历预处理。可替代地,在继续执行参考图4描述的功能之前,诸如在帧内/帧间预测阶段402处理视频流300之前,编码器400本身可以对视频流300执行这样的预处理。

当在执行预处理后呈现视频流300以用于编码时,可以以块为单位处理相应相邻帧304,诸如帧306。在帧内/帧间预测阶段402处,可以使用帧内预测(也被称为帧内预测)或帧间预测(也被称为帧间预测)来对相应块进行编码。在任何情况下,可以形成预测块。在帧内预测的情况下,预测块可以由当前帧中的先前已经被编码和重构的样本形成。在帧间预测的情况下,预测块可以由一个或多个先前构建的参考帧中的样本形成。

接下来,可以在帧内/帧间预测阶段402处从当前块减去预测块以产生残差块(也被称为残差)。变换阶段404使用基于块的变换来将残差变换成例如频域中的变换系数。量化阶段406使用量化器值或量化阶段来将变换系数转换成离散量子值,这些离散量子值被称为量化变换系数。例如,可以将变换系数除以量化器值并截断。

然后由熵编码阶段408熵编码量化变换系数。然后将经熵编码的系数与用于对块进行解码的其它信息(可以包括例如语法元素,诸如被用于指示所用的预测类型、变换类型、运动矢量、量化器值等)一起被输出到压缩比特流420。可以使用诸如可变长度代码化(vlc)或算术代码化的各种技术来对压缩比特流420进行格式化。压缩比特流420也可以被称为编码视频流或编码视频比特流,并且在本文中将互换地使用这些术语。

(由虚线连接线示出的)重构路径可以用于确保编码器400和(下文参考图5所述的)解码器500都使用相同的参考帧来对压缩比特流420进行解码。重构路径执行与在(下文参考图5所述的)解码过程期间进行的功能类似的功能,包括在去量化阶段410处对量化变换系数进行去量化和在逆变换阶段412处对去量化变换系数进行逆变换以产生导数残差块(也称作导数残差)。

在重构阶段414处,可以将在帧内/帧间预测阶段402处预测的预测块添加到导数残差以创建重构块。环路滤波阶段416可以将环内滤波器或其他滤波器应用于重构块,以减少诸如块伪像的失真。可以在环路滤波阶段416处应用的滤波器的示例包括但不限于:如在avc、hevc、vp9和av1中的解块滤波器;如在av1中的约束方向增强滤波器;以及如在av1中的环路恢复滤波器。

编码器400的其它变型可以用于对压缩比特流420进行编码。在一些实施方式中,基于非变换的编码器可以对某些块或帧直接对残差信号进行量化而无需变换阶段404。在一些实施方式中,编码器可以使量化阶段406和去量化阶段410被组合成公共阶段。

图5是解码器500的示例的框图。可以例如通过提供存储在存储器204中的计算机软件程序来在接收站106中实现解码器500。计算机软件程序可以包括机器指令,这些机器指令当由诸如处理器202的处理器执行时,使接收站106以在图5中描述的方式对视频数据进行解码。也可以以例如发送站102或接收站106中包括的硬件来实现解码器500。

与上文讨论的编码器400的重构路径类似,解码器500在一个示例中包括执行各种功能以从压缩比特流420产生输出视频流516的以下阶段:熵解码阶段502、去量化阶段504、逆变换阶段506、帧内/帧间预测阶段508、重构阶段510、环路滤波阶段512和后置滤波器阶段514。解码器500的其它结构变型可以用于对压缩比特流420进行解码。

当呈现压缩比特流420以进行解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码以产生量化变换系数集合。去量化阶段504(例如,通过将量化变换系数乘以量化器值)对量化变换系数进行去量化,并且逆变换阶段506对去量化变换系数进行逆变换以产生导数残差,该导数残差可以与由编码器400中的逆变换阶段412创建的导数残差相同。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测阶段508来创建与在编码器400中(例如在帧内/帧间预测阶段402处)创建的相同的预测块。

在重构阶段510处,可以将预测块添加到导数残差以创建重构块。可以将环路滤波阶段512应用于重构块以减少块伪像。可以在环路滤波阶段512处应用的滤波器的示例包括但不限于:如avc、hevc、vp9和av1中的解块滤波器;如av1中的约束方向增强滤波器;以及如av1中的环路恢复滤波器。

可以对重构块应用其它滤波。在该示例中,后置滤波器阶段514被应用于重构块以减少块失真,并且结果被输出为输出视频流516。也可以将输出视频流516称为解码视频流,并且将在本文中互换地使用这些术语。

解码器500的其他变型可以用于解码压缩比特流420。在一些实施方式中,解码器500可以产生输出视频流516而无需后置滤波器阶段514。

图6是使用自适应滤波来减少比特率的视频流处理流水线600的示例的框图。流水线600可以包括编码器(例如,图4所示的编码器400)或结合编码器使用。在流水线600的开始,接收输入视频流602。输入视频流602可以例如是图4所示的视频流300。复制输入视频流602,以得到第一视频流副本604和第二视频流副本606。最初,第一视频流副本604和第二视频流副本606表示输入视频流602的相同副本。

在流水线600的编码阶段608,第一视频流副本604被编码为参考比特流610。编码阶段608可以包括编码器(例如,编码器400)的一个或多个阶段,在这些阶段处,处理第一视频流副本604的数据。例如,编码阶段608可以至少包括预测阶段、变换阶段、量化阶段和熵代码化阶段(例如,图4所示的帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408)。

参考比特流610是压缩比特流,诸如从图4所示的编码阶段输出的压缩比特流420。使用定义的转码设置,例如恒定质量设置、恒定速率因子设置或两者,将第一视频流副本604编码为参考比特流610。可以将输入视频流602和参考比特流610进行比较,以确定参考比特流610的失真值和比特率。该失真值表示通过将输入视频流的第一副本编码为参考比特流而引入到输入视频流的失真量的度量。比特率表示每时间单位(例如,秒)用于发送参考比特流的比特数的度量。

可以使用多种误差计算技术之一来确定参考比特流610的失真值。例如,失真值可以是峰值信噪比(psnr)度量、均方误差(mse)度量、结构相似性指数(ssi)度量或使用不同误差计算技术确定的另一度量。如适用,可以使用常规方法来确定本文公开的psnr、mse、ssi或其他失真度量。

在流水线600的自适应滤波阶段612处,处理第二视频流副本606。自适应滤波阶段612包括滤波器应用阶段614、编码阶段616和比特流选择阶段618。滤波器应用阶段614和编码阶段616包括对多个候选滤波器中的每一个重复的操作,诸如将第二视频流副本606的不同副本编码为候选比特流,其中,每个候选比特流对应于候选滤波器之一并使用候选滤波器之一来产生。比特流选择阶段618包括在产生候选比特流之后执行的操作,诸如将那些候选比特流之一选择为输出比特流620。

在滤波器应用阶段614,将候选滤波器应用于第二视频流副本606的每个视频帧。将候选滤波器应用于第二视频流副本606的每个视频帧导致第二视频流副本606的至少一些数据改变。例如,应用候选滤波器可以在第二视频流副本606内引入许多模糊伪像。在另一个示例中,应用候选滤波器可以在第二视频流副本606内引入一定量的噪声。在又一示例中,应用候选滤波器会增强第二视频流副本606内的一些或所有图像对象的锐度。

候选滤波器是大小为mxn的二维滤波器,其中,m和n可以相同数或不同数。每个候选滤波器可以具有相同的大小。可替代地,一些候选滤波器可以具有彼此不同的大小。作为另一替代方案,在一些情况下,每个候选滤波器可以具有不同的大小。

候选滤波器包括多个系数。候选滤波器的系数的具体数量取决于候选滤波器的大小。例如,大小为32x32的滤波器包括1,024个系数。候选滤波器的每个系数具有范围从0到1(含0和1)的值。因此,候选滤波器的系数的值表示平滑权重,其被应用于第二视频流副本606的视频帧内的像素值。

可以使用非线性优化技术来获得一些或全部候选滤波器。例如,可以使用遗传算法、梯度下降算法或另一种非线性优化技术中的一个或多个来获得一些或所有候选滤波器。可替代地,可以从定义应用于第二视频流副本606的候选滤波器的列表中获得候选滤波器。例如,查找表、对象符号文件或其他数据源可以指示要使用的候选滤波器。

应用候选滤波器会导致第二视频流副本606的质量下降。这样,在应用候选滤波器之后,所得到的滤波的第二视频流副本具有比第二视频流副本606低的质量。由应用滤波器引起的质量下降可能与人类观看者难以察觉或相对难以察觉的视频数据有关。

每个候选滤波器可以对应于对第二视频流副本606内的数据进行的不同类型的改变。在一些情况下,两个或更多候选滤波器可以对应于相同类型的改变,但是表示不同的其大小或程度。例如,第一和第二滤波器都可以对应于添加模糊伪像,其中,第一滤波器添加第一模糊量的伪像,而第二滤波器添加第二模糊量的伪像。在另一示例中,第一滤波器可以向第二视频流副本606的每个视频帧添加第一数量的模糊伪像,而第二滤波器可以向第二视频流副本606的每个视频帧添加第二数量的模糊伪像。

在编码阶段616,在通过将候选滤波器应用于第二视频流副本606来产生滤波的第二视频流副本之后,将滤波的第二视频流副本编码为候选比特流。编码阶段616可以包括编码器(例如,编码器400)的一个或多个阶段,在这些阶段处,处理滤波的第二视频流副本的数据。例如,编码阶段616可以至少包括预测阶段、变换阶段、量化阶段和熵代码化阶段(例如,帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408)。

对每个滤波的第二视频流副本产生候选比特流。候选比特流是压缩比特流,诸如压缩比特流420。可以使用定义的转码设置,例如,恒定质量设置、恒定速率因子设置或两者,将滤波的第二视频流副本编码为候选比特流。可替代地,可以使用对应的候选滤波器的转码设置,将滤波的第二视频流副本编码为候选比特流。

在比特流选择阶段618,在产生候选比特流之后,将那些候选比特流之一选择为输出比特流620,其可以例如被输出或存储以用于进一步处理(例如,使用诸如图5所示的解码器500的解码器)。基于对每个候选比特流确定的成本值来选择输出比特流620。

为了确定候选比特流的成本值,首先将候选比特流与输入视频流602进行比较,诸如以确定候选比特流的失真值和比特率。失真值表示通过应用对应的候选滤波器并且随后将滤波的第二视频流副本编码为参考比特流而引入到第二视频流副本606的失真量的度量。比特率表示每时间单位(例如,秒)用于发送候选比特流的比特数的度量。可以使用psnr、mse、ssi或另一种失真度量技术来确定每个候选比特流的失真值。

在确定了候选比特流的失真值和比特率之后,可以基于参考比特流610的失真值与候选比特流的失真值之间的差并且进一步基于参考比特流610的比特率与候选比特流的比特率之间的差,确定该候选比特流的成本值。在对每个候选比特流确定了成本值之后,将具有成本值中的最低成本值的候选比特流选择为输出比特流620。

600的其他变体可以用于将输入视频流602编码为输出比特流620。如本文所述,可以诸如通过将候选滤波器单独地应用于第二视频流副本606,然后再将所得到的滤波的第二视频流副本单独地编码为候选比特流,迭代地产生候选比特流。然而,在一些实施方式中,可以在由滤波器应用阶段614产生所有滤波的第二视频流副本之后产生候选比特流。

例如,代替采用每个候选滤波器,将其应用于第二视频流副本606,然后将所得到的滤波的第二视频流副本编码为候选比特流,滤波器应用阶段614可以对一些或全部候选滤波器来产生滤波的第二视频流副本。在滤波器应用阶段614已经完成其处理之后,编码阶段616可以接收每个滤波的第二视频流副本,并且将它们中的每一个编码为相应候选比特流。

在一些实施方式中,滤波器应用阶段614、编码阶段616或比特流选择阶段618中的一个或多个可以在自适应滤波阶段612的外部。例如,自适应滤波阶段可以限于将候选滤波器应用于第二视频流副本606的单独副本。在这样的实施方式中,编码阶段616的输入可以是自适应滤波阶段612的输出。

在一些实现中,流水线600可以包括与比特流选择阶段618分离的成本值确定阶段。例如,成本值确定阶段可以执行上述参考比特流选择阶段618所述的操作,诸如用于确定候选滤波器和对应候选比特流的成本值。成本值确定阶段可以是自适应滤波阶段612的一部分,或者可以在流水线600中的自适应滤波阶段612之后发生。

在一些实施方式中,编码阶段608和编码阶段616可以由流水线600的单个编码阶段代替。例如,编码阶段可以将第一视频流副本604接收为输入并且输出参考比特流610。类似地,编码阶段可以接收由滤波器应用阶段614产生的滤波的第二视频流副本,并且输出候选比特流,诸如用于在比特流选择阶段618处进一步处理。

图7是使用自适应滤波,为选择输出比特流而执行的操作的示例的框图。例如,参考图7所示和所述的操作可以表示在图6所示的滤波器应用阶段614、编码阶段616和/或比特流选择阶段618中的一个或多个处执行的操作。执行参考图7所示和所述的操作以将输入视频流编码为输出比特流700,诸如通过使用表示输入视频流的副本的视频流副本702,以产生被选择为输出比特流700的候选比特流。例如,输出比特流700和视频流副本702可以分别是图6所示的输出比特流620和第二视频流副本606。

处理的第一部分包括变换阶段704、候选滤波器应用阶段706和逆变换阶段708,其执行产生滤波的视频流副本710的操作。即,执行处理的第一部分以将候选滤波器应用于视频流副本702的每一帧,以产生滤波的视频流副本710。

对于视频流副本702的给定帧,在变换阶段704,将帧的每个块从空间域变换为频域。变换帧的给定块可以包括对块内的像素值应用二维快速傅立叶变换或类似变换。在将像素值变换为频域之后,在候选滤波器应用阶段706,应用候选滤波器以产生滤波的频域值。然后,在逆变换阶段708对滤波的频域值进行逆变换,以将那些值返回到空间域。逆变换的输出是滤波的视频流副本710。

将候选滤波器应用于视频流副本702的给定帧包括将帧划分为大小为pxq的多个重叠块,其中,p和q可以是相同数或不同数。然后,将候选滤波器应用于帧的重叠块区域,诸如以对那些块区域进行去噪。重叠块区域重叠可以是半重叠、四分之一重叠或另一量的重叠。可以以光栅顺序或另一顺序,将去噪滤波器顺序地应用于帧的重叠块区域。

例如,对于大小为1,024x1,024的帧和大小为32x32的去噪滤波器,首先将滤波器应用于从像素位置[0,0]到[312,312]的帧的块区域。向其应用去噪滤波器的帧的下一个块区域是从像素位置[16,0]到[478,312]。这将重复直到在从像素位置[992,992]到[10,234,10,234]的块区域处的最终应用为止。可替代地,去噪滤波器的大小和/或相邻块区域重叠的程度可以随每个块区域而改变。例如,重叠的程度可以被定义为每个独立方向上,具有在0到n-1之间变化的参数值的特定滞后。

该处理的第二部分包括编码阶段712,在该编码阶段712,将滤波的视频流副本710编码为候选比特流714。编码阶段712可以例如是图6中所示的编码阶段616。例如,编码阶段712可以执行用于处理滤波的视频流副本710的数据以产生候选比特流714的一个或多个操作。

处理的第三部分包括比特流比较阶段716和成本值确定阶段718。在比特流比较阶段716,将候选比特流714和输入视频流进行比较以确定候选比特流714的失真值和比特率。在成本值确定阶段718,使用候选比特流714的失真值和比特率来确定候选比特流714(并因此针对用于产生候选比特流714的候选滤波器)的成本值。

例如,可以将候选比特流714(以及因此针对对应的候选滤波器)的成本值计算为:

e(f)=b(t′)-α(d(t′)-d(t))

其中,f是候选滤波器,e(f)是成本值,t是参考比特流(例如,图6所示的参考比特流610),t’是候选比特流714,b(t’)是t’的比特率,d(t’)是为t’测得的失真值,d(t)是对t’测得的失真值,以及α是应用于失真值d(t’)和d(t)的差的权重。可以基于视频流副本702的目标比特率来定义α的值。例如,可以凭经验识别出导致某些失真值的α的值。

在一些情况下,参考比特流的失真值与候选比特流714的失真值之间的差可以是非线性的。即,那些失真值之间的差是否导致显著的质量或比特率减少可以取决于该差落入的失真范围。例如,在那些失真值每一个在30和45分贝之间的情况下,它们之间的差最为明显。小于25分贝的差会导致对视频流的外观产生负面影响的显著的质量损失。高于50分贝的差可能会导致人类观看者难以察觉的质量提升。因此,在保持高于50分贝的同时减小失真值可以允许更深的比特率减少。但是,由于质量差在50分贝以下越来越明显,因此存在较少的机会减少比特率而不影响视频流质量。

在为候选比特流714确定了成本值之后,确定该成本值是否是到目前为止对候选比特流计算出的最低成本值。如果是这样,则将候选比特流714存储为最佳候选比特流。否则,候选比特流714被丢弃或以其他方式不被进一步使用。

例如,可以对使用相应的n个候选滤波器产生的n个候选比特流来迭代地确定成本值。在对给定候选比特流确定了给定的成本值之后,可以将该成本值与表示对到目前为止已经由成本值确定阶段718处理的n-x个候选比特流确定的最低成本值的所存储的成本值进行比较。如果给定的成本值低于所存储的成本值,则存储该候选比特流以替换先前存储的候选比特流。在处理了最终(即,第n个)候选比特流之后,将所存储的候选比特流选择为输出比特流700。

图7中所示的处理的其他变型可以被用来选择输出比特流700。在一些实施方式中,非线性优化技术可以被用来获得候选滤波器。例如,可以使用遗传算法、梯度下降算法或另一种非线性优化技术中的一个或多个来获得一些或所有候选滤波器。在一些实施方式中,可以使用除非线性处理之外的优化操作来获得候选滤波器。例如,可以使用梯度距离函数、拉格朗日函数、线性搜索函数(例如,使用受限参数)等来获得候选滤波器。例如,利用线性搜索功能,可以以0.1或其他增量,将α的值从0逐步增加到1。这样,可以为α的每个逐步增量确定不同的候选比特流。

现在描述用于视频流自适应滤波以减少比特率的技术的更多细节。图8a-b是用于使用自适应滤波,将视频流编码为输出比特流的技术800的示例的流程图。图9是用于基于为候选滤波器确定的成本值来选择输出比特流的技术900的示例的流程图。

技术800和/或技术900可以被实现为例如软件程序,该软件程序可以由诸如发送站102或接收站106的计算设备执行。例如,软件程序可以包括机器可读指令,这些机器可读指令可以被存储在诸如存储器204或辅助存储214的存储器中并且当被诸如处理器202的处理器执行时,可以使计算设备执行技术800和/或技术900。可以使用专用硬件或固件来实现技术800和/或技术900。例如,硬件组件被配置为执行技术800和/或技术900。如上所述,一些计算设备可以具有多个存储器或处理器,并且可以使用多个处理器、存储器或两者分布技术800和/或技术900中所述的操作。

为了简化说明,技术800和技术900在本文中均被描绘和描述成一系列的步骤或操作。然而,根据本公开的步骤或操作可以按照各种顺序和/或同时发生。另外,可以使用本文中没有呈现和描述的其他步骤或操作。此外,可能并不需要所有所示的步骤或操作来实现根据所公开的主题的技术。

首先参考图8a-b,示出了用于使用自适应滤波,将输入视频流编码为输出比特流的技术800。在802,将输入视频流的第一副本编码为参考比特流。输入视频流的第一副本是输入视频流的相同副本。将输入视频流的第一副本编码为参考比特流可以包括使用编码器(例如,图4中所示的编码器400)来对输入视频流的第一副本的帧执行预测、变换、量化和熵代码化操作。

在804,比较输入视频流和参考比特流,以确定参考比特流的失真值和比特率。失真值表示通过将输入视频流的第一副本编码为参考比特流而引入到输入视频流的失真量的度量。比特率表示每单位时间(例如,秒)用于发送参考比特流的比特数的度量。

在806,将候选滤波器应用于输入视频流的第二副本以产生输入视频流的滤波的第二副本。每个输入视频流的滤波的第二副本对应于用于产生它的单个候选滤波器。将候选滤波器应用于输入视频流的第二副本包括,对输入视频流的第二副本的每个帧,首先将帧内的值从空间域变换为频域。变换之后,将候选滤波器应用于帧的每个块,以产生滤波的频域值。然后将滤波的频域值从频域逆变换为空间域。对每个帧的逆变换值表示输入视频流的滤波的第二副本的值。为一些或所有候选滤波器生成了输入视频流的滤波的第二副本。

在808,将输入视频流的滤波的第二副本编码为候选比特流。将输入视频流的滤波的第二副本编码为候选比特流可以包括使用编码器(例如,图4所示的编码器400)来对输入视频流的滤波的第二副本执行预测、变换、量化和熵代码化操作。

在810,为每个候选比特流确定失真值和比特率。通过将候选比特流与输入视频流进行比较来确定候选比特流的失真值和比特率。失真值表示通过应用对应的候选滤波器并随后将输入视频流的滤波的第二副本编码为候选比特流而引入到输入视频流的失真量的度量。比特率表示每时间单位(例如,秒)用于发送候选比特流的比特数的度量。

在812处,对每个候选比特流确定成本值,并因此对应用于输入视频流的第二副本的每个候选滤波器确定成本值。基于参考比特流的失真值与候选比特流的失真值之间的差并且进一步基于参考比特流的比特率与候选比特流的比特率之间的差来确定候选比特流的成本值。特别地,通过对参考比特流的失真值和候选比特流的失真值之间的差应用权重来计算加权值。然后可以通过从参考比特流的比特率与候选比特流的比特率之间的差中减去加权值来确定候选比特流的成本值。

在814,将具有成本值中的最低成本值的候选比特流选择为输入视频流的输出比特流。在下文中,参考图9描述包括通过迭代候选比特流的用于选择输出比特流的实施方式和示例。

在816,输出或存储输出比特流。例如,可以将输出比特流发送到解码器,诸如用于将输出比特流解码为输出视频流。在另一示例中,可以存储输出比特流,诸如用于以后使用。

在一些实施方式中,可以对单独候选滤波器执行且随后对后续候选滤波器重复关于技术800所述的一些或所有操作。例如,可以对每个候选滤波器单独且迭代地执行用于将候选滤波器应用于输入视频流的第二副本、将输入视频流的滤波的第二副本编码为候选比特流、确定候选比特流的失真值和比特率,以及确定候选比特流的成本值的操作。例如,在已经确定了用于第x个候选比特流的成本值之后,然后该技术可以继续进行以将第x+1个候选滤波器应用于输入视频流的第二副本,依此类推。

接下来参考图9,示出了用于基于为候选滤波器确定的成本值来选择输出比特流的技术900。在902处,接收输入视频流的副本。例如,输入视频流的副本可以是图7所示的视频流副本702。输入视频流的副本可以表示在编码器处接收到的输入视频流的副本。接收输入视频流的副本可以包括诸如自适应滤波阶段(例如,图6所示的自适应滤波阶段612)的编码器的计算方面接收输入视频流的副本。

在904,将第n个滤波器应用于输入视频流的副本的每个帧。第n个滤波器是可用于滤波输入视频流的副本的许多候选滤波器之一。对输入视频流的副本的每个帧应用第n个滤波器可以包括,对每个这样的帧,将给定帧内的值从空间域变换为频域,将给定候选滤波器应用于给定帧的每个块,从而产生滤波的频域值,然后将滤波的频域值从频域逆变换为空间域。

在906,对在将第n个滤波器应用于输入视频流的副本之后产生的候选比特流确定成本值。特别地,在将第n个滤波器应用于输入视频流的副本之后,将所得到的输入视频流的滤波的副本编码为候选比特流(例如,使用诸如图4所示的编码器400之类的编码器)。然后将输入视频流和候选比特流进行比较,以确定候选比特流的失真值和比特率。然后基于对候选比特流确定的失真值和比特率与对参考比特流确定的失真值和比特率之间的差来确定成本值。

在908,确定由应用第n个滤波器得到的成本值是否是对使用n个候选滤波器产生的候选比特流确定的最低成本值。例如,可以将由应用第n-x个滤波器以产生第n-x个候选比特流而得到的当前最低成本值存储在缓冲器或其他数据存储中。确定第n个候选比特流的成本值是否是最低成本值可以包括将该成本值与所存储的成本值进行比较。第n个候选比特流的成本值在其低于所存储的成本值的情况下是最低成本值。

在910,响应于确定第n个候选比特流的成本值是最低成本值,存储第n个候选比特流。存储第n个候选比特流包括将第n个候选比特流存储在缓冲器或其他数据存储中,以替换先前存储在其中的第n-x个候选比特流。例如,可以存储第n个候选比特流本身和/或可以存储第n个候选比特流的索引或其他指示符。可替代地,在912处,响应于确定第n个候选比特流的成本值不是最低成本值,丢弃第n个候选比特流。

在914,确定第n个滤波器是否是仍可用于考虑的最终候选滤波器。在916,响应于确定第n个滤波器不是仍可用于考虑的最终候选滤波器,使n的值加1,然后重复该过程。可替代地,在918,响应于确定第n个滤波器是仍可用于考虑的最终候选滤波器,将所存储的候选比特流选择为输出比特流。例如,如果在确定第n个滤波器是最终剩余的滤波器之前将第n个候选比特流存储在缓冲区或其他数据存储中,则将n个候选比特流选择为输出比特流。

在一些实施方式中,技术900可以包括将候选比特流的一个或多个方面与阈值进行比较。例如,阈值可以表示由于应用相应候选滤波器以及随后将滤波的视频流副本编码为候选比特流而导致的最大可接受质量损失。在另一个示例中,阈值可以表示由于应用相应候选滤波器以及随后将滤波的视频流副本编码为候选比特流而导致的最大可接受时延。在又一示例中,阈值可以表示由应用相应候选滤波器以及随后将滤波的视频流副本编码为候选比特流而导致的最大可接受的计算资源成本。

在该实施方式中,将候选比特流的一个或多个方面(例如,质量损失、时延和/或其计算资源成本)与阈值进行比较(例如,在确定候选比特流的成本值是否是最低成本值之前,或者在响应于确定候选比特流具有最低成本值而存储候选比特流之前)。在一个或多个方面满足阈值的情况下(例如,通过不超过相应的最大值),技术900可以进行到继续处理候选比特流。然而,在那些一个或多个方面不满足阈值的情况下,候选比特流可以被丢弃或者以其他方式不被进一步处理。

上文所述的编码和解码的各方面图示编码和解码技术的一些示例。然而,将理解到编码和解码,如在权利要求中使用那些术语,可以是指对数据的压缩、解压缩、变换或任何其它处理或改变。

单词“示例”在本文中用于意指用作示例、实例或图示。在本文中被描述为“示例”的任何方面或设计不一定被解释为优于其它方面或设计或比其他方面或设计有利。相反,使用单词“示例”旨在以具体方式呈现构思。如在本申请中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。即,除非另有说明或者上下文另有明确指示,否则语句“x包括a或b”旨在意指其自然包含性排列中的任一种。即,如果x包括a;x包括b;或者x包括a和b两者,则在上述实例中的任一个下满足“x包括a或b”。此外,除非另有说明或者上下文另有明确指示为针对单数形式,否则如本申请和所附权利要求中所使用的冠词“一”和“一个”通常应当被解释成意指“一个或多个”。此外,贯穿本公开使用的术语“实施方式”或术语“一个实施方式”不应当旨在意指同一实施例,除非被如此描述。

发送站102和/或接收站106的实施方式(以及存储在其上并且/或者由此执行,包括由编码器400和解码器500执行的算法、方法、指令等)可以用硬件、软件或其任何组合来实现。硬件可以包括例如计算机、知识产权(ip)核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微码、微控制器、服务器、微处理器、数字信号处理器或任何其它适合的电路。在权利要求中,术语“处理器”应当被理解为单独地或相结合地覆盖上述硬件中的任一个。术语“信号”和“数据”可以可互换地使用。另外,发送站102和接收站106的各部分不一定必须被以相同的方式实现。

另外,在一个方面中,例如,可以使用具有计算机程序的通用计算机或通用处理器来实现发送站102或接收站106,所述计算机程序当被执行时,执行本文描述的相应方法、算法和/或指令中的任何一个。此外或可替代地,例如,可利用专用计算机/处理器,所述专用计算机/处理器可以包含用于执行本文描述的方法、算法或指令中的任何一个的其它硬件。

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

另外,本公开的实施方式的全部或一部分可以采用例如可从计算机可用介质或计算机可读介质访问的计算机程序产品的形式。计算机可用介质或计算机可读介质可以是可以例如有形地包含、存储、传送或者输送程序以供任何处理器使用或者结合任何处理器使用的任何设备。介质可以是例如电子、磁、光学、电磁或半导体设备。其它适合的介质也是可用的。

已经描述了上述实施方式和其它方面以便促进容易理解本公开并且不限制本公开。相反,本公开旨在涵盖包括在所附权利要求的范围内的各种修改和等同布置,该范围应被赋予如在法律下许可的最广泛解释使得包含所有这样的修改和等同布置。

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