用于自适应环路滤波的边界处理

文档序号:157538 发布日期:2021-10-26 浏览:30次 >En<

阅读说明:本技术 用于自适应环路滤波的边界处理 (Boundary processing for adaptive loop filtering ) 是由 V·谢廖金 胡楠 M·卡切夫维茨 于 2020-03-11 设计创作,主要内容包括:视频编码器和/或视频解码器被配置为向经重构的视频数据块应用自适应环路滤波器。视频编码器和/或视频解码器可以被配置为:确定经重构的视频数据块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对该样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的视频数据块以生成经滤波的视频数据块。(The video encoder and/or video decoder is configured to apply an adaptive loop filter to the reconstructed block of video data. The video encoder and/or video decoder may be configured to: determining a value of a gradient of a sample in a reconstructed block of video data, including performing a gradient calculation for the sample using an unavailable sample outside one of: a picture, slice, tile, or group of tiles comprising the reconstructed sample block; determining an adaptive loop filter for the reconstructed block of video data based at least in part on the determined value of the gradient of the samples; and applying the determined adaptive loop filter to the reconstructed block of video data to generate a filtered block of video data.)

用于自适应环路滤波的边界处理

本申请要求享受于2020年3月10日递交的美国申请No.16/814,597以及于2019年3月11日递交的美国临时申请No.62/816,728的优先权,据此将上述申请中的每一份申请的全部内容通过引用的方式整体并入。

技术领域

本公开内容涉及视频编码和视频解码。

背景技术

数字视频能力可以被合并到各种各样的设备中,包括数字电视机、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型计算机或台式计算机、平板计算机、电子书阅读器、数字相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话(所谓的“智能电话”)、视频电话会议设备、视频流设备等。数字视频设备实现视频译码技术(诸如在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4(第10部分,高级视频译码(AVC))、ITU-T H.265/高效率视频译码(HEVC)所定义的标准以及此类标准的扩展中描述的那些技术)。通过实现这样的视频译码技术,视频设备可以更加高效地发送、接收、编码、解码和/或存储数字视频信息。

视频译码技术包括空间(图片内(intra-picture))预测和/或时间(图片间(inter-picture))预测以减少或去除在视频序列中固有的冗余。对于基于块的视频译码,视频切片(例如,视频图片或视频图片的一部分)可以被分割为视频块,视频块也可以被称为译码树单元(CTU)、译码单元(CU)和/或译码节点。图片的经帧内编码(I)的切片中的视频块是使用相对于同一图片中的相邻块中的参考样本的空间预测来编码的。图片的经帧间编码(P或B)的切片中的视频块可以使用相对于同一图片中的相邻块中的参考样本的空间预测或者相对于其它参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。

发明内容

概括而言,本公开内容描述了涉及在视频译码中用于用户的滤波器的技术。具体而言,当针对在图片、切片、瓦片或瓦片组的边界附近的样本块执行自适应环路滤波(ALF)时,并非所有用于执行ALF的样本都可用。在一个示例中,如果用于确定边界附近的样本的梯度值的样本在边界之外,则这些样本可能不可用。在另一示例中,用于确定梯度和/或用于针对块执行ALF的其它信息的样本块周围的窗口内的梯度值可能不可用。本公开内容描述了用于确定边界附近的样本的此类梯度(或拉普拉斯值)以及用于确定边界之外的窗口内的梯度值的技术,这些技术采用潜在地提高梯度、方向性和针对这些样本执行的ALF的准确性的方式,从而潜在地提高经滤波的样本块的主观和/或客观质量。

在一个示例中,一种用于对视频进行译码的方法包括:重构视频数据块以创建经重构的视频数据块。所述方法还包括:确定所述经重构的视频数据块中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对所述样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组。所述方法还包括:至少部分地基于所确定的所述样本的所述梯度的值来确定用于所述经重构的视频数据块的自适应环路滤波器。所述方法还包括:将所确定的自适应环路滤波器应用于所述经重构的视频数据块以生成经滤波的视频数据块。

在另一示例中,一种装置包括被配置为存储视频数据块的存储器。所述装置还包括在电路中实现的与所述存储器相通信的一个或多个处理器,所述一个或多个处理器被配置为:重构所述视频数据块以创建经重构的视频数据块;确定所述经重构的视频数据块中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对所述样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的所述梯度的值来确定用于所述经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于所述经重构的视频数据块以生成经滤波的视频数据块。

在另一示例中,一种被配置为对视频数据进行译码的装置包括:用于重构视频数据块以创建经重构的视频数据块的单元。所述装置还包括:用于确定所述经重构的视频数据块中的样本的梯度的值的单元,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对所述样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组。所述装置还包括:用于至少部分地基于所确定的所述样本的所述梯度的值来确定用于所述经重构的视频数据块的自适应环路滤波器的单元。所述装置还包括:用于将所确定的自适应环路滤波器应用于所述经重构的视频数据块以生成经滤波的视频数据块的单元。

在另一示例中,一种计算机可读存储介质被编码有指令,所述指令在被执行时使得被配置为对数据进行译码的一个或多个处理器进行以下操作:重构视频数据块以创建经重构的视频数据块;确定所述经重构的视频数据块中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对所述样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的所述样本的所述梯度的值来确定用于所述经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于所述经重构的视频数据块以生成经滤波的视频数据块。

在附图和以下描述中阐述了一个或多个示例的细节。根据描述、附图和权利要求,其它特征、目的和优点将是显而易见的。

附图说明

图1是示出可以执行本公开内容的技术的示例视频编码和解码系统的框图。

图2示出了图片、切片、瓦片或瓦片组之外的样本的示例,这些样本不可用于作为执行自适应环路滤波的一部分针对样本执行分类和滤波操作。

图3A和3B示出了用于使用不可用样本进行自适应环路滤波的梯度计算的技术。

图4A-4H示出了块的梯度值的计算。

图5示出了示例自适应环路滤波器。

图6示出了示例自适应环路滤波器。

图7是示出可以执行本公开内容的技术的示例视频编码器的框图。

图8是示出可以执行本公开内容的技术的示例视频解码器的框图。

图9示出了用于执行本公开内容的技术的滤波器单元的示例实现。

图10是示出用于对当前块进行解码的示例方法的流程图。

图11是示出用于对视频数据进行译码的示例方法的流程图。

具体实施方式

本公开内容描述了与滤波操作相关的技术,这些技术可以在后处理阶段中、作为环路译码的一部分或在视频译码的预测阶段中使用。本公开内容的技术可以实现到现有视频编解码器(诸如HEVC(高效率视频译码))中,或者可以是用于将来的视频译码标准(诸如目前正在开发的H.266标准)的高效译码工具。

视频译码通常涉及从同一图片中已译码的视频数据块预测视频数据块(即,帧内预测)或不同图片中已译码的视频数据块预测视频数据块(即,帧间预测)。在一些情况下,视频编码器还通过将预测块与原始块进行比较来计算残差数据。因此,残差数据表示预测块与原始块之间的差。视频译码器对残差数据进行变换和量化,并且在经编码的比特流中用信号通知经变换和量化的残差数据。视频译码器将残差数据添加到预测块以产生经重构的视频块,与仅预测块相比,该经重构的视频块与原始视频块更紧密地匹配。

为了进一步提高经解码的视频的质量,视频解码器可以对经重构的视频块执行一个或多个滤波操作。这些滤波操作的示例包括解块滤波、采样自适应偏移(SAO)滤波和自适应环路滤波(ALF)。用于这些滤波操作的参数可以由视频编码器确定并且在经编码的视频比特流中显式地用信号通知,或者可以由视频解码器隐式地确定,而不需要在经编码的视频比特流中显式地用信号通知参数。本公开内容描述了与ALF相关的技术。ALF可以在后处理阶段中使用、或用于循环译码、或在预测过程中使用。

视频解码器可以对视频数据中的样本执行分类操作,作为对视频数据执行ALF的一部分。为了对视频数据中的样本执行这样的分类操作,视频解码器可以针对视频数据中的每个样本执行各种计算,包括至少部分地基于相邻样本来计算视频数据中的样本的梯度值。然而,当样本位于图片、切片、瓦片或瓦片组的边界上时,用于计算样本的梯度值的一个或多个相邻样本可能不可用,因为一个或多个相邻样本位于图片、切片、瓦片或瓦片组的边界之外。

在一个示例中,视频解码器可以使用诸如重复填充之类的技术来将图片、切片、瓦片或瓦片组的边界之外的相邻样本替换为边界内的最近样本。然而,这些技术可能潜在地引入主观和/或客观质量的损失。例如,重复填充可能潜在地在经重构的视频数据中引入不连续性,如果使用了实际样本值,则所述不连续性可能不会出现。

根据本公开内容的各个方面,视频解码器可以以潜在地改善滤波之后样本的主观和/或客观质量的方式,计算图片、切片、瓦片或瓦片组的边界上的样本的梯度值。在一个示例中,视频解码器可以通过将图片、切片、瓦片或瓦片组的边界之外的一个或多个相邻样本替换为图片、切片、瓦片或瓦片组内的一个或多个不可用样本的沿梯度方向的最近样本的样本值,来计算图片、切片、瓦片或瓦片组的边界上的样本的梯度值。通过将图片、切片、瓦片或瓦片组的边界之外的一个或多个相邻样本替换为图片、切片、瓦片或瓦片组内的一个或多个不可用样本的沿梯度方向的最近样本的样本值,与诸如重复填充之类的技术相比,本文描述的技术可以改善滤波之后样本的主观和/或客观质量,从而提供对上述潜在技术问题的技术解决方案。

在本公开内容中,术语视频译码一般指视频编码或视频解码。类似地,术语视频译码器一般可以指视频编码器或视频解码器。此外,本公开内容中描述的关于视频解码的某些技术也可以应用于视频编码,反之亦然。例如,通常情况下,视频编码器和视频解码器被配置为执行相同的过程或交互过程。此外,视频编码器通常执行视频解码,作为确定如何对视频数据进行编码的过程的一部分。

图1是示出可以执行本公开内容的技术的示例视频编码和解码系统100的框图。概括而言,本公开内容的技术涉及对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的未经编码的视频、经编码的视频、经解码(例如,经重构)的视频、以及视频元数据(例如,信令数据)。

如图1所示,在该示例中,系统100包括源设备102,源设备102提供要被目的地设备116解码和显示的、经编码的视频数据。具体地,源设备102经由计算机可读介质110来将视频数据提供给目的地设备116。源设备102和目的地设备116可以是各种各样的设备中的任何一种,包括台式计算机、笔记本计算机(即,膝上型计算机)、平板计算机、机顶盒、诸如智能电话之类的电话手机、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。

在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200以及输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120以及显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于自适应环路滤波的技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备102可以从诸如外部相机之类的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备对接,而不是包括集成显示设备。

如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备可以执行用于自适应环路滤波的技术。源设备102和目的地设备116仅是这样的译码设备的示例,其中,源设备102生成经译码的视频数据以用于传输给目的地设备116。本公开内容将“译码”设备指代为执行对数据的译码(例如,编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备(具体地,视频编码器和视频解码器)的示例。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式进行操作,使得源设备102和目的地设备116中的每一者都包括视频编码和解码组件。因此,系统100可以支持在源设备102和目的地设备116之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。

通常,视频源104表示视频数据(即原始的未经编码的视频数据)的源,并且将视频数据的顺序的一系列图片(也被称为“帧”)提供给视频编码器200,视频编码器200对用于图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如摄像机、包含先前捕获的原始视频的视频存档单元、和/或用于从视频内容提供者接收视频的视频馈送接口。作为另外的替代方式,视频源104可以生成基于计算机图形的数据作为源视频,或者生成实时视频、被存档的视频和计算机生成的视频的组合。在每种情况下,视频编码器200可以对被捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从所接收的次序(有时被称为“显示次序”)重新排列为用于译码的译码次序。视频编码器200可以生成包括经编码的视频数据的比特流。然后,源设备102可以经由输出接口108将经编码的视频数据输出到计算机可读介质110上,以便由例如目的地设备116的输入接口122接收和/或取回。

源设备102的存储器106和目的地设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频以及来自视频解码器300的原始的经解码的视频数据。另外或替代地,存储器106、120可以存储可由例如视频编码器200和视频解码器300分别执行的软件指令。尽管存储器106和存储器120在该示例中被示为与视频编码器200和视频解码器300分开,但是应当理解的是,视频编码器200和视频解码器300还可以包括用于在功能上类似或等效目的的内部存储器。此外,存储器106、120可以存储例如从视频编码器200输出并且输入到视频解码器300的经编码的视频数据。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的经解码和/或经编码的视频数据。

计算机可读介质110可以表示能够将经编码的视频数据从源设备102输送到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质,其使得源设备102能够例如经由射频网络或基于计算机的网络,来实时地向目的地设备116直接发送经编码的视频数据。输出接口108可以根据诸如无线通信协议之类的通信标准来对包括经编码的视频数据的传输信号进行调制,并且输入接口122可以根据诸如无线通信协议之类的通信标准来对所接收的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,例如,射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的一部分:局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或对于促进从源设备102到目的地设备116的通信而言可以有用的任何其它设备。

在一些示例中,源设备102可以将经编码的数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122从存储设备112访问经编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。

在一些示例中,源设备102可以将经编码的视频数据输出到文件服务器114或者可以存储由源设备102生成的经编码的视频的另一中间存储设备。目的地设备116可以经由流式传输或下载来从文件服务器114访问被存储的视频数据。文件服务器114可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给目的地设备116的任何类型的服务器设备。文件服务器114可以表示网页服务器(例如,用于网站)、文件传输协议(FTP)服务器、内容递送网络设备或网络附加存储(NAS)设备。目的地设备116可以通过任何标准数据连接(包括互联网连接)来从文件服务器114访问经编码的视频数据。这可以包括适于访问被存储在文件服务器114上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(DSL)、电缆调制解调器等)、或这两者的组合。文件服务器114和输入接口122可以被配置为根据以下各项来操作:流式传输协议、下载传输协议、或其组合。

输出接口108和输入接口122可以表示无线发射机/接收机、调制解调器、有线联网组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种标准进行操作的无线通信组件、或其它物理组件。在其中输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(诸如4G、4G-LTE(长期演进)、改进的LTE、5G等)来传输数据(诸如经编码的视频数据)。在其中输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以被配置为根据其它无线标准(诸如IEEE 802.11规范、IEEE 802.15规范(例如,ZigBeeTM)、BluetoothTM标准等)来传输数据(诸如经编码的视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(SoC)设备。例如,源设备102可以包括用于执行被赋予视频编码器200和/或输出接口108的功能的SoC设备,并且目的地设备116可以包括用于执行被赋予视频解码器300和/或输入接口122的功能的SoC设备。

本公开内容的技术可以应用于视频译码,以支持各种多媒体应用中的任何一种,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于HTTP的动态自适应流式传输(DASH))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。

