掌桥专利:专业的专利平台
掌桥专利
首页

用于对视频数据进行编码的方法、设备和介质

文献发布时间:2024-04-18 19:58:53


用于对视频数据进行编码的方法、设备和介质

本申请是中国专利申请第202080096994.5号的分案申请,该中国专利申请为2020年12月18日提交的国际专利申请PCT/US2020/066168的中国国家阶段申请,该国际专利申请要求2019年12月18日提交的美国专利申请第62/950,060号的优先权。

技术领域

本申请总体上涉及视频数据编解码和压缩,并且具体涉及改进对视频数据比特流中图像帧的色度分量和亮度分量的编解码的方法和系统。

背景技术

如数字电视、膝上型计算机或台式计算机、平板计算机、数码相机、数字录音设备、数字媒体播放器、视频游戏机、智能电话、视频电话会议设备、视频流式传输设备等各种电子设备都支持数字视频。电子设备通过实施由MPEG-4、ITU-T H.263、ITU-TH.264/MPEG-4第10部分、高级视频编解码(AVC)、高效视频编解码(HEVC)和通用视频编解码(VVC)标准定义的视频压缩/解压缩标准来发送、接收、编码、解码和/或存储数字视频数据。视频压缩典型地包括执行空间(帧内)预测和/或时间(帧间)预测以减少或去除视频数据中固有的冗余。对于基于块的视频编解码,将视频帧划分为一个或多个条带,每个条带具有多个视频块,该视频块也可以被称为编码树单元(CTU)。每个CTU可以包含一个编码单元(CU)或递归地分割成较小的CU,直到达到预定义的最小CU尺寸。每个CU(也称为叶CU)包含一个或多个变换单元(TU),并且每个CU还包含一个或多个预测单元(PU)。可以以帧内、帧间或IBC模式对每个CU进行编解码。相对于同一视频帧内的相邻块中的参考样点,使用空间预测对视频帧的帧内编解码(I)条带中的视频块进行编码。视频帧的帧间编解码(P或B)条带中的视频块可以相对于同一视频帧内的相邻块中的参考样点使用空间预测或相对于其他先前和/或未来参考视频帧中的参考样点使用时间预测。

基于先前已被编码的参考块(例如,相邻块)的空间或时间预测产生针对待编解码的当前视频块的预测块。查找参考块的过程可以通过块匹配算法来完成。表示待编解码的当前块与预测块之间的像素差的残差数据被称为残差块或预测误差。根据指向形成预测块的参考帧中的参考块的运动矢量、以及残差块来对帧间编码块进行编码。确定运动矢量的过程典型地被称为运动估计。根据帧内预测模式和残差块对帧内编码块进行编码。为了进一步压缩,将残差块从像素域变换到变换域,例如频域,从而产生残差变换系数,然后可以对所述残差变换系数进行量化。可以扫描最初布置为二维阵列的量化的变换系数,以产生变换系数的一维矢量,并且然后将其熵编码为视频比特流,以实现更多的压缩。

然后,将已编码视频比特流保存在计算机可读存储介质(例如,闪速存储器)中,以被具有数字视频能力的另一个电子设备访问,或者直接以有线或无线方式传输到电子设备。然后,电子设备通过例如解析已编码视频比特流以从比特流获得语义元素并且至少部分地基于从比特流获得的语义元素将数字视频数据从已编码视频比特流重建为其原始格式来执行视频解压缩(其是与上文描述的视频压缩相反的过程),并且在电子设备的显示器上渲染重建数字视频数据。

在将重建的CU放入参考图片存储并用于对其他视频块进行编解码之前,对其应用环路滤波。自适应环路滤波器(ALF)分别应用于重建CU的色度分量和亮度分量,而跨分量滤波器可以被用于利用亮度分量来细化CU的色度分量。在保持已解码视频数据的图像质量的同时具有更高效的编解码机制来编码和解码这些颜色分量将是有益的。

发明内容

本申请描述了与视频数据编码和解码相关的实施方式,更具体地,描述了基于跨分量自适应滤波来改进对视频帧的色度分量和亮度分量的编解码的方法和系统。视频帧的每个色度分量基于多个周围色度分量被滤波,并基于一组相邻亮度分量被细化。具体地,识别锚亮度分量并将其从一组相邻亮度分量中减去以形成一组亮度分量差,从而允许使用与一组相邻亮度分量相对应的亮度分量差的组合来细化每个色度分量。

在一个方面,一种对视频数据进行编解码的方法包括从比特流中获得与视频帧的多个像素组相对应的多个亮度样点和多个色度样点。所述方法进一步包括对于所述多个像素组中的每一个:识别所述像素组中的相应色度样点和一组亮度样点,并根据预定义锚定规则从该组亮度样点中确定锚亮度样点。每个亮度样点具有相应的亮度值,并且锚亮度样点具有锚亮度值。所述方法进一步包括对于每个像素组,基于该组亮度样点生成色度细化值,使用所述色度细化值来更新相应的色度样点,以及存储与所述视频帧相关联的每个像素组的更新后的相应色度样点。对于每个像素组,生成所述色度细化值进一步包括:将该组亮度样点中的每个亮度样点的相应亮度值与所述锚亮度值求差,以及对该组亮度样点的亮度值差应用跨分量滤波器以生成所述色度细化值。

在一些实施例中,所述多个像素组包括第一像素子集和与所述第一像素子集紧邻的第二像素子集,所述方法进一步包括:确定所述第一像素子集和所述第二像素子集被块的虚拟边界划分,以及将与所述第二像素子集相对应的亮度样点的亮度值替换为与所述第一像素子集相对应的亮度样点的亮度值。所述第一像素子集被所述虚拟边界包围在所述块中。在一些情况下,所述第一像素子集的亮度样点可供使用(例如,与块一起存储)并且与块的虚拟边界紧邻,而第二像素子集的亮度样点不可用(例如,不与块一起存储)。进一步地,在一些实施例中,对于至少一个像素组,所述色度细化值是基于与所述第二像素子集的至少一个像素相对应的被替换的亮度样点的亮度值而被生成的。

在另一方面,一种电子设备包括一个或多个处理器和用于存储指令的存储器,这些指令在由一个或多个处理器执行时使电子设备执行如上所述的视频数据编解码的方法。

在又一方面,一种非暂态计算机可读存储介质存储具有存储在其上的指令,这些指令在由电子设备的一个或多个处理器执行时使一个或多个处理器执行如上所述的视频数据编解码的方法。

附图说明

被包括在内以提供对实施方式的进一步理解并且并入本文并构成说明书的一部分的附图图示了所描述的实施方式,并且与说明书一起用于解释基本原理。相似的附图标记指代对应的部分。

图1是图示了根据一些实施例的示例性视频编码和解码系统的框图。

图2是图示了根据一些实施例的示例性视频编码器的框图。

图3是图示了根据一些实施例的示例性视频解码器的框图。

图4A至图4E是根据一些实施例将图像帧递归地划分为不同尺寸和形状的视频块的示意图。

图5图示了根据一些实施例的比特流中的视频帧的一部分。

图6A是根据一些实施例的被应用在视频编码器或解码器中并且包括跨分量滤波器的环路滤波器的框图,并且图6B是根据一些实施例的根据菱形形状对亮度样点进行分组的像素组的图。图6C是根据一些实施例的基于亮度样点的亮度值差进行的跨分量滤波过程的流程图。

图7图示了根据一些实施例的被存储在行缓冲器中以进行视频处理的图像块。

图8A是示例ALF滤波方案,其中,由亮度ALF从一组相邻亮度样点对亮度样点进行处理,并且图8B至图8G是根据一些实施例的针对与虚拟边界相邻的六个亮度样点的ALF滤波方案。

图9A是示例ALF滤波方案,其中,由色度ALF从一组相邻样点对色度样点进行处理,并且图9B至图9E是根据一些实施例的针对与虚拟边界相邻的四个色度样点的ALF滤波方案。

图10A至图10D图示了根据一些实施例的针对跨分量滤波应用样点填充的示例边界像素组。

图11A和图11B是根据一些实施例的跨分量滤波器的两个附加示例跨分量滤波方案的示意图。

图12是根据一些实施例的视频编解码方法的流程图。

具体实施方式

现在将详细参考具体实施方式,附图中图示了这些实施方式的示例。在以下详细描述中,阐述了许多非限制性的具体细节,以便帮助理解本文提出的主题。但是对于本领域的普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可以使用各种替代性方案,并且可以在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文提出的主题可以在具有数字视频能力的许多类型的电子设备上实施。

图1是图示了根据一些实施例的用于并行地对视频块进行编码和解码的示例性系统10的框图。如图1所示,系统10包括源设备12,该源设备生成并且编码视频数据,以由目的地设备14在稍后时间解码。源设备12和目的地设备14可以包括多种电子设备中的任何一种,该多种电子设备包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、相机、显示设备、数字媒体播放器、视频游戏机、视频流式传输设备等。在一些实施方式中,源设备12和目的地设备14配备有无线通信能力。

