空间自适应量化感知去块滤波器的制作方法

文档序号:22047529发布日期:2020-08-28 18:58阅读:163来源:国知局
空间自适应量化感知去块滤波器的制作方法



背景技术:

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

用于减少视频流中的数据量的方法也可以用于减少图像中的数据量。图像内容表示大量在线内容。网页可以包括多个图像,并且渲染网页所花费的大部分时间和资源专用于渲染那些图像以进行显示。接收和渲染图像以进行显示所需的时间和资源量部分取决于图像被压缩的方式。这样,可以通过使用编码和解码技术减小图像的总数据大小来更快地渲染图像以及因此包括该图像的网页。



技术实现要素:

本文尤其公开用于使用空间自适应量化感知去块滤波器的视频或图像代码化的系统和技术。

根据本公开的实施方式的方法包括:将第一滤波器参数应用于重构帧以产生第一滤波帧,其中,第一滤波器参数基于与重构帧相关联的自适应量化场数据来定义,调整第一滤波器参数以产生第二滤波器参数,其中调整包括增加或减小自适应量化场数据的至少一个值,将第二滤波器参数应用于第一滤波帧以产生第二滤波帧,以及输出或存储第二滤波帧。例如,可以输出第二滤波帧以供显示。

根据本公开的实施方式的另一方法包括:解码与来自比特流的编码帧相关联的语法数据。语法数据包括编码帧的编码块的量化变换系数和自适应量化场数据,该自适应量化场数据表示应用于用于对编码块进行编码的量化值的权重。该方法进一步包括对编码块的量化变换系数进行去量化和逆变换以产生解码块。该方法还包括将解码块重构成重构帧。该方法还包括根据自适应量化场数据将去块滤波器应用于重构帧以产生第一滤波帧。该方法还包括确定第一滤波帧内的块伪像的数量。该方法还包括基于块伪像的数量来调整自适应量化场数据中的至少一些以产生调整后的自适应量化场数据。该方法还包括根据调整后的自适应量化场数据将去块滤波器应用于第一滤波帧以产生第二滤波帧。该方法还包括输出第二滤波帧以供显示。

根据本公开的实施方式的装置包括处理器。例如,处理器可以执行存储在非暂时性存储介质中的指令。处理器被配置成对编码帧的编码块进行解码以产生解码块,并将解码块重构成重构帧。处理器还被配置成根据与编码帧相关联的自适应量化场数据对重构帧进行滤波以产生第一滤波帧,并且随后调整自适应量化场数据中的至少一些。例如,该调整可以使用心理视觉模型。处理器被配置成在调整自适应量化场数据之后,根据自适应量化场数据对第一滤波帧进行滤波以产生第二滤波帧,并输出、存储或显示第二滤波帧。

根据本公开的实施方式的方法包括将第一滤波器参数应用于重构帧以产生第一滤波帧,其中,第一滤波器参数基于与重构帧相关联的自适应量化场数据来定义,调整第一滤波器参数以产生第二滤波器参数,其中调整包括增加或减小自适应量化场数据的至少一个值,将第二滤波器参数应用于第一滤波帧以产生第二滤波帧,以及输出或存储第二滤波帧。例如,可以输出第二滤波帧以供显示。

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

附图说明

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

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

图2是可以实现编码和解码系统的发送站或接收站的计算设备的示例的框图。

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

图3b是要被编码并且随后解码的图像的示例的图。

图4是编码器的示例的框图。

图5是解码器的示例的框图。

图6是用于对视频帧或图像进行编码或解码的空间自适应量化感知去块滤波器的示例的框图。

图7是表示视频帧或图像的部分的框图。

图8是用于使用空间自适应量化感知去块滤波器来编码或解码产生滤波后的重构帧的视频帧或图像帧的技术的示例的流程图。

图9是用于根据自适应量化场数据来迭代地滤波视频帧或图像帧的技术的示例的流程图。

图10是使用不同滤波或无滤波器技术的原始视频帧或图像的再现的示例的图示。

具体实施方式

有损编码涉及诸如使用量化来减少要编码的图像或视频中的数据量。作为减少所产生的编码图像或视频的比特成本的交换,图像遭受一定的质量损失。质量损失的程度在很大程度上取决于在编码期间量化图像数据或视频数据的方式。特别地,图像数据或视频数据的量化可能导致沿着块边界的不连续性,诸如块伪像。由有损编码导致的量化误差通常指示由编码导致的块伪像的数量。这样,量化误差越大,块伪像的数量越多,并且因此质量损失也越大。

可以通过对视频块或图像块的系数应用诸如去块滤波器的滤波器来减少块伪像。可以在编码过程中的重构级结束时或在解码过程结束时将去块滤波器应用于重构帧或重构帧的一部分。去块滤波器从帧中去除块伪像,以其预编码形式再现该帧。但是,典型的去块滤波器不具有对用于编码给定帧或其中的特定块的量化量的可见性。这样,并且特别是在不同的量化等级被用于单个帧内的不同块的情况下,去块滤波器可能会使用次优或不合适的滤波强度或滤波器半径大小。

本公开的实施方案使用基于自适应量化场数据控制的去块滤波器来解决诸如此类的问题。自适应量化场数据用于控制去块滤波器的强度和空间大小。这样,去块滤波器对于自适应量化场数据指示以更大的量化等级编码的块使用更大的强度和/或空间大小,而对于自适应量化场数据指示以较小的量化等级编码的块使用较小的强度和/或空间大小。通过基于自适应量化场数据控制滤波的强度和空间大小,可以保留帧中的精细细节。结合过滤使用心理视觉模型来确定是否应对自适应量化场数据进行调整。例如,如果余留在帧的区域中以进行编码或解码的块伪像的数量太大,则心理视觉模型可以指示增加该区域的自适应量化场数据的值。

在此首先参考可以在其中实现它们的系统来描述用于使用空间自适应量化感知去块滤波器进行视频或图像代码化的技术的更多细节。图1是编码和解码系统100的示例的示意图。编码和解码系统100包括发送站102、接收站104和网络106。