目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收经编码的视频比特流。经编码的视频比特流可以包括由视频编码器200定义的诸如以下语法元素之类的信令信息(其也被视频解码器300使用):所述语法元素具有描述视频块或其它译码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值。显示设备118将经解码的视频数据的经解码的图片显示给用户。显示设备118可以表示各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一种类型的显示设备。

尽管在图1中未示出,但是在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其它硬件和/或软件,以处理包括公共数据流中的音频和视频两者的经复用的流。如果适用,MUX-DEMUX单元可以遵循ITU H.223复用器协议或其它协议(诸如用户数据报协议(UDP))。

视频编码器200和视频解码器300各自可以被实现为各种适当的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件、或其任何组合。当所述技术部分地用软件实现时,设备可以将用于软件的指令存储在适当的非暂时性计算机可读介质中,并且使用一个或多个处理器,用硬件来执行指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每一者可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一者可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器、和/或无线通信设备(诸如蜂窝电话)。

视频编码器200和视频解码器300可以根据视频译码标准(诸如ITU-TH.265(也被称为高效率视频译码(HEVC)标准)或对其的扩展(诸如多视图和/或可伸缩视频译码扩展))进行操作。替代地,视频编码器200和视频解码器300可以根据其它专有或行业标准(诸如联合探索测试模型(JEM)或ITU-T H.266标准,也被称为通用视频译码(VVC))进行操作。VVC标准的最新草案是在以下文档中描述的:Bross等人,“Versatile Video Coding(Draft 7)”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET),第16次会议:瑞士日内瓦,2019年10月1至11日,JVET-P2001-v9(下文中被称为“VVC草案7”)。然而,本公开内容的技术不限于任何特定的译码标准。

通常,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”通常指代包括要被处理的(例如,在编码和/或解码过程中要被编码、被解码或以其它方式使用的)数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行译码。也就是说,并不是对用于图片的样本的红色、绿色和蓝色(RGB)数据进行译码,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中,色度分量可以包括红色色相和蓝色色相色度分量两者。在一些示例中,视频编码器200在进行编码之前将所接收的经RGB格式化的数据转换为YUV表示,并且视频解码器300将YUV表示转换为RGB格式。替代地,预处理和后处理单元(未示出)可以执行这些转换。

概括而言,本公开内容可以涉及对图片的译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本公开内容可以涉及对图片的块的译码以包括对用于块的数据进行编码或解码(例如,预测和/或残差译码)的过程。经编码的视频比特流通常包括用于表示译码决策(例如,译码模式)以及将图片分割为块的语法元素的一系列值。因此,关于对图片或块进行译码的引用通常应当被理解为对用于形成图片或块的语法元素的值进行译码。

HEVC定义了各种块,包括译码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(诸如视频编码器200)根据四叉树结构来将译码树单元(CTU)分割为CU。也就是说,视频译码器将CTU和CU分割为四个相等的、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可以进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)表示对TU的分区。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。经帧内预测的CU包括帧内预测信息,诸如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM或VVC进行操作。根据JEM或VVC,视频译码器(诸如视频编码器200)将图片分割为多个译码树单元(CTU)。视频编码器200可以根据树结构(诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)分割CTU。QTBT结构去除了多种分割类型的概念,诸如在HEVC的CU、PU和TU之间的分隔。QTBT结构包括两个级别:根据四叉树分割而被分割的第一级别、以及根据二叉树分割而被分割的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。

可以以各种方式在图片中对块(例如,CTU或CU)进行分组。作为一个示例,砖块可以指代图片中的特定瓦片内的CTU行的矩形区域。瓦片可以是图片中的特定瓦片列和特定瓦片行内的CTU的矩形区域。瓦片列指代CTU的矩形区域,其具有等于图片的高度的高度以及由语法元素(例如,诸如在图片参数集中)指定的宽度。瓦片行指代CTU的矩形区域,其具有由语法元素指定的高度(例如,诸如在图片参数集中)以及等于图片的宽度的宽度。

在一些示例中,可以将瓦片分割为多个砖块,每个砖块可以包括瓦片内的一个或多个CTU行。没有被分割为多个砖块的瓦片也可以被称为砖块。然而,作为瓦片的真实子集的砖块可以不被称为瓦片。

图片中的砖块也可以以切片来排列。切片可以是图片的整数个砖块,其可以唯一地被包含在单个网络抽象层(NAL)单元中。在一些示例中,切片包括多个完整的瓦片或者仅包括一个瓦片的完整砖块的连续序列。

本公开内容可以互换地使用“NxN”和“N乘N”来指代块(诸如CU或其它视频块)在垂直和水平维度方面的样本大小,例如,16x16个样本或16乘16个样本。通常,16x16 CU在垂直方向上将具有16个样本(y=16),并且在水平方向上将具有16个样本(x=16)。同样地,NxNCU通常在垂直方向上具有N个样本,并且在水平方向上具有N个样本,其中N表示非负整数值。CU中的样本可以按行和列来排列。此外,CU不一定需要在水平方向上具有与在垂直方向上相同的数量的样本。例如,CU可以包括NxM个样本,其中M不一定等于N。

视频编码器200对用于CU的表示预测和/或残差信息以及其它信息的视频数据进行编码。预测信息指示将如何预测CU以便形成用于CU的预测块。残差信息通常表示在编码之前的CU的样本与预测块之间的逐样本差。

为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成用于CU的预测块。帧间预测通常指代根据先前译码的图片的数据来预测CU,而帧内预测通常指代根据同一图片的先前译码的数据来预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索,以识别例如在CU与参考块之间的差异方面与CU紧密匹配的参考块。视频编码器200可以使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)、或其它这种差计算来计算差度量,以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。

JEM和VVC的一些示例还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式下,视频编码器200可以确定表示非平移运动(诸如放大或缩小、旋转、透视运动或其它不规则的运动类型)的两个或更多个运动矢量。

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供六十七种帧内预测模式,包括各种方向性模式、以及平面模式和DC模式。通常,视频编码器200选择帧内预测模式,帧内预测模式描述要根据其来预测当前块(例如,CU的块)的样本的、当前块的相邻样本。假设视频编码器200以光栅扫描次序(从左到右、从上到下)对CTU和CU进行译码,则这样的样本通常可以是在与当前块相同的图片中在当前块的上方、左上方或左侧。

视频编码器200对表示用于当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一种的数据以及用于对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来对运动矢量进行编码。视频编码器200可以使用类似的模式来对用于仿射运动补偿模式的运动矢量进行编码。

在诸如对块的帧内预测或帧间预测之类的预测之后,视频编码器200可以计算用于该块的残差数据。残差数据(诸如残差块)表示在块与用于该块的预测块之间的逐样本差,该预测块是使用对应的预测模式来形成的。视频编码器200可以将一个或多个变换应用于残差块,以在变换域中而非在样本域中产生经变换的数据。例如,视频编码器200可以将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在第一变换之后应用二次变换,诸如模式相关的不可分离二次变换(MDNSST)、信号相关变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,在任何变换以产生变换系数之后,视频编码器200可以执行对变换系数的量化。量化通常指代如下的过程:在该过程中,对变换系数进行量化以可能减少用于表示变换系数的数据量,从而提供进一步的压缩。通过执行量化过程,视频编码器200可以减小与一些或所有变换系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特的值向下舍入为m比特的值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行对要被量化的值的按位右移。

在量化之后,视频编码器200可以扫描变换系数,从而从包括经量化的变换系数的二维矩阵产生一维矢量。可以将扫描设计为将较高能量(并且因此较低频率)的变换系数放在矢量的前面,并且将较低能量(并且因此较高频率)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描次序来扫描经量化的变换系数以产生经串行化的矢量,并且然后对矢量的经量化的变换系数进行熵编码。在其它示例中,视频编码器200可以执行自适应扫描。在扫描经量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术译码(CABAC)来对一维矢量进行熵编码。视频编码器200还可以对用于描述与经编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在对视频数据进行解码时使用。

为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给要被发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以是基于被分配给符号的上下文的。

视频编码器200还可以例如在图片报头、块报头、切片报头中为视频解码器300生成语法数据(诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据)、或其它语法数据(诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS))。同样地,视频解码器300可以对这样的语法数据进行解码以确定如何解码对应的视频数据。

以这种方式,视频编码器200可以生成比特流,其包括经编码的视频数据,例如,描述将图片分割为块(例如,CU)以及用于该块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流并且对经编码的视频数据进行解码。

通常,视频解码器300执行与由视频编码器200执行的过程相反的过程,以对比特流的经编码的视频数据进行解码。例如,视频解码器300可以使用CABAC,以与视频编码器200的CABAC编码过程基本上类似的、但是相反的方式来对用于比特流的语法元素的值进行解码。语法元素可以定义用于将图片的信息分割为CTU、以及根据对应的分割结构(诸如QTBT结构)对每个CTU进行分割以定义CTU的CU的分割信息。语法元素还可以定义用于视频数据的块(例如,CU)的预测和残差信息。