在一些实施方式中,目的地设备14可以经由链路16接收待解码的已编码视频数据。链路16可以包括能够将已编码视频数据从源设备12移到目的地设备14的任何类型的通信介质或设备。在一个示例中,链路16可以包括用于使源设备12能够实时地将已编码视频数据直接传输到目的地设备14的通信介质。已编码视频数据可以根据如无线通信协议等通信标准来调制并传输到目的地设备14。通信介质可以包括任何无线或有线通信介质,如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络(如局域网、广域网、或全球网(如互联网))的一部分。通信介质可以包括路由器、交换机、基站或可以用于促进从源设备12到目的地设备14的通信的任何其他设备。

在一些其他实施方式中,已编码视频数据可以从输出接口22传输到存储设备32。随后,存储设备32中的已编码视频数据可以由目的地设备14经由输入接口28访问。存储设备32可以包括各种分布式或本地访问的数据存储介质中的任一种,如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪速存储器、易失性存储器或非易失性存储器或用于存储已编码视频数据的任何其他合适的数字存储介质。在进一步示例中,存储设备32可以对应于可以保持由源设备12生成的已编码视频数据的文件服务器或另一个中间存储设备。目的地设备14可以经由流式传输或下载从存储设备32访问所存储的视频数据。文件服务器可以是能够存储已编码视频数据并且将已编码视频数据传输到目的地设备14的任何类型的计算机。示例性文件服务器包括web服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备、或本地磁盘驱动器。目的地设备14可以通过任何标准数据连接访问已编码视频数据,该连接包括适于访问被存储在文件服务器上的已编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。从存储设备32传输已编码视频数据可以是流式传输、下载传输或两者的组合。

如图1所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可以包括如视频捕获设备等的源,例如摄像机、包含先前捕获的视频的视频档案、用于从视频内容提供方接收视频的视频馈送接口和/或用于生成计算机图形数据作为源视频的计算机图形系统、或这样的源的组合。作为一个示例,如果视频源18是安全监控系统的摄像机,则源设备12和目的地设备14可以形成拍照电话或视频电话。然而,本申请中描述的实施方式通常可以适用于视频编解码并且可以应用于无线和/或有线应用。

捕获的、预先捕获的或计算机生成的视频可以由视频编码器20进行编码。已编码视频数据可以经由源设备12的输出接口22被直接传输到目的地设备14。已编码视频数据也可以(或替代性地)被存储到存储设备32上,以供目的地设备14或其他设备以后访问,以进行解码和/或回放。输出接口22可以进一步包括调制解调器和/或发射器。

目的地设备14包括输入接口28、视频解码器30和显示设备34。输入接口28可以包括接收器和/或调制解调器,并且通过链路16接收已编码视频数据。通过链路16传送的或在存储设备32上提供已编码视频数据可以包括由视频编码器20生成的各种语法元素,以供视频解码器30用于解码视频数据。这种语法元素可以被包括于在通信介质上传输的、被存储在存储介质上、或被存储在文件服务器中的已编码视频数据内。

在一些实施方式中,目的地设备14可以包括显示设备34,该显示设备可以是集成显示设备和被配置为与目的地设备14通信的外部显示设备。显示设备34向用户显示已解码视频数据并且可以包括各种显示设备中的任何一种,如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。

视频编码器20和视频解码器30可以根据专有或行业标准(如VVC、HEVC、MPEG-4第10部分、高级视频编解码(AVC)或这种标准的扩展)进行操作。应当理解,本申请不限于特定的视频编码/解码标准,并且可以适用于其他视频编码/解码标准。通常设想,源设备12的视频编码器20可以被配置为根据这些当前或未来标准中的任何一种来对视频数据进行编码。类似地,通常还设想,目的地设备14的视频解码器30可以被配置为根据这些当前或未来标准中的任何一种来对视频数据进行解码。

视频编码器20和视频解码器30各自可以实施为各种适合的编码器电路中的任何一种,如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当部分地在软件中实施时,电子设备可以将用于软件的指令存储在合适的非暂态计算机可读介质中并且使用一个或多个处理器在硬件中执行指令以执行本公开中公开的视频编码/解码操作。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,一个或多个编码器或解码器中的任一个可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。

图2是图示了根据本申请中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可以执行对视频帧内的视频块的帧内预测编码和帧间预测编码。帧内预测编码依赖于空间预测来减少或去除给定视频帧或图片内的视频数据的空间冗余。帧间预测编码依赖于时间预测以减少或去除视频序列的邻近视频帧或图片内的视频数据的时间冗余。

如图2所示,视频编码器20包括视频数据存储器40、预测处理单元41、已解码图片缓冲器(DPB)64、加法器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41进一步包括运动估计单元42、运动补偿单元44、划分单元45、帧内预测处理单元46和帧内块复制(BC)单元48。在一些实施方式中,视频编码器20还包括用于视频块重建的反量化单元58、逆变换处理单元60和加法器62。环路滤波器66可以位于加法器62与DPB 64之间,并且包括去块滤波器以对块边界进行滤波并从重建的视频中去除块效应伪像。环路滤波器66进一步包括样点自适应偏移(SAO)和自适应环路滤波器(ALF)以在加法器62的输出被放入DPB64并用于对其他视频块进行编解码之前对加法器62的输出进行滤波。视频编码器20可以采用固定或可编程硬件单元的形式,或可以被划分在在所图示的固定或可编程硬件单元中的一个或多个中。

视频数据存储器40可以存储待由视频编码器20的部件编码的视频数据。视频数据存储器40中的视频数据可以例如从视频源18获得。DPB 64是存储参考视频数据以用于由视频编码器20对视频数据进行编码(例如,在帧内预测编码模式或帧间预测编码模式下)的缓冲器。视频数据存储器40和DPB 64可以由多种存储器设备中的任何一种形成。在各个示例中,视频数据存储器40可以与视频编码器20的其他部件一起在片上(on-chip),或者相对于那些部件在片外(off-chip)。

如图2所示,在接收到视频数据之后,预测处理单元41内的划分单元45将视频数据划分为视频块。该划分还可以包括根据预定义的分割结构(如与视频数据相关联的四叉树结构)将视频帧划分为条带、瓦片、或其他更大的编码单元(CU)。视频帧可以被划分成多个视频块(或称为瓦片的视频块集)。预测处理单元41可以基于误差结果(例如,编码率和失真级别)为当前视频块选择多个可能的预测编码模式之一,如多个帧内预测编码模式之一或多个帧间预测编码模式之一。预测处理单元41可以将所得的帧内预测编码块或帧间预测编码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以随后用作参考帧的一部分。预测处理单元41还将如运动矢量、帧内模式指示符、划分信息和其他这种语法信息等语法元素提供给熵编码单元56。

为了为当前视频块选择适当的帧内预测编码模式,预测处理单元41内的帧内预测处理单元46可以相对于与待编解码的当前块相同的帧中的一个或多个相邻块执行对当前视频块的帧内预测编码,以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个预测块执行对当前视频块的帧间预测编码,以提供时间预测。视频编码器20可以执行多个编码通道,例如,来为视频数据的每个块选择适当的编码模式。

在一些实施方式中,运动估计单元42根据视频帧序列内的预定模式通过生成运动矢量来确定当前视频帧的帧间预测模式,该运动矢量指示当前视频帧内的视频块的预测单元(PU)相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成运动矢量的过程,该过程估计了视频块的运动。运动矢量例如可以指示当前视频帧或图片内的视频块的PU相对于参考帧内的预测块(或其他已编码单元)的位移,该预测块(或其他已编码单元)相对于在当前帧内被编码的当前块(或其他已编码单元)。预定模式可以将序列中的视频帧指定为P帧或B帧。帧内BC单元48可以以与由运动估计单元42确定运动矢量以进行帧间预测的方式类似的方式确定用于进行帧内BC编码的矢量,例如,块矢量,或者可以利用运动估计单元42来确定块矢量。

预测块是在像素差方面被认为与待编解码的视频块的PU紧密匹配的参考帧的块,该像素差可以由绝对差和(SAD)、平方差和(SSD)或其他差值度量来确定。在一些实施方式中,视频编码器20可以计算被存储在DPB 64中的参考帧的子整数像素位置的值。例如,视频编码器20可以插入参考帧的四分之一像素位置、八分之一像素位置或其他分数像素位置的值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索并且以分数像素精度输出运动矢量。

运动估计单元42通过将PU的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)中选择的参考帧的预测块的位置进行比较来计算帧间预测编码帧中的视频块的PU的运动矢量,该列表中的每一个标识被存储在DPB 64中的一个或多个参考帧。运动估计单元42将计算的运动矢量发送到运动补偿单元44,并且然后发送到熵编码单元56。