发送站102是编码并发送视频或图像的计算设备。可替选地,发送站102可以包括用于编码和发送视频或图像的两个或更多个分布式计算设备。接收站104是接收和解码编码视频或编码图像的计算设备。可替选地,接收站104可以包括用于接收和解码编码视频或编码图像的两个或更多个分布式计算设备。下面参考图2描述用于实现发送站102或接收站104之一或两者的计算设备的示例。

网络106连接发送站102和接收站104,以对视频或图像进行编码、发送、接收和解码。网络106可以是例如因特网。网络106还可以是局域网、广域网、虚拟专用网、蜂窝电话网络、或将视频或图像从发送站102传送到接收站104的其它装置。

编码和解码系统100的实施方式可能与关于图1所示和描述的不同。在一些实施方式中,编码和解码系统100可以省略网络106。在一些实施方式中,可以对视频或图像进行编码,并且然后将其存储以在稍后的时间发送至接收站104或具有存储器的另一设备。在一些实施方式中,接收站104可以(例如,经由网络106、计算机总线和/或一些通信路径)接收编码视频或编码图像,并且存储编码视频或编码图像以用于以后解码。

在一些实施方式中,发送站102和接收站104的功能可以基于所执行的特定操作而改变。例如,在对视频或图像进行编码的操作期间,发送站102可以是用于将要编码的视频或图像上传到服务器的计算设备,而接收站104可以是从发送站102接收视频或者图像并对视频或图像进行编码以供以后使用(例如,用于存储比特流、渲染网页等)的服务器。

在另一示例中,在用于对编码视频或编码图像进行解码的操作期间,发送站102可以是对编码视频或编码图像进行解码的服务器,并且接收站104可以是从发送站102接收解码视频或解码图像并输出或渲染解码视频或解码图像(例如,作为网页的一部分等输出或者渲染给输出视频流)的计算设备。

在一些实施方式中,编码和解码系统100可以省略网络106。在一些实施方式中,可以使用传送协议以在网络106上传送视频或图像,或者编码视频或编码图像。例如,传送协议可以是实时传送协议、超文本传送协议或其他图像或视频流协议。

在一些实施方式中,发送站102和接收站104中的每个可以包括用于对视频或图像进行编码和解码的功能。例如,可以使用视频会议系统来实现编码和解码系统100。接收站104可以是视频会议参与者的计算设备。接收站104可以从视频会议服务器(例如,发送站102)接收编码视频比特流,以进行解码和查看。接收站104可以进一步编码另一个视频比特流并将其发送到视频会议服务器,诸如用于由其他视频会议参与者的计算设备进行解码和查看。

图2是可以实现诸如图1中所示的编码和解码系统100的编码和解码系统的发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实现图1中所示的发送站102或接收站104中的一个或两个。计算设备200可以是包括多个计算设备的计算系统的形式或一个计算设备的形式。例如,计算设备200可以是移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机、服务器计算机、游戏控制台、可穿戴设备等之一。

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

在实施方式中计算设备200中的存储器204可以是只读存储器设备或随机存取存储器设备。然而,其它适合类型的存储设备可以被用作存储器204。存储器204可以包括由处理器202使用总线212来访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,所述应用程序210包括许可处理器202执行本文中所述的技术的至少一个程序。例如,应用程序210可以包括应用1至n,所述应用1至n进一步包括执行本文所描的技术中的一些或者全部的视频或者图像代码化软件。计算设备200还可以包括辅助存储214,其可以例如是与移动计算设备一起使用的存储卡。例如,图像可以被整个地或部分地存储在辅助存储214中并被按需加载到存储器204中以用于进行处理。

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

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

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

计算设备200的实施方式可以不同于关于图2示出和描述的实施方式。在一些实施方式中,处理器202的操作可以跨越可直接地或者跨越局域网或其它网络耦合的多个机器(其中单独的机器可以具有一个或多个处理器)分布。在一些实施方式中,存储器204可以跨越多个机器分布(诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器)。在一些实施方式中,计算设备200的总线212可以由多条总线组成。在一些实施方式中,辅助存储214可以被直接耦合到计算设备200的其它组件或者可以经由网络访问,并且可以包括诸如存储卡这样的集成单元或诸如多个存储卡这样的多个单元。

图3a是要编码并随后解码的视频流300的示例的图。视频流300表示典型的视频流,其可以例如使用图1中所示的发送站102被编码为压缩比特流,并且随后例如使用图1中所示的接收站104将其解码成输出视频流。

视频流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个像素或更大。除非另外指出,否则在本文中可以以互换的方式使用术语块和宏块。

图3b是要编码并且随后解码的图像帧312的示例的图。图像帧312表示可以使用例如图1中所示的发送站102被编码为压缩比特流或存储并且随后使用例如图1中所示的接收站104被解码以在显示器上渲染的典型图像。图像帧312可以具有与图3a中所示的帧306相同的形式。例如,图像帧312可以被划分为图像片段314和/或图像块316,以在编码或解码期间进行进一步处理。

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

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

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

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

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

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

在重构级414处,可以将在帧内/帧间预测级402处预测的预测块添加到导数残差以创建重构块。可以将去块滤波级416应用于重构块以减少诸如块伪像这样的失真。下面参考图6描述在去块滤波器级416处使用的去块滤波器的实施方式和示例。

编码器400的实施方式可以与参照图4示出和描述的实施方式不同。特别地,如图4中所示的编码器400是用于对诸如视频帧或视频块的视频数据进行编码的编码器的示例。然而,在其他实施方式中,编码器400可以是用于对诸如图像帧或图像块的图像数据进行编码的编码器的示例。