残差信息可以由例如经量化的变换系数来表示。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换以重现用于该块的残差块。视频解码器300使用经信号通知的预测模式(帧内预测或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以对预测块和残差块(在逐个样本的基础上)进行组合以重现原始块。视频解码器300可以执行额外处理,诸如执行去块过程以减少沿着块的边界的视觉伪影。

根据本公开内容的技术,视频编码器和/或视频解码器可以被配置为:重构视频数据块以创建经重构的视频数据块;确定经重构的视频数据块中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的视频数据块以生成经滤波的视频数据块。

概括而言,本公开内容可能涉及“用信号通知”某些信息(诸如语法元素)。术语“用信号通知”通常可以指代对用于语法元素的值和/或用于对经编码的视频数据进行解码的其它数据的传送。也就是说,视频编码器200可以在比特流中用信号通知用于语法元素的值。通常,用信号通知指代在比特流中生成值。如上所述,源设备102可以基本上实时地或不是实时地(诸如可能在将语法元素存储到存储设备112以供目的地设备116稍后取回时发生)将比特流传输到目的地设备116。

在视频译码的领域中,通常应用滤波(例如,自适应环路滤波器),以便增强经重构和/或经解码的视频信号的质量。在本公开内容的上下文中,经重构的视频数据块可以指已经在视频编码器200的重构环路中重构的视频数据块,或者可以指由视频解码器300解码的视频数据块。在一些示例中,可以将滤波器作为后滤波器来应用,其中,经滤波的帧不用于预测将来的帧,或者可以将滤波器作为环路内滤波器来应用,其中,经滤波的帧用于预测将来的帧。例如,可以通过使原始信号与经重构/解码的滤波信号之间的误差最小化来设计滤波器。类似于变换系数,视频编码器200可以通过下式来对滤波器的系数h(k,l)(其中k=-K、…、K,l=-K、…K)进行量化译码:

f(k,l)=round(normFactor·h(k,l))

视频编码器200可以向视频解码器300发送经译码的经量化的系数。归一化因子(normFactor)可以等于2n。normFactor的值越大,量化就越精确,并且经量化的滤波器系数f(k,l)提供更好的性能。然而,较大的normFactor值产生要求发送更多比特的系数f(k,l)。

在视频解码器300中,按如下将经解码的滤波器系数f(k,l)应用于经重构的图像/块R(i,j),如下所示:

其中i和j是帧或块内的样本的坐标。

视频编码器200和视频解码器300可以被配置为实现各种ALF滤波技术。现在将描述这些滤波技术(例如,ALF)的各方面。

在HEVC开发阶段期间对环路内ALF进行评估,但是在HEVC标准的最终版本中未包括ALF。然而,VVC采用了环路内ALF。可以在以下文档中找到示例细节:B.Bross,J.Chen,S.Liu,“JVET-L1001:Versatile Video Coding(Draft 3)”,其是在以下文档中描述的ALF的简化版本:M.Karczewicz,L.Zhang,W.-J.Chien,X.Li,“EE2.5:Improvements onadaptive loop filter”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的探索小组(JVET),Doc.JVET-B0060,第2次会议:美国圣地亚哥,2016年2月20日至26日;以及M.Karczewicz,L.Zhang,W.-J.Chien,X.Li,“EE2.5:Improvements on adaptive loopfilter”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的探索小组(JVET),Doc.JVET-C0038,第3次会议:瑞士日内瓦,2016年5月26日至6月1日。

在VVC中,对于图片中的亮度分量,视频编码器200和视频解码器300可以被配置为将7x7菱形滤波器应用于ALF。在VVC中,对于图片中的两个色度分量(例如,Cr和Cb),视频编码器200和视频解码器300可以被配置为应用单个ALF系数集合,诸如5x5菱形滤波器。在一些示例中,还可以使用其它滤波器形状。

视频解码器300可以被配置为对每个样本进行滤波,这产生如等式(2)所示的样本值I′i,j,其中L表示滤波器长度,fm,n表示滤波器系数,并且o指示滤波器偏移。

其中并且(o=(1<<(BDF-2))在VVC测试模型3(VTM3)中,由BDF表示的比特深度被设置为8。

在VVC测试模型5(VTM5.0)中,在ALF中引入了限幅,并且对等式(2)进行了修改,如等式(2*)所示

其中cm,n是限幅参数。

在VVC草案4中采用了ALF。对ALF分类的详细描述可以在于2019年5月30日提交的美国专利申请16/427,017中找到。在VVC中,使用二次采样梯度计算来针对每个4x4亮度块执行分类,如在以下文档中描述的:“CE2:Subsampled Laplacian calculation(测试6.1、6.2、6.3和6.4)”,JVET-L0147,第12次会议:中国澳门,2018年10月3日至12日。另外,将7抽头滤波器应用于亮度样本,并且将5抽头滤波器适用于色度样本。在VVC草案7中,ALF使用缓冲器的七(7)条线来存储额外的样本,这是因为对沿CTU之间的水平边界的解块滤波器和SAO的依赖性。对线缓冲器的使用的详细描述可以在JVET-M0164和JVET-M0301中找到。

为了减少或移除存储来自相邻CTU的样本的线数量,已经开发了一些技术,诸如JVET-M0164、JVET-M0301、于2018年11月26日提交的美国专利申请16/200,197和于2017年5月2日发布的美国专利9,641,866。

以下各项中的技术仅适用于CTU之间的水平边界:“Adaptive loop filter withvirtual boundary processing”,JVET-M0164,第13次会议:马里兰州马拉喀什,2019年1月9日至18日(以下称为JVET-M0164);“Non-CE:Loop filter line buffer reduction”,JVET-M0301,第13次会议:马里兰州马拉喀什,2019年1月9日至18日(以下称为JVET-M0301);美国专利申请16/200,197;以及美国专利9,641,866。在VVC草案7中,由于图片、切片、瓦片或瓦片组之外的样本的不可用性,在图片、切片、瓦片或瓦片组的边界处应用重复填充。

视频编码器200和视频解码器300可以被配置为确定应用于视频数据块(例如,亮度样本和/或色度样本的块)的多个ALF类别中的一个。当实现VTM3时,视频编码器200和视频解码器300被配置为向每个4x4亮度块应用分类。视频编码器200和视频解码器300可以被配置为基于块的活动的确定方向性和量化值来将每个4x4块分类为25个类别中的一个类别。以下描述了细节。

视频编码器200和视频解码器300可以被配置为基于块的样本的1D拉普拉斯方向和每个4x4亮度块的块的样本的2D拉普拉斯活动来确定块的ALF的分类。在一个示例中,视频编码器200和视频解码器300可以被配置为计算覆盖4x4亮度块的8×8窗口内的每个其它样本的梯度之和,以确定块的梯度值。视频编码器200和视频解码器300可以被配置为计算四个梯度值:由gv表示的垂直梯度值、由gh表示的水平梯度值、由gd1表示的135度对角线梯度值以及由gd2表示的45度对角线梯度值。下表1示出了可以根据梯度确定的潜在方向性值以及其关于块的样本值的物理意义。对于具有左上坐标(i,j)的4x4子块,梯度值gv、gh、gd1和gd2定义为:

其中,如果k和l都是偶数或者k和l都不是偶数,则 否则,Vk,l=0。

其中,如果k和l都是偶数或者k和l都不是偶数,则 否则,Hk,l=0。

其中,如果k和l都是偶数或者k和l都不是偶数,则 否则,D1k,l=0。

其中,如果k和l都是偶数或者k和l都不是偶数,则 否则,D2k,l=0。

表1。方向的值及其物理意义

为了指派方向性D,视频编码器200和视频解码器300可以被配置为将水平和垂直梯度值的最大值和最小值的比率(在下面的等式(3)中由Rh,v表示)和两个对角线梯度的最大值和最小值的比率(在等式(4)中由Rd1,d2表示)与两个门限t1和t2进行比较。

其中

其中

通过比较检测到的水平/垂直和对角线梯度的比率,视频编码器200和视频解码器300可以确定在[0,4](含)的范围内的五种方向模式,即D,如下面的等式(5)中定义的。

视频编码器200和视频解码器300可以将块的活动值Act计算为:

视频编码器200和视频解码器300可以进一步将活动值Act量化到0到4(含)的范围,并且将量化值表示为下面详细说明该量化过程。

示例量化过程定义如下:

avg_var=Clip_post(NUM_ENTRY-1,(Act*ScaleFactor)>>shift);

其中将NUM_ENTRY设置为16,将ScaleFactor设置为24,移位为(3+内部译码比特深度),ActivityToIndex[NUM_ENTRY]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4},并且函数Clip_post(a,b)返回a和b之间的较小值。

由于计算活动值的方法不同,因此与JEM2.0中的ALF设计相比,ScaleFactor和ActivityToIndex两者都可以被修改。

在示例基于几何变换的ALF(GALF)方案中,视频编码器200和视频解码器300可以被配置为基于块的方向性D和块的活动的量化值来将每个N×N块分类为25个类别(C)中的一个类别,如下所示:

在一个示例中,对于每列,将的值设置为0…4,这是根据变量Act推导出的。在顶行标记新值的最小Act(例如,0、8192、16384、57344、122880)。例如,值在[16384,57344-1]范围内的Act将落在等于2中。

对于每种分类,视频编码器200可以被配置为用信号通知一个滤波器系数集合。为了更好地区分标记有相同类别索引的块的不同方向,可以使用四种几何变换,包括无变换、对角线、垂直翻转和旋转。三个额外几何变换的公式形式可以表达为如下:

对角线:fD(k,l)=f(l,k),

垂直翻转:fV(k,l)=f(k,K-l-1), (8)

旋转:fR(k,l)=f(K-l-1,k),

其中K是滤波器的大小,并且0≤k,l≤K-1是系数坐标,使得位置(0,0)位于块的左上角,以及位置(K-1,K-1)位于块的右下角。要注意的是,当使用菱形滤波器支持时,滤波器支持外部坐标的系数可以被设置为0。用于指示几何变换索引的一种技术是隐式地推导几何变换(例如,不用信号通知),以便避免额外开销。在GALF的一些示例中,根据针对该块计算的梯度值来将变换应用于滤波器系数f(k,l)。在下面的表2中描述了变换与四个梯度之间的关系。在一个或多个示例中,变换是基于两个梯度(水平和垂直、或45度和135度梯度)中的哪一个梯度更大的。基于比较,可以提取更准确的方向信息。因此,可以由于变换而获得不同的滤波结果,同时不增加滤波器系数的开销。

表2。梯度和变换的映射。

如上所述,在图片、切片、瓦片或瓦片组的边界(包括水平边界和垂直边界两者)处,这些边界之外的样本不可用于视频编码器200和视频解码器300出于ALF的目的对沿着这些边界的样本执行分类和滤波操作。图片的边界可以是视频数据帧的边界,而切片、瓦片或瓦片组的边界可以是将单个视频数据帧的部分(诸如同一视频数据帧内的切片、瓦片和瓦片组)分离的边界,并且还可以被称为虚拟边界。在一些示例中,出于本公开内容的目的,本文讨论的边界不包括也不是切片/瓦片/瓦片组/图片边界的CTU边界。

图2示出了图片、切片、瓦片或瓦片组之外的样本的示例,这些样本不可用于作为执行自适应环路滤波的一部分对样本执行分类和滤波操作。如图2所示,样本142A-142D在块146的边界140内,其中块146可以是图片、切片、瓦片或瓦片组,并且样本143A-144D在块146的边界140之外。特别地,样本142A-142D被称为沿着边界140,因为样本142A-142D是块146的边缘处的样本,使得样本142A-24D各自与在块146的边界140之外的样本143A-144D中的样本相邻。

在一些示例中,视频编码器200和视频解码器300可以针对块146的样本142A-142D执行分类和滤波操作,其要求使用块146的边界140之外的样本143A-144D。例如,为了计算沿边界140的样本142A的一个或多个梯度值,视频编码器200和300可能要求样本143A中的一个或多个样本执行一个或多个梯度值的计算。然而,由于样本143A-144D在边界140之外,因此样本143A-144D可能不可用于针对样本142A-142D执行分类和滤波操作。

因此,一些技术使用块146的边界140内的最近样本来代替边界140之外的样本,以针对沿边界140的样本(诸如样本142A-142D)执行分类和滤波操作。一种此类技术被称为重复填充并且可用于边界140的水平边界和垂直边界两者。然而,这些技术可能潜在地引入主观和/或客观质量的损失。例如,重复填充可能潜在地在经重构的视频数据中引入不连续性,如果使用了实际样本值,则所述不连续性可能不会出现。

因此,代替使用诸如重复填充之类的技术或其它类似技术,本公开内容的各方面描述了用于通过将块146的边界140之外的样本143A-144D中的一个或多个样本的样本值替换为块146内的样本的样本值来确定沿块146的边界140的样本142A-142D的梯度的技术,该技术采用潜在地改善滤波之后样本的主观和/或客观质量的方式。

在一些方面中,本公开内容的技术将JVET-M0164、JVET-M0301、美国专利申请16/200,197和美国专利9,641,866的技术扩展到图片、切片、瓦片或瓦片组的水平和垂直边界,诸如块146的边界140。所描述的技术可以单独应用或以任何组合一起应用。

在一个示例中,视频编码器200和视频解码器300可以执行梯度计算,作为执行自适应环路滤波的一部分。如上所述,可以基于该块的总拉普拉斯活动和方向性来将样本分类为二十五(25)个类别中的一个类别。在一个示例中,在梯度值的计算中,如果样本不在当前图片/切片/瓦片/瓦片组中,例如在边界140之外,并且因此不可用于梯度值的计算,则在执行梯度计算时,视频编码器200和视频解码器300可以使用当前图片、切片、瓦片或瓦片组(诸如块146)中的不可用样本中的沿梯度方向的最近样本的样本值来代替不可用样本的样本值。

图3A和3B示出了用于使用不可用样本进行自适应环路滤波的梯度计算的技术。作为执行自适应环路滤波的一部分,视频编码器200和视频解码器300可以基于计算样本的梯度值来执行分类和滤波操作。

如图3A所示,块148可以是图片、切片、瓦片、瓦片组等,其中块148边界之外的样本可能不可用于块148内的样本执行梯度计算。块148可以由例如左边界150A(其可以是垂直边界)和上边界150B(其可以是水平边界)限定。术语“边界”在本公开内容中用于表示图片的边界或视频数据的两个部分之间的边界,其中这些部分可以位于相同的视频块内或不同的视频块内。因此,术语“边界”不应被解释为限于将两个视频块分离的边界,但是还可以包括可以将视频数据的任何两部分分离的虚拟边界。在一些示例中,术语边界可能不包括也不是切片/瓦片/瓦片组/图片边界的CTU边界。

图3A示出了沿图片/切片/瓦片/瓦片组的上边界和左边界的样本的示例。L[y,x]是第y行和第x列的亮度样本。因此,在图3A的示例中,样本可以是亮度样本,并且被示为具有L[y,x]形式的坐标,其中y是样本的垂直坐标,并且x是样本的水平坐标,其中L[0,0]表示块148的左上角的样本。因此,沿上边界150B的样本的y坐标为0,而沿块148的左边界150A的样本的x坐标为0。

对于在块148内并且沿左边界150A和上边界150B的样本(例如,假设边界150内的左上样本的坐标为(0,0),则分别为x坐标为0的样本或y坐标为0的样本),视频译码器(例如,视频编码器200和视频解码器300)可以基于沿要计算的梯度方向的相邻样本来计算样本的梯度值。例如,视频译码器可以针对块148内的样本来计算水平方向梯度、垂直方向梯度、45度对角线方向梯度和135度对角线方向梯度。

在一个示例中,视频编码器200和视频解码器300使用1-D拉普拉斯算子来计算样本的水平梯度、垂直梯度和两个对角线梯度的值:

在这些示例中,gv表示垂直梯度值,gh表示水平梯度值,gd1表示135度对角线梯度值,并且gd2表示45度对角线梯度值。此外,k、l是系数坐标,并且R(k,l)是经重构的块的坐标(k,l)处的样本。

可以看出,视频编码器200和视频解码器300可以至少部分地基于与正在计算的梯度值相同的梯度方向上的样本的两个相邻样本来计算样本的梯度值。特别地,视频编码器200和视频解码器300可以计算三(3)个连续相邻样本中的中心样本的四个方向梯度值。因此,视频编码器200和视频解码器300可以计算作为沿梯度方向的三(3)个连续相邻样本中的中心样本的样本的梯度值。然而,三(3)个连续相邻样本中的中心样本的相邻样本可能不可用于计算块148内的样本的梯度值,例如,如果相同梯度方向上的相邻样本中的一个样本在块148的上边界150B之外或左边界150A之外,并且因此在由上边界150B和/或左边界150A限定的图片、切片、瓦片或瓦片组(例如,块148)之外。

根据本公开内容的各个方面,视频编码器200和视频解码器300可以确定沿相同梯度方向的相邻样本是否不可用于计算样本的梯度值,并且如果是,则可以用沿相同梯度方向的可用相邻样本来替换不可用样本。特别地,为了计算作为沿梯度方向的三(3)个连续相邻样本中的中心样本的样本的梯度值,视频编码器200和视频解码器300可以确定三个连续相邻样本中的两个非中心样本中的一个样本是否不可用,并且如果是,则可以用三个连续相邻样本中的另一个非中心样本(即,可用相邻样本)来替换不可用样本,以计算中心样本的梯度值。用可用相邻样本来替换不可用样本包括:出于计算中心样本的梯度值的目的,用可用相邻样本的样本值来替换不可用样本的样本值。

出于计算梯度值的目的,用可用相邻样本替换不可用样本可以包括:使用替换样本的样本值代替不可用样本的样本值来计算梯度值。因此,由于可用相邻样本是用于计算梯度值的三个连续相邻样本之一,所以在计算三个连续相邻样本中的中心样本的梯度值时,可以两次使用可用相邻样本的值来表示三个连续相邻样本中的两个非中心样本。

在图3A的示例中,如果样本位于块148的上边界150B上方,则该样本不可用于确定块148中沿上边界150B的样本的梯度值的目的。如果视频编码器200和视频解码器300确定用于计算与上边界150B相邻的样本的梯度值的三个连续相邻样本中的一个样本位于上边界150B上方,则视频编码器200和视频解码器300可以用三个连续相邻样本中的另一非中心样本替换在上边界150B之外的样本,以计算与上边界150B相邻的样本的梯度值。

例如,为了计算样本152A的垂直梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152A作为沿垂直梯度方向的三(3)个连续样本中的中心样本。以样本152A作为中心样本沿垂直方向的三个连续样本中的另外两个样本是位于垂直梯度方向上紧靠样本152A下方的位置L[1,x]处的相邻样本152B和位于垂直梯度方向上紧靠样本152A上方的位置L[-1,x]处的相邻样本152C。

然而,如在图3A中可见,在位置L[-1,x]处紧靠样本152A上方的相邻样本152C可能不可用,因为相邻样本152C在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152C不可用,视频编码器200和视频解码器300可以用样本152B(其是沿垂直梯度方向的三个连续相邻样本152A-152C中的另一非中心样本)来替换不可用样本152C,以确定样本152A的垂直梯度值。如图3A所示,样本152C被替换为位置L[1,x]处的样本,其为样本152B。

在另一示例中,为了计算样本152D的45度对角线梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152D作为沿45度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152D作为中心样本的沿45度梯度方向的三个连续样本中的另外两个样本是位于45度对角线梯度方向上紧靠样本152D右下方的位置L[1,x+1]处的相邻样本152E和位于45度对角线梯度方向上紧靠样本152D左上方的位置L[-1,x-1]处的相邻样本152F。

然而,如在图3A中可见,在位置L[-1,x-1]处紧靠样本152D左上方的相邻样本152F可能不可用,因为它在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152F不可用,视频编码器200和视频解码器300可以用样本152E(其是沿45度对角线梯度方向的三个连续相邻样本152D-152F中的另一非中心样本)来替换不可用样本152F,以确定样本152D的45度对角线梯度值。如图3A所示,样本152F被替换为位置L[1,x+1]处的样本,其为样本152E。

在另一示例中,为了计算样本152G的135度对角线梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152G作为沿135度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152G作为中心样本的沿135度梯度方向的三个连续样本中的另外两个样本是位于135度对角线梯度方向上紧靠样本152G左下方的位置L[1,x-1]处的相邻样本152H和位于135度对角线梯度方向上紧靠样本152G右上方的位置L[-1,x+1]处的相邻样本152I。

然而,如在图3A中可见,在位置L[-1,x+1]处紧靠样本152G右上方的相邻样本152I可能不可用,因为它在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152I不可用,视频编码器200和视频解码器300可以用样本152H(其是沿135度对角线梯度方向的三个连续相邻样本152G-152I中的另一非中心样本)来替换不可用样本152I,以确定样本152G的135度对角线梯度值。如图3A所示,样本152I被替换为位置L[1,x-1]处的样本,其为样本152H。

在另一示例中,为了计算样本152J的水平梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152J作为沿水平梯度方向的三(3)个连续样本中的中心样本。以样本152L作为中心样本沿水平方向的三个连续样本中的另外两个样本是位于水平梯度方向上紧靠样本152J右侧的位置L[0,x+1]处的相邻样本152K和位于水平梯度方向上紧靠样本152J左侧的位置L[0,x-1]处的相邻样本152L。因为样本152J-152L都在块148内并且不在左边界150A或上边界150B之外,所以视频编码器200和视频解码器300可能不必替换样本152J-152L中的任何一个来计算样本152J的水平梯度值。

类似地,在图3A的示例中,如果样本位于块148的左边界150A左侧,则该样本不可用于确定块148中沿左边界150A的样本的梯度值的目的。如果视频编码器200和视频解码器300确定用于计算与左边界150A相邻的样本的梯度值的三个连续相邻样本中的一个样本位于左边界150A左侧,则视频编码器200和视频解码器300可以用三个连续相邻样本中的另一非中心样本替换在左边界150A之外的样本,以计算与左边界150A相邻的样本的梯度值。

例如,为了计算样本152M的水平梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152M作为沿水平梯度方向的三(3)个连续样本中的中心样本。以样本152M作为中心样本沿垂直方向的三个连续样本中的另外两个样本是位于水平梯度方向上紧靠样本152M右侧的位置L[y,1]处的相邻样本152N和位于水平梯度方向上紧靠样本152M左侧的位置L[y,-1]处的相邻样本152O。

然而,如在图3A中可见,在位置L[y,-1]处紧靠样本152M左侧的相邻样本152O可能不可用,因为它在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152O不可用,视频编码器200和视频解码器300可以用样本152N(其是沿水平梯度方向的三个连续相邻样本152M-152O中的另一非中心样本)来替换不可用样本152O,以确定样本152M的水平梯度值。如图3A所示,样本152O被替换为位置L[y,1]处的样本,其为样本152N。

在另一示例中,为了计算样本152P的45度对角线梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152P作为沿45度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152P作为中心样本的沿45度梯度方向的三个连续样本中的另外两个样本是位于45度对角线梯度方向上紧靠样本152P右下方的位置L[y+1,1]处的相邻样本152Q和位于45度对角线梯度方向上紧靠样本152P左上方的位置L[y-1,-1]处的相邻样本152R。

然而,如在图3A中可见,在位置L[y-1,-1]处紧靠样本152P左上方的相邻样本152R可能不可用,因为它在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152R不可用,视频编码器200和视频解码器300可以用样本152Q(其是沿45度对角线梯度方向的三个连续相邻样本152P-152R中的另一非中心样本)来替换不可用样本152R,以确定样本152P的45度对角线梯度值。如图3A所示,样本152R被替换为位置L[y+1,1]处的样本,其为样本152Q。

在另一示例中,为了计算样本152S的135度对角线梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152S作为沿135度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152S作为中心样本的沿135度梯度方向的三个连续样本中的另外两个样本是位于135度对角线梯度方向上紧靠样本152S右上方的位置L[y-1,1]处的相邻样本152U和位于135度对角线梯度方向上紧靠样本152S左下方的位置L[y+1,-1]处的相邻样本152T。

然而,如在图3A中可见,在位置L[y+1,-1]处紧靠样本152S左下方的相邻样本152T可能不可用,因为它在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152T不可用,视频编码器200和视频解码器300可以用样本152U(其是沿135度对角线梯度方向的三个连续相邻样本152S-152U中的另一非中心样本)来替换不可用样本152T,以确定样本152S的135度对角线梯度值。如图3A所示,样本152T被替换为位置L[y-1,1]处的样本,其为样本152U。

在另一示例中,为了计算样本152J的垂直梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152V作为沿垂直梯度方向的三(3)个连续样本中的中心样本。以样本152V作为中心样本沿垂直方向的三个连续样本中的另外两个样本是位于垂直梯度方向上紧靠样本152V下方的位置L[y+1,0]处的相邻样本152W和位于垂直梯度方向上紧靠样本152V上方的位置L[y-1,0]处的相邻样本152X。因为样本152V-152X都在块148内并且不在左边界150A或上边界150B之外,所以视频编码器200和视频解码器300可能不必替换样本152V-152X中的任何一个来计算样本152V的垂直梯度值。

根据本公开内容的一些方面,出于计算样本的梯度值的目的,视频编码器200和视频解码器300可以使用镜像填充来用可用相邻样本的样本值替换边界之外的不可用样本的样本值,而不是用相同梯度方向上的样本替换边界之外(诸如左边界150A或上边界150B之外)的不可用样本。镜像填充可以指视频编码器200和视频解码器300在块的当前边界附近镜像样本值以代替(即,替换)不可用样本的实际样本值的过程。

如果不可用样本与水平边界(诸如上边界150B)相邻,则视频编码器200和视频解码器300可以执行镜像填充,以将不可用样本的样本值替换为与不可用样本在同一列上并且在水平边界内的样本的样本值。特别地,视频编码器200和视频解码器300可以确定不可用样本距与水平边界相邻的同一列上的样本的垂直距离。视频编码器200和视频解码器300可以确定与不可用样本在同一列上的可用样本,该不可用样本距与水平边界相邻的同一列上的样本相等的垂直距离,但是在与水平边界相邻的同一列上的样本相反的方向上。视频编码器200和视频解码器300可以将不可用样本的样本值替换为同一列上的可用样本的样本值,该可用样本与另一方向上的不可用样本距与水平边界相邻的同一列上的样本相等的垂直距离。

在图3B的示例中,在坐标系L[y,x]中,给定在上边界150B之外并且因此不可用的L[-1,4]处的样本,视频编码器200和视频解码器300可以将该不可用样本与在L[0,4]处与上边界150B相邻的同一列上的样本之间的垂直距离确定为垂直距离1。视频编码器200和视频解码器300可以确定L[1,4]处的样本是在另一方向上距L[0,4]处的样本相等的垂直距离的同一列上的样本,并且可以用L[1,4]处的样本的样本值替换L[-1,4]处的不可用样本的样本值,从而针对L[-1,4]处的不可用样本执行镜像填充。

例如,为了计算样本152A的垂直梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152A作为沿垂直梯度方向的三(3)个连续样本中的中心样本。以样本152A作为中心样本沿垂直方向的三个连续样本中的另外两个样本是位于垂直梯度方向上紧靠样本152A下方的位置L[1,x]处的相邻样本152B和位于垂直梯度方向上紧靠样本152A上方的位置L[-1,x]处的相邻样本152C。

然而,如在图3B中可见,在位置L[-1,x]处紧靠样本152A上方的相邻样本152C可能不可用,因为相邻样本152C在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152C不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152C。特别地,视频编码器200和视频解码器300可以确定位置L[-1,x]处的样本152B是上边界150B内的样本,该样本与不可用样本152B在同一列上,并且与另一方向上的不可用样本152C距与上边界150B相邻的同一列上的位置L[0,x]处的样本152A相等的垂直距离。因此,样本152C被替换为位置L[1,x]处的样本,其为样本152B。

在另一示例中,为了计算样本152D的45度对角线梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152D作为沿45度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152D作为中心样本的沿45度梯度方向的三个连续样本中的另外两个样本是位于45度对角线梯度方向上紧靠样本152D右下方的位置L[1,x+1]处的相邻样本152E和位于45度对角线梯度方向上紧靠样本152D左上方的位置L[-1,x-1]处的相邻样本152F。

然而,如在图3B中可见,在位置L[-1,x-1]处紧靠样本152D左上方的相邻样本152F可能不可用,因为它在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152F不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152F。特别地,视频编码器200和视频解码器300可以确定位置L[1,x-1]处的样本153A是上边界150B内的样本,该样本与不可用样本152F在同一列上,并且与另一方向上的不可用样本152F距与上边界150B相邻的同一列上的位置L[0,x-1]处的样本相等的垂直距离。因此,样本152F被替换为位置L[1,x-1]处的样本,其为样本153A。

在另一示例中,为了计算样本152G的135度对角线梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152G作为沿135度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152G作为中心样本的沿135度梯度方向的三个连续样本中的另外两个样本是位于135度对角线梯度方向上紧靠样本152G左下方的位置L[1,x-1]处的相邻样本152H和位于135度对角线梯度方向上紧靠样本152G右上方的位置L[-1,x+1]处的相邻样本152I。

然而,如在图3B中可见,在位置L[-1,x+1]处紧靠样本152G右上方的相邻样本152I可能不可用,因为它在块148的上边界150B之外。根据本公开内容的各方面,响应于确定样本152I不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152I。特别地,视频编码器200和视频解码器300可以确定位置L[1,x+1]处的样本153B是上边界150B内的样本,该样本与不可用样本152I在同一列上,并且与另一方向上的不可用样本152I距与上边界150B相邻的同一列上的位置L[0,x+1]处的样本相等的垂直距离。因此,样本152I被替换为位置L[1,x+1]处的样本,其为样本153B。

在另一示例中,为了计算样本152J的水平梯度值,视频编码器200和视频解码器300可以将位置L[0,x]处的样本152J作为沿水平梯度方向的三(3)个连续样本中的中心样本。以样本152L作为中心样本沿水平方向的三个连续样本中的另外两个样本是位于水平梯度方向上紧靠样本152J右侧的位置L[1,x+1]处的相邻样本152K和位于水平梯度方向上紧靠样本152J左侧的位置L[0,x-1]处的相邻样本152L。因为样本152J-152L都在块148内并且不在左边界150A或上边界150B之外,所以视频编码器200和视频解码器300可能不必替换样本152J-152L中的任何一个来计算样本152J的水平梯度值。

类似地,如果不可用样本与垂直边界(诸如左边界150A)相邻,则视频编码器200和视频解码器300可以执行镜像填充,以将不可用样本的样本值替换为与不可用样本在同一行并且在垂直边界内的样本的样本值。特别地,视频编码器200和视频解码器300可以确定不可用样本距与垂直边界相邻的同一行上的样本的水平距离。视频编码器200和视频解码器300可以确定与不可用样本在同一行上的样本,该不可用样本距与垂直边界相邻的同一行上的样本相等的水平距离,但是在与垂直边界相邻的同一行上的样本相反的方向上。视频编码器200和视频解码器300可以将不可用样本的样本值替换为同一行上的可用样本的样本值,该可用样本与另一方向上的不可用样本距与在另一方向上垂直边界相邻的同一列上的样本相等的水平距离。

在图3B的示例中,在坐标系L[y,x]中,给定在左边界150A之外并且因此不可用的L[y,-1]处的样本,视频编码器200和视频解码器300可以将该不可用样本与在L[y,0]处与左边界150A相邻的同一行上的样本之间的水平距离确定为水平距离1。视频编码器200和视频解码器300可以确定L[y,1]处的样本是在另一方向上距L[y,0]处的样本相等的水平距离的同一行上的样本,并且可以用L[y,1]处的样本的样本值替换L[y,-1]处的不可用样本的样本值,从而针对L[y,-1]处的不可用样本执行镜像填充。

例如,为了计算样本152M的水平梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152M作为沿水平梯度方向的三(3)个连续样本中的中心样本。以样本150M作为中心样本沿水平方向的三个连续样本中的另外两个样本是位于水平梯度方向上紧靠样本152M右侧的位置L[y,1]处的相邻样本152N和位于水平梯度方向上紧靠样本152M左侧的位置L[y,-1]处的相邻样本152O。

然而,如在图3B中可见,在位置L[y,-1]处紧靠样本152M左侧的相邻样本152O可能不可用,因为相邻样本152O在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152O不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152O。特别地,视频编码器200和视频解码器300可以确定位置L[y,1]处的样本152N是左边界150A内的样本,该样本与不可用样本152O在同一行上,并且与另一方向上的不可用样本152I距与左边界150A相邻的同一行上的位置L[y,0]处的样本相等的垂直距离。因此,样本152O被替换为位置L[y,1]处的样本,其为样本152N。

在另一示例中,为了计算样本152P的45度对角线梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152P作为沿45度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152P作为中心样本的沿45度梯度方向的三个连续样本中的另外两个样本是位于45度对角线梯度方向上紧靠样本152P右下方的位置L[y+1,1]处的相邻样本152Q和位于45度对角线梯度方向上紧靠样本152P左上方的位置L[y-1,-1]处的相邻样本152R。

然而,如在图3B中可见,在位置L[y-1,-1]处紧靠样本152P左上方的相邻样本152R可能不可用,因为它在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152R不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152R。特别地,视频编码器200和视频解码器300可以确定位置L[y-1,1]处的样本154C是左边界150A内的样本,该样本与不可用样本152R在同一行上,并且与另一方向上的不可用样本152R距与左边界150A相邻的同一行上的位置L[y-1,0]处的样本相等的垂直距离。因此,样本152R被替换为位置L[y-1,1]处的样本,其为样本154C。

在另一示例中,为了计算样本152S的135度对角线梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152S作为沿135度对角线梯度方向的三(3)个连续样本中的中心样本。以样本152S作为中心样本的沿135度梯度方向的三个连续样本中的另外两个样本是位于135度对角线梯度方向上紧靠样本152S右上方的位置L[y-1,1]处的相邻样本152U和位于135度对角线梯度方向上紧靠样本152S左下方的位置L[y+1,-1]处的相邻样本152T。

然而,如在图3B中可见,在位置L[y+1,-1]处紧靠样本152S左下方的相邻样本152T可能不可用,因为它在块148的左边界150A之外。根据本公开内容的各方面,响应于确定样本152T不可用,视频编码器200和视频解码器300可以执行镜像填充以替换不可用样本152T。特别地,视频编码器200和视频解码器300可以确定位置L[y+1,1]处的样本154D是左边界150A内的样本,该样本与不可用样本152T在同一行上,并且与另一方向上的不可用样本152T距与左边界150A相邻的同一行上的位置L[y+1,0]处的样本相等的垂直距离。因此,样本152T被替换为位置L[y+1,1]处的样本,其为样本154D。

在另一示例中,为了计算样本152J的垂直梯度值,视频编码器200和视频解码器300可以将位置L[y,0]处的样本152V作为沿垂直梯度方向的三(3)个连续样本中的中心样本。以样本152V作为中心样本沿垂直方向的三个连续样本中的另外两个样本是位于垂直梯度方向上紧靠样本152V下方的位置L[y+1,0]处的相邻样本152W和位于垂直梯度方向上紧靠样本152V上方的位置L[y-1,0]处的相邻样本152X。因为样本152V-152X都在块148内并且不在左边界150A或上边界150B之外,所以视频编码器200和视频解码器300可能不必替换样本152V-152X中的任何一个来计算样本152V的垂直梯度值。

在一些示例中,如上所述,为了执行ALF,视频编码器200和视频解码器300可以至少部分地基于样本的梯度值来确定样本的分类,例如,使用在图3A和3B中描述的技术来确定。特别地,视频编码器200和视频解码器300可以被配置为基于梯度值确定要应用于视频数据块(例如,亮度样本和/或色度样本块)的ALF的多个类别中的一个类别。在一些示例中,视频编码器200和视频解码器300被配置为向每个4x4亮度块应用分类。视频编码器200和视频解码器300可以被配置为基于块的活动的确定方向性和量化值来将每个4x4块分类为25个类别中的一个类别,以便为每个块选择自适应环路滤波器。以下描述了细节。

视频编码器200和视频解码器300可以被配置为基于块的样本的1D拉普拉斯方向和每个4x4亮度块的块的样本的2D拉普拉斯活动来确定块的ALF的分类。在一个示例中,视频编码器200和视频解码器300可以被配置为计算覆盖4x4亮度块的8×8窗口内的每个其它样本的梯度之和,以确定块的梯度值。视频编码器200和视频解码器300可以被配置为计算四个梯度值:由gv表示的垂直梯度值、由gh表示的水平梯度值、由gd1表示的135度对角线梯度值以及由gd2表示的45度对角线梯度值。

如图4A所示,视频编码器200和视频解码器300可以针对8x8区域中的样本计算梯度值(在图4A中表示为“D1”)。计算样本的梯度值可以包括:以相同的方式计算垂直梯度、水平梯度、45度对角线梯度和135度对角线梯度中的每一项的值。

在一些示例中,视频编码器和视频解码器300可以针对8x8区域中的所有样本或8x8区域中少于所有样本计算梯度值。例如,为了针对8x8区域中少于所有样本计算梯度值,视频编码器200和视频解码器300可以针对8x8区域中的每隔一个的样本计算梯度值,如图4A所示,而不是针对8x8区域中的每个样本计算梯度值。在一些示例中,与针对8x8区域中的每个样本确定梯度值相反,针对8x8区域中少于所有样本(例如,针对每隔一个的样本)确定梯度值可以被称为“二次采样”,并且针对8x8区域中少于所有样本确定的梯度值可以被称为“二次采样梯度”

在当前VVC中,4x4块(诸如在图4A中示为被打阴影的块170)在8x8周围窗口(诸如区域172)中累积二次采样梯度。在图4A中将区域172在块170之外的部分示为未被打阴影。在一个示例中,视频编码器200和视频解码器300将块170的活动确定为区域172上的垂直梯度和水平梯度之和。视频编码器200和视频解码器300对该值进行量化以产生五个活动值。此外,视频编码器200和视频解码器300通过比较方向梯度来确定块170内的主梯度方向,并且另外确定方向强度,其给出五个方向值。这两个特征在一起产生了25个类别。

然而,区域172在块170之外的部分也可能超出区块170的水平边界或垂直边界,并且因此在块170的水平边界或垂直边界之外的梯度可能不可用于确定区域172上的梯度之和。例如,区域172在块170的水平边界或垂直边界另一侧的块170之外的部分超出水平边界或垂直边界。水平边界和垂直边界的示例可以包括图片边界、切片边界、瓦片边界、瓦片组边界等,如遍及本公开内容所讨论的。因此,本公开内容的各方面适用于非CTU边界,诸如图片边界(即,视频数据帧的边界)或虚拟边界。

用于潜在地克服这一问题的一种技术涉及使用填充样本来确定不可用的样本的梯度。例如,对于框170中的当前样本A,如果视频编码器200和视频解码器300需要位于相对于样本A的水平或垂直边界的另一侧的样本B,则视频编码器200和视频解码器300可以用在块170内样本A侧的样本B的最近样本来替换样本B的值。这种替换样本可以被称为填充样本。然而,这些技术可能潜在地引入主观和/或客观质量的损失。例如,填充可能潜在地在经重构的视频数据中引入不连续性,如果使用了实际样本值,则所述不连续性可能不会出现。

根据本公开内容的各个方面,不是使用填充样本来替换图片、切片、瓦片或瓦片组的边界之外的梯度,而是将这些梯度替换为图片、切片、瓦片或瓦片组边界之内的梯度。在一些示例中,可以用边界内的梯度替换边界之外的梯度,即使边界内的梯度在4x4块170之外。

如图4B所示,如果梯度在图片、切片、瓦片或瓦片组的水平边界174之外,则使用图片、切片、瓦片或瓦片组的同一列上的最近梯度。特别地,样本160A-160H在水平边界174之外,因为样本160A-160H在块170的水平边界174的另一侧。因此,样本160A-160H的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,视频编码器200和视频解码器300可以将水平边界174之外的区域172中的梯度替换为水平边界174内的区域172中的同一列中的最近梯度(即,与块170位于水平边界174的同一侧)。因此,在图4B的示例中,视频编码器200和视频解码器300可以将水平边界174之外的样本160A的梯度替换为水平边界174内的样本160I的梯度,如从由从样本160I指向样本160A的箭头表示。视频编码器200和视频解码器300可以将水平边界174之外的样本160E的梯度替换为水平边界174内的样本160K的梯度,如由从样本160K指向样本160E的箭头表示。

视频编码器200和视频解码器300可以将水平边界174之外的样本160B的梯度替换为水平边界174内的样本162A的梯度,如由从样本162A指向样本160B的箭头表示。视频编码器200和视频解码器300还可以将水平边界174之外的样本160F的梯度替换为水平边界174内的样本162C的梯度,如由从样本162C指向样本160F的箭头表示。视频编码器200和视频解码器300还可以将水平边界174之外的样本160C的梯度替换为水平边界174内的样本162B的梯度,如由从样本162B指向样本160C的箭头指示。视频编码器200和视频解码器300还可以将水平边界174之外的样本160G的梯度替换为水平边界174内的样本162D的梯度,如由从样本162D指向样本160G的箭头指示。

视频编码器200和视频解码器300还可以将水平边界174之外的样本160D的梯度替换为水平边界174内的样本160J的梯度,如由从样本160J指向样本160D的箭头表示。视频编码器200和视频解码器300还可以将水平边界174之外的样本160H的梯度替换为水平边界174内的样本160L的梯度,如由从样本160L指向样本160H的箭头表示。

如图4C所示,如果梯度在垂直边界176之外,则使用由垂直边界176限定的图片、切片、瓦片或瓦片组中的同一行上的最近梯度。特别地,样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U在垂直边界176之外,因为样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U在块170的垂直边界176的另一侧。因此,样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,视频编码器200和视频解码器300可以将垂直边界176之外的区域172中的梯度替换为垂直边界176内的区域172中的同一行中的最近梯度(即,与框170位于垂直边界176的同一侧)。因此,在图4C的示例中,视频编码器200和视频解码器300可以将垂直边界176之外的样本160A的梯度替换为垂直边界176内的样本160B的梯度,如由从样本160B指向样本160A的箭头表示。视频编码器200和视频解码器300可以将垂直边界176之外的样本160E的梯度替换为垂直边界176内的样本160F的梯度,如由从样本160F指向样本160E的箭头表示。

视频编码器200和视频解码器300可以将垂直边界176之外的样本160I的梯度替换为垂直边界176内的样本162A的梯度,如由从样本162A指向样本160I的箭头表示。视频编码器200和视频解码器300还可以将垂直边界176之外的样本160K的梯度替换为垂直边界176内的样本162C的梯度,如由从样本162C指向样本160K的箭头表示。视频编码器200和视频解码器300还可以将垂直边界176之外的样本160M的梯度替换为垂直边界176内的样本162E的梯度,如由从样本162E指向样本160M的箭头表示。视频编码器200和视频解码器300还可以将垂直边界176之外的样本160O的梯度替换为垂直边界176内的样本162G的梯度,如由从样本162G指向样本160O的箭头表示。

视频编码器200和视频解码器300还可以将垂直边界176之外的样本160Q的梯度替换为垂直边界176内的样本160R的梯度,如由从样本160R指向样本160Q的箭头表示。视频编码器200和视频解码器300还可以将垂直边界176之外的样本160U的梯度替换为垂直边界176内的样本160V的梯度,如由从样本160V指向样本160U的箭头表示。

在另一示例中,视频编码器200和视频解码器300可以计算图片、切片、瓦片或瓦片组中的额外梯度,以替换图片、切片、瓦片或瓦片组之外的不可用梯度。如上所述,视频编码器200和视频解码器300可以针对8x8区域172中的每隔一个的样本计算梯度,包括针对块170中的每隔一个的样本计算梯度,从而针对块170中的十六个样本中的八个样本计算梯度。此外,如图5B和C所示,水平边界174和垂直边界176可以各自导致区域172中在水平边界174或垂直边界176之外的八个梯度不可用。因此,视频编码器200和视频解码器300可以通过针对块170中的八个额外样本计算额外八个梯度来替换八个不可用梯度。

如图4D所示,样本160A-160H在水平边界174之外,因为样本160A-160H在块170的水平边界174的另一侧。因此,样本160A-160H的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,当计算二次采样梯度值时,视频编码器200和视频解码器300可以通过针对块170中的八个样本计算额外八个梯度来替换不可用梯度。例如,视频编码器200和视频解码器300可以针对块170内的样本162I-162P计算梯度,并且可以使用样本162I-162P的梯度来代替样本160A-160H的不可用梯度以执行块170的分类。

类似地,如图4E所示,样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U在垂直边界176之外,因为样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U在块170的垂直边界176的另一侧。因此,样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,当计算二次采样梯度值时,视频编码器200和视频解码器300可以通过针对块170中的八个样本计算额外八个梯度来替换不可用梯度。例如,视频编码器200和视频解码器300可以针对块170内的样本162I-162P计算梯度,并且可以使用样本162I-162P的梯度来代替样本160A、样本160E、样本160I、样本160K、样本160M、样本160O、样本160Q和样本160U的不可用梯度以执行块170的分类。

在另一示例中,如果梯度在边界之外,则使用图片、切片、瓦片或瓦片组中的相同梯度方向上的最近梯度。这可以适用于水平梯度、垂直梯度和对角线梯度。

如图4F所示,区域172可以包括135度对角线梯度,被表示为“D1”。因此,边界之外的梯度可以被替换为相同135度对角线方向上的最近梯度。

在图4F中,对于具有水平边界174的区域172,样本160A-160H在水平边界174之外,因为样本160A-160H在块170的水平边界174的另一侧。因此,样本160A-160H的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,视频编码器200和视频解码器300可以将水平边界174之外的区域172中的梯度替换为水平边界174内的区域172中的同一梯度方向上的最近梯度(即,与块170位于水平边界174的同一侧)。

因为图4F将区域172示为具有135度对角线梯度(每个梯度由“D1”表示),所以样本160A-160H的每个不可用梯度都是135度对角线梯度,并且视频编码器200和视频解码器300可以将样本160A-160H的每个不可用梯度替换为沿135度对角线梯度的最近可用梯度。

样本162A与样本160A和160E沿相同的135度对角线方向。因此,样本160A和样本160E两者的135度对角线梯度可以被替换为样本162A的135度对角线梯度,如由从样本162A指向样本160A和160E的箭头表示。

样本162B与样本160B和160F沿相同的135度对角线方向。因此,样本160B和样本160F两者的135度对角线梯度可以被替换为样本162B的135度对角线梯度,如由从样本162B指向样本160B和160F的箭头表示。

样本160J与样本160C和160G沿相同的135度对角线方向。因此,样本160C和样本160G两者的135度对角线梯度可以被替换为样本160J的135度对角线梯度,如由从样本160J指向样本160C和160G的箭头表示。

如图4G所示,区域172还可以包括45度对角线梯度,被表示为“D2”。因此,边界之外的梯度可以被替换为相同45度对角线方向上的最近梯度。

在图4G中,对于具有水平边界174的区域172,样本160A-160H在水平边界174之外,因为样本160A-160H在块170的水平边界174的另一侧。因此,样本160A-160H的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。

根据本公开内容的各个方面,视频编码器200和视频解码器300可以将水平边界174之外的区域172中的梯度替换为水平边界174内的区域172中的同一梯度方向上的最近梯度(即,与块170位于水平边界174的同一侧)。

因为图4G将区域172示为具有45度对角线梯度(每个梯度由“D2”表示),所以样本160A-160H的每个不可用梯度都是45度对角线梯度,并且视频编码器200和视频解码器300可以将样本160A-160H的每个不可用梯度替换为沿45度对角线梯度的最近可用梯度。

样本160I与样本160B和160E沿相同的45度对角线方向。因此,样本160B和样本160E两者的45度对角线梯度可以被替换为样本160I的45度对角线梯度,如由从样本160I指向样本160B和160E的箭头表示。

样本162A与样本160C和160F沿相同的45度对角线方向。因此,样本160C和样本160F两者的45度对角线梯度可以被替换为样本162A的45度对角线梯度,如由从样本162A指向样本160C和160F的箭头表示。

样本162B与样本160D和160G沿相同的45度对角线方向。因此,样本160D和样本160G两者的45度对角线梯度可以被替换为样本162B的45度对角线梯度,如由从样本162B指向样本160D和160G的箭头表示。

样本160J与样本160H沿相同的135度对角线方向。因此,样本160H的45度对角线梯度可以被替换为样本160J的45度对角线梯度,如由从样本160J指向样本160H的箭头表示。

在另一示例中,视频编码器200和视频解码器300可以避免计算图片/切片/瓦片/瓦片组之外的梯度。替代地,视频编码器200和视频解码器300可以使用区域172中少于所有的二次采样梯度来执行块170的分类。

如图4H所示,对于具有水平边界174的区域172,样本160A-160H在水平边界174之外,因为样本160A-160H在块170的水平边界174的另一侧。因此,样本160A-160H的梯度不可用于至少部分地基于累积块170的8x8周围区域172中的二次采样梯度来对块170进行分类。因此,视频编码器200和视频解码器300可以避免确定样本160A-160H的梯度。替代地,视频编码器200和视频解码器300可以计算样本160I-160X和样本162A-162H的梯度以对块170进行分类。

由于梯度数量被改变,因此视频编码器200和视频解码器300可以重新归一化活动和分类计算。特别地,因为图4H的示例中的视频编码器200和视频解码器300不计算不可用的八个样本的梯度,所以视频编码器200和视频解码器300可以计算区域172中的24个样本的梯度,而不是32个样本的梯度。

在一个示例中,为了确定梯度值(g),视频编码器200和视频解码器300可以被配置为确定垂直梯度(gv)、水平梯度(gh)、135度对角线梯度(gd1)和45度对角线梯度(gd2)。此外,为了基于缩放因子来缩放梯度值(g)以产生经缩放的梯度值(g’),视频编码器200和视频解码器300可以使用以下等式来缩放梯度值(g):g’=g/num_available_samples*num_full_samples,其中num_available_samples表示窗口中未被填充的样本数量(例如,窗口中与经重构的块位于虚拟边界同一侧的可用样本数量),并且num_full_sample表示窗口中的样本总数。例如,在图4H的示例中,其中8个样本的梯度不可用,num_available_samples可以是24,并且num_full_samples可以是32。

如上所述,视频编码器200和视频解码器300可以基于在诸如区域172之类的周围窗口中计算的二次采样梯度来确定经重构的视频数据块(诸如块170)的自适应环路滤波器,诸如关于图4A-4H描述的。在一个示例中,视频编码器200和视频解码器300可以基于在周围窗口中计算的二次采样梯度来确定块的方向性和活动索引,并且可以基于块的方向性和活动索引来确定用于块的自适应环路滤波器。

图5示出了示例自适应环路滤波器。例如,视频编码器200和视频解码器300可以基于用于经重构的视频数据块(诸如图5所示的块170A)的自适应环路滤波器的类别来选择示例自适应环路滤波器,滤波器184可以是对称滤波器,诸如7x7菱形滤波器。在其它示例中,该技术可以同样适用于任何其它对称滤波器,诸如5x5菱形滤波器、9x9菱形滤波器等,包括矩形滤波器、八角形滤波器、十字形滤波器、X形滤波器、T形滤波器或任何其它对称滤波器。滤波器184的滤波器支持180A对应于水平边界182内的样本,并且因此可以是可用的,而滤波器184的滤波器支持180B对应于水平边界182之外的样本,并且因此可能是不可用的。

在一个示例中,视频编码器200和视频解码器300可以使用非对称部分滤波器来对经重构的视频数据块的样本进行滤波。在这种情况下,视频编码器200和视频解码器300可以仅对与可用样本相对应的抽头进行滤波以对样本进行滤波,从而跳过其对应样本不可用的滤波器抽头。如下所述,视频编码器200和视频解码器300可能由于跳过其对应样本不可用的滤波器抽头而执行重新归一化。

根据本公开内容的各个方面,视频编码器可以使用滤波器184的可用滤波器支持180A作为非对称部分滤波器,作为执行ALF的一部分,视频编码器200和视频解码器300可以将该非对称部分滤波器应用于经重构的样本以生成经滤波的样本。通过使用滤波器184的可用滤波器支持180A,视频编码器200和视频解码器300可以跳过其对应样本不可用的滤波器抽头,例如在滤波器支持180B中。部分滤波器是不使用通常用于滤波过程的一个或多个滤波器系数的滤波器。以这种方式,可以从滤波器的可用样本生成滤波器,同时跳过其对应样本不可用的滤波器抽头。视频编码器200和视频解码器300可以重新归一化非对称部分滤波器。

通常,选择的滤波器的滤波器系数之和为一(意味着滤波器系数被归一化),以便不通过应用滤波器来添加或移除视频数据。通过跳过或移除选择的滤波器的滤波器系数以确定部分滤波器(由于从最初选择的滤波器移除了一个或多个滤波器系数,因此再次被称为“部分”滤波器),所得的部分滤波器变得非归一化(意味着部分滤波器的滤波器系数之和不为一)。因此,视频编码器200和视频解码器300可以重新归一化包括在部分滤波器内的多个滤波器系数,使得滤波器系数之和为一,例如,通过对部分滤波器内的每个滤波器系数进行缩放。然后,视频编码器200和视频解码器300可以在视频数据的第一块的边界附近应用经重新归一化的部分滤波器以生成经滤波的视频数据的第一块。视频编码器200和视频解码器300可以存储该经滤波的视频数据的第一块,以在重构视频数据的其它块时用作参考视频数据。视频编码器200和视频解码器300可以将生成的滤波器应用于例如经重构的视频数据块(诸如块170中)中的样本,以生成经滤波的样本。

在一个示例中,视频编码器200和视频解码器300可以使用镜像样本填充来将与不可用样本相对应的滤波器系数替换为与可用样本相对应的滤波器系数。在镜像填充中,与不可用样本相对应(例如,翻转时具有相同大小和相同形状的)的滤波器的滤波器支持可以被替换为与可用样本相对应的滤波器的对应滤波器支持。在图5的示例中,视频编码器200和视频解码器300可以通过执行镜像填充来生成对称滤波器,以将滤波器支持180B替换为例如与可用样本相对应的滤波器184的滤波器支持180C,使得使用滤波器支持180C中的滤波器系数来代替滤波器支持180B的滤波器系数。视频编码器200和视频解码器300可以将生成的滤波器应用于例如经重构的视频数据块中(诸如块170中)的样本,以生成经滤波的样本。

在另一示例中,视频编码器200和视频解码器300可以使用对称部分滤波器来对视频数据块进行滤波。在这种情况下,视频编码器200和视频解码器300不仅可以跳过其对应样本不可用的滤波器抽头,视频编码器200和视频解码器300还可以跳过与可用样本相对应的一个或多个滤波器抽头,以便生成对称部分滤波器。如上所述,视频编码器200和视频解码器300可能由于跳过滤波器抽头而执行重新归一化。

图6示出了示例自适应环路滤波器。如图6所示,滤波器194的滤波器支持190A在水平边界192内,而滤波器194的滤波器支持190B在水平边界192之外,并且因此可能不可用。根据本公开内容的各个方面,视频译码器可以使用滤波器194的可用滤波器支持190A来生成对称部分滤波器。特别地,视频译码器可以将滤波器194的可用滤波器支持190A的对称部分190C确定为对称部分滤波器,例如,通过从滤波器194截断可用滤波器支持190A的滤波器支持190D,其中滤波器194的滤波器支持190D与滤波器194的不可用滤波器支持190B相对应(例如,在翻转时具有相同的大小和相同形状)。例如,在图6中,190B和190D中的每个样本被190C中的最近样本替换。C1处的样本被替换为C5处的样本,C0和C2处的样本被替换为C6处的样本,并且C3处的样本替换为C7处的样本。

以这种方式,视频编码器200和视频解码器300可以从滤波器的可用样本生成滤波器,同时跳过其对应样本不可用的滤波器抽头。视频编码器200和视频解码器300可以重新归一化对称部分滤波器,使得例如对称部分滤波器的滤波器系数之和为一。视频编码器200和视频解码器300可以将生成的滤波器应用于例如经重构的视频数据块中(诸如块170中)的样本,以生成经滤波的样本。

在一些示例中,视频编码器200和视频解码器300可以执行包括加权求和的视频数据的滤波。特别地,加权求和是在滤波过程之后针对在滤波期间使用一个或多个不可用样本(例如,图片/切片/瓦片/瓦片组中的样本,如遍及本公开内容描述的)的那些样本添加的加权平均过程。最终ALF输出样本是经滤波的样本和ALF输入样本的加权平均(例如,分别是ALF之后的样本和ALF之前的经重构的视频数据块的样本)。视频编码器200和视频解码器300可以向ALF之前的经重构的视频数据块的样本的样本值应用(即,乘以)第一权重,并且可以向ALF之后的样本的样本值应用(即,乘以)第二权重,其中两个权重之和为一。视频编码器200和视频解码器300可以将两个加权样本相加,将总和除以二以确定样本的加权平均值。

在一个示例中,可以针对所有样本固定经滤波的样本的权重。例如,当针对所有样本将第一权重固定为第一值并且将第二权重固定为第二值时,并且在两个权重之和为一的情况下,视频编码器200和视频解码器300可以针对每个样本向ALF之前的样本的样本值应用第一权重并且向ALF之后的样本的样本值应用第二权重,将两个称重样本相加,并且将总和除以二以生成样本的最终值。

在另一示例中,经滤波的样本的权重可能取决于在滤波过程期间使用的不可用样本数量。在滤波过程期间使用的不可用样本数量越大,应用于ALF之前的经重构的视频数据块的样本的权重就越大(与应用于ALF之后的相同样本的权重相比)。例如,如果在ALF期间的样本的滤波过程期间没有使用不可用样本,则应用于ALF之前的样本的第一权重可以是零,并且应用于ALF之后的样本的第二权重可以是一。另一方面,第一权重可以根据在样本的滤波过程期间使用的不可用样本数量而增加,并且第二权重可以根据在滤波过程期间使用的不可用样本数量而对应地减少。

在另一示例中,可以自适应地用信号通知经滤波的样本的权重,诸如在序列/图片/切片/瓦片/瓦片组/CTU级别。例如,编码器200可以自适应地用信号向解码器300通知第一权重和第二权重两者,例如在序列/图片/切片/瓦片/瓦片组/CTU级别。

在一些示例中,视频编码器200和视频解码器300可以针对使用不可用样本(例如,图片、切片、瓦片或瓦片组中的样本)进行滤波的样本有条件地禁用滤波。在一个示例中,对于要滤波的当前样本,如果与不可用样本相对应的系数的绝对和大于门限乘以与可用样本相对应的系数的绝对和,则视频编码器200和视频解码器300可以针对当前样本禁用滤波器。该门限可以是固定的、自适应地确定的或用信号通知的(例如,在由视频编码器200发送到视频解码器300的比特流中)。门限的示例包括0.6或可以是任何合适的值,诸如在0和1之间。

图7是示出可以执行本公开内容的技术的示例视频编码器200的框图。图7是出于解释的目的而提供的,并且不应当被认为对在本公开内容中泛泛地举例说明和描述的技术进行限制。出于解释的目的,本公开内容描述了根据JEM、VVC(正在开发的ITU-T H.266)和HEVC(ITU-T H.265)的技术的视频编码器200。然而,本公开内容的技术可以由被配置为其它视频译码标准的视频编码设备来执行。

在图7的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、DPB 218和熵编码单元220中的任何一者或全部可以在一个或多个处理器中或者在处理电路中实现。例如,视频编码器200的单元可以被实现为一个或多个电路或逻辑元件,作为硬件电路的一部分,或者作为处理器、ASIC或FPGA的一部分。此外,视频编码器200可以包括额外或替代的处理器或处理电路以执行这些和其它功能。在一些示例中,视频编码器200可以是相机、计算机、移动设备、广播接收机设备或机顶盒的一部分。

视频数据存储器230可以存储要由视频编码器200的组件来编码的视频数据。视频编码器200可以从例如视频源104(图1)接收被存储在视频数据存储器230中的视频数据。DPB 218可以充当参考图片存储器,其存储参考视频数据以在由视频编码器200对后续视频数据进行预测时使用。视频数据存储器230和DPB 218可以由各种存储器设备中的任何一种形成,诸如动态随机存取存储器(DRAM)(包括同步DRAM(SDRAM))、磁阻RAM(MRAM)、电阻性RAM(RRAM)、或其它类型的存储器设备。视频数据存储器230和DPB 218可以由相同的存储器设备或单独的存储器设备来提供。在各个示例中,视频数据存储器230可以与视频编码器200的其它组件在芯片上(如图所示),或者相对于那些组件在芯片外。

在本公开内容中,对视频数据存储器230的引用不应当被解释为限于在视频编码器200内部的存储器(除非如此具体地描述),或者不限于在视频编码器200外部的存储器(除非如此具体地描述)。确切而言,对视频数据存储器230的引用应当被理解为存储视频编码器200接收以用于编码的视频数据(例如,用于要被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对来自视频编码器200的各个单元的输出的临时存储。

示出了图7的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以被实现为固定功能电路、可编程电路、或其组合。固定功能电路指代提供特定功能并且关于可以执行的操作而预先设置的电路。可编程电路指代可以被编程以执行各种任务并且以可以执行的操作来提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,这些单元中的一个或多个单元可以是集成电路。

视频编码器200可以包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核。在其中使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并且执行的软件的指令(例如,目标代码),或者视频编码器200内的另一存储器(未示出)可以存储这样的指令。

视频数据存储器230被配置为存储所接收的视频数据。视频编码器200可以从视频数据存储器230取回视频数据的图片,并且将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是要被编码的原始视频数据。

模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括额外功能单元,其根据其它预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。

模式选择单元202通常协调多个编码通路(pass),以测试编码参数的组合以及针对这样的组合所得到的率失真值。编码参数可以包括将CTU分割为CU、用于CU的预测模式、用于CU的残差数据的变换类型、用于CU的残差数据的量化参数等。模式选择单元202可以最终选择编码参数的具有比其它测试的组合更佳的率失真值的组合。

视频编码器200可以将从视频数据存储器230取回的图片分割为一系列CTU,并且将一个或多个CTU封装在切片内。模式选择单元202可以根据树结构(诸如上述HEVC的QTBT结构或四叉树结构)来分割图片的CTU。如上所述,视频编码器200可以通过根据树结构来分割CTU,从而形成一个或多个CU。这样的CU通常也可以被称为“视频块”或“块”。

通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成用于当前块(例如,当前CU,或者在HEVC中为PU和TU的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可以执行运动搜索以识别在一个或多个参考图片(例如,被存储在DPB 218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等,来计算表示潜在参考块将与当前块的类似程度的值。运动估计单元222通常可以使用在当前块与所考虑的参考块之间的逐样本差来执行这些计算。运动估计单元222可以识别从这些计算所得到的具有最低值的参考块,其指示与当前块最紧密匹配的参考块。

运动估计单元222可以形成一个或多个运动矢量(MV),所述运动矢量限定相对于当前块在当前图片中的位置而言参考块在参考图片中的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来取回参考块的数据。作为另一示例,如果运动矢量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来对用于预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以取回用于由相应的运动矢量标识的两个参考块的数据并且例如通过逐样本平均或加权平均来将所取回的数据进行组合。

作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于方向性模式,帧内预测单元226通常可以在数学上将相邻样本的值进行组合,并且跨当前块在所定义的方向上填充这些计算出的值以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的相邻样本的平均值,并且生成预测块以包括针对预测块的每个样本的该得到的平均值。

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未经编码的版本,并且从模式选择单元202接收预测块。残差生成单元204计算在当前块与预测块之间的逐样本差。所得到的逐样本差定义了用于当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样本值之间的差,以使用残差差分脉冲译码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。

在其中模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的PU。如上所指出的,CU的大小可以指代CU的亮度译码块的大小,而PU的大小可以指代PU的亮度预测单元的大小。假设特定CU的大小为2Nx2N,则视频编码器200可以支持用于帧内预测的2Nx2N或NxN的PU大小、以及用于帧间预测的2Nx2N、2NxN、Nx2N、NxN或类似的对称的PU大小。视频编码器200和视频解码器300还可以支持针对用于帧间预测的2NxnU、2NxnD、nLx2N和nRx2N的PU大小的非对称分割。

在其中模式选择单元202不将CU进一步分割为PU的示例中,每个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的大小可以指代CU的亮度译码块的大小。视频编码器200和视频解码器300可以支持2Nx2N、2NxN或Nx2N的CU大小。

对于其它视频译码技术(举几个示例,诸如块内复制模式译码、仿射模式译码和线性模型(LM)模式译码),模式选择单元202经由与译码技术相关联的相应单元来生成用于正被编码的当前块的预测块。在一些示例中(诸如调色板模式译码),模式选择单元202可以不生成预测块,而是替代地生成指示基于所选择的调色板来重构块的方式的语法元素。在这样的模式下,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。

如上所述,残差生成单元204接收用于当前块和对应的预测块的视频数据。然后,残差生成单元204为当前块生成残差块。为了生成残差块,残差生成单元204计算在预测块与当前块之间的逐样本差。

变换处理单元206将一种或多种变换应用于残差块,以生成变换系数的块(本文中被称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块,以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)、或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多种变换,例如,初级变换和二次变换(诸如旋转变换)。在一些示例中,变换处理单元206不对残差块应用变换。

量化单元208可以对变换系数块中的变换系数进行量化,以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值来调整被应用于与当前块相关联的变换系数块的量化程度。量化可能引起信息损失,并且因此,经量化的变换系数可能具有与变换处理单元206所产生的原始变换系数相比较低的精度。

逆量化单元210和逆变换处理单元212可以将逆量化和逆变换分别应用于经量化的变换系数块,以从变换系数块重构残差块。重构单元214可以基于经重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管潜在地具有某种程度的失真)。例如,重构单元214可以将经重构的残差块的样本与来自模式选择单元202所生成的预测块的对应样本相加,以产生经重构的块。

滤波器单元216可以对与CU相关联的经重构的译码块执行一个或多个SAO、GALF、ALF和/或解块操作。例如,滤波器单元216可以执行去块操作以减少沿着CU的边缘的块效应伪影。在一些示例中,可以跳过滤波器单元216的操作。

特别地,滤波器单元216可以被配置为执行上文描述的本公开内容的ALF和GALF技术。例如,滤波器单元216可以被配置为确定经重构的译码块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的译码块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的译码块以生成经滤波的视频数据块。

在一些示例中,滤波器单元216可以被配置为:确定覆盖经重构的译码块的窗口的梯度值,该窗口包括经重构的视频数据块的样本和围绕经重构的视频数据块的样本,包括使用不可用样本来执行梯度计算,例如,根据本公开内容的技术;以及至少部分地基于所确定的窗口的梯度值来确定经重构的译码块的自适应环路滤波器。这可以例如包括将图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值替换为边界内的一个或多个梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的译码块,例如,根据本公开内容的技术。

在一些示例中,滤波器单元216可以被配置为:避免在窗口的梯度值中包括图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的视频数据块。由于在窗口的梯度值中不包括窗口内的样本的不可用梯度值,因此滤波器单元216可以归一化窗口的梯度值。

在一些示例中,滤波器单元216可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,根据不使用与不可用样本相对应的滤波器支持的自适应环路滤波器来确定部分滤波器,其中,部分滤波器包括不对称部分滤波器或对称部分滤波器中的一者。在其它示例中,滤波器单元216可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,执行镜像填充以替换与不可用样本相对应的滤波器支持。

在一些示例中,滤波器单元216可以被配置为:至少部分地基于以下各项中的至少一项来有条件地禁用对经重构的译码块的特定样本的滤波:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

在一些示例中,滤波器单元216可以被配置为:至少部分地基于以下各项中的至少一项来确定经重构的块中的特定样本和经滤波的视频数据块的样本的加权平均值:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

视频编码器200将经重构的块存储在DPB 218中。例如,在其中不需要滤波器单元216的操作的示例中,重构单元214可以将经重构的块存储到DPB 218中。在其中需要滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的重构块存储到DPB 218中。运动估计单元222和运动补偿单元224可以从DPB 218取回由经重构的(并且潜在地经滤波的)块形成的参考图片,以对后续编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用在DPB 218中的当前图片的经重构的块来对当前图片中的其它块进行帧内预测。

通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成经熵编码的数据。例如,熵编码单元220可以执行上下文自适应变长译码(CAVLC)操作、CABAC操作、可变-可变(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率区间分割熵(PIPE)译码操作、指数哥伦布编码操作、或对数据的另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在其中语法元素未被熵编码的旁路模式下操作。

视频编码器200可以输出比特流,其包括用于重构切片或图片的块所需要的经熵编码的语法元素。具体地,熵编码单元220可以输出比特流。

关于块描述了上述操作。这样的描述应当被理解为用于亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度分量和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度分量和色度分量。

在一些示例中,不需要针对色度译码块重复关于亮度编码块执行的操作。作为一个示例,不需要重复用于识别用于亮度译码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。确切而言,可以对用于亮度译码块的MV进行缩放以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测过程可以是相同的。

视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并且被配置为:重构视频数据块以创建经重构的视频数据块;确定经重构的视频数据块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的视频数据块以生成经滤波的视频数据块。

图8是示出可以执行本公开内容的技术的示例视频解码器300的框图。图8是出于解释的目的而提供的,并且不对在本公开内容中泛泛地举例说明和描述的技术进行限制。

在图4的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和DPB 314中的任何一者或全部可以在一个或多个处理器中或者在处理电路中实现。例如,视频解码器300的单元可以被实现为一个或多个电路或逻辑元件,作为硬件电路的一部分,或者作为处理器、ASIC或FPGA的一部分。此外,视频解码器300可以包括额外或替代的处理器或处理电路以执行这些和其它功能。在一些示例中,视频解码器300可以是相机、计算机、移动设备、广播接收机设备或机顶盒的一部分。

预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,其根据其它预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其它示例中,视频解码器300可以包括更多、更少或不同的功能组件。

CPB存储器320可以存储要由视频解码器300的组件解码的视频数据,诸如经编码的视频比特流。例如,可以从计算机可读介质110(图1)获得被存储在CPB存储器320中的视频数据。CPB存储器320可以包括存储来自经编码的视频比特流的经编码的视频数据(例如,语法元素)的CPB。此外,CPB存储器320可以存储除了经译码的图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各个单元的输出的临时数据。DPB314通常存储经解码的图片,视频解码器300可以输出经解码的图片,和/或在解码经编码的视频比特流的后续数据或图片时使用经解码的图片作为参考视频数据。CPB存储器320和DPB 314可以由各种存储器设备中的任何一种形成,诸如DRAM,包括SDRAM、MRAM、RRAM或其它类型的存储器设备。CPB存储器320和DPB 314可以由相同的存储器设备或单独的存储器设备来提供。在各个示例中,CPB存储器320可以与视频解码器300的其它组件在芯片上,或者相对于那些组件在芯片外。

另外或替代地,在一些示例中,视频解码器300可以从存储器120(图1)取回经译码的视频数据。也就是说,存储器120可以如上文所讨论地利用CPB存储器320来存储数据。同样,当视频解码器300的一些或全部功能是用要被视频解码器300的处理电路执行的软件来实现时,存储器120可以存储要被视频解码器300执行的指令。

示出了图8中示出的各个单元以帮助理解由视频解码器300执行的操作。这些单元可以被实现为固定功能电路、可编程电路、或其组合。类似于图7,固定功能电路指代提供特定功能并且关于可以执行的操作而预先设置的电路。可编程电路指代可以被编程以执行各种任务并且以可以执行的操作来提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,这些单元中的一个或多个单元可以是集成电路。

视频解码器300可以包括由可编程电路形成的ALU、EFU、数字电路、模拟电路和/或可编程核。在其中由在可编程电路上执行的软件执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收并且执行的软件的指令(例如,目标代码)。

熵解码单元302可以从CPB接收经编码的视频数据,并且对视频数据进行熵解码以重现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成经解码的视频数据。

通常,视频解码器300逐块地重构图片。视频解码器300可以单独地对每个块执行重构操作(其中,当前正在被重构(即,被解码)的块可以被称为“当前块”)。

熵解码单元302可以对定义经量化的变换系数块的经量化的变换系数的语法元素以及诸如量化参数(QP)和/或变换模式指示之类的变换信息进行熵解码。逆量化单元306可以使用与经量化的变换系数块相关联的QP来确定量化程度,并且同样地,确定供逆量化单元306应用的逆量化程度。逆量化单元306可以例如执行按位左移操作以对经量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一种或多种逆变换应用于变换系数块,以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。

此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是经帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示在DPB 314中的要从其取回参考块的参考图片、以及标识相对于当前块在当前图片中的位置而言参考块在参考图片中的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图7)所描述的方式基本类似的方式来执行帧间预测过程。

作为另一示例,如果预测信息语法元素指示当前块是经帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图7)所描述的方式基本上类似的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314取回当前块的相邻样本的数据。

重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加来重构当前块。

滤波器单元312可以对经重构的块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去块操作以减少沿着经重构的块的边缘的块效应伪影。不一定在所有示例中都执行滤波器单元312的操作。特别地,滤波器单元312可以被配置为执行上文描述的本公开内容的ALF和GALF技术。例如,滤波器单元312可以被配置为确定经重构的译码块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的译码块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的译码块以生成经滤波的视频数据块。

在一些示例中,滤波器单元312可以被配置为:确定覆盖经重构的译码块的窗口的梯度值,该窗口包括经重构的视频数据块的样本和围绕经重构的视频数据块的样本,包括使用不可用样本来执行梯度计算,例如,根据本公开内容的技术;以及至少部分地基于所确定的窗口的梯度值来确定经重构的译码块的自适应环路滤波器。这可以例如包括将图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值替换为边界内的一个或多个梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的译码块,例如,根据本公开内容的技术。

在一些示例中,滤波器单元312可以被配置为:避免在窗口的梯度值中包括图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的视频数据块。由于在窗口的梯度值中不包括窗口内的样本的不可用梯度值,因此滤波器单元216可以归一化窗口的梯度值。

在一些示例中,滤波器单元312可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,根据不使用与不可用样本相对应的滤波器支持的自适应环路滤波器来确定部分滤波器,其中,部分滤波器包括不对称部分滤波器或对称部分滤波器中的一者。在其它示例中,滤波器单元216可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,执行镜像填充以替换与不可用样本相对应的滤波器支持。

在一些示例中,滤波器单元312可以被配置为:至少部分地基于以下各项中的至少一项来有条件地禁用对经重构的译码块的特定样本的滤波:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

在一些示例中,滤波器单元312可以被配置为:至少部分地基于以下各项中的至少一项来确定经重构的块中的特定样本和经滤波的视频数据块的样本的加权平均值:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

视频解码器300可以将经重构的块存储在DPB 314中。例如,在其中不执行滤波器单元312的操作的示例中,重构单元310可以将经重构的块存储到DPB 314中。在其中执行滤波器单元312的操作的示例中,滤波器单元312可以将经滤波的重构块存储到DPB 314中。如上所讨论的,DPB 314可以将参考信息(诸如用于帧内预测的当前图片以及用于后续运动补偿的先前解码的图片的样本)提供给预测处理单元304。此外,视频解码器300可以从DPB314输出经解码的图片(例如,经解码的视频),以用于在诸如图1的显示设备118之类的显示设备上的后续呈现。

以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并且被配置为:重构视频数据块以创建经重构的视频数据块;确定经重构的视频数据块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的视频数据块以生成经滤波的视频数据块。

图9示出了用于执行本公开内容的技术的滤波器单元的示例实现。滤波器单元216和312可以执行本公开内容的技术,可能与视频编码器200或视频解码器300的其它组件结合。在图9的示例中,滤波器单元216和滤波器单元312包括解块滤波器342、SAO滤波器344和ALF/GLAF滤波器346。SAO滤波器344可以例如被配置为确定块的样本的偏移值。

滤波器单元216和滤波器单元312可以包括更少的滤波器和/或可以包括额外的滤波器。另外,图9中所示的特定滤波器可以以不同的顺序实现。其它环路滤波器(在译码环路中或在译码环路之后)也可以用于平滑样本转换或以其它方式改善视频质量。

解块滤波器342可以被配置为对经重构的视频数据块执行解块滤波。SAO滤波器344可以被配置为对由解块滤波器342输出的经解块的经重构的视频数据块执行SAO滤波。ALF/GALF滤波器346可以被配置为对由SAO滤波器344输出的经解块和经SAO滤波的经重构的视频数据块执行ALF或GALF。

特别地,ALF/GALF滤波器346可以被配置为确定经解块和经SAO滤波的经重构的视频数据块中的样本的梯度的值,包括使用在以下各项中的一项之外的不可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经解块和经SAO滤波的经重构的视频数据块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经解块和经SAO滤波的经重构的视频数据块以生成经滤波的视频数据块。

在一些示例中,ALG/GALF滤波器346可以被配置为:确定覆盖经解块和经SAO滤波的经重构的视频数据块的窗口的梯度值,该窗口包括经重构的视频数据块的样本和围绕经重构的视频数据块的样本,包括使用不可用样本来执行梯度计算,例如,根据本公开内容的技术;以及至少部分地基于所确定的窗口的梯度值来确定经解块和经SAO滤波的经重构的视频数据块的自适应环路滤波器。这可以例如包括将图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值替换为边界内的一个或多个梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经解块和经SAO滤波的经重构的视频数据块,例如,根据本公开内容的技术。

在一些示例中,ALG/GALF滤波器346可以被配置为:避免在窗口的梯度值中包括图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的视频数据块。由于在窗口的梯度值中不包括窗口内的样本的不可用梯度值,因此ALG/GALF滤波器346可以归一化窗口的梯度值。

在一些示例中,ALG/GALF滤波器346可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,根据不使用与不可用样本相对应的滤波器支持的自适应环路滤波器来确定部分滤波器,其中,部分滤波器包括不对称部分滤波器或对称部分滤波器中的一者。在其它示例中,ALG/GALF滤波器346可以被配置为:响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,执行镜像填充以替换与不可用样本相对应的滤波器支持。

在一些示例中,ALG/GALF滤波器346可以被配置为:至少部分地基于以下各项中的至少一项来有条件地禁用对经解块和经SAO滤波的经重构的视频数据块的特定样本的滤波:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

在一些示例中,ALG/GALF滤波器346可以被配置为:至少部分地基于以下各项中的至少一项来确定经重构的块中的特定样本和经滤波的视频数据块的样本的加权平均值:确定特定样本的一个或多个梯度值是否包括使用一个或多个不可用样本来针对特定样本执行一个或多个梯度计算,或者确定覆盖经重构的视频数据块的窗口的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块在边界内。

然后将给定帧或图片中的经解码的视频块存储在DPB 314中,DPB 314存储用于后续运动补偿的参考图片。DPB 314可以是存储经解码的视频以供稍后在显示设备(诸如图1的显示设备118)上呈现的额外存储器的一部分或与其分离。

图10是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前CU。尽管关于视频解码器300(图1和8)进行了描述,但是应当理解的是,其它设备可以被配置为执行与图10的方法类似的方法。

视频解码器300可以接收用于当前块的经熵编码的数据(例如,经熵编码的预测信息和用于与当前块相对应的残差块的系数的经熵编码的数据)(370)。视频解码器300可以对经熵编码的数据进行熵解码以确定用于当前块的预测信息并且重现残差块的系数(372)。视频解码器300可以例如使用如由用于当前块的预测信息所指示的帧内或帧间预测模式来预测当前块(374),以计算用于当前块的预测块。然后,视频解码器300可以对所重现的系数进行逆扫描(376),以创建经量化的变换系数的块。然后,视频解码器300可以对变换系数进行逆量化和逆变换以产生残差块(378)。最终,视频解码器300可以通过将预测块和残差块进行组合来对当前块进行解码(380)。

在一些示例中,视频解码器300可以执行对经解码的块的滤波,诸如解块滤波、SAO滤波和ALF滤波。例如,作为执行ALF滤波的一部分,视频解码器300可以确定经重构的译码块中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对样本执行梯度计算:包括经重构的样本块的图片、切片、瓦片或瓦片组;至少部分地基于所确定的样本的梯度的值来确定用于经重构的译码块的自适应环路滤波器;以及将所确定的自适应环路滤波器应用于经重构的译码块以生成经滤波的视频数据块。

在一些示例中,作为执行ALF滤波的一部分,视频解码器300可以确定覆盖经重构的译码块的窗口的梯度值,该窗口包括经重构的视频数据块的样本和围绕经重构的视频数据块的样本,包括使用不可用样本来执行梯度计算,例如,根据本公开内容的技术;以及至少部分地基于所确定的窗口的梯度值来确定经重构的译码块的自适应环路滤波器。这可以例如包括将图片、切片、瓦片或瓦片组中的一项的边界之外的窗口内的样本的不可用梯度值替换为边界内的一个或多个梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的译码块,例如,根据本公开内容的技术。

图11是示出用于对视频数据进行译码的示例方法的流程图。该方法可以由视频编码器200(图1和7)和/或视频解码器300(图1和8)来执行。尽管关于视频编码器200和视频解码器300进行了描述,但是应当理解,其它设备可以被配置为执行与图11的方法类似的方法。在一些示例中,图11的技术可以由图7的滤波器单元216和/或图8的滤波器单元312来执行。在其它示例中,图11的技术可以由视频编码器200和/或视频解码器300的一个或多个其它结构单元来执行。

在图11的示例中,视频编码器200和/或视频解码器300可以重构视频数据块以创建经重构的视频数据块170(400)。例如,视频编码器200和/或视频解码器300可以在对经重构的视频数据块执行ALF之前,对经重构的视频数据块执行解块或SAO滤波。

视频编码器200和/或视频解码器300可以确定经重构的视频数据块170中的样本的梯度的值,包括使用与在以下各项中的一项之外的不可用样本相对应的可用样本来针对样本执行梯度计算:包括经重构的样本数据块170的图片、切片、瓦片或瓦片组(402)。

在一些示例中,视频编码器200和/或视频解码器300可以使用沿样本的梯度的梯度方向的可用相邻样本来代替不可用样本来针对样本执行梯度计算。在一些示例中,视频编码器200和/或视频解码器300可以执行镜像填充以确定与不可用相邻样本相对应的可用相邻样本,并且可以使用可用相邻样本来针对样本执行梯度计算。

在一些示例中,视频编码器200和/或视频解码器300可以确定覆盖经重构的视频数据块170的窗口172的梯度值,该窗口包括经重构的视频数据块170的样本和围绕经重构的视频数据块170的样本。

视频编码器200和/或视频解码器300可以至少部分地基于所确定的梯度的值来确定用于经重构的视频数据块170的自适应环路滤波器(404)。

在一些示例中,视频编码器200和/或视频解码器300可以至少部分地基于所确定的窗口的梯度值来确定用于经重构的视频数据块170的自适应环路滤波器。

在一些示例中,视频编码器200和/或视频解码器300可以将图片、切片、瓦片或瓦片组中的一项的边界之外的窗口172内的样本的不可用梯度值替换为边界内的一个或多个梯度值,其中图片、切片、瓦片或瓦片组中的一项或多项包括经重构的视频数据块170。

在一些示例中,边界包括水平边界174,并且视频编码器200和/或视频解码器300可以将在窗口172内并且在水平边界174之外的样本的梯度值确定为在水平边界174内的样本的最近梯度值,该水平边界174内的样本与在窗口172内并且在水平边界174之外的样本在同一列上。

在一些示例中,边界包括垂直边界176,并且视频编码器200和/或视频解码器300可以将在窗口172内并且在垂直边界176之外的样本的梯度值确定为在垂直边界176内的样本的最近梯度值,该垂直边界176内的样本与在窗口172内并且在垂直边界176之外的样本在同一行上。

在一些示例中,视频编码器200和/或视频解码器300可以将在窗口172内并且在边界之外的样本的对角线梯度值确定为在边界内的样本的最近对角线梯度值,该边界内的样本与在窗口172内并且在边界之外的样本的对角线梯度值在相同的梯度方向上。

在一些示例中,视频编码器200和/或视频解码器300可以针对经重构的视频数据块170内的额外样本确定额外梯度值,以替换在边界之外的窗口172内的样本的不可用梯度值。

在一些示例中,视频编码器200和/或视频解码器300可以避免在窗口172的梯度值中包括图片、切片、瓦片或瓦片组中的一项的边界之外的窗口172内的样本的不可用梯度值,其中图片、切片、瓦片或瓦片组中的一项包括经重构的视频数据块170;以及可以归一化窗口172的梯度值。

视频编码器200和/或视频解码器300可以将所确定的自适应环路滤波器应用于经重构的视频数据块170,以生成经滤波的视频数据块(406)。

在一些示例中,视频编码器200和/或视频解码器300可以响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,根据不使用与不可用样本相对应的滤波器支持的自适应环路滤波器来确定部分滤波器,其中,部分滤波器包括不对称部分滤波器或对称部分滤波器中的一者。

在一些示例中,视频编码器200和/或视频解码器300可以响应于自适应环路滤波器利用与不可用样本相对应的滤波器支持,执行镜像填充以替换与不可用样本相对应的滤波器支持。

在一些示例中,视频编码器200和/或视频解码器300可以至少部分地基于以下各项中的至少一项来有条件地禁用对经重构的视频数据块170的样本的滤波:确定该样本的梯度值是否包括使用不可用样本来执行梯度计算,或者确定覆盖经重构的视频数据块170的窗口172的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口172内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块170在边界内。

在一些示例中,视频编码器200和/或视频解码器300可以至少部分地基于以下各项中的至少一项来确定经重构的块中的样本和经滤波的视频数据块的样本的加权平均值:确定该样本的梯度值是否包括使用不可用样本来执行梯度计算,或者确定覆盖经重构的视频数据块170的窗口172的梯度值是否包括确定图片、切片、瓦片或瓦片组中的一项的边界之外的窗口172内的一个或多个样本的一个或多个梯度值,其中,经重构的视频数据块170在边界内。

在一些示例中,视频编码器200对视频数据进行编码,并且可以将经滤波的视频数据块存储在解码图片缓冲器218中。在一些示例中,视频编码器200可以利用相机来捕获包括视频数据块的图片。

在一些示例中,视频解码器300可以对视频数据进行解码,并且可以将经滤波的视频数据块存储在解码图片缓冲器314中。在一些示例中,视频解码器300可以显示包括经滤波的视频数据块的图片。

本公开内容的说明性示例包括:

示例1:一种对视频数据进行解码的方法,所述方法包括:获得样本块;确定样本块的当前样本的梯度;以及基于所确定的梯度,确定用于样本的滤波器。

示例2:根据示例1所述的方法,其中,确定当前样本的梯度包括:使用不可用样本来执行梯度计算。

示例3:根据示例1所述的方法,其中,不可用样本包括在包括样本块的图片、切片、瓦片或瓦片组中的一项或多项的边界之外的样本。

示例4:根据示例2或3所述的方法,还包括:基于样本块中的可用样本的值来确定不可用样本的值。

示例5:根据示例4所述的方法,其中,基于样本块中的可用样本的值来确定不可用样本的值包括:基于当前样本的梯度的方向来确定要使用的可用样本。

示例6:根据示例5所述的方法,其中,方向包括45度方向。

示例7:根据示例5所述的方法,其中,方向包括135度方向。

示例8:根据示例5所述的方法,其中,方向包括90度方向。

示例9:根据示例5所述的方法,其中,方向包括0度方向。

示例10:根据示例1-9中任一项所述的方法,其中,样本与图片、切片、瓦片或瓦片组的垂直边界相邻。

示例11:根据示例1-9中任一项所述的方法,其中,样本与图片、切片、瓦片或瓦片组的水平边界相邻。

示例12:根据示例1-11中任一项所述的方法,其中,样本是子块的样本,并且确定样本的梯度包括:确定子块的梯度。

示例13:根据示例12所述的方法,其中,子块包括4x4块。

示例14:根据示例1-13中任一项所述的方法,其中,样本包括亮度样本。

示例15:根据示例1-14中任一项所述的方法,还包括:基于所确定的梯度,为当前样本选择滤波器;响应于所选择的滤波器利用与不可用样本相对应的滤波器支持,使用部分滤波器来对当前样本进行滤波。

示例16:根据示例15所述的方法,其中,所述部分滤波器包括对称部分滤波器。

示例17:根据示例15所述的方法,其中,所述部分滤波器包括不对称部分滤波器。

示例18:根据示例1-17中任一项所述的方法,还包括:使用所确定的滤波器来对样本进行滤波。

示例19:根据示例1-15中任一项所述的方法,其中,解码的方法是作为视频编码过程的一部分来执行的。

示例20:一种用于对视频数据进行解码的设备,该设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理器,其被配置为使用示例1-18中描述的任何技术和/或本公开内容中描述的任何技术来对视频数据进行解码。

示例21:根据示例20所述的设备,其中,该设备包括无线通信设备,还包括被配置为接收经编码的视频数据的接收机。

示例22:根据示例21所述的设备,其中,无线通信设备包括电话手机,并且其中,接收机被配置为根据无线通信标准来对包括经编码的视频数据的信号进行解调。

示例23:一种存储指令的计算机可读存储介质,指令在由一个或多个处理器执行时使得一个或多个处理器使用示例1-19中描述的任何技术和/或本公开内容中描述的任何技术来对视频数据进行解码。

示例24:一种用于对视频数据进行解码的设备,该设备包括:用于使用示例1-19中描述的任何技术来对视频数据进行解码的单元;和/或用于使用本公开内容中描述的任何技术来对视频数据进行解码的单元。

示例25:一种用于对视频数据进行编码的设备,该设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理器,其被配置为使用示例1-19中描述的任何技术和/或本公开内容中描述的任何技术来对视频数据进行编码。

示例26:根据示例25所述的设备,其中,该设备包括无线通信设备,还包括被配置为发送经编码的视频数据的发射机。

示例27:根据示例26所述的设备,其中,无线通信设备包括电话手机,并且其中,发射机被配置为根据无线通信标准来对包括经编码的视频数据的信号进行调制。

示例28:一种存储指令的计算机可读存储介质,指令在由一个或多个处理器执行时使得一个或多个处理器使用示例1-19中描述的任何技术和/或本公开内容中描述的任何技术来对视频数据进行编码。

示例29:一种用于对视频数据进行解码的装置,该装置包括:

用于使用示例1-19中描述的任何技术来对视频数据进行编码的单元;和/或用于使用本公开内容中描述的任何技术来对视频数据进行编码的单元。

出于说明的目的,已经关于HEVC、HEVC的扩展和正在开发的VVC标准描述了本公开内容的某些方面。然而,本公开内容中描述的技术可以用于其它视频译码过程,包括尚未开发的其它标准或专有视频译码过程。

如本公开内容中描述的,视频译码器可以指视频编码器或视频解码器。类似地,视频译码单元可以指视频编码器或视频解码器。同样,视频译码可以指视频编码或视频解码(如适用)。在本公开内容中,短语“基于”可以指示仅基于、至少部分地基于或以某种方式基于。本公开内容可以使用术语“视频单元”或“视频块”或“块”来指代用于对一个或多个样本块的样本进行译码的一个或多个样本块和语法结构。视频单元的示例类型可以包括CTU、CU、PU、变换单元(TU)、宏块、宏块分割等。在一些上下文中,对PU的讨论可以与对宏块或宏块分割的讨论互换。视频块的示例类型可以包括译码树块、译码块和其它类型的视频数据块。

本公开内容的技术可以应用于视频译码,以支持各种多媒体应用中的任何一种,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于HTTP的动态自适应流式传输(DASH))、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码或其它应用。

要认识到的是,根据示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件是对于实施所述技术都是必要的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。

在一个或多个示例中,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或者通过其进行传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质或者通信介质,所述通信介质包括例如根据通信协议来促进计算机程序从一个地方传送到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质、或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取得用于实现在本公开内容中描述的技术的指令、代码和/或数据结构的任何可用的介质。计算机程序产品可以包括计算机可读介质。

举例来说而非进行限制,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或者能够用于以指令或数据结构形式存储期望的程序代码以及能够由计算机访问的任何其它介质。此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源传输指令,则同轴电缆、光纤光缆、双绞线、DSL或者无线技术(例如,红外线、无线电和微波)被包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它临时性介质,而是替代地针对非临时性的有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上述各项的组合也应当被包括在计算机可读介质的范围之内。

本公开内容中描述的功能可以由固定功能和/或可编程处理电路执行。例如,指令可以由固定功能和/或可编程处理电路执行。指令可以由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其它等效的集成或分立逻辑电路。因此,如本文所使用的术语“处理器”和“处理电路”可以指代前述结构中的任何一者或者适于实现本文描述的技术的任何其它结构。另外,在一些方面中,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或者被并入经组合的编解码器中。此外,所述技术可以完全在一个或多个电路或逻辑元件中实现。此外,所述技术可以完全在一个或多个电路或逻辑元件中实现。处理电路可以以各种方式耦合到其它组件。例如,处理电路可以经由内部设备互连、有线或无线网络连接耦合到其它组件。

本公开内容的技术可以在多种多样的设备或装置中实现,包括无线手机、集成电路(IC)或一组IC(例如,芯片组)。在本公开内容中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能性方面,但是不一定需要通过不同的硬件单元来实现。确切而言,如上所述,各种单元可以被组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合(包括如上所述的一个或多个处理器)结合适当的软件和/或固件来提供。

已经描述了各个示例。这些和其它示例在所附的权利要求的范围内。

68页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:视频译码中的分块级滤波

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类