由运动补偿单元44执行的运动补偿可以涉及基于由运动估计单元42确定的运动矢量获取或生成预测块。在接收当前视频块的PU的运动矢量后,运动补偿单元44可以在参考帧列表中的一个中定位运动矢量所指向的预测块,从DPB 64取得预测块并且将预测块转发到加法器50。然后,加法器50通过从被编码的当前视频块的像素值中减去由运动补偿单元44提供的预测块的像素值来形成像素差值的残差视频块。形成残差视频块的像素差值可以包括亮度量差或色度量差或两者。运动补偿单元44还可以生成与视频帧的视频块相关联的语法元素,以供视频解码器30在对视频帧的视频块进行解码时使用。语法元素可以包括例如定义用于标识预测块的运动矢量的语法元素、指示预测模式的任何标志、或本文描述的任何其他语法信息。注意,运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而分开图示。

在一些实施方式中,帧内BC单元48可以以与上文结合运动估计单元42和运动补偿单元44所描述的方式类似的方式来生成矢量并且获取预测块,但是其中预测块与被编码的当前块处于同一帧中,并且其中相对于运动矢量,该矢量被称为块矢量。具体地,帧内BC单元48可以确定帧内预测模式以用于对当前块进行编码。在一些示例中,帧内BC单元48可以例如在单独的编码通道期间使用各种帧内预测模式对当前块进行编码,并且通过率失真(rate-distortion)分析来测试其性能。接下来,帧内BC单元48可以在各种测试的帧内预测模式中选择适当的帧内预测模式来使用并相应地生成帧内模式指示符。例如,帧内BC单元48可以使用针对各种测试的帧内预测模式的率失真分析来计算率失真值并且在测试的模式中选择具有最佳率失真特性的帧内预测模式作为要使用的适当的帧内预测模式。率失真分析通常确定已编码块与原始的未编码块(被编码以产生已编码块)之间的失真(或误差)量以及用于产生已编码块的比特率(即,比特数)。帧内BC单元48可以从各个已编码块的失真和速率来计算比值,以确定哪个帧内预测模式展现出块的最佳率失真值。

在其他示例中,帧内BC单元48可以全部或部分地使用运动估计单元42和运动补偿单元44,以根据本文描述的实施方式执行用于帧内BC预测的这种功能。在任一种情况下,对于帧内块复制,预测块可以是就像素差而言被视为与待编解码的块紧密匹配的块,该像素差可以由绝对差和(SAD)、平方差和(SSD)或其他差度量确定,并且预测块的识别可以包括计算子整数像素位置的值。

无论预测块是根据帧内预测来自同一帧还是根据帧间预测来自不同帧,视频编码器20都可以通过从被编码的当前视频块的像素值中减去预测块的像素值来形成残差视频块,从而形成像素差值。形成残差视频块的像素差值可以包括亮度分量差和色度分量差。

如上文描述的,帧内预测处理单元46可以对当前视频块进行帧内预测,作为由运动估计单元42和运动补偿单元44执行的帧间预测,或者由帧内BC单元48执行的帧内块复制预测的替代方案。具体地,帧内预测处理单元46可以确定帧内预测模式以用于对当前块进行编码。为此,帧内预测处理单元46可以例如在单独的编码通道期间使用各种帧内预测模式对当前块进行编码,并且帧内预测处理单元46(或在一些示例中为模式选择单元)可以从测试的帧内预测模式中选择适当的帧内预测模式来使用。帧内预测处理单元46可以将指示块的所选帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对指示比特流中的所选帧内预测模式的信息进行编码。

在预测处理单元41经由帧间预测或帧内预测确定当前视频块的预测块之后,加法器50通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个变换单元(TU)中,并且被提供给变换处理单元52。变换处理单元52使用如离散余弦变换(DCT)或概念上类似的变换等变换将残差视频数据变换为残差变换系数。

变换处理单元52可以将所得的变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程还可以减小与系数中的一些或所有系数相关联的比特深度。量化程度可以通过调整量化参数来修改。在一些示例中,量化单元54然后可以执行对包括量化的变换系数的矩阵的扫描。替代性地,熵编码单元56可以执行扫描。

量化之后,熵编码单元56使用例如上下文自适应可变长度编解码(CAVLC)、上下文自适应二进制算术编解码(CABAC)、基于语法的上下文自适应二进制算术编解码(SBAC)、概率区间划分熵(PIPE)编码或其他熵编码方法或技术将量化的变换系数熵编码为视频比特流。然后可以将已编码比特流传输到视频解码器30,或将其存档在存储设备32中,以供以后传输到视频解码器30或由视频解码器取得。熵编码单元56还可以对被编码的当前视频帧的运动矢量和其他语法元素进行熵编码。

反量化单元58和逆变换处理单元60分别应用反量化和逆变换以在像素域中重建残差视频块,以生成用于预测其他视频块的参考块。如上所述,运动补偿单元44可以从DPB64中存储的帧的一个或多个参考块中生成运动补偿的预测块。运动补偿单元44还可以将一个或多个内插滤波器应用于预测块以计算用于运动估计中的子整数像素值。

加法器62将重建的残差块添加到由运动补偿单元44产生的运动补偿的预测块,以产生参考块用于存储在DPB 64中。参考块然后可以由帧内BC单元48、运动估计单元42和运动补偿单元44用作预测块,以对后续视频帧中的另一个视频块进行帧间预测。

图3是图示了根据本申请的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、反量化单元86、逆变换处理单元88、加法器90和DPB 92。预测处理单元81进一步包括运动补偿单元82、帧内预测处理单元84和帧内BC单元85。视频解码器30可以执行通常与上文结合图2关于视频编码器20所描述的编码过程相反的解码过程。例如,运动补偿单元82可以基于从熵解码单元80接收到的运动矢量生成预测数据,而帧内预测单元84可以基于从熵解码单元80接收到的帧内预测模式指示符生成预测数据。

在一些示例中,可以给视频解码器30的单元分配任务以执行本申请的实施方式。同样,在一些示例中,本公开的实施方式可以在视频解码器30的一个或多个单元之间进行划分。例如,帧内BC单元85可以单独或与视频解码器30的其他单元(如运动补偿单元82、帧内预测处理单元84和熵解码单元80)组合执行本申请的实施方式。在一些示例中,视频解码器30可以不包括帧内BC单元85,并且帧内BC单元85的功能可以由预测处理单元81的其他部件(如运动补偿单元82)执行。

视频数据存储器79可以存储待由视频解码器30的其他部件解码的视频数据,比如已编码的视频比特流。例如,可以经由对视频数据进行有线或无线网络传送或者通过访问物理数据存储介质(例如,闪存驱动器或硬盘)从存储设备32、本地视频源(如相机)获得被存储在视频数据存储器79中的视频数据。视频数据存储器79可以包括存储来自已编码视频比特流的已编码视频数据的已编码图片缓冲器(CPB)。视频解码器30的已解码图片缓冲器(DPB)92存储参考视频数据,以用于由视频解码器30对视频数据进行解码(例如,在帧内预测编码模式或帧间预测编码模式下)。视频数据存储器79和DPB 92可以由多种存储器设备中的任一种形成,如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM)或其他类型的存储器设备。出于说明性目的,视频数据存储器79和DPB 92在图3中被描绘为视频解码器30的两个不同的部件。但是对于本领域技术人员将显而易见的是,视频数据存储器79和DPB 92可以由相同的存储器设备或单独的存储器设备提供。在一些示例中,视频数据存储器79可以与视频解码器30的其他部件一起在片上,或者相对于那些部件在片外。

在解码过程期间,视频解码器30接收表示已编码视频帧的视频块的已编码视频比特流和相关联的语法元素。视频解码器30可以在视频帧级别和/或视频块级别接收语法元素。视频解码器30的熵解码单元80对比特流进行熵解码以生成量化的系数、运动矢量或帧内预测模式指示符和其他语法元素。熵解码单元80然后将运动矢量和其他语法元素转发到预测处理单元81。

当视频帧被编码为帧内预测编码(I)帧或用于其他类型的帧中的帧内编码预测块时,预测处理单元81的帧内预测处理单元84可以基于信号传输的帧内预测模式和来自当前帧的先前解码块的参考数据来生成当前视频帧的视频块的预测数据。

当视频帧被编码为帧间预测编码(即,B或P)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收到的运动矢量和其他语法元素产生当前视频帧的视频块的一个或多个预测块。每个预测块可以从参考帧列表之一内的参考帧产生。视频解码器30可以基于被存储在DPB 92中的参考帧使用默认构造技术构造参考帧列表:列表0和列表1。

在一些示例中,当根据本文描述的帧内BC模式对视频块进行编解码时,预测处理单元81的帧内BC单元85基于从熵解码单元80接收到的块矢量和其他语法元素,为当前视频块产生预测块。预测块可以处于与由视频编码器20定义的当前视频块相同的图片的重建的区域内。

运动补偿单元82和/或帧内BC单元85通过解析运动矢量和其他语法元素来确定当前视频帧的视频块的预测信息,并且然后使用预测信息来产生被解码的当前视频块的预测块。例如,运动补偿单元82使用接收到的语法元素中的一些来确定用于对视频帧的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测帧类型(例如,B或P)、帧的参考帧列表中的一个或多个参考帧列表的构造信息、帧的每个帧间预测编码视频块的运动矢量、帧的每个帧间预测编码视频块的帧间预测状态以及用于对当前视频帧中的视频块进行解码的其他信息。