在这样的实施方式中,编码器400省略帧内/帧间预测级402。例如,在输入图像数据进入级410、412、414和416的重构路径之前首先在变换级404处处理并且然后在量化级406处进行处理。去块滤波器级416的输出可以被发送到变换级404以进行进一步处理。如果不需要重构路径,诸如因为图像帧的误差水平满足阈值,则可以不遵循重构路径,并且量化的图像数据可以继续进入到熵编码级408,并且然后输出到压缩比特流420。在使用编码器400对图像数据进行编码的一些实施方式中,编码器400可以省略熵编码级408。

在一些实施方式中,编码器400可以是用于图像或视频代码化的基于非变换的编码器。在这样的实施方式中,编码器400可以针对某些块或帧在无需变换级404的情况下直接对残留信号进行量化。在一些实施方式中,量化级406和去量化级410可以被组合成公共级。

图5是解码器500的框图。如上所述,解码器500可以在图1中所示的接收站104中实现,诸如通过提供存储在存储器(例如,图2中所示的存储器204)中的计算机软件程序来实现。该计算机软件程序可以包括机器指令,该机器指令在由诸如图2中所示的处理器202的处理器执行时,其使接收站104以图5中描述的方式解码视频数据。解码器500还可以以例如包括在接收站104中的专用硬件(例如,集成电路)来实现。

类似于上述的编码器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应用于重构块以减少块伪像(例如,使用去块滤波、样本自适应偏移滤波、其他环路滤波器功能等、或其组合)。下面参照图6描述在去块滤波器级512处使用的去块滤波器的实施方式和示例。可以将其它滤波应用于重构块。在此示例中,后置滤波级514被应用于重构块以减少块失真,并且结果作为输出视频流516输出。输出视频流516也可以被称为解码视频流,并且将在本文中以可互换方式使用这些术语。

解码器500的实施方式可以与参照图5示出和描述的实施方式不同。在一些实施方式中,解码器500可以使用后置滤波级514来省略或以其他方式不处理数据。此外,虽然如图5中所示的解码器500是用于解码诸如编码视频帧或编码视频块的编码视频数据的解码器的示例,但是在其他实施方式中,解码器500可以是用于对诸如编码图像帧或者编码图像块的编码图像数据进行解码的解码器的示例。

在这样的实施方案中,解码器500省略帧内/帧间预测级508。例如,可将去块滤波器级512的输出发送到去量化级504以进行进一步处理。在另一示例中,在图像帧的误差水平满足阈值的情况下,可将去块滤波器级512的输出继续发送到后置滤波级514和/或作为输出发送给显示器以进行渲染。在解码器500被用于解码编码图像数据的一些实施方式中,解码器500可以省略熵解码级502。

图6是用于对诸如视频帧或图像帧的帧进行编码或解码的空间自适应量化感知去块滤波器600(以下称为去块滤波器600)的示例的框图。去块滤波器600可以例如是在图4中所示的去块滤波器级416中使用的去块滤波器、在图5中所示的去块滤波器级512中使用的去块滤波器、或两者。

去块滤波器600接收重构帧和自适应量化场数据602,并使用它们来产生滤波帧604。重构帧包括通过重构一定数量的解码块而产生的数据,该解码块表示经量化和逆变换的系数。例如,可以使用图4中所示的重构级414或者图5中所示的重构级510来产生重构帧。自适应量化场数据表示应用于用于对那些块进行编码的量化值的权重。自适应量化场数据包括指示用于对帧的不同区域进行编码的量化等级的值。自适应量化场数据的值是通过分析整个帧来确定,诸如确定对量化应用更高或更低权重的区域。

去块滤波器600包括伪像去除级606、心理视觉建模级608和参数调整级610。伪像去除级606接收重构帧和自适应量化场数据602。伪像去除级606对重构帧进行滤波,以从重构帧中去除一定数量的块伪像。使用自适应量化场数据来控制通过伪像去除级606对重构帧进行滤波。

伪像去除级606将重构帧与原始(例如,预编码的)帧进行比较,以确定作为编码结果的那些帧之间的差。在那些差反映重构帧不能准确地表示原始帧的区域中,伪像去除级606应用滤波器以减少块伪像的数量。伪像去除级606基于自适应量化场数据对从小差异到大差异的转变进行模块化。例如,伪像去除级606可以基于自适应量化场数据来改变去块滤波器600的邻域大小。在另一示例中,伪像去除级606在执行滤波时可以对原始帧内的值使用更大的权重,诸如在保留更多原始帧数据的一侧上出错。

去块滤波器600可以是定向滤波器,使得可以基于滤波方向来对由伪像去除级606去除的块伪像进行滤波。特别地,去块滤波器600(例如,在伪像去除级606或在伪像去除级606之前的另一级(未示出))可以确定帧的给定区域内的最大不变方向,并且沿着该最大不变方向进行滤波。最大不变方向指代其颜色、光或其他强度的变化最小的像素的方向线。滤波可以包括计算方向线的每一侧上的像素的平均值,以及用那些平均值代替块伪像。

伪像去除级606通过使用帧的一个或多个相应区域的自适应量化场数据沿着已确定的滤波方向进行滤波以调制去块滤波器600的参数。定向滤波器600可以具有用于滤波帧数据的多个参数,包括例如非线性选择参数、滤波器大小参数或方向灵敏度参数。非线性选择参数反映要保留在帧内的数据或数据类型(例如,不通过滤波去除)。滤波器大小参数反映在给定操作中滤波器所应用的像素数。方向灵敏度参数反映滤波方向选择的灵敏度。

自适应量化场数据被用于基于用于对帧的不同区域进行编码的量化等级来对去块滤波器600的一些或全部参数进行调制。因此,在伪像去除级606期间,自适应量化场数据指示用于对帧的给定区域进行编码的量化等级。然后,伪像去除级606使用该量化等级信息来控制该给定区域内的块伪像的去除。例如,伪像去除级606可以在确定要保留在帧内的精细细节(例如,着色表面上的划痕)之后调制用于过滤帧的给定区域的非线性选择参数。

调制非线性选择参数包括改变指示原始帧和重构帧之间的差异的阈值。该阈值可以例如基于与该给定区域相关联的自适应量化场数据的值反映帧的给定区域的最大可接受差。例如,在帧的给定区域内的原始帧与重构帧之间的较大差根据在该给定区域中应用较大的量化权重的非线性选择参数是可以接受的。

心理视觉建模级608使用用于在伪像去除级606处进行滤波之后基于帧的视觉可感知质量处理帧的软件规则。心理视觉建模级608的软件规则集中于视觉的三个属性:首先,伽玛校正不应单独应用于每个rgb通道;其次,蓝色数据中的高频变化可能无法精确编码;第三,在帧内包括更多数量的视觉噪声的区域可能很少精确地编码。

视觉的第一属性由人眼视锥细胞的敏感性光谱的重叠驱动。例如,因为看到的黄光的数量与对蓝光的灵敏度之间存在一些关系,所以可以不太精确地压缩黄色数据附近的蓝色数据的变化。yuv颜色空间定义为伽玛压缩rgb的线性变换,并且因此不足够强大以对此类现象进行建模。视觉的第二属性由人眼视网膜的颜色受体驱动。特别地,人眼在蓝色中的空间分辨率低于在红色和绿色中的空间分辨率,并且视网膜在高分辨率区域中几乎没有蓝色受体。视觉的第三属性基于可见性和近端视觉活动之间的关系定义。即,图像区域中的精细结构的可见性可以取决于该区域附近的视觉活动量。

尽管心理视觉建模级608的软件规则参考视觉的三个属性来描述,但是其他数量的视觉属性、与视频或图像编码或可感知性相关的其他规则或它们的组合可以被用于定义或以其他方式配置心理视觉建模级608的软件规则。

因此,心理视觉建模级608的软件规则可用于确定在帧的一些或全部区域内保留的多个块伪像。心理视觉建模级608接下来将块伪像的数量与反映要包括在帧中的视觉上可感知的伪像的最大数量的心理视觉模型阈值进行比较。心理视觉模型阈值的值可以默认配置或根据经验设置,诸如通过在n帧上迭代去块滤波器600。如果超过心理视觉模型阈值使得在伪像去除级606处的滤波之后保留在帧内的块伪像的数目太大,则心理视觉建模级608将滤波帧和相关联的数据发送到参数调整级610。否则,输出滤波帧604。

心理视觉模型阈值还可以或替代地反映原始帧和在伪像去除级606进行处理之后的帧之间的最大可接受的差。例如,心理视觉建模级608可以使用心理视觉模型阈值作为用于比较原始帧和在伪像去除级606处进行处理后的帧的特定区域内的系数或像素值的基础。如果该比较指示这些帧之间的系数或像素值差小于心理视觉模型阈值,则差被保留。然而,如果该比较指示那些差不小于心理视觉模型阈值,则心理视觉建模级608可以使帧在伪像去除级606处经历进一步的滤波。

参数调整级610在将帧返回到伪像去除级606以进行进一步过滤之前,调整伪像去除级606使用的一些参数。参数调整级610可以例如调整自适应量化场数据的一个或多个值。例如,基于心理视觉建模级608的结果,参数调整级610可以针对帧的给定区域增加或减小自适应量化场数据值,诸如以相应地增加或减小在给定区域内的量化的量。

在另一示例中,参数调整级610可以调整去块滤波器600本身的一个或多个参数。例如,基于滤波帧的视觉上可感知的质量,诸如可以确定为心理视觉建模级608的结果,参数调整级610可以针对帧的某些区域调整去块滤波器600的非线性选择参数。

对自适应量化场数据的调整可能受到表示该帧的最大量化误差的误差水平定义的限制。例如,在对自适应量化场数据的调整导致帧的总量化误差超过误差水平定义的情况下,该调整或者被丢弃,或者通过对帧的其它区域的对应调整被抵消。例如,在做出通过将对帧的第一区域的量化权重增加了x来调整该区域的确定的情况下,并且在该增加导致总量化误差超过误差水平定义的情况下,还做出通过将帧的第二区域的量化权重减小了x来调整该第二区域的对应确定。

在参数调整级610处确定或以其他方式进行的调整被循环回到伪像去除级606以进行进一步滤波。去块滤波器600可以在输出最终滤波帧604之前,通过伪像去除级606、心理视觉建模级608或参数调整级610中的一些或全部多次迭代。使用去块滤波器600对帧的滤波进行迭代可以包括产生去块滤波器600的模型。例如,去块滤波器600可以包括用于学习应用于给定帧的滤波的类型以及针对给定帧所进行的调整的类型的功能。当接收到另一帧用于滤波时,去块滤波器600可以使用学习的模型以每次进行多个滤波应用或调整,诸如以改善处理速度。

去块滤波器600的实施方式可以与参照图6示出和描述的实施方式不同。在一些实施方式中,心理视觉建模级608和参数调整级610可以在去块滤波器600的外部。例如,去块滤波器600可以仅包括用于执行伪像去除级606的操作的功能。去块滤波器600可以因此将使用伪像去除级606产生的滤波帧604输出到心理视觉建模级608,其然后可以处理滤波帧604以确定是否使用去块滤波器600对滤波帧604进行重新滤波。

在一些这样的实施方式中,心理视觉建模级608可以在伪像去除级606之前处理重构帧和自适应量化场数据602。例如,心理视觉建模级608可以处理重构帧和自适应量化场数据602以确定要从重构帧中去除的块伪像的数量以及这些块伪像在帧内的位置。然后伪像去除级606去除那些块伪像并输出滤波帧604。然后参数调整级610可以接收从去块滤波器600输出的滤波帧604,并且处理滤波帧604以确定是否调整自适应量化场数据并使用调整后的自适应量化场数据对滤波帧604进行重新滤波。