类似地,帧内BC单元85可以使用接收到的语法元素中的一些(例如,标志)来确定当前视频块是使用以下各项预测的:帧内BC模式、帧的视频块处于重建的区域内并且应被存储在DPB 92中的构造信息、帧的每个帧内BC预测视频块的块矢量、帧的每个帧内BC预测视频块的帧内BC预测状态以及用于对当前视频帧中的视频块进行解码的其他信息。

运动补偿单元82还可以如由视频编码器20在对视频块进行编码期间使用的那样使用内插滤波器来执行内插以计算参考块的子整数像素的内插值。在这种情况下,运动补偿单元82可以从接收到的语法元素确定由视频编码器20使用的内插滤波器并且使用该内插滤波器来产生预测块。

反量化单元86使用由视频编码器20针对视频帧中的每个视频块计算的用于确定量化程度的相同的量化参数,对在比特流中提供的并且由熵解码单元80进行熵解码的量化的变换系数进行反量化。逆变换处理单元88将逆变换(例如,逆DCT、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中重建残差块。

在运动补偿单元82或帧内BC单元85基于矢量和其他语法元素生成当前视频块的预测块之后,加法器90通过对来自逆变换处理单元88的残差块以及由运动补偿单元82和帧内BC单元85生成的对应预测块求和来重建当前视频块的已解码视频块。环路滤波器94可以位于加法器90与DPB 92之间,并且包括去块滤波器以对块边界进行滤波并从已解码的视频块中去除块效应伪影。环路滤波器94进一步包括SAO滤波器和ALF以对由加法器90输出的已解码视频块进行滤波。然后将给定帧中的已解码视频块存储在DPB 92中,DPB存储用于对接下来的视频块进行后续运动补偿的参考帧。DPB 92或与DPB 92分开的存储器设备还可以存储已解码视频以供稍后呈现在如图1的显示设备34等显示设备上。

在典型的视频编解码过程中,视频序列典型地包括帧或图片的有序集合。每个帧可以包括三个样点阵列,分别表示为SL、SCb和SCr。SL是亮度样点的二维阵列。SCb是Cb色度样点的二维阵列。SCr是Cr色度样点的二维阵列。在其他实例中,帧可以是单色的,并且因此仅包括亮度样点的一个二维阵列。

如图4A所示,视频编码器20(或更具体地,划分单元45)通过首先将帧划分为一组编码树单元(CTU)来生成帧的已编码表示。视频帧可以包括从左到右以及从上到下以光栅扫描顺序连续排序的整数个CTU。每个CTU是最大的逻辑编码单元,并且由视频编码器20在序列参数集中用信号传输CTU的宽度和高度,使得视频序列中的所有CTU具有相同的尺寸,即128×128、64×64、32×32和16×16中的一个。但是应当注意,本申请不必限于特定的尺寸。如图4B所示,每个CTU可以包括亮度样点的一个编码树块(CTB)、色度样点的两个对应的编码树块以及用于对编码树块的样点进行编解码的语法元素。语法元素描述像素的编码块的不同类型的单元的属性以及可以如何在视频解码器30处重建视频序列,语法元素包括帧间预测或帧内预测、帧内预测模式、运动矢量和其他参数。在单色图片或具有三个单独的色彩平面的图片中,CTU可以包括单个编码树块和用于对编码树块的样点进行编解码的语法元素。编码树块可以是N×N样点块。

为了实现更好的性能,视频编码器20可以对CTU的编码树块递归地执行如二叉树划分、三叉树划分、四叉树划分或两者的组合等树划分,并且将CTU划分为较小的编码单元(CU)。如图4C描绘的,首先将64×64CTU 400划分为四个较小的CU,每个CU的块尺寸为32×32。在四个较小的CU中,CU 410和CU 420按块尺寸各自被划分为四个16×16的CU。两个16×16CU 430和440按块尺寸各自进一步划分为四个8×8的CU。图4D描绘了图示了如图4C中所描绘的CTU 400的划分过程的最终结果的四叉树数据结构,四叉树的每个叶节点对应于相应尺寸在32×32至8×8范围内的一个CU。类似于图4B描绘的CTU,每个CU可以包括亮度样点的编码块(CB)和相同尺寸的帧的色度样点的两个对应的编码块,以及用于对编码块的样点进行编解码的语法元素。在单色图片或具有三个单独的色彩平面的图片中,CU可以包括单个编码块和用于对编码块的样点进行编解码的语法结构。应当注意,图4C和图4D中描绘的四叉树划分仅用于说明目的,并且可以将一个CTU分割为多个CU以适应基于四叉树/三叉树/二叉树划分的不同的局部特性。在多类型树结构中,一个CTU被四叉树结构划分,并且每个四叉树叶CU可以进一步被二叉树结构或三叉树结构划分。如图4E所示,有五种划分类型,即四元划分、水平二元划分、垂直二元划分、水平三元划分以及垂直三元划分。

在一些实施方式中,视频编码器20可以进一步将CU的编码块划分为一个或多个M×N预测块(PB)。预测块是样点的应用相同预测(帧间或帧内)的矩形(正方形或非正方形)块。CU的预测单元(PU)可以包括亮度样点的预测块、色度样点的两个对应的预测块以及用于对预测块进行预测的语法元素。在单色图片或具有三个单独的色彩平面的图片中,PU可以包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可以生成CU的每个PU的亮度、Cb及Cr预测块的预测亮度、Cb及Cr块。

视频编码器20可以使用帧内预测或帧间预测来生成PU的预测块。如果视频编码器20使用帧内预测来生成PU的预测块,则视频编码器20可以基于与PU相关联的帧的已解码样点来生成PU的预测块。如果视频编码器20使用帧间预测来生成PU的预测块,则视频编码器20可以基于除与PU相关联的帧之外的一个或多个帧的已解码样点来生成PU的预测块。

在视频编码器20生成CU的一个或多个PU的预测亮度、Cb和Cr块之后,视频编码器20可以通过从其原始亮度编码块中减去CU的预测亮度块来生成CU的亮度残差块,使得CU的亮度残差块中的每个样点指示CU的预测亮度块之一中的亮度样点与CU的原始亮度编码块中的对应样点之间的差。类似地,视频编码器20可以分别生成CU的Cb残差块和Cr残差块,使得CU的Cb残差块中的每个样点指示CU的预测Cb块之一中的Cb样点与CU的原始Cb编码块中的对应样点之间的差,并且CU的Cr残差块中的每个样点可以指示CU的预测Cr块之一中的Cr样点与CU的原始Cr编码块中的对应样点之间的差。

此外,如图4C所图示的,视频编码器20可以使用四叉树划分来将CU的亮度、Cb和Cr残差块分解为一个或多个亮度、Cb和Cr变换块。变换块是样点的应用相同变换的矩形(正方形或非正方形)块。CU的变换单元(TU)可以包括亮度样点的变换块、色度样点的两个对应的变换块以及用于对变换块样点进行变换的语法元素。因此,CU的每个TU可以与亮度变换块、Cb变换块和Cr变换块相关联。在一些示例中,与TU相关联的亮度变换块可以是CU的亮度残差块的子块。Cb变换块可以是CU的Cb残差块的子块。Cr变换块可以是CU的Cr残差块的子块。在单色图片或具有三个单独的色彩平面的图片中,TU可以包括单个变换块和用于对变换块的样点进行变换的语法结构。

视频编码器20可以将一个或多个变换应用于TU的亮度变换块以生成TU的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可以将一个或多个变换应用于TU的Cb变换块以生成TU的Cb系数块。视频编码器20可以将一个或多个变换应用于TU的Cr变换块以生成TU的Cr系数块。

在生成系数块(例如,亮度系数块、Cb系数块或Cr系数块)之后,视频编码器20可以对系数块进行量化。量化通常是指将变换系数量化以可能地减少用于表示变换系数的数据量从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可以对指示量化的变换系数的语法元素进行熵编码。例如,视频编码器20可以对指示量化的变换系数的语法元素执行上下文自适应二进制算术编解码(CABAC)。最终,视频编码器20可以输出包括形成编码帧和相关联数据的表示的比特序列的比特流,该比特流被保存在存储设备32中或被传输到目的地设备14。

在接收到由视频编码器20生成的比特流之后,视频解码器30可以解析比特流以从比特流中获得语法元素。视频解码器30可以至少部分地基于从比特流获得的语法元素来重建视频数据的帧。重建视频数据的过程通常与由视频编码器20执行的编码过程是相反的。例如,视频解码器30可以对与当前CU的TU相关联的系数块执行逆变换以重建与当前CU的TU相关联的残差块。视频解码器30还通过将当前CU的PU的预测块的样点添加到当前CU的TU的变换块的对应样点来重建当前CU的编码块。在重建帧的每个CU的编码块之后,视频解码器30可以重建该帧。

如上所述,视频编解码主要使用两种模式,即,帧内预测(intra-frameprediction)(或帧内预测(intra-prediction))和帧间预测(inter-frame prediction)(或帧间预测(inter-prediction))来实现视频压缩。基于调色板(palette-based)的编解码是许多视频编解码标准采用的另一编解码方案。在可能特别适用于屏幕生成的内容编解码的基于调色板的编解码中,视频编解码器(例如,视频编码器20或视频解码器30)形成表示给定块的视频数据的颜色的调色板表。调色板表包括给定块中最主要的(例如,经常使用的)像素值。给定块的视频数据中不经常表示的像素值不被包括在调色板表中,或者作为逸出颜色被包括在调色板表中。

调色板表中的每个条目包括调色板表中对应像素值的索引。可以对块中样点的调色板索引进行编解码,以指示调色板表中的哪个条目要被用于预测或重建哪个样点。调色板模式开始于为图片、条带、瓦片或视频块的其他这种分组的第一块生成调色板预测值的过程。如下文将解释的,后续视频块的调色板预测值典型地通过更新先前使用的调色板预测值来生成。出于说明的目的,假设调色板预测值是在图片级别定义的。换句话说,图片可以包括多个编码块,每个编码块具有其自己的调色板表,但是对于整个图片有一个调色板预测值。

为了减少用信号传输视频比特流中的调色板条目所需的比特,视频解码器可以利用调色板预测值来确定调色板表中的新调色板条目,以重建视频块。例如,调色板预测值可以包括来自先前使用的调色板表的调色板条目,或者甚至可以通过包括最近使用的调色板表的所有条目来用最近使用的调色板表来被初始化。在一些实施方式中,调色板预测值可以包括少于来自最近使用的调色板表的所有条目,并且然后结合来自其他先前使用的调色板表的一些条目。调色板预测值可以具有与用于编解码不同块的调色板表相同的大小,或者可以比用于编解码不同块的调色板表更大或更小。在一个示例中,调色板预测值被实施为包括64个调色板条目的先进先出(FIFO)表。

为了从调色板预测值生成视频数据块的调色板表,视频解码器可以从已编码视频比特流接收调色板预测值的每个条目的一比特标志。该一比特标志可以具有指示调色板预测值的相关联条目将被包括在调色板表中的第一值(例如,二进制一)或者指示调色板预测值的相关联条目将不被包括在调色板表中的第二值(例如,二进制零)。如果调色板预测值的大小大于用于视频数据块的调色板表,则一旦达到调色板表的最大大小,视频解码器可以停止接收更多的标志。

在一些实施方式中,调色板表中的一些条目可以在已编码视频比特流中直接用信号传输,而不是使用调色板预测值来确定。对于这种条目,视频解码器可以从已编码视频比特流接收三个单独的m比特的值,该m比特的值指示与条目相关联的亮度和两个色度分量的像素值,其中m表示视频数据的比特深度。与直接用信号传输的调色板条目所需的多个m比特的值相比,从调色板预测值得到的那些调色板条目只需要一比特标志。因此,使用调色板预测值用信号传输一些或所有调色板条目可以显著减少用信号传输新调色板表的条目所需的比特数,从而提高调色板模式编解码的整体编解码效率。

在许多实例中,一个块的调色板预测值是基于用于编解码一个或多个先前编解码的块的调色板表来确定的。但是,当对图片、条带或瓦片中的第一编码树单元进行编解码时,先前编解码的块的调色板表可能不可用。因此,无法使用先前使用的调色板表的条目来生成调色板预测值。在这种情况下,可以在序列参数集(SPS)和/或图片参数集(PPS)中用信号传输调色板预测值初始化器序列,该初始化器是当先前使用的调色板表不可用时用于生成调色板预测值的值。SPS通常是指应用于被称为已编码视频序列(CVS)的一系列连续编码视频图片的语法元素的语法结构,如由在PPS中找到的语法元素的内容确定的,该内容由在每个条带分段头部中找到的语法元素引用。PPS通常是指应用于CVS内的一个或多个单独图片的语法元素的语法结构,如由在每个条带分段头部中找到的语法元素确定的。因此,SPS通常被认为是比PPS更高级别的语法结构,这意味着与PPS中包括的语法元素相比,SPS中包括的语法元素通常不那么频繁地变化并且应用于视频数据的更大部分。

图5图示了根据一些实施例的比特流中的视频帧500的一部分。视频帧500包括多个像素,并且每个像素由多个颜色元素(例如,蓝色、绿色和红色)构成。在视频编码和解码中,多个像素的颜色信息由多个亮度样点502和多个色度样点504表示。多个像素中的每个像素对应于相应的亮度样点502,并且每个亮度样点502也对应于视频帧500中的相应像素。根据子采样方案(subsampling scheme),每个色度样点504对应于相应的一组亮度样点502。每个亮度样点具有亮度分量Y’,并且每个色度样点504具有蓝差色度分量Cb和红差色度分量Cr。亮度和色度分量(Y':Cb:Cr)的子采样方案具有三部分比例,例如4:1:1、4:2:0、4:2:2、4:4:4和4:4:0。具体地,视频帧500的亮度样点502和色度样点504遵从三部分比率等于4:1:1的子采样方案,并且平均而言,每四个亮度样点502对应具有蓝差色度分量Cb和红差色度分量Cr的一个色度样点504。

在视频编码或编码中,亮度样点502和色度样点504中的每一个都从视频帧500的残差块重建并通过环路滤波器66或94的去块滤波器、SAO滤波器和ALF滤波器进行滤波以去除伪像。滤波后的亮度样点502和色度样点504被存储到已解码图片缓冲器64或92中并且被用于对视频帧500中的其他视频块进行编码或解码。在一些实施例中,去块滤波器、SAO滤波器和ALF滤波器中的每一个被配置为基于相同类型的样点对亮度样点502或色度样点504进行滤波,例如,基于相应的一组相邻亮度样点502对每个亮度样点502进行滤波,并基于相应的一组相邻色度样点504对每个亮度样点502进行滤波。在一些实施例中,环路滤波器66或94进一步包括跨分量滤波器,其被配置为基于与相应色度样点504相邻的一个或多个亮度样点502对每个色度样点504进行滤波。反之,在一些实施例中,环路滤波器66或94包括替代跨分量滤波器,其被配置为基于与相应亮度样点502相邻的一个或多个亮度样点502对每个亮度样点502进行滤波。

具体地,跨分量滤波器包括跨分量ALF,其被配置为基于与相应色度样点504相邻的一个或多个亮度样点502来细化每个色度样点504。例如,跨分量ALF是线性菱形形状的滤波器。对于每个色度样点504,一个或多个相邻亮度样点502包括与具有八个像素的像素组506相对应的八个亮度样点502。八个亮度样点502中的六个形成六边形,该六边形包围相应的色度样点504和剩余的两个亮度样点502。每个色度样点504与色度细化值相对应,该色度细化值是八个亮度样点502的亮度值根据线性和菱形形状的跨分量ALF的线性组合。根据这种菱形形状的滤波器,视频帧500的每个亮度样点502可以被用于对多于一个色度样点504的跨分量滤波。下面参考图10A至图10D和图11A至图11B讨论跨分量ALF的具体示例的更多细节。

环路滤波器66或94的去块滤波器、SAO滤波器和ALF滤波器中的每一个都包括一个或多个环路滤波器系数,并且跨分量ALF还包括多个跨分量滤波器系数。环路滤波器系数和跨分量滤波器系数在自适应参数集(APS)中用信号传输。在示例中,APS携带并用信号传输多组(例如,最多25组)亮度滤波器系数和截取值索引以及多组(例如,最多8组)色度滤波器系数和截取值索引。APS与比特流中的视频帧500一起从视频编码器20传送到视频编码器30,即APS是比特流传送的开销(overhead)。在一些实施例中,用于亮度样点502的亮度分量的不同分类的滤波器系数被合并以减少比特流传送的开销。在示例中,用于图像条带的APS的索引在对应的条带头中用信号传输。

在一些实施例中,跨分量滤波器系数被确定并应用于块级(例如,条带级、CTB级),并作为亮度样点和色度样点的每个块的上下文编解码标志(即,CCALF滤波器索引)而用信号传输。亮度样点和色度样点的每个块可选地具有可变大小。即,在一些实施例中,多个预定义的跨分量滤波器系数集分别被存储在视频编码器20和视频解码器30中。视频帧500与上下文编解码标志一起从视频编码器20传送到视频解码器30。视频解码器30根据上下文编解码标志从本地存储的跨分量滤波器系数集中识别一组预定义跨分量滤波器系数。反之,在一些实施例中,跨分量滤波器系数直接与APS一起传输,并按预定义因子(例如,2

图6A是根据一些实施例的被应用在视频编码器20或解码器30中并且包括跨分量滤波器602的环路滤波器600的框图,并且图6B是根据一些实施例的根据菱形形状对亮度样点502进行分组的像素组506的图。图6C是根据一些实施例的基于亮度样点502的亮度值差进行的跨分量滤波过程650的流程图。视频编码器20或解码器30获得与视频帧500的多个像素组506相对应的多个亮度样点502和多个色度样点504。每个亮度样点502具有相应的亮度值,并且每个色度样点504具有相应的色度值。多个像素组506中的每一个包括相应像素组506中的相应色度样点504和一组亮度样点502。跨分量滤波器602被配置为基于一组亮度样点502为相应色度样点504生成色度细化值604。然后使用色度细化值604更新相应色度样点504,即,使用色度细化值604来细化相应色度样点504的色度值。每个像素组506的更新的相应色度样点与视频帧500相关联地存储。这样,基于围绕每个色度样点504的一组亮度样点生成细化色度值606,并针对相应色度样点504将其存储在图片缓冲器64或92中。

每个像素组506对应于相应的色度样点504,并且基于跨分量滤波器602的滤波器配置为相应的像素组506识别对应的一组亮度样点502。在示例中,如图5所示,亮度样点502和色度样点504根据具有等于4:1:1的比率的子采样方案排列。参考图6B,在一些实施例中,跨分量滤波器602是线性菱形形状的滤波器,涉及位于包围色度样点和两个亮度样点502的六边形的六个角处的六个亮度样点502。对于每个色度样点504,用于其跨分量滤波的一组对应亮度样点502中的每一个还被用于与相应色度样点紧邻的一个或两个色度样点504的跨分量滤波。亮度样点对502A、502B、502C和502D也分别被位于相应色度样点504上方、下方、左侧和右侧的色度样点用于跨分量滤波。替代性地,在一些实施例中(图11A),跨分量滤波器602是涉及一组九个亮度样点502的3×3滤波器。每个亮度样点502的位置与相应色度样点504的位置重叠或紧邻。九个亮度样点中的八个围绕相应的色度样点504。另外,在一些实施例中(图11B),跨分量滤波器602是涉及一组五个亮度样点502的十字形滤波器。每个亮度样点502位于十字形的中心或端部,并且相应的色度样点504与十字形的中心重叠。

在一些实施例中,跨分量滤波器602包括第一跨分量滤波器602A和第二跨分量滤波器602B,它们被配置为生成第一细化值604A和第二细化值604B。每个色度样点504包括蓝差色度分量608A和红差色度分量608B,这些分量使用第一细化值604A和第二细化值604B来单独更新以分别输出第一细化色度值606A和第二细化色度值606B。

环路滤波器600进一步包括样点自适应偏移(SAO)滤波器610和被耦接到SAO滤波器610的自适应环路滤波器(ALF)612。在应用该组亮度样点502来为每个色度样点504生成色度细化值604之前,SAO滤波器610补偿多个亮度样点502和多个色度样点504中的每一个。具体地,SAO滤波器610A、620B和610C分别补偿亮度样点502、色度样点504的蓝色蓝差色度分量Cb和色度样点504的红差色度分量Cr。基于一组相邻的亮度样点614使用亮度ALF 612A来更新每个已补偿亮度样点614,同时基于一组相邻的色度样点616使用色度ALF 612B来更新补偿后的色度样点616A和616B中的每一个。在一些实施例中,色度ALF 612B和跨分量滤波器602被共同控制,即,共同启用或禁用以同时生成色度分量608和色度细化值604。

参考图6C,在一些实施例中,对于跨分量滤波,根据预定义锚定规则从每个像素组506中的与相应色度样点504相对应的一组亮度样点502中确定(652)锚亮度样点620。色度细化值604是通过将该组亮度样点502中的每个亮度样点502的相应亮度值与锚亮度值求差(654)并且对该组亮度样点502的亮度值差应用(658)跨分量滤波器602而生成的。对于每个色度样点504,跨分量滤波由以下方程表示:

其中,ChromaR是相应色度样点504的跨分量滤波结果,f(i)是与对应于相应色度样点504的一组亮度样点502中的每一个相对应的跨分量滤波器系数,Luma(i)是每个亮度样点502的亮度值,并且Luma

ChromaR=clip(DR,ChromaR)(2)

其中,DR是非线性截取操作的动态范围。非线性截取操作的动态范围与比特深度相关。

参考图6B,在一些实施例中,每个像素组506具有预定义形状(例如,六边形),该预定义形状关于穿过预定义形状的中心626的两个正交轴622和624对称。根据预定义锚定规则,每个像素组506的锚亮度样点620是从该组亮度样点502中选择的,并且与该组亮度样点502中的其余亮度样点相比,锚亮度样点距相应像素组的中心的距离最近。锚亮度样点620是被完全包围在图6B中的六边形中的两个亮度样点502A-2和502B-1之一。替代性地,在一些实施例中,根据预定义锚定规则,每个色度样点的锚亮度样点620与该组亮度样点502不同,并且锚亮度样点620的锚亮度值是像素组506中的两个或更多个亮度样点502的亮度值的平均值。例如,锚亮度值是像素组506的亮度样点502中最靠近中心626的两个亮度样点502A-2和502B-1的亮度值的平均值。在另一示例中,锚亮度值是像素组506中所有亮度样点502的亮度值的平均值。

图7图示了根据一些实施例的存储在行缓冲器中以进行视频处理的图像块700。图像块700的示例是编码树单元。对水平边界附近的样点采用修改的块分类和滤波。为此目的,虚拟边界702被定义为通过将水平边界704以一定数量(N)的样点行的移位而形成的线。该数量对于亮度分量为4并且对于色度分量为2。对于跨分量滤波,虚拟边界702根据跨分量滤波器602的跨分量滤波方案从水平边界704移位。

具体地,图像块700包括顶部虚拟边界702A和底部虚拟边界702B。每个虚拟边界702与对应的水平边界704之间的亮度样点和色度样点不被存储在行缓冲器中并且必须从被包围在两条边界线702A和702B之间的亮度样点和色度样点中再现。换句话说,视频帧500的多个像素组506至少包括第一像素子集706和与第一像素子集706紧邻的第二像素子集708。第一像素子集706和第二像素子集708由块700的虚拟边界702划分。第一像素子集706被虚拟边界702包围在块中。第一像素子集706的亮度样点和色度样点可用,而第二像素子集708的亮度样点和色度样点不可用。将与第二像素子集708相对应的亮度样点的亮度值替换为与第一像素子集706相对应的亮度样点的亮度值。

在一些实施例中,与第二像素子集(例如,像素708A和708B)中的每一个相对应的亮度样点被替换为与第一像素子集中的相应像素(例如,像素706A和706B)相对应的亮度样点。第一像素子集的相应像素706A或706B和第二像素子集的相应像素708A或708B分别关于块700的虚拟边界702对称。替代性地,在一些实施例中,与第二像素子集(例如,像素708C)中的每一个相对应的亮度样点被替换为与第一像素子集中的相应像素(例如,像素706C)相对应的亮度样点。第一像素子集的相应像素706C是第一像素子集706中的距第二像素子集的相应一个708C最近的像素。关于再现第二像素子集708的亮度样点和色度样点的更多细节在下文参考图8A至图8G、图9A至图9E和图10A至图10D在自适应环路滤波和跨分量滤波的上下文中讨论。

图8A是示例ALF滤波方案800,其中,亮度ALF 612A从一组相邻亮度样点804对亮度样点802进行处理,并且图8B至图8G是根据一些实施例的针对与虚拟边界702相邻的六个亮度样点的ALF滤波方案。亮度ALF 612A具有菱形滤波器形状(例如,7×7菱形形状)并且是基于局部梯度的方向和活动从用于每个4×4块的多个预定义滤波器(例如,25个滤波器)中选择的。图8A至图8G中的每个正方形表示用具有菱形形状的亮度ALF 612A的对应滤波器系数(C0-C12)标记的亮度样点。对于亮度样点802,总共13个滤波器系数(C0-C12)被对称地应用以使用亮度ALF 612A来组合25个亮度样点。对亮度样点802应用修改的块分类。对于虚拟边界702A下方的4×4块的一维(1D)拉普拉斯(Laplacian)梯度计算,仅使用虚拟边界702A下方的亮度样点808。类似地,对于虚拟边界702B上方的4×4块的1D拉普拉斯梯度计算,仅使用虚拟边界702B上方的亮度样点。活动值的量化基于1D拉普拉斯梯度计算中使用的亮度样点808的减少数量来进行缩放。

在一些实施例中,在虚拟边界702处对亮度样点502和色度样点504两者使用对称填充操作,以进行滤波处理和ALF块分类。当被滤波的亮度样点802位于虚拟边界702A下方并相邻时(例如,与虚拟边界702A相隔两行或更少行的样点),位于虚拟边界702A上方的一个或多个相邻样点806被填充。同样,当被滤波的亮度样点802位于虚拟边界702B下方时(例如,与虚拟边界702B相隔两行或更少行的样点),位于虚拟边界702B下方的一个或多个相邻样点806被填充。在一些实施例中,该填充过程被应用于条带、砖块(brick)和/或瓦片(tile)边界。在一些实施例中,对于ALF块分类,仅使用在相同条带、砖块或瓦片中的亮度样点,并且相应地缩放对应的活动值。在一些实施例中,对于ALF滤波和ALF块分类,在除ALF虚拟边界之外的所有边界(即,图片/子图片/条带/瓦片)上应用重复填充。

换句话说,视频帧500的多个像素组506包括第一像素子集和与第一像素子集紧邻的第二像素子集。第一像素子集和第二像素子集由块700的虚拟边界702划分。第一像素子集706被虚拟边界702包围在块700中。第一像素子集的亮度样点808可用,而第二像素子集的亮度样点806不可用并且需要从亮度样点808生成。将与第二像素子集相对应的亮度样点806的亮度值替换为与第一像素子集相对应的亮度样点808的亮度值(例如,从其复制)。每个亮度样点806从相应的亮度样点808复制或被相应的亮度样点808替换。可选地,相应的替换亮度样点808(例如,样点808A)与相应的被替换亮度样点806(例如,样点806A)关于虚拟边界702对称。可选地,相应的替换亮度样点808(例如,样点808B)在与第一像素子集相对应的亮度样点808中最靠近相应被替换亮度样点806(例如,样点806A)。

参考图8D,在一些实施例中,相应的替换亮度样点808(例如,样点808C)与相应的被替换亮度样点806(例如,样点806A)相对于ALF滤波方案的中心线810对称。替代性地,在一些实施例中,相应的替换亮度样点808(例如,样点808D)与相应的被替换亮度样点806(例如,样点806A)相对于ALF滤波方案的中心(即,样点802)对称。

图9A是示例ALF滤波方案900,其中,色度ALF 612B从一组相邻样点904对色度样点902进行处理,并且图9B至图9E是根据一些实施例的针对与虚拟边界702相邻的四个色度样点的ALF滤波方案。色度ALF 612B具有菱形滤波器形状(例如,5×5菱形形状)。图9A至图9E中的每个正方形表示用具有菱形形状的色度ALF 612B的对应滤波器系数(C0-C6)标记的色度样点。对于色度样点902,总共7个滤波器系数(C0-C6)被对称地应用以组合色度ALF 612B中的13个色度样点。

如上所述,在一些实施例中,在虚拟边界702处对色度样点504使用对称填充操作,以进行滤波处理和ALF块分类。当被滤波的色度样点902位于虚拟边界702A下方并相邻时(例如,与虚拟边界702A相隔零行或一行色度样点),位于虚拟边界702A上方的一个或多个相邻样点906被填充。同样,当被滤波的色度样点902位于虚拟边界702B上方并相邻时(例如,与虚拟边界702B相隔零行或一行色度样点),位于虚拟边界702B下方的一个或多个相邻样点906被填充。在一些实施例中,该填充过程应用于条带、砖块和/或瓦片边界。在一些实施例中,对于ALF块分类,仅使用在相同条带、砖块或瓦片中的色度样点,并且相应地缩放对应的活动值。在一些实施例中,对于ALF滤波和ALF块分类,在除ALF虚拟边界之外的所有边界(即,图片/子图片/条带/瓦片)上应用重复填充。

第一像素子集的色度样点908可用,而第二像素子集的色度样点906不可用并且需要从色度样点908生成。将与第二像素子集相对应的色度样点906的色度值替换为与第一像素子集相对应的色度样点908的色度值。每个色度样点906从相应的色度样点908复制或被相应的色度样点908替换。可选地,相应的替换色度样点908(例如,样点908A)与相应的被替换色度样点906(例如,样点906A)相对于虚拟边界702对称。可选地,相应的替换色度样点908(例如,样点908B)在与第一像素子集相对应的色度样点908中最靠近相应被替换的色度样点906(例如,样点906A)。

参考图9C,在一些实施例中,相应的替换亮度样点908(例如,样点908C)与相应的被替换的亮度样点906(例如,样点906C)相对于ALF滤波方案的中心线910对称。替代性地,在一些实施例中,相应的替换亮度样点908(例如,样点908D)与相应的被替换亮度样点906(例如,样点906C)相对于ALF滤波方案的中心(即,样点902)对称。

图10A至图10D图示了根据一些实施例的针对跨分量滤波应用样点填充的示例边界像素组1000、1020、1040和1060。每个空心圆表示亮度样点502,该亮度样点被应用来生成由实心圆表示的色度样点504的色度细化值。在每个边界像素组中,每个亮度样点502与具有菱形形状的跨分量滤波器602的对应滤波器系数(C0-C7)相关联。对于每个色度样点504,总共8个滤波器系数(C0-C7)被应用以组合跨分量滤波器602中的8个亮度样点。与亮度样点504和色度样点504相对应的视频帧500包括由块700的虚拟边界702划分的第一像素子集和第二像素子集。第一像素子集和第二像素子集由块700的虚拟边界702划分。在每个像素组中,第一亮度样点子集502A对应于第一像素子集并且可供使用,而第二亮度样点子集502B对应于第二像素子集并且不可用。虚拟边界702平行于每个像素组的两个正交轴622和624之一。对于跨分量滤波,将与第二像素子集相对应的亮度样点502B的亮度值替换为与第一像素子集相对应的亮度样点502A的亮度值或从其复制。

参考图10B和图10D,在一些实施例中,第二亮度样点子集中的每一个(例如,502B-1)被替换为与相应亮度样点(例如,502B-1)相对于虚拟边界702对称的相应亮度样点(例如,502A-1)。替代性地,在一些实施例中,第二亮度样点子集中的每一个(例如,502B-1)被替换为第一亮度样点子集502A中的最靠近相应亮度样点(例如,502B-1)的相应亮度样点(例如,502A-2)。在图10B和图10D中,与相应亮度样点502B-1对称的亮度样点502A-1与最靠近相应亮度样点502B-1的亮度样点502A-2不同。反之,亮度样点502B-2和502B-3中的每一个都是从相同的相应亮度样点复制的,而与该相同的相应亮度样点是基于相对于虚拟边界702的对称性而被选择的还是基于距相应亮度样点502B-2或502B-3的距离而被选择的无关。

替代性地,在一些实施例中,相应的替换亮度样点502A(例如,图10A中的样点502A-2)与相应的被替换的亮度样点502B(例如,图10A中的样点502B-1)相对于像素组的中心线1002对称。替代性地,在一些实施例中,相应的替换亮度样点502A(例如,样点502A-3)与相应的被替换的亮度样点502B(例如,样点502B-3)相对于像素组的中心(即,色度样点504)对称。

在第二亮度样点子集502B中的每一个被替换为相应的亮度样点502A之后,根据预定义锚定规则从亮度样点502A和502B中确定锚亮度样点。色度样点504的色度细化值是通过以下方式生成的:将每个亮度样点502A或502B的相应亮度值与锚亮度样点的锚亮度值求差并对该组亮度样点502的亮度值差应用跨分量滤波器602以生成色度细化值604。因此,使用色度细化值604来更新色度样点504。

在一些实施例中,用于跨分量滤波的上述填充过程适用于条带、砖块和/或瓦片边界。在一些实施例中,仅使用在相同条带、砖块或瓦片中的色度样点,并且相应地缩放对应的活动值。在一些实施例中,在除ALF虚拟边界之外的所有边界(即,图片/子图片/条带/瓦片)上应用重复填充。

图11A和图11B是根据一些实施例的跨分量滤波器602的两个附加示例跨分量滤波方案1100和1150的示意图。每个空心圆表示亮度样点1102,该亮度样点被应用来生成由实心圆表示的色度样点1104的色度细化值604。在每个跨分量滤波方案1100或1150中,每个亮度样点502与跨分量滤波器602的对应滤波器系数相关联,并且基于同一像素组中的亮度样点1102的线性组合来修改色度样点1104。具体地,像素组中的亮度样点1102的亮度值差被组合以产生用于更新色度样点1104的色度细化值604。

参考图11A,色度样点1104与中心亮度样点1102A重叠并且被八个外围亮度样点1102B围绕。实心圆与像素组中心处的一个空心圆重叠。锚亮度样点被选择为亮度样点1102之一(例如,中心亮度样点1102A),或者是从亮度样点1102的子集或全部得到的。例如,锚亮度样点是所有九个亮度样点1102的平均值或八个外围亮度样点1102B的平均值。从每个亮度样点1102的相应亮度值中减去锚亮度值以提供亮度样点1102的亮度值差。跨分量滤波器602应用一组滤波器系数来对亮度样点1102的亮度值差进行滤波并且为色度样点1104生成色度细化值604。

在一些情况下,色度样点1104与被存储在行缓冲器中的块700的虚拟边界702相邻,并且虚拟边界702将像素组中的亮度样点1102划分为第一亮度样点子集和第二亮度样点子集。例如,第一行1106的亮度样点1102在顶部虚拟边界702A上方并且不被存储在行缓冲器中,而第二行1108和第三行1110的亮度样点1102被存储在其中。为了生成色度细化值604的目的,第一行1106的亮度样点被替换为第二行1108的亮度样点。替代性地,在另一示例中,第三行1110的亮度样点1102在底部虚拟边界702B下方并且不被存储在行缓冲器中,而第一行1106和第二行1108的亮度样点1102被存储在其中。为了生成色度细化值604的目的,第三行1110的亮度样点被替换为第二行1108的亮度样点。另外,在一些实施例中,第一行和第三行亮度样点中的一行在虚拟边界702之外并且不被存储在行缓冲区中,而被替换为这两行中被存储在行缓冲区中的另一行,因为第一行1106和第三行1110相对于跨分量滤波方案1100的对称轴1112对称。

参考图11B,色度样点1104与中心亮度样点1102A重叠并且被位于中心亮度样点1102A的上方、下方、左侧和右侧的四个外围亮度样点1102B围绕。锚亮度样点被选择为亮度样点1102之一(例如,中心亮度样点1102A),或者是从亮度样点1102的子集或全部得到的。例如,锚亮度样点是所有五个亮度样点1102的平均值或四个外围亮度样点1102B的平均值。在一些情况下,色度样点1104与被存储在行缓冲器中的块700的虚拟边界702相邻。例如,顶部亮度样点1102B-1在顶部虚拟边界702A上方并且不被存储在行缓冲器中,并且从中心亮度样点1102A和底部亮度样点1102B-2之一再现。在另一示例中,底部亮度样点1102B-2在底部虚拟边界702B下方并且不被存储在行缓冲器中,因此从中心亮度样点1102A和顶部亮度样点1102B-1之一再现。在像素组506中的所有亮度样点1102都可用之后,识别锚亮度样点并且确定亮度样点1102的亮度值差,从而允许使用跨分量滤波器602基于这些亮度样点1102来修改色度样点1104。

图12是根据一些实施例的视频编解码方法1200的流程图。视频编解码方法1200在具有视频编码器或解码器的电子设备中实施。电子设备获得(1202)与比特流中的视频帧500的多个像素组506相对应的多个亮度样点502和多个色度样点504。对于多个像素组506中的每一个,在像素组中识别(1204)相应色度样点504和一组亮度样点502。每个亮度样点502具有相应的亮度值。根据预定义锚定规则,从每个像素组506中的一组亮度样点502中确定(1212)锚亮度样点620。锚亮度样点620具有锚亮度值。电子设备基于该组亮度样点502通过以下方式生成(1214)色度细化值604:将该组中的每个亮度样点502的相应亮度值与锚亮度值求差(1216),以及对该组亮度样点502的亮度值差应用(1218)跨分量滤波器602以生成色度细化值。在一些实施例中,在应用跨分量滤波器602之前,对该组亮度样点502的亮度值差执行非线性截取操作。使用色度细化值来更新(1220)相应的色度样点。电子设备与视频帧500相关联地存储(1222)每个像素组506的更新的相应色度样点504。

在一些实施例中,多个像素组506包括第一像素子集706和与第一像素子集706紧邻的第二像素子集708。电子设备确定(1206)第一像素子集706和第二像素子集708被块700(例如,编码树单元)的虚拟边界702划分。第一像素子集和第二像素子集由块700的虚拟边界702划分。第一像素子集706的亮度样点可用(例如,与块700一起被存储)并且与块700的虚拟边界702紧邻,并且第二像素子集708的亮度样点不可用(例如,不与块700一起被存储)。将与第二像素子集708相对应的亮度样点的亮度值替换(1208)为与第一像素子集706相对应的亮度样点的亮度值。在一些实施例中,与第二像素子集708中的每个像素相对应的亮度样点被替换为与第一像素子集706中的相应像素相对应的亮度样点,并且第一像素子集706中的相应像素是第一像素子集706中的距第二像素子集708中的相应一个最近的像素。替代性地,在一些实施例中,与第二像素子集708中的每个像素相对应的亮度样点被替换为与第一像素子集706中的相应像素相对应的亮度样点,并且第一像素子集706中的相应像素和第二像素子集708中的相应一个相对于块700的虚拟边界702对称。对于至少一个像素组506,该组亮度样点502对应于(1210)第二像素子集的至少一个像素。即,在一些实施例中,对于至少一个像素组506,色度细化值是基于与第二像素子集708中的至少一个像素相对应的被替换的亮度样点的亮度值而生成的。

进一步地,在一些实施例中,每个像素组506包括根据预定义形状定位的一组像素,该预定义形状相对于穿过预定义形状的中心626的两个正交轴622和624对称。对于每个像素组506,像素组506中的一组亮度样点502中的每个亮度样点与像素组中的相应像素相对应。块700的虚拟边界702平行于这两个正交轴622和624之一。

在一些实施例中,根据预定义锚定规则,每个像素组506的锚亮度样点620是从该组亮度样点502中选择的,并且与该组亮度样点502中的其余亮度样点相比,该锚亮度样点距相应像素组506的中心626的距离最近。替代性地,在一些实施例中,根据预定义锚定规则,每个像素组506的锚亮度样点620与该组亮度样点502不同,并且锚亮度样点620的锚亮度值是两个或更多个亮度样点502的亮度值的平均值。

在一些实施例中,对于每个色度样点504,色度细化值604包括第一细化值604A和第二细化值604B。每个色度样点504包括分别使用第一细化值604A和第二细化值604B单独更新的蓝差色度分量608A和红差色度分量608B。

在一些实施例中,每个像素组506包括根据预定义形状定位的一组像素,并且该组亮度样点502中的每个亮度样点与相应像素组506中的相应像素相对应。进一步地,在一些实施例中,对于每个像素组506,与像素组506相对应的色度样点504被推定为位于预定义形状的中心626。另外,在一些实施例中,该预定义形状为菱形形状,并且该组亮度样点502包括按照菱形形状组织的八个亮度样点502。

在一些实施例中,亮度样点502和色度样点504遵从三部分比率等于4:1:1的子采样方案。对于每个像素组506,相应色度样点504平均与四个全亮度样点502相对应,并且具有蓝差色度分量Cb和红差色度分量Cr。

在一些实施例中,跨分量滤波器602包括线性菱形形状的滤波器,该线性菱形形状的滤波器被配置为以线性方式组合围绕每个色度样点504的一组亮度样点502的亮度值差。

在一些实施例中,在应用亮度样点502以针对每个色度样点504生成色度细化值之前,电子设备使用样点自适应偏移(SAO)滤波器来补偿多个亮度样点502和多个色度样点504中的每一个,并使用色度自适应环路滤波器612B对每个补偿后的色度样点504进行更新。进一步地,在一些实施例中,跨分量滤波器602和色度自适应环路滤波器612B被共同控制。

在一些实施例中,对于多个亮度样点502中的每一个,使用亮度自适应环路滤波器612A从相应的亮度样点502生成滤波后的亮度样点502。

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

在对本文中实施方式的描述中使用的术语仅出于描述特定实施方式的目的,并且不旨在限制权利要求的范围。如对实施方式的描述和所附权利要求中使用的,单数形式“一个(a)”、“一种(an)”和“所述(the)”旨在也包括复数形式,除非上下文另有明确指示。还将理解的是,本文所使用的术语“和/或”是指并涵盖相关联列举项目中的一个或多个项目的任何和所有可能组合。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、元件和/或部件的存在,但不排除一个或多个其他特征、元件、部件和/或其组的存在或添加。

还应理解,尽管术语第一、第二等在本文中可以用来描述各种要素,但是这些要素不应该受这些术语的限制。这些术语仅仅是用来将一个要素与另一个要素进行区分。例如,在不偏离实施方式的范围的情况下,第一电极可以被称为第二电极,并且类似地,第二电极可以被称为第一电极。第一电极和第二电极都是电极,但是第一电极和第二电极不是同一电极。

已经出于说明和描述的目的呈现了对本申请的描述,并且描述不旨在是穷举的或以所公开的形式限于本发明。受益于前述描述和相关联附图中呈现的教导,许多修改、变体和替代性实施方式对于本领域普通技术人员将是显而易见的。选择并描述实施例以便最好地解释本发明的原理、实际应用,并且使本领域其他技术人员能够理解本发明的各种实施方式并且最好地利用基本原理以及具有适合于预期的特定用途的各种修改的各种实施方式。因此,应当理解,权利要求的范围不应受限于所公开的实施方式的具体示例,并且修改和其他实施方式旨在被包括在所附权利要求的范围内。

相关技术
  • 用于在真空沉积工艺中在基板上进行材料沉积的设备、用于在基板上进行溅射沉积的系统和用于制造用于在基板上进行材料沉积的设备的方法
  • 用于区块链网络的访问凭证生成方法、数据访问方法、存储介质、计算设备
  • 用于进行预定处理的设备及其控制方法和存储介质
  • 进行数据交换的方法、设备以及计算机可读的存储介质
  • 用于风控系统的数据处理方法、设备和存储介质
  • 用于对视频颜色增强数据进行编码的方法和设备,以及用于对视频颜色增强数据进行解码的方法和设备
  • 用于对视频数据进行编码的方法和设备,及用于对视频数据进行解码的方法和设备
技术分类

06120116507028