在确定调整自适应量化场数据并重新滤波滤波帧604的情况下,参数调整级610相应地调整自适应量化场数据的相应值。然后,参数调整级610将滤波帧和调整后的自适应量化场数据发送回去块滤波器600,以由伪像去除级606进行重新处理。在确定不调整自适应量化场数据并且不对滤波帧604重新滤波的情况下,参数调整级610使得输出滤波帧604到诸如压缩比特流,以用于存储、用于进一步的处理、用于在显示器处进行渲染等。

在一些实施方式中,心理视觉建模级608的性能可能取决于去块滤波器600正在处理的数据类型而可能不同。例如,在去块滤波器600正在处理图像数据(例如,使得重构帧是重构图像)的情况下,心理视觉建模级608可以使用较大的阈值来确定视觉可感知性,因为滤波帧604在显示时将被粘贴。然而,在去块滤波器600正在处理视频数据(例如,使得重构帧是重构视频帧)的情况下,心理视觉建模级608可以使用较小的阈值来确定视觉可感知性,因为滤波帧604将仅在非常短的时间内显示。

在一些实施方案中,除了通过确定和使用最不变方向之外,去块滤波器600可以对帧进行滤波。例如,机器学习算法可以用于确定在伪像去除级606处使用的最佳滤波方向。在另一个示例中,指示使用的滤波方向的数据可以诸如在帧报头内从编码器被显式地用信号发送到解码器。

图7是表示帧700的各个部分的框图。该帧可以是视频帧,例如,图3a中所示的视频帧306;或者图像帧,例如,图3b所示的图像帧312。如所示的,帧700包括在矩阵或笛卡尔平面中的两行两列的四个64×64块710。在一些实施方式中,64×64块可以是最大代码化单元,n=64。每个64×64块可以包括四个32×32块720。每个32×32块可以包括四个16×16块730。每个16×16块可以包括四个8×8块740。每个8×8块740可以包括四个4×4块750。每个4×4块750可以包括16个像素,其可以在笛卡尔平面或矩阵的每个相应块中以四行四列表示。

像素可以包括表示在帧700中捕获的图像的信息,诸如亮度信息、颜色信息和位置信息。在一些实施方式中,诸如所示的16×16像素块的块可以包括亮度块760,其可以包括亮度像素762;以及两个色度块770、780,诸如u或cb色度块770,以及v或cr色度块780。色度块770、780可以包括色度像素790。例如,亮度块760可以包括16×16个亮度像素762并且每个色度块770、780可以包括如所示的8×8个色度像素790。尽管示出块的一种布置,但是可以使用任何布置。虽然图7示出n×n块,在一些实施方式中,可以使用n×m块。例如,可以使用32×64块、64×32块、16×32块,32×16块或任何其他尺寸的块。在一些实施方式中,可以使用n×2n块、2n×n块或其组合。

在一些实施方式中,对帧700进行代码化可以包括有序的块级代码化。有序的块级代码化可以包括以诸如光栅扫描顺序的顺序对帧的块进行代码化,其中可以从帧的左上角或帧的一部分中的块开始识别和处理块,并且沿着行从左到右并且从上一行到下一行进行,依次识别每个块以进行处理。例如,帧的顶行和左列中的64×64块可以是代码化的第一块,并且紧接在第一块的右边的64×64块可以是代码化的第二块。从顶部开始的第二行可以是代码化的第二行,使得第二行的左列中的64×64块可以在第一行的最右面的列中的64×64块之后被代码化。

在一些实施方案中,对帧700的块进行代码化可以包括使用四叉树代码化,其可以包括以光栅扫描顺序对块内的较小块单元进行代码化。例如,可以使用四叉树代码化来代码化在帧700的该部分的左下角中示出的64×64块,其中可以对左上32×32块进行代码化,然后可以对右上32×32块进行代码化,然后可以对左下32×32块进行代码化,并且然后可以对右下32×32块进行代码化。可以使用四叉树代码化来代码化每个32×32块,其中可以对左上16×16块进行代码化,然后可以对右上16×16块进行代码化,然后可以对左下16×16块进行代码化,并且然后可以对右下16×16块进行代码化。

可以使用四叉树代码化来代码化每个16×16块,其中可以对左上8×8块进行代码化,然后可以对右上8×8块进行代码化,然后可以对左下8×8块进行代码化,并且然后可以对右下8×8块进行代码化。可以使用四叉树代码化来代码化每个8×8块,其中可以对左上4×4块进行代码化,然后可以对右上4×4块进行代码化,然后可以对左下4×4块进行代码化,并且然后可以对右下4×4块进行代码化。在一些实施方式中,对于16×16块可以省略8×8块,并且可以使用四叉树代码化来对16×16块进行代码化,其中可以对左上4×4块进行代码化,然后可以按照光栅扫描顺序对16×16块中的其他4×4块进行代码化。

在一些实施方式中,对帧700进行代码化可以包括通过例如从对应的编码帧中省略原始帧中的一些信息来对原始或输入的帧中包括的信息进行编码。例如,代码化可以包括减少频谱冗余、减少空间冗余、减少时间冗余或其组合。

在一些实施方式中,减少光谱冗余可包含使用基于亮度分量(y)和两个色度分量(u和v或cb和cr)的颜色模型,其可以被称为yuv或ycbcr颜色模型或色彩空间。使用yuv颜色模型可以包括使用相对大量的信息来表示帧的一部分的亮度分量,以及使用相对少量的信息来表示帧的一部分的每个对应色度分量。例如,帧的一部分可以由高分辨率亮度分量(可以包括16×16像素块)和两个较低分辨率色度分量(其中的每一个将帧的该部分表示为8×8像素块)表示。像素可以指示一个值,例如,从0到255范围内的值,并且可以使用例如八个比特来存储或发送。尽管参考yuv颜色模型描述了本公开,但是可以使用另一种颜色模型。

在一些实施方式中,减少空间冗余可以包括使用例如离散余弦变换将块变换到频域中。例如,编码器的单元,诸如图4中所示的变换级404,可以基于空间频率使用变换系数值来执行离散余弦变换。

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

在一些实施方式中,减少时间冗余可以包括识别参考帧的与当前帧的当前块或像素相对应的一部分。例如,可以搜索可以存储在存储器中的参考帧或参考帧的一部分,以识别用于生成预测器的部分,其用于以最大效率对当前帧或当前帧的像素进行编码。例如,搜索可以识别参考帧的一部分,对于其的当前块和基于参考帧的一部分而生成的预测块之间的像素值的差被最小化,并且可以被称为运动搜索。在一些实施方式中,搜索到的参考帧的部分可以受到限制。例如,被搜索的参考帧的一部分(其可以被称为搜索区域)可以包括参考帧的有限数量的行。在示例中,识别参考帧的用于生成预测器的部分可以包括计算在搜索区域的部分的像素与当前块的像素之间的成本函数,诸如绝对差之和(sad)。

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

尽管这里为了清楚起见参考帧的矩阵或笛卡尔表示进行了描述,但是可以以任何数据结构存储、发送、处理帧或其任何组合,使得可以针对帧或图像有效地表示像素值。例如,帧可以以诸如所示的矩阵的二维数据结构或以诸如矢量阵列的一维数据结构来存储、发送、处理帧或其任何组合。在实施方式中,帧的表示,诸如所示的二维表示,可以对应于在将帧渲染为图像时的物理位置。例如,在帧的左上角中的块的左上角中的位置可以对应于将帧渲染为图像的左上角中的物理位置。

如上所述,帧700可以是视频序列的帧,或者其可以是图像。不管帧700表示图像数据还是视频数据,帧700都包括单个图片以进行编码或解码。帧700中包括的图片可以在不同区域中具有不同类型的细节。如本文所描述的帧的区域指代帧的m×n大小的区域,其中m和n可以是相同或不同的值。例如,帧的区域可以是该帧内的单个块(例如,8×8块)。在另一个示例中,帧的区域可以是帧内的多个块。在又一个示例中,要编码的帧的不同区域可以是不同大小的块(例如,一些8x8、一些4x4、一些16x16等)。

例如,帧700可以包括森林和森林上面的天空的图片。森林可以在下部的两个64x64块710中示出,而天空在上部两个64x64块710中示出。在下部的两个64x64块710中包括的数据可以比上部的两个64x64块710中包括的数据更详细。例如,对森林的描绘可能包括树木的树枝或树叶的许多小细节,以及森林中存在的其他动植物。相反,对天空的描绘可能仅反映蓝色的渐变阴影。这样,帧700中的大多数信息位于下部的两个64×64块710中。

对帧700进行编码或解码可以包括通过基于这些区域中包括的数据对帧700的量化值应用不同权重来对帧700的不同区域(例如,不同的块710、720、730、740、750)进行量化。例如,与包括较少信息(例如,较少细节)的第二区域相比,可以使用较小的权重来量化包括更多信息(例如,较多细节)的图像的第一区域。包含在第一区域内的信息比包含在第二区域内的信息被更少量化。这导致第一区域内的信息丢失比第二区域内的信息丢失小。

在其中帧700示出森林和天空的示例的情况下,可以产生帧700的自适应量化场数据以反映较大的量化被用于表示天空的块内的信息,并且较小的量化被用于表示森林的块中的信息。更具体地,包括天空信息的块的自适应量化场数据的值反映,那些块与包括森林信息的块相比使用更大的权重来量化。所有四个64×64块710的自适应量化场数据的值可以由表示由帧700的编码导致的最大量化误差的误差水平定义来控制。

现在参照图8和图9描述用于编码或解码视频帧的技术。图8是用于使用空间自适应量化感知去块滤波器对视频帧或图像帧进行编码或解码的技术800的示例的流程图。图9是用于根据自适应量化场数据来迭代地滤波视频帧或图像帧的技术900的示例的流程图。

技术800或技术900中的一个或两者可以被实现为例如软件程序,该软件程序可以由诸如图1中所示的发送站102或接收站104的计算设备执行,或者以其它方式通过图2中所示的计算设备200来执行。例如,软件程序可以是或以其他方式包括诸如图4中所示的编码器400的编码器,或者诸如图5中示出的解码器500的解码器。

软件程序可以包括可以存储在诸如图2中所示的存储器204或辅助存储器214的存储器中的机器可读指令,并且当所述机器可读指令由诸如图2中所示的处理器202的处理器执行时,可以使计算设备执行技术800或技术900中的一个或两个。

技术800和/或技术900或用于执行技术800和/或技术900的编码器和/或解码器(例如,编码器400和/或解码器500)可以使用专用硬件或固件(例如,集成电路)来实现。如上面所解释的,一些计算设备可以具有多个存储器或处理器,并且可以使用多个处理器、存储器或两者来分布技术800和技术900中描述的操作。

为了简化说明,将技术800和技术900分别描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文未提出和描述的其他步骤或操作。此外,可能不需要所有图示的步骤或操作来实现根据所公开的主题的技术。

首先参考图8,示出用于使用空间自适应量化感知去块滤波器对视频帧或图像帧进行编码或解码的技术800。可以执行技术800以将视频帧或图像编码成诸如比特流。可替选地,可以执行技术800以例如对诸如来自于比特流中的编码视频帧或编码图像进行解码。例如,在编码期间,可以通过图4中所示的编码器400的重构路径(例如,级410、412、414和416)来执行技术800。在另一个示例中,在解码期间,技术800可以由图5中所示的解码器500的级504、506、510和512执行。

在802处,对与要编码或解码的视频帧或图像(以下称为帧)相关联的量化变换系数进行去量化和逆变换。量化变换系数表示这些像素值在编码期间被变换和量化之后的原始视频帧或原始图像的像素值。量化变换系数是视频帧或图像的块的系数。通过对量化变换系数进行去量化和逆变换来产生解码块。解码块可以例如是导数残余块,诸如其中帧是视频帧。在804处,将解码视频块重构为重构帧。

在806处,重构帧根据与该帧相关联的自适应量化场数据来滤波。自适应量化场数据可以例如在比特流内在编码器的量化级产生或由解码器接收。根据自适应量化场数据对重构帧进行滤波包括:将去块滤波器应用于重构帧,以从重构帧去除一些数量的块伪像。由去块滤波器去除的块伪像的数量由自适应量化场数据来控制。作为对重构帧进行滤波的结果,产生第一滤波帧。

可以使用去块滤波器的一个或多个参数来控制或以其他方式配置去块滤波器的性能。这样,根据自适应量化场数据将去块滤波器应用于重构帧可以包括将一些或全部滤波器参数应用于重构帧,其中基于自适应量化场数据定义那些滤波器参数。这些参数例如可以包括非线性选择参数、滤波器大小参数、方向灵敏度参数等或其组合。此外,假定基于自适应量化场数据定义滤波器参数,则自适应量化场数据可用于调制去块滤波器的一个或多个参数。

使用自适应量化场数据来对去块滤波器的参数进行模块化可以包括:根据自适应量化场数据对去块滤波器的非线性选择参数进行调制,以确定将数据保留在重构帧内。例如,非线性选择参数可以被调制以确定在重构帧内要保留哪种类型的数据。结果,去块滤波器未处理用于在重构帧内表示这种类型的数据的系数。

例如,可以根据心理视觉模型来调制非线性选择参数。心理视觉模型可以指示某些类型的数据或多或少在视觉上是可感知的。因此,可以基于心理视觉模型来调制非线性选择参数,以使帧内的更多视觉上可感知的数据被保留,并使帧内的更少视觉上可感知的数据受到修改。

自适应量化场数据向去块滤波器指示使用相对较高或相对较低的量化值处理的重构帧的区域。如上所述,自适应量化场数据表示应用于用于对帧的块进行编码的量化值的权重。因此,应用于重构帧的局部区域的量化值用于指导去块滤波器的处理。

例如,重构帧可以包括在编码期间使用相对较高的量化值处理的第一区域和在编码期间使用相对较低的量化值处理的第二区域。因此,去块滤波器可以将自适应量化场数据用于重构帧,以将相对较强的滤波器应用于重构帧的第一区域,并且将相对较弱的滤波器应用于第二区域。结果,与从第二区域相比,去块滤波器从第一区域去除更大量的块伪像。

在808处,确定在第一滤波帧内余留的块伪像的数量。确定余留在第一滤波帧内的块伪像的数量包括使用心理视觉模型处理第一滤波帧的数据。心理视觉模型例如可以是被配置成基于人类可感知性来处理视频帧或图像数据的模型。下面参考图9进一步描述用于确定调整自适应量化场数据的实现方式和示例。

在810处,调整自适应量化场数据。调整自适应量化场数据包括改变(例如,增加或减少)针对第一滤波帧的至少一些区域的被应用于量化值的权重。例如,调整自适应量化场数据可以包括增加自适应量化场数据的值,其中该值与用于产生重构帧的一个或多个解码块相关联。例如,该值可以反映应用于那些解码块中的特定块中的量化值的权重,该值通过将该权重应用于该量化值而产生,或者另一值由自适应量化场数据反映。

对自适应量化场数据的调整可以受到与正在编码或解码的帧相关联的数据的限制。例如,对自适应量化场数据的增加可能受到与帧关联的误差水平定义的限制。误差水平定义表示由帧的编码产生的最大量化误差。这样,自适应量化场数据可能不会以导致帧的量化误差超过误差水平定义的方式增加。在另一示例中,对自适应量化场数据的减少可能(例如,在编码操作期间)受到帧的文件大小定义的限制。这样,自适应量化场数据可能不会以使所产生的编码帧的总文件大小超过文件大小定义的方式减少。

在812处,根据调整后的自适应量化场数据,对由重构帧的较早滤波产生的第一滤波帧进行重新滤波。根据调整后的自适应量化场数据对第一滤波帧进行重新滤波包括:将去块滤波器应用于第一滤波帧以从第一滤波帧中去除一定数量的块伪像。由去块滤波器去除的块伪像的数量由调整后的自适应量化场数据控制。作为对第一滤波帧进行滤波的结果,产生第二滤波帧。可以以与重构帧的较早滤波相同或基本相同的方式执行重新滤波。

在其中执行用于对编码视频帧或编码图像进行解码的技术800的一些实施方式中,技术800包括对与诸如来自比特流的编码视频帧或编码图像相关联的语法数据进行解码。语法数据包括编码视频帧或编码图像的编码块的量化变换系数。语法数据还包括自适应量化场数据。

语法数据可以是存储在比特流或另一个数据存储中并且与编码视频帧或编码图像相关联的一些或全部数据。例如,语法数据可以包括针对编码视频帧或编码图像的一些或全部编码块的量化变换系数。在另一示例中,语法数据可以包括元数据,诸如来自用于编码视频帧的帧报头或来自用于编码图像的图像报头的元数据。

在一些实施方式中,技术800包括在调整自适应量化场数据之前确定是否在自适应量化场数据处进行调整。例如,可以通过将余留在第一滤波帧内的块伪像的数量与诸如心理视觉模型阈值的阈值进行比较来进行确定。

在一些实施方式中,技术800包括输出通过使用调整后的自适应量化场对第一滤波帧进行重新滤波而产生的第二滤波帧。例如,当执行技术800以对视频帧或图像进行编码时,第二滤波帧可以被输出到压缩比特流,诸如图4中所示的压缩比特流420,或者存储到诸如接收站104以进行以后的发送。在另一示例中,当执行技术800以对编码视频帧或编码图像进行解码时,第二滤波帧可以输出到输出视频流,诸如图5中所示的输出视频流516,或者以诸如在图2中所示的显示器218处进行渲染。

在一些实施方式中,技术800包括进一步调整自适应量化场数据。例如,响应于对重构帧进行重新滤波(例如,以产生第二滤波帧数据),可以例如基于第二滤波视频帧内的块伪像的数量来进一步调整自适应量化场数据。例如,可以(例如,基于与心理视觉模型相关联的阈值)确定由第一滤波产生的第一滤波帧数据包括太多的块伪像。对自适应量化域数据的进一步调整可以基于该确定。

在对自适应量化场数据进行进一步调整之后,可以使用去块滤波器来对重构帧数据进行进一步重新滤波,诸如以产生第三滤波帧。然后可以将第三滤波帧输出到例如压缩比特流、压缩图像存储器,或用于进一步处理(例如,在编码期间),或输出到输出视频流或用于图像渲染(例如,在解码期间)。在一些实施方式中,可以将第三滤波帧与第二滤波帧一起输出。在一些实施方式中,可以输出第三滤波帧而不是第二滤波帧。

接下来参考图9,示出用于根据自适应量化场数据迭代地滤波视频帧或图像帧的技术900。可以在用于将视频帧或图像编码成诸如比特流的编码操作期间执行技术900。可替选地,可以在用于对诸如来自比特流的编码视频帧或编码图像进行解码的解码操作期间执行技术900。例如,在编码期间,可以使用图6所示的去块滤波器600(当被包括在解码器中时)或者在图4中示出的去块滤波器级416的去块滤波器来执行技术900。在另一个示例中,在解码期间,可以使用去块滤波器600(当包括在解码器中时)或图5中所示的去块滤波器级512的去块滤波器来执行技术900。

在902处,接收帧数据和自适应量化场数据。帧数据可以例如是重构帧,诸如其可以基于去量化的和逆变换的视频或图像系数来产生。自适应量化场数据表示应用于用于量化那些视频或图像系数的量化值的权重。在904处,根据自适应量化场数据对帧数据进行滤波。上面参照图8描述根据自适应量化场数据来滤波帧数据的实现方式和示例。在906处,识别余留在滤波帧数据内的块伪像的数量。

在908处,确定余留在滤波帧数据内的块伪像的数量是否超过心理视觉模型阈值。心理视觉模型阈值反映在没有招致视觉质量的下降的帧的情况下可以存在于帧内的可视觉感知的块伪像的最大数量。这样,确定在滤波帧数据内余留的块伪像的数量是否超过心理视觉模型阈值包括使用心理视觉模型来确定在滤波帧数据内余留的块伪像的数量超过在滤波帧内允许的视觉上可感知的块伪像的最大数量。

在910处,响应于确定在滤波帧数据内余留的块伪像的数量超过心理视觉模型阈值,增加自适应量化场数据的一个或多个值,诸如使多个量化在帧的一个或者多个对应区域内出现。技术900然后返回到904,在904处根据自适应量化场数据的增加值或已增加的值对滤波帧数据进一步滤波。

在912处,响应于确定滤波帧数据内的块伪像的数量不超过心理视觉模型阈值,输出滤波帧数据。例如,在执行技术900以对帧进行编码的情况下,从编码器的重构路径(例如,图4中所示的级410、412、414)输出滤波帧数据。在另一示例中,在执行技术900以对帧进行解码的情况下,滤波帧数据被输出到输出视频流(例如,图5中示出的输出视频流516),其在输出视频流之前被输出到后置滤波级(例如,级514)。

在一些实施方式中,在识别滤波帧数据内余留的块伪像的数量之后,技术900包括确定包括该数量的余留的块伪像的用于滤波帧数据的文件大小是否超过文件大小阈值。文件大小阈值反映帧数据的文件大小定义,诸如帧数据的编码形式的最大总文件大小。确定滤波帧数据的文件大小可以包括将滤波帧数据编码为临时编码帧,并识别该临时编码帧的总存储需求。

响应于确定用于滤波帧数据的文件大小超过文件大小阈值,减小自适应量化场数据的一个或多个值,诸如使在帧的一个或多个对应区域内发生较少的量化。在一些实施方式中,然后技术900可以返回904以对滤波帧数据进一步滤波。

图10是使用不同滤波或无滤波器技术再现原始视频帧或图像1000a的示例的图示。原始视频帧或图像1000a表示在诸如使用图1中所示的编码和解码系统100进行编码和/或解码之前的视频帧或图像。第一再现1000b表示在不使用去块滤波器的情况下编码和/或解码之后的原始视频帧或图像1000a。第二再现1000c表示在通过使用恒定去块滤波器进行编码和/或解码之后的原始视频帧或图像1000a。第三再现1000d表示在使用空间自适应量化感知去块滤波器(例如,图6中所示的去块滤波器600)进行编码和/或解码之后的原始视频帧或图像1000a。

上面描述的编码和解码的方面图示编码和解码技术和被配置成执行编码和/或解码技术的那些示例的全部或者一部分的硬件组件的一些示例。然而,应当理解的是,编码和解码(如在权利要求书中使用那些术语)能意指对数据的压缩、解压缩、变换或任何其它处理或改变。

单词“示例”在本文中被用于意指用作示例、实例或图示。在本文中被描述为“示例”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,单词“示例”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定或者通过上下文另外清楚地指示,否则陈述“x包括a或b”旨在意指其自然包含性排列中的任一种。也就是说,如果x包括a;x包括b;或者x包括a和b两者,则在上述实例中的任一个下满足“x包括a或b”。

此外,除非另外指定或者通过上下文清楚地指示为针对单数形式,否则如本申请和所附权利要求书中所使用的冠词“一”和“一个”通常应该被解释成意指“一个或多个”。此外,术语“实施方式”或术语“一个实施方式”在整个本公开中的使用不旨在意指同一实施例,除非被如此描述。

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

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

本公开的实施现方式的一些或全部可以采取例如可以从计算机可用介质或计算机可读介质访问的计算机程序产品的形式。计算机可用介质或计算机可读介质可以是例如可以有形地包含、存储、通讯或者传输程序以用于由任何处理器使用或者连同任何处理器一起使用的任何设备。介质可以是例如电子、磁、光学、电磁或半导体设备。其它适合的介质也是可用的。

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

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