本公开要求于2020年8月21日提交的美国临时申请第63/068,504号和于2020年10月14日提交的美国临时申请第63/091,331号的优先权,该两个申请通过引用以其整体并入本文。
具体实施方式
现在将详细参考在附图中示出其示例的示例性实施例。以下描述参考附图,其中不同附图中的相同标号表示相同或相似的元件,除非另有说明。在以下示例性实施例的描述中阐述的实现方式并不代表与本公开一致的所有实现方式。相反,它们仅仅是与所附权利要求中所述的本公开相关方面一致的设备和方法的示例。下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义相冲突,则以本文提供的术语和定义为准。
ITU-T视频编码专家组(ITU-T VCEG)和ISO/IEC运动图片专家组(ISO/IEC MPEG)的联合视频专家组(JVET)当前正在开发通用视频编码(VVC/H.266)标准。VVC标准的目的在于使其前身,即高效视频编码(HEVC/H.265)标准的压缩效率加倍。换句话说,VVC的目标是使用一半带宽实现与HEVC/H.265相同的主观质量。
为了使用一半带宽实现与HEVC/H.265相同的主观质量,JVET已经开发了超越HEVC的使用联合探索模型(JEM)参考软件的技术。随着编码技术被并入JEM中,JEM获得了比HEVC实质上更高的编码性能。
VVC标准最近已经被开发并且继续包括提供更好压缩性能的更多编码技术。VVC基于与在诸如HEVC、H.264/AVC、MPEG2、H.263等当前视频压缩标准中使用的同一混合视频编码系统。
视频是以时间顺序布置为存储视觉信息的一组静态图片(或“帧”)。视频捕获设备(例如,相机)可以用于按时间顺序捕获和存储这些图片,并且视频回放装置(例如,电视、计算机、智能电话、平板计算机、视频播放器或具有显示功能的任何终端用户终端)可以用于按时间顺序显示这些图片。此外,在一些应用中,视频捕获装置可以实时地将所捕获的视频发送到视频回放设备(例如,具有监视器的计算机),以例如用于进行监视、会议或直播。
为了减少这样的应用所需的存储空间和传输带宽,可以在存储和传输之前压缩视频,并且在显示之前解压缩视频。压缩和解压缩可以由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实施。用于压缩的模块通常被称为“编码器”,而用于解压缩的模块通常被称为“解码器”。编码器和解码器可以被统称为“编解码器”。编码器和解码器可以被实施为各种合适的硬件、软件或其组合中的任何一种。例如,编码器和解码器的硬件实施方式可以包括电路,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑或其任何组合。编码器和解码器的软件实施方式可以包括程序代码、计算机可执行指令、固件或固定在计算机可读介质中的任何合适的计算机实施的算法或处理。视频压缩和解压缩可以通过各种算法或标准,例如MPEG-1、MPEG-2、MPEG-4、H.26x系列等来实施。在一些应用中,编解码器可以对于第一编码标准的视频进行解压缩,并且使用第二编码标准重新压缩被解压缩的视频,在这样的情况下,编解码器可以被称为“转码器”。
视频编码处理可以识别并保留可用于重建图片的有用信息,并且忽略对于重建来说不重要的信息。如果不能完全重建被忽略的不重要的信息,则这样的编码处理可以被称为“有损的”。否则,可以被称为“无损的”。大多数编码处理是有损的,这是为了减少所需存储空间和传输带宽而做出的妥协。
正被编码的图片(称为“当前图片”)的有用信息包括相对于参考图片(例如,先前经编码和重建的图片)的改变。这样的改变可以包括像素的位置改变、亮度改变或颜色改变,其中位置改变是最被关注的。表征对象的一组像素的位置变化可以反映对象在参考图片和当前图片之间的运动。
在不参考另一图片的情况下编码的图片(即,其是其自身的参考图片)被称为“I图片”。如果使用帧内预测或帧间预测基于一个参考图片预测图片中的一些或所有块(例如,通常指视频图片的一些部分的块)(例如,单向预测),那么将该图片称作“P图片”。如果用两个参考图片来预测图片中的至少一个块(例如,双向预测),则该图片被称为“B图片”。
图1示出了根据本公开的一些实施例的示例性视频序列100的结构。视频序列100可以是直播视频或已经被捕获和存档的视频。视频100可以是现实生活视频、计算机生成的视频(例如,计算机游戏视频)或其组合(例如,具有增强现实效果的现实生活视频)。视频序列100可以来自视频捕获设备(例如,照相机)、含有先前捕获的视频档案(例如,存储在存储设备中的视频文件)或用于从视频内容提供商接收视频的视频馈送接口(例如,视频广播收发器)。
如图1所示,视频序列100可以包括沿着时间线按照时间顺序布置的一系列图片,包括图片102、104、106和108。图片102-106是连续的,并且在图片106和108之间有更多的图片。在图1中,图片102是I图片,其参考图片是图片102本身。图片104是P图片,如箭头所示,其参考图片是图片102。图片106是B图片,如箭头所示,其参考图片是图片104和108。在一些实施例中,图片(例如,图片104)的参考图片可不紧接在该图片之前或之后。例如,图片104的参考图片可以是图片102之前的图片。应注意,图片102-106的参考图片仅为示例,并且本公开并没有将参考图片的实施例限制为图1中所示示例。
通常,由于这样的任务的计算复杂性,视频编解码器不会一次编码或解码整个图片。相反,它们可以将图片分割成基础片段,并且逐段地对图片进行编码或解码。在本公开中,这样的基础片段被称为基础处理单元(“BPU”)。例如,图1中的结构110示出了视频序列100的图片(例如,图片102-108中的任何一个)的示例结构。在结构110中,图片被划分成4×4基础处理单元,其边界被示为虚线。在一些实施例中,基础处理单元在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中可以被称为“宏块”,或者在一些其他视频编码标准(例如,H.265/HEVC或H.266/VVC)中可以被称为“编码树单元”(“CTU”)。基础处理单元在图片中可具有可变大小,例如128×128、64×64、32×32、16×16、4×8、16×32,或任何任意形状和大小的像素。可以基于编码效率和基础处理单元中要保留的细节的程度之间的平衡来为图片选择基础处理单元的大小和形状。
基础处理单元可以是逻辑单元,其可以包括存储在计算机存储器中(例如,在视频帧缓冲器中)的一组不同类型的视频数据。例如,彩色图片的基础处理单元可以包括表示非彩色的亮度信息的亮度分量(Y)、表示颜色信息的一个或多个色度分量(例如,Cb和Cr),和相关联的语法元素,其中亮度和色度分量可以具有与基础处理单元相同的大小。在一些视频编码标准(例如,H.265/HEVC或H.266/VVC)中,亮度和色度分量可以被称为“编码树块”(“CTB”)。对基础处理单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。
视频编码具有多个操作阶段,其示例在图2A-2B和图3A-3B中示出。对于每一阶段,基础处理单元的大小仍可能对于处理而言过大,并且因此可进一步划分成本公开中称为“基础处理子单元”的片段。在一些实施例中,基础处理子单元在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中可以被称为“块”,或者在一些其他视频编码标准(例如,H.265/HEVC或H.266/VVC)中可以被称为“编码单元”(“CU”)。基础处理子单元可以具有与基础处理单元相同或更小的大小。类似于基础处理单元,基础处理子单元也是逻辑单元,其可包括存储于计算机存储器(例如,视频帧缓冲器)中的一组不同类型的视频数据(例如,Y、Cb、Cr和相关联的语法元素)。对基础处理子单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。应当注意,可以根据处理需要将这样的划分执行到跟进一步的程度。还应注意,不同阶段可使用不同的方案来划分基础处理单元。
例如,在模式决定阶段(图2B中示出了其示例),编码器可以决定对于基础处理单元使用什么预测模式(例如,图片内预测或图片间预测),但是基础处理单元可能会由于太大而使得编码器不能做出这样的决定。编码器可以将基础处理单元分成多个基础处理子单元(例如,如H.265/HEVC或H.266/VVC中的CU),并且对于每个单独的基础处理子单元决定预测类型。
对于另一示例,在预测阶段(图2A-2B中示出其示例),编码器可以以基础处理子单元(例如,CU)来执行预测操作。然而,在一些情况下,基础处理子单元可能对于编码器来说仍然太大而使得编码器无法处理。编码器可以进一步将基础处理子单元划分成能够对其执行预测操作的更小的片段(例如,在H.265/HEVC或H.266/VVC中称为“预测块”或“PB”)。
对于另一示例,在变换阶段(图2A-2B中示出其示例),编码器可对剩余的基础处理子单元(例如,CU)执行变换操作。然而,在一些情况下,基础处理子单元可能对于编码器来说仍然太大而使得编码器不能处理。编码器还可以将基础处理子单元进一步划分成能够对其执行变换操作的更小的片段(例如,在H.265/HEVC或H.266/VVC中称为“变换块”或“TB”)。应注意,同一基础处理子单元的划分方案在预测阶段和变换阶段可以不同。例如,在H.265/HEVC或H.266/VVC中,同一个CU的预测块和变换块可以具有不同大小和数量。
在图1的结构110中,基础处理单元112被进一步划分成3×3基础处理子单元,其边界被示为虚线。同一图片的不同基础处理单元可以按照不同方案划分为基础处理子单元。
在一些实现方式中,为了向视频编码和解码提供并行处理和差错恢复的能力,图片可以被划分成用于处理的区域,从而对于图片的区域,编码或解码处理可以不依赖于来自图片的任何其他区域的信息。换句话说,可以独立地处理图片的每个区域。通过这样做,编解码器可以并行处理图片的不同区域,从而提高编码效率。此外,当区域的数据在处理中被破坏或在网络传输中丢失时,编解码器可以正确地编码或解码同一图片的其他区域,而不依赖于被破坏的或丢失的数据,从而提供差错恢复能力。在一些视频编码标准中,图片可以被划分成不同类型的区域。例如,H.265/HEVC和H.266/VVC提供两种类型的区域:“条带”和“切块”。还应当注意,视频序列100的不同图片可以具有用于将图片划分成区域的不同分割方案。
例如,在图1中,结构110被划分成三个区域114、116和118,其边界被示为结构110内的实线。区域114包括四个基础处理单元。区域116和118中的每一个包括六个基础处理单元。应注意,图1中的基础处理单元、基础处理子单元和结构110的区域仅是示例,并且本公开不限制其实施例。
图2A示出了根据本公开的实施例的示例性编码处理200A的示意图。例如,编码处理200A可由编码器执行。如图2A所示,编码器可以根据处理200A将视频序列202编码成视频比特流228。与图1中的视频序列100类似地,视频序列202可以包括以时间顺序排列的一组图片(称为“原始图片”)。与图1中的结构110类似地,视频序列202的每个原始图片可以被编码器划分成基础处理单元、基础处理子单元或区域以用于处理。在一些实施例中,编码器可以以基础处理单元对视频序列202的每个原始图片执行处理200A。例如,编码器可以以循环方式执行处理200A,其中编码器可以在处理200A的一次循环中编码一个基础处理单元。在一些实施例中,编码器可以对视频序列202的每个原始图片的区域(例如,区域114-118)并行地执行处理200A。
在图2A中,编码器可以将视频序列202的原始图片的基础处理单元(称为“原始BPU”)馈送到预测阶段204,以生成预测数据206和预测BPU 208。编码器可以从原始BPU中减去预测BPU 208以生成剩余BPU 210。编码器可以将剩余BPU 210馈送到变换阶段212和量化阶段214以生成量化变换系数216。编码器可将预测数据206和量化变换系数216馈送到二进制编码阶段226以产生视频比特流228。上述标记202、204、206、208、210、212、214、216、226和228可以被称为“前向路径”。在处理200A期间,在量化阶段214之后,编码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220,以生成重建剩余BPU 222。编码器可以将重建剩余BPU 222添加到预测BPU 208以生成预测参考224,其在预测阶段204中用于处理200A的下一个循环。处理200A的上述标记218、220、222和224可以被称为“重建路径”。重建路径可以用于确保编码器和解码器两者使用相同的参考数据进行预测。
编码器可以循环地执行处理200A,以对原始图片的每个原始BPU(在前向路径中)进行编码,并且生成用于对原始图片的下一个原始BPU(在重建路径中)进行编码的预测参考224。在对原始图片的所有原始BPU进行编码之后,编码器可以继续对视频序列202中的下一图片进行编码。
参考处理200A,编码器可以接收由视频捕获设备(例如,相机)生成的视频序列202。本文所使用的术语“接收”可以指接收、输入、获取、检索、获得、读取、访问或以任何方式的用于输入数据的任何动作。
在预测阶段204,在当前循环中,编码器可以接收原始BPU和预测参考224,并且执行预测操作以生成预测数据206和预测BPU 208。预测参考224可以从处理200A的先前循环的重建路径生成。预测阶段204的目的是通过从原始BPU和预测参考224提取预测数据206来减少信息冗余,该预测数据可以用于将原始BPU重建为预测BPU 208。
理想地,预测BPU 208可以与原始BPU相同。然而,由于非理想的预测和重建操作,预测BPU 208通常与原始BPU略有不同。为了记录这样的差异,在生成预测BPU 208之后,编码器可以从原始BPU中减去它以生成残余BPU 210。例如,编码器可以从原始BPU的相应采样的值中减去预测BPU 208的采样的值(例如,灰度值或RGB值)。作为原始BPU和预测BPU 208的对应采样之间的这样的减法的结果,残余BPU 210的每个采样可以具有残余值。与原始BPU相比,预测数据206和残余BPU 210可以具有更少的比特,但是它们可以用于重建原始BPU而没有显著的质量劣化。因此,原始BPU被压缩。
为了进一步压缩残余BPU 210,在变换阶段212,编码器可以通过将残余BPU 210分解成一组二维“基础图案”来减少其空间冗余,每个基础图案与“变换系数”相关联。基础图案可以具有相同的大小(例如,残余BPU 210的大小)。每个基础图案可以表示残余BPU 210的变化频率(例如,亮度变化的频率)分量。没有一种基础图案可以从任何其他基础图案的任何组合(例如线性组合)中获得。换句话说,分解可以将残余BPU 210的变化分解到频域中。这样的分解类似于函数的离散傅立叶变换,其中基础图案类似于离散傅立叶变换的基本函数(例如,三角函数),并且变换系数类似于与基本函数相关联的系数。
不同的变换算法可以使用不同的基础图案。在变换阶段212可使用各种变换算法,诸如离散余弦变换、离散正弦变换等。变换阶段212的变换是可逆的。也就是说,编码器可以通过变换的逆操作(称为“逆变换”)来复原残余BPU 210。例如,为了复原残余BPU 210的采样,逆变换可以是将基础图案的对应采样的值乘以相应的关联系数,并将乘积相加以产生加权和。对于视频编码标准来说,编码器和解码器两者都可以使用相同的变换算法(因此使用相同的基础图案)。因此,编码器能够仅记录变换系数,解码器可以在没有从编码器接收基础图案的情况下根据该变换系数重建残余BPU 210。与残余BPU 210相比,变换系数可以具有更少的比特,但是它们可以用于重建残余BPU 210而没有显著的质量劣化。因此,残余BPU 210被进一步压缩。
编码器可以在量化阶段214进一步压缩变换系数。在变换过程中,不同的基础图案可以表示不同的变化频率(例如,亮度变化频率)。由于人眼通常能更好地识别低频变化,因此编码器可以忽略高频变化的信息而不会在解码中引起显著的质量劣化。例如,在量化阶段214,编码器可以通过将每个变换系数除以整数值(称为“量化比例因子”)并将商舍入到其最近的整数来生成量化变换系数216。在这样的操作之后,高频基础图案的一些变换系数可以被转换为零,并且低频基础图案的变换系数可以被转换为较小的整数。编码器可以忽略零值的量化变换系数216,由此进一步压缩变换系数。量化过程也是可逆的,其中量化变换系数216可在量化逆运算中被重建为变换系数(称为“逆量化”)。
因为编码器在舍入操作中忽略了这样的除法的余数,所以量化阶段214可以是有损的。通常,量化阶段214可在处理200A中造成最多的信息损失。信息损失越大,量化变换系数216需要的比特数越少。为了获得不同程度的信息丢失,编码器可以使用量化参数或量化处理的任何其他参数的不同值。
在二进制编码阶段226,编码器可使用二进制编码技术对预测数据206和量化变换系数216进行编码,该二进制编码技术可以例如是熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码或任何其他无损或有损压缩算法。在一些实施例中,除了预测数据206和量化变换系数216之外,编码器可在二进制编码阶段226编码其他信息,诸如预测阶段204使用的预测模式、预测操作的参数、变换阶段212的变换类型、量化处理的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。编码器可以使用二进制编码阶段226的输出数据来生成视频比特流228。在一些实施例中,视频比特流228可以被进一步分组以用于网络传输。
参考处理200A的重建路径,在逆量化阶段218,编码器可以对量化变换系数216执行逆量化,以生成重建变换系数。在逆变换阶段220,编码器可以基于重建变换系数生成重建残余BPU 222。编码器可以将重建残余BPU 222添加到预测BPU 208,以生成将在处理200A的下一个循环中使用的预测参考224。
应当注意,处理200A的其他变化可用于编码视频序列202。在一些实施例中,处理200A的各个阶段可以由编码器以不同的顺序执行。在一些实施例中,处理200A的一个或多个阶段可以组合成单个阶段。在一些实施例中,处理200A的单个阶段可以被划分成多个阶段。例如,变换阶段212和量化阶段214可组合成单个阶段。在一些实施例中,处理200A可以包括额外的阶段。在一些实施例中,处理200A可以省略图2A中的一个或多个阶段。
图2B示出了根据本公开的实施例的另一示例性编码处理200B的示意图。处理200B可以是通过修改处理200A而获得的。例如,处理200B可以由符合混合视频编码标准(例如,H.26x系列)的编码器使用。与处理200A相比,处理200B的前向路径另外包括模式决定阶段230,并将预测阶段204划分成空间预测阶段2042和时间预测阶段2044。处理200B的重建路径另外包括环路滤波阶段232和缓冲器234。
通常,预测技术可以被分类成两种类型:空间预测和时间预测。空间预测(例如,图片内预测或“帧内预测”)可以使用来自同一图片中的一个或多个已经编码的相邻BPU的像素来预测当前BPU。也就是说,空间预测中的预测参考224可包括相邻BPU。空间预测可以减少图片的固有空间冗余。时间预测(例如,图片间预测或“帧间预测”)可使用来自一个或多个已编码图片的区域来预测当前BPU。也就是说,时间预测中的预测参考224可包括经编码图片。时间预测可以减少图片的固有时间冗余。
参考处理200B,在前向路径中,编码器在空间预测阶段2042和时间预测阶段2044执行预测操作。例如,在空间预测阶段2042,编码器可以执行帧内预测。对于正被编码的图片的原始BPU,预测参考224可以包括在同一图片中已经被编码(在前向路径中)和被重建(在重建路径中)的一个或多个相邻BPU。编码器可以通过外推邻近BPU来生成预测BPU 208。外推技术可以包括例如线性外推或插值、多项式外推或插值等。在一些实施例中,编码器可以在采样级执行外推,诸如通过外推预测BPU 208的每个采样的对应采样值。用于外推的相邻BPU可以位于相对于原始BPU的各种方向上,例如垂直方向(例如,原始BPU的顶部上)、水平方向(例如,原始BPU的左侧)、对角线方向(例如,原始BPU的左下、右下、左上或右上)或在所使用的视频编码标准中界定的任何方向。对于帧内预测,预测数据206可以包括例如所使用的邻近BPU的位置(例如,坐标)、所使用的邻近BPU的大小、外推的参数、所使用的邻近BPU相对于原始BPU的方向等。
对于另一示例,在时间预测阶段2044,编码器可执行帧间预测。对于当前图片的原始BPU,预测参考224可以包括已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个图片(称为“参考图片”)。在一些实施例中,可以逐个BPU对参考图片进行编码和重建。例如,编码器可以将重建残余BPU 222添加到预测BPU 208以生成重建BPU。当生成同一图片的所有重建BPU时,编码器可以生成重建图片作为参考图片。编码器可以执行“运动估计”操作,以在参考图片的范围(称为“搜索窗口”)中搜索匹配区域。参考图片中搜索窗口的位置可以基于当前图片中原始BPU的位置来确定。例如,搜索窗口可以以参考图片中具有与当前图片中的原始BPU相同的坐标的位置为中心,并且可以向外扩展预定距离。当编码器在搜索窗口中识别(例如,通过使用像素递归算法、块匹配算法等)与原始BPU相似的区域时,编码器可以将这样的区域确定为匹配区域。匹配区域可以具有与原始BPU不同的大小(例如,小于、等于、大于或具有不同的形状)。因为参考图片和当前图片在时间线中在时间上分离(例如,如图1中所示),所以可认为随着时间的推移,匹配区域“移动”到原始BPU的位置。编码器可以将这样的运动的方向和距离记录为“运动向量”。当使用多个参考图片(例如,如图1中的图片106)时,编码器可以搜索匹配区域,并对于每个参考图像确定其关联的运动图片。在一些实施例中,编码器可以向相应匹配参考图片的匹配区域的像素值分配权重。
运动估计可以用于识别各种类型的运动,诸如平移、旋转、缩放等。对于帧间预测,预测数据206可以包括例如匹配区域的位置(例如,坐标)、与匹配区域相关联的运动向量、参考图片的数量、与参考图片相关联的权重等。
为了生成预测BPU 208,编码器可以执行“运动补偿”操作。运动补偿可以用于基于预测数据206(例如,运动向量)和预测参考224来重建预测BPU 208。例如,编码器可以根据运动向量移动参考图片的匹配区域,其中编码器可以预测当前图片的原始BPU。当使用多个参考图片时(例如,如图1中的图片106),编码器可根据匹配区域的相应运动向量和平均采样值来移动参考图片的匹配区域。在一些实施例中,如果编码器已经向相应匹配参考图片的匹配区域的采样值分配了权重,则编码器可以再加上移动的匹配区域的采样值的加权和。
在一些实施例中,帧间预测可以是单向的或双向的。单向帧间预测可以使用与当前图片在同一时间方向上的一个或多个参考图片。例如,图1中的图片104是单向帧间预测图片,其中参考图片(例如,图片102)位于图片104之前。双向帧间预测可以使用当前图片的两个时间方向上的一个或多个参考图片。例如,图1中的图片106是双向帧间预测图片,其中参考图片(例如,图片104和108)在图片104的两个时间方向上。
仍然参考处理200B的前向路径,在空间预测2042和时间预测阶段2044之后,在模式决定阶段230,编码器可为处理200B的当前循环选择预测模式(例如,帧内预测或帧间预测中的一个)。例如,编码器可执行率失真优化技术,在该技术中,编码器可以对预测模式进行选择以最小化根据候选预测模式的码率和在该候选预测模式下重建参考图片的失真的成本函数的值。取决于所选择的预测模式,编码器可以生成对应的预测BPU 208和预测数据206。
在处理200B的重建路径中,如果在前向路径中选择了帧内预测模式,则在生成预测参考224(例如,当前图片中已经编码和重建的当前BPU)之后,编码器可以直接将预测参考224馈送到空间预测阶段2042以供以后使用(例如,用于当前图片的下一BPU的外推)。编码器可将预测参考224馈送到环路滤波阶段232,在该环路滤波阶段,编码器可将环路滤波器应用于预测参考224以减少或消除在预测参考224的编码期间引入的失真(例如,块效应)。编码器可以在环路滤波阶段232应用各种环路滤波器技术,例如去块、采样自适应偏移、自适应环路滤波器等。经环路滤波的参考图片可存储在缓冲器234(或“解码图片缓冲器”)中以供以后使用(例如,用作视频序列202的后续图片的帧间预测参考图片)。编码器可以将一个或多个参考图片存储在缓冲器234中以在时间预测阶段2044使用。在一些实施例中,编码器可以将二进制编码阶段226的环路滤波器的参数(例如,环路滤波器强度)与量化变换系数216、预测数据206和其他信息一起进行编码。
图3A示出了根据本公开的实施例的示例性解码处理300A的示意图。处理300A可以是对应于图2A中的压缩处理200A的解压缩处理。在一些实施例中,处理300A可以类似于处理200A的重建路径。解码器可以根据处理300A将视频比特流228解码成视频流304。视频流304可以与视频序列202非常相似。然而,由于压缩和解压缩处理(例如,图2A-2B中的量化阶段214)中的信息丢失,通常,视频流304与视频序列202不相同。与图2A-2B中的处理200A和200B类似地,解码器可以以基础处理单元(BPU)来对编码为视频比特流228的每个图片执行处理300A。例如,解码器可以以循环方式执行处理300A,在该循环方式中,解码器可以在处理300A的一次循环中对基础处理单元进行解码。在一些实施例中,解码器可以针对编码为视频比特流228中的每个图片的多个区域(例如,区域114-118)并行地执行处理300A。
在图3A中,解码器可将与经编码图片的基础处理单元(称为“编码BPU”)相关联的视频比特流228的一部分馈送到二进制解码阶段302。在二进制解码阶段302,解码器可将该一部分解码成预测数据206和量化变换系数216。解码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220,以生成重建残余BPU 222。解码器可以将预测数据206馈送到预测阶段204以生成预测BPU 208。解码器可以将重建残余BPU 222添加到预测BPU 208以生成预测参考224。在一些实施例中,预测参考224可以存储在缓冲器(例如,计算机存储器中的解码图片缓冲器)中。解码器可将预测参考224馈送到预测阶段204以用于在处理300A的下一循环中执行预测操作。
解码器可以循环地执行处理300A,以对编码图片的每个编码BPU进行解码,并生成用于对编码图片的下一个编码BPU进行编码的预测参考224。在对编码图片的所有编码BPU进行解码之后,解码器可以将该图片输出到视频流304以进行显示,并且继续对视频比特流228中的下一个编码图片进行解码。
在二进制解码阶段302,解码器可以执行编码器所使用的二进制编码技术(例如,熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码、或任何其他无损压缩算法)的逆运算。在一些实施例中,除了预测数据206和量化变换系数216之外,解码器可以在二进制解码阶段302对其他信息进行解码,这些其他信息例如可以是预测模式、预测操作的参数、变换类型、量化处理的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。在一些实施例中,如果视频比特流228以分组的形式通过网络传输,则解码器可以在将视频比特流228馈送到二进制解码阶段302之前对其进行去分组处理。
图3B示出了根据本公开的实施例的另一示例性解码处理300B的示意图。处理300B可以是通过对处理300A进行修改而获得的。例如,处理300B可以由符合混合视频编码标准(例如,H.26x系列)的解码器使用。与处理300A相比,处理300B额外地将预测阶段204划分成空间预测阶段2042和时间预测阶段2044,并且额外地包括环路滤波阶段232和缓冲器234。
在处理300B中,对于正被解码的编码图片(称为“当前图片”)的编码基础处理单元(称为“当前BPU”),由解码器从二进制解码阶段302解码获得的预测数据206可以根据编码器使用什么预测模式来编码当前BPU而包括各种类型的数据。例如,如果编码器使用帧内预测来编码当前BPU,则预测数据206可以包括指示帧内预测的预测模式指示符(例如,标志值)、帧内预测操作的参数等。帧内预测操作的参数可以包括例如用作参考的一个或多个相邻BPU的位置(例如,坐标)、相邻BPU的大小、外推参数、相邻BPU相对于原始BPU的方向等。对于另一示例,如果编码器使用帧间预测来编码当前BPU,则预测数据206可以包括指示帧间预测的预测模式指示符(例如,标志值)、帧间预测操作的参数等。帧间预测操作的参数可以包括例如与当前BPU相关联的参考图片的数量、分别与参考图片相关联的权重、一个或多个匹配区域在各自参考图片中的位置(例如,坐标)、分别与匹配区域相关联的一个或多个运动向量等。
基于预测模式指示符,解码器可以决定是在空间预测阶段2042执行空间预测(例如,帧内预测)还是在时间预测阶段2044执行时间预测(例如,帧间预测)。参考图2B已经详细描述了执行这样的空间预测或时间预测的细节,并且在下文中将不再重复。在执行这样的空间预测或时间预测之后,解码器可以生成预测BPU 208。解码器可以将预测BPU 208和重建残余BPU 222相加,以生成预测参考224,如参考图3A所描述的那样。
在处理300B中,解码器可将预测参考224馈送到空间预测阶段2042或时间预测阶段2044,以在处理300B的下一循环中执行预测操作。例如,如果在空间预测阶段2042使用帧内预测来解码当前BPU,则在生成预测参考224(例如,经解码的当前BPU)之后,解码器可以直接将预测参考224馈送给空间预测阶段2042以供后续使用(例如,用于当前图片的下一BPU的外推)。如果在时间预测阶段2044使用帧间预测对当前BPU进行解码,则在生成预测参考224(例如,其中所有BPU都已被解码的参考图片)之后,解码器可以将预测参考224馈送到环路滤波阶段232以减少或消除失真(例如,块效应)。解码器可以以如参考图2B所描述的方式将环路滤波器应用于预测参考224。经环路滤波后的参考图片可存储在缓冲器234(例如,计算机存储器中的解码图片缓冲器)中以供后续使用(例如,用作视频比特流228的后续的编码图片的帧间预测参考图片)。解码器可以将一个或多个参考图片存储在缓冲器234中以在时间预测阶段2044使用。在一些实施例中,预测数据可以还包括环路滤波器的参数(例如,环路滤波器强度)。在一些实施例中,当预测数据206的预测模式指示符指示使用帧间预测来编码当前BPU时,预测数据包括环路滤波器的参数。
图4是根据本公开的实施例的用于编码或解码视频的示例性设备400的框图。如图4所示,设备400可以包括处理器402。当处理器402执行本文描述的指令时,设备400可以成为用于视频编码或解码的专用机器。处理器402可以是能够操纵或处理信息的任何类型的电路。例如,处理器402可以包括任何数量的中央处理单元(或“CPU”)、图形处理单元(或“GPU”)、神经处理单元(“NPU”)、微控制器单元(“MCU”)、光学处理器、可编程逻辑控制器、微控制器、微处理器、数字信号处理器、知识产权(IP)核、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、片上系统(SoC)、专用集成电路(ASIC)等的任何组合。在一些实施例中,处理器402还可以是被分组为单个逻辑组件的一组处理器。例如,如图4所示,处理器402可以包括多个处理器,包括处理器402a、处理器402b和处理器402n。
设备400还可以包括被配置为存储数据(例如,指令集、计算机代码、中间数据等)的存储器404。例如,如图4所示,被存储的数据可以包括程序指令(例如,用于实施处理200A、200B、300A或300B中的阶各个段的程序指令)和用于处理的数据(例如,视频序列202、视频比特流228或视频流304)。处理器402可以(例如,经由总线410)访问程序指令和用于处理的数据,并且执行程序指令以对用于处理的数据执行操作或操纵。存储器404可以包括高速随机存取存储设备或非易失性存储设备。在一些实施例中,存储器404可以包括任意数量的随机存取存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘驱动器、固态驱动器、闪存驱动器、安全数字(SD)卡、记忆棒、紧凑型闪存(CF)卡等的任意组合。存储器404还可以是分组为单个逻辑组件的一组存储器(图4中未示出)。
总线410可以是在设备400内部的组件之间传送数据的通信设备,例如内部总线(例如,CPU-存储器总线)、外部总线(例如,通用串行总线端口、外围组件互连高速端口)等。
为了便于解释而不导致不清楚,在本公开中,处理器402和其他数据处理电路被统称为“数据处理电路”。数据处理电路可以完全实施为硬件,或者实施为软件、硬件或固件的组合。另外,数据处理电路可以是单个独立模块,或者可以完全或部分地组合到设备400的任何其他组件中。
设备400还可以包括网络接口406,以提供与网络(例如,因特网、内联网、局域网、移动通信网络等)的有线或无线通信。在一些实施例中,网络接口406可以包括任何数量的网络接口控制器(NIC)、射频(RF)模块、应答器、收发器、调制解调器、路由器、网关、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、近场通信(“NFC”)适配器、蜂窝网络芯片等的任何组合。
在一些实施例中,可选地,设备400还可以包括外围接口408,以提供到一个或多个外围设备的连接。如图4所示,外围设备可以包括但不限于光标控制设备(例如,鼠标、触摸板或触摸屏)、键盘、显示器(例如,阴极射线管显示器、液晶显示器或发光二极管显示器)、视频输入设备(例如,照相机或耦接到视频档案的输入接口)等。
应注意,视频编解码器(例如,执行处理200A、200B、300A或300B的编解码器)可实施为设备400中的任何软件或硬件模块的任何组合。例如,处理200A、200B、300A或300B的一些或所有阶段可以被实施为设备400的一个或多个软件模块,例如可以被加载到存储器404中的程序指令。对于另一示例,处理200A、200B、300A或300B的一些或所有阶段可以被实施为设备400的一个或多个硬件模块,例如专用数据处理电路(例如,FPGA、ASIC、NPU等)。
帧内预测平滑(IPS)滤波器方法可以向帧内预测块添加滤波处理。IPS方法对由帧内预测模式预测的块的预测采样进行滤波,以获得最终滤波预测采样。以这种方式,可以平滑预测块,并且可以改进编码效率。
可以如下地执行IPS:
1)预测处理:使用帧内预测模式来生成预测块;
2)边缘填充处理:利用相邻参考行和列的重建采样以及预测块内的预测采样对当前预测块的四个相邻行、四个相邻列和四个相邻角进行边缘填充。图5是示出根据本公开的一些实施例的示例性IPS边缘填充处理的示意图。如图5所示,如下地执行边缘填充处理:
a)顶两行:使用与预测块相邻的顶行的重建采样来填充两个相邻顶行501。
b)左两列:使用与预测块相邻的左列的重建采样来填充两个相邻左列502。
c)底两行:使用预测块内最后两行的预测采样来填充两个相邻底行503。
d)右两列:使用预测块内最后两列的预测采样来填充两个相邻右列504。
e)相邻角:利用相邻填充采样来填充预测块的四个相邻角505处的采样。
3)滤波处理:利用帧内预测平滑滤波器对预测块进行滤波,以获得最终滤波预测块。
图6是示出根据本公开的一些实施例的示例性13抽头滤波器600的示意图。如图6所示,13抽头滤波器600的权重在水平和垂直方向中的每一个上都是对称的。图7是示出根据本公开的一些实施例的示例性25抽头滤波器700的示意图。如图7所示,25抽头滤波器700的权重在水平和垂直方向中的每一个上都是对称的。
当对当前采样进行滤波时,当前采样的预测值对应于滤波器的中心(例如图6中的32和图7中的124)放置,并且将周围采样分别乘以滤波器的对应位置的权重,然后将乘积相加,并且最后将乘积之和除以滤波器中所有权重之和,以获得最终预测值。
图8是示出根据本公开的一些实施例的另一示例性13抽头滤波器800的示意图。如图8所示,将滤波器800分组为内部权重801和外部权重802。对于边缘填充预测块使用内部9个权重801,并且对于对应位置处的4个参考采样使用外部4个权重802。因此,每个边只有一个行和一个列需要进行边缘填充。在本公开中,这种13抽头滤波器被称作9+4抽头滤波器。图9示出了根据本公开的一些实施例的在9+4抽头滤波器900中使用的采样的位置的示例。具体地,如图9所示,当对当前采样进行滤波时,四个所使用的参考采样包括:坐标在顶参考行902中的两个采样,采样坐标分别等于当前采样901(例如,对应于权重值124)的水平坐标减2和加2,例如,采样902A和902B(对应于权重值7);以及坐标在左参考列903中的两个采样,采样坐标分别等于当前采样901的垂直坐标减2和加2,例如,采样903A和903B(对应于权重值7)。
根据所公开的实施例,信令IPS标志以指定IPS是否被用于帧内预测块。在一些实施例中,IPS可以仅应用于采样数量大于或等于64且小于4096的亮度帧内预测块。在一些实施例中,预测块的宽度被限制为小于64。
对于帧内预测,空间相邻重建采样被用作参考采样来预测当前块的采样值。通常,由于编码次序是从左到右和从上到下,因此当对当前块进行编码时,左相邻重建采样和顶相邻重建采样通常已经被编码。因此,在帧内预测中,顶相邻重建采样、右上相邻重建采样、左上相邻重建采样、左相邻重建采样和左下相邻重建采样被用作当前块的参考采样。图10是示出根据本公开的一些实施例的示例性帧内预测参考采样的示意图。如图10所示,将预测大小为M×N的当前块1001。用点图案填充的采样(例如,1002-1006)是参考采样,这些参考采样是相邻块的重建采样。在AVS3中,顶参考采样1002的数量为M,右上参考采样1003的数量为M,左参考采样1004的数量为N,左下参考采样1005的数量为N,左上参考采样1006的数量为1。除了这些参考采样之外,如图10所示,利用对角线图案填充的采样(例如,1007和1008)也被用作参考采样,从用点图案填充的采样(例如,1002和1004)对这些参考采样进行边缘填充。在顶行存在两个边缘填充采样1007,并且在左列存在两个边缘填充采样1008。
在本公开中,顶参考采样1002被表示为r[1]至r[M],右上参考采样1003被表示为r[M+1]至r[2M];左参考采样1004被表示为c[1]至c[N],左下参考采样1005被表示为c[N+1]至c[2N],左上参考采样1006被表示为r[0]或c[0],顶行中的边缘填充采样1007被表示为r[-1]和r[-2],并且左列中的边缘填充采样1008被表示为c[-1]和c[-2]。
图11示出了根据本公开的一些实施例的帧内预测中的不同预测模式。如图11所示,在帧内预测中,存在具有不同编号的多个预测模式。在AVS3中,存在65个帧内预测模式(例如,编号0-32和34-65),它们是直流(DC)模式(例如,编号为0的模式0)、平面模式(例如,编号为1的模式1)、双线性模式(例如,编号为2的模式2),以及62个角度模式(例如,编号为3-32的模式3至模式32和编号为34-65的模式34至模式65)。
DC模式(例如,模式0)是其中使用左参考采样或顶参考采样的直流的模式。如果左参考采样和顶参考采样两者都可用,则左参考采样和顶参考采样的平均值被用作当前块中所有采样的预测值。如果左参考采样可用且顶参考采样不可用,则左参考采样的平均值被用作当前块中所有采样的预测值。如果左参考采样不可用且顶参考采样可用,则顶参考采样的平均值被用作当前块中所有采样的预测值。如果左参考采样和顶参考采样两者都不可用,则采样值范围的中位数被用作当前块中所有采样的预测值。
平面模式(例如,模式1)是其中采样的预测值全部在平面内的模式。因此,每个采样的预测值都遵循二维线性模型。
再次参考图10,首先,基于等式(1)和等式(2),使用顶参考采样1002和左上参考采样1006来推导水平方向(图片宽度方向)上的斜率,并且使用左参考采样1004和左上参考采样1006来推导垂直方向(图片高度方向)上的斜率,
ib=((ih<<5)×imh+(1<<(ish-1)))>>ish 等式(1)
ic=((iv<<5)×imv+(1<<(isv-1)))>>isv 等式(2)
其中ib是水平斜率,ic是垂直斜率,imh、imv、ish和isv取决于块的大小。在一些实施例中,imh=ibMult[Log(M)-2],ish=ibShift[Log(M)-2],imv=ibMult[Log(N)-2],isv=ibShift[Log(N)-2],以及ibMult[5]={13,17,5,11,23},ibShift[5]={7,10,11,15,19}。基于等式(3)和等式(4)推导获得参数ih和iv,
其次,基于等式(5),右上采样1003与左下采样1005的平均值被用作当前块中的中心采样的预测值,
ia=(r[M]+c[N])/2<<5 等式(5)
其中,ia是右移位5个比特之后的平均值。
第三,基于两个方向上的斜率的中心值,基于等式(6)推导出当前块中所有采样的预测值
Pred[x][y]=(ia+(x-((M>>1)-1))×ib+(y-((N>>1)-1))×ic+16)>>5(x=0~M-1,y=0~N-1) 等式(6)
其中,Pred[x][y]是位于当前块中(x,y)处的采样的预测值。
双线性模式的预测值是两个线性内插值的平均值。图12是示出根据本公开的一些实施例的示例性双线性模式预测的示意图。如图12所示,当前块的右下角采样C的预测值是根据从A到C的距离和从B到C的距离对右上参考采样A与左下参考采样B的加权平均。对于右边界(例如,以D为例),根据预测采样与参考采样A之间的距离,对参考采样A和角采样C的预测值进行加权平均生成预测值。对于底边界采样(例如,以E为例),根据预测采样与参考采样B之间的距离,对参考采样B和角采样C的预测值进行加权平均生成预测值。然后,对水平线性预测和垂直线性预测的预测值进行加权平均来预测位于块内的剩余采样(例如采样X)。根据从当前预测采样到对应的左参考采样的距离和从当前预测采样到对应的右边界采样的距离,对水平对应的左参考采样和右边界采样进行加权平均来生成水平线性预测的预测值。根据从当前预测采样到对应的顶参考采样的距离和从当前预测采样到对应的底边界采样的距离,对垂直对应的顶参考采样和底边界采样进行加权平均来生成垂直线性预测的预测值。
预测处理可以被描述为下面的等式(7),
Pred[x][y]=((((ia-c[y+1])×(x+1))<<Log(N))+(((ib-r[x+1])×(y+1))<<Log(M))+(([x+1]+c[y+1])<<(Log(M)+Log(N)))+((ic<<)-ia-ib)<x<y+(1<<(Log(M)+Log(N))))>>(Log(M)+Log(N)+1),(x=0~M-1,y=0~N-1) 等式(7)
其中,ia表示等于r[M]的采样A,ib表示等于c[N]的采样B,并且ic表示采样C。
在角度模式中,通过参考采样的定向外推或内插生成预测值。在AVS3中,存在62个不同的方向(例如,如图11所示的模式3至模式32和模式34至模式65)。首先,计算由要预测的当前采样沿某个方向所参考的参考位置。然后使用周围的4个整数参考采样来对该位置的参考采样值进行内插。
图13是示出根据本公开的一些实施例的角度模式的示例性预测的示意图。如图13所示,当前采样为K,它参考沿某个方向在顶参考采样行中的整数参考采样b与整数参考采样c之间的位置。然后参考采样a、b、c和d被用于基于等式(8)来推导出采样K的预测值,
Predk=(f0×a+f1×b+f2×c+f3×d)>>shift 等式(8)
其中Predk是采样K的预测值,f0、f1、f2和f3是内插滤波器系数,并且shift是由f0、f1、f2和f3之和决定的右移位数。
在AVS3中,帧间预测滤波器被应用于直接模式以对预测块进行滤波。如果当前块是由直接模式编码的并且不是由AFFINE或UMVE模式编码的,则信令指示是否使用了帧间预测滤波器(InterPF)的标志。如果使用了InterPF,则信令以指示使用了哪种滤波器方法的编号。在解码器侧,当解析出的InterPF标志为真时,解码器执行与编码器相同的滤波器操作。也就是使用InterPF。
滤波器使用预测块和当前块的上、下、右、左的相邻采样来做加权平均,以得到最终预测块。InterPF方法通过对两个预测块Pred_inter和Pred_Q进行加权来生成最终预测信号。通过帧间预测推导出Pred_inter。像帧内预测那样,由当前块的重建参考采样来推导出Pred_Q。
如果interPF编号等于0,则基于等式(9)至等式(12)来使用以下滤波器方法:
Pred(x,y)=(Pred_inter(x,y)*5+Pred_Q(x,y)*3)>>3 等式(9)
Pred_Q(x,y)=(Pred_V(x,y)+Pred_H(x,y)+1)>>2 等式(10)
Pred_V(x,y)=((h-1-y)*Rec(x,-1)+(y+1)*Rec(-1,h)+(h>>1))>>log2(h)等式(11)
Pred_H(x,y)=((w-1-x)*Rec(-1,y)+(x+1)*Rec(w,-1)+(w>>1))>>log2(w)等式(12)
其中Pred_inter是未滤波预测块,Pred是最终预测块,并且Rec表示重建相邻采样。当前块的宽度和高度分别用w和h来表示。
图14是根据本公开的一些实施例的用于interPF的示例性查找表。如果interPF编号等于1,则基于等式(13)使用滤波器方法:
Pred(x,y)=Clip((f(x)*Rec(-1,y)+f(y)*Rec(x,-1)+(64-f(x)-f(y))*Pred_inter(x,y)+32)>>6) 等式(13)
其中,f(x)和f(y)可以通过如图14所示的查找表获得。
传统上,IPS在执行帧内预测之后添加对帧内预测块的每个预测采样进行滤波的操作,以获得最终滤波预测块。每个预测采样需要用12个或24个周围预测采样进行滤波,以联合计算当前预测采样,这造成一些问题。现有IPS设计不利于硬件实施。
例如,对于13抽头滤波器,存在引入到帧内预测的13个乘法、12个加法和1个移位,而对于25抽头滤波器,存在引入到帧内预测的25个乘法、24个加法和1个移位。
此外,由于预测采样需要在它们可以被输出用于下一个编码处理之前先等待在周围预测采样的IPS滤波处理中使用,因此向硬件流水线中引入了时延并且要求更多的缓冲。图15是示出根据本公开的一些实施例的对于采样X的示例性IPS处理的示意图。如图15所示,每个采样的帧内预测可以按栅格扫描次序来预测,该栅格扫描次序可以例如为沿箭头D的方向。为了对采样“X”进行滤波,要求预测采样“A”。因此,为了向下一个编码处理输出采样“X”,要求延迟至少34个采样(则引入了时延)。就缓冲问题而言,需要缓冲5行预测采样(例如,如图15所示的5×16个采样)以执行滤波。
本公开提供了实施例,这些实施例使IPS利于硬件实施并减少操作数量、硬件流水线时延和缓冲器大小。
在一些实施例中,可以基于子块来执行IPS。可以对于每个子块并行执行IPS,从而可以减少硬件流水线时延和所需的缓冲。
图16示出了根据本公开的一些实施例的用于改进帧内预测平滑(IPS)的示例性方法1600的流程图。方法1600可以由编码器(例如,通过图2A的处理200A或图2B的200B)来执行,或者由设备(例如,图4的设备400)的一个或多个软件或硬件组件来执行。例如,一个或多个处理器(例如,图4的处理器402)可以执行方法1600。在一些实施例中,方法1600可以由在计算机可读介质中的计算机程序产品来实施,该计算机程序产品包括由计算机(例如图4的设备400)执行的计算机可执行指令,诸如程序代码。参考图16,方法1600可以包括以下步骤1602A-1608A。
在步骤1602,使用帧内预测模式来生成预测块。预测块是通过帧内预测模式生成的,从而可以用IPS滤波器对预测块进行滤波,以改进预测性能。
在步骤1604,将预测块划分为一个或多个子块。通常,预测采样在预测块中以矩阵形式排列。因此,预测块可以被划分为一个或多个子块。每个子块可以包括若干预测采样。
在步骤1606,对于每个子块执行边缘填充处理。可以对于每个子块并行执行边缘填充处理。因此,边缘填充效率得到改进。
在步骤1608,用帧内预测平滑滤波器对每个子块进行滤波,以获得最终滤波预测块。可以用IPS同时对子块进行滤波,而不是以栅格扫描次序对整个预测块进行滤波。减少了硬件流水线时延和滤波器的缓冲器大小。
在一些实施例中,W×H的预测块被划分为几个M×H的子块(例如,在垂直方向上对预测块进行划分)。如果W大于M,则预测块被划分为大小为M×H的个子块,其中W是预测块的宽度,H是预测块的高度,并且M例如可以是来自集合{4,8,16,32,64,128}的任何值。
图17A示出了根据本公开的一些实施例的用于划分M×H的子块以执行IPS的示例性方法1700的流程图。可以理解的是,方法1700可以是图16的方法1600中步骤1606的一部分。在一些实施例中,方法1700还可以包括以下步骤1702-1710。
在步骤1702,对于顶两行,使用与子块相邻的顶行的重建采样来填充两个相邻顶行。
在步骤1704,对于左两列,对于与预测块的左边界相邻的子块,使用与预测块相邻的左列的重建采样来填充两个相邻左列。对于其他子块,使用子块内第一列的预测采样来填充两个相邻左列。
在步骤1706,对于底两行,使用子块内最后两行的预测采样来填充两个相邻底行。
在步骤1708,对于右两列,使用子块内最后两列的预测采样来填充两个相邻右列。
在步骤1710,对于相邻角,用相邻填充采样来填充子块的四个相邻角处的采样。
图17B是示出根据本公开的一些实施例的对于子块中的采样X的示例性IPS处理的示意图。如图17B所示,块被分割为两个8×N的子块(例如,1701B和1702B)。为了对采样“X”进行滤波,延迟从34个采样(图15所示)减少到18个采样。此外,缓冲器的大小也降低了。
在一些实施例中,W×H的预测块被划分为几个W×N的子块(例如,在水平方向上对预测块进行划分)。如果H大于N,则预测块被划分为大小为W×N的个子块,其中W是预测块的宽度,H是预测块的高度,并且N可以是来自集合{4,8,16,32,64,128}的任何值。然后,对于每个子块执行边缘填充和滤波处理。
图18示出了根据本公开的一些实施例的用于划分W×N的子块以执行IPS的示例性方法1800的流程图。可以理解的是,方法1800可以是图16的方法1600中步骤1606的一部分。在一些实施例中,方法1800还可以包括以下步骤1802-1810。
在步骤1802,对于顶两行:对于与预测块的顶边界相邻的子块,将相邻的顶行的重建采样用于预测块以填充两个相邻顶行。对于其他子块,使用子块内第一行的预测采样来填充两个相邻顶行。
在步骤1804,对于左两列,将相邻的左列的重建采样用于子块以填充两个相邻左列。
在步骤1806,对于底两行,使用子块内最后两行的预测采样来填充两个相邻底行。
在步骤1808,对于右两列,使用子块内最后两列的预测采样来填充两个相邻右列。
在步骤1810,对于相邻角,用相邻填充采样来填充子块的四个相邻角处的采样。
在一些实施例中,W×H的预测块被划分为几个M×H的子块(例如,在垂直和水平两个方向上对预测块进行划分)。如果W大于M或H大于N,则预测块被划分为大小为M×N的个子块,其中W是预测块的宽度,并且H是预测块的高度。M和N可以是来自集合{4,8,16,32,64,128}的任何值。然后,对于每个子块执行边缘填充和滤波处理。
图19示出了根据本公开的一些实施例的用于划分M×N的子块以执行IPS的示例性方法1900的流程图。可以理解的是,方法1900可以是图16的方法1600中步骤1606的一部分。在一些实施例中,方法1900还可以包括以下步骤1902-1910。
在步骤1902,对于顶两行:对于与预测块的顶边界相邻的子块,将相邻的顶行的重建采样用于预测块以填充两个相邻顶行。对于其他子块,使用子块内第一行的预测采样来填充两个相邻顶行。
在步骤1904,对于左两列:对于与预测块的左边界相邻的子块,使用与预测块相邻的左列的重建采样来填充两个相邻左列。对于其他子块,使用子块内第一列的预测采样来填充两个相邻左列。
在步骤1906,对于底两行,使用子块内最后两行的预测采样来填充两个相邻底行。
在步骤1908,对于右两列,使用子块内最后两列的预测采样来填充两个相邻右列。
在步骤1910,对于相邻角,利用相邻填充采样来填充子块的四个相邻角处的采样。
在一些实施例中,分割子块的方法可以取决于对采样进行预测的次序。分割方向正交于预测采样的次序。因此,当对采样进行预测的次序是水平栅格扫描次序时,块被垂直地划分为子块。当对采样进行预测的次序是垂直栅格扫描次序时,预测块被水平地划分为子块。
图20A和图20B分别示出了根据本公开的一些实施例的预测块的示例性垂直分割和水平分割。如图20A所示,如果应用水平栅格扫描(例如,沿方向D),则预测块是被垂直分割的。如图20B所示,如果应用垂直栅格扫描(例如,沿方向D),则预测块是被水平分割的。
在一些实施例中,用于IPS的每个子块的相邻行、列和角中的一些可以由来自在栅格扫描次序中位于当前块之前的相邻子块的保留的相邻预测采样获得。
图21示出了根据本公开的一些实施例的对于子块S的示例性边缘填充处理。如图21所示,预测块被分割为四个子块。以预测块的右下方的子块S为例,对于不与预测块的顶或左边界相邻的子块S的顶相邻行2101和左相邻列2102,保留来自相邻子块的相邻预测采样以用于滤波。子块的底相邻行2103、右相邻列2014和相邻角2105是通过从当前子块S或所保留的采样(例如,2102)进行边缘填充获得的。箭头示出了采样的示例性边缘填充方向。
图22A至图22C示出了根据本公开的一些实施例的对于子块S的另一示例性边缘填充处理。如图22A所示,预测块被分割为四个子块。以预测块的左下方的子块S为例,子块S的右相邻列2201A是由来自栅格扫描次序上位于当前块之前的相邻子块的预测采样X进行边缘填充获得的。对于不与预测块的顶边界或左边界相邻的子块的顶相邻行2202A,保留来自相邻子块的相邻预测采样以用于滤波。左相邻列2203A和相邻角2206A由重建采样来填充。底相邻行2204A和相邻角2205A是通过从当前子块或所保留的采样进行边缘填充获得的。在一些实施例中,如图22B所示,相邻角2201B是通过从所保留的采样2202B进行边缘填充获得的。在一些实施例中,如图22C所示,相邻角2201C是通过从重建采样2202C进行边缘填充获得的。
在一些实施例中,用于IPS的每个子块的相邻行、列和角中的一些可以由预测块的相邻重建采样来进行边缘填充。图23示出了根据本公开的一些实施例的对于子块的另一示例性边缘填充处理。如图23所示,对于子块,相邻右列2301和底行2302可以由两个重建采样X和Y来边缘填充。此外,对于不同的帧内预测模式或当前子块的不同位置,所使用的重建采样的位置可以不同。
在一些实施例中,用于IPS的子块的不同相邻行、列和角可以通过使用如上所述的不同方法来获得。此外,这些方法可以基于帧内预测模式和/或当前子块的位置。
此外,边缘填充的行和列的数量取决于用于预测块的滤波器的形状和滤波器抽头的数量。
本公开的一些实施例可以修改或移除只有采样数量大于或等于64且小于4096的块可以应用IPS的限制。此外,可以根据块的宽度和高度来做出否应用IPS的决定。
例如,IPS仅被应用于采样数量大于或等于64且小于或等于4096的亮度帧内预测块。因此,采样数量等于4096的预测块也可以应用IPS。
在一些实施例中,IPS仅被应用于宽度和高度两者都大于或等于8且小于或等于64的亮度帧内预测块。
图24是根据本公开的一些实施例的示例性25抽头滤波器2400。如图24所示,在传统IPS设计中,当对一个预测采样进行滤波时,要进行滤波的采样X被放置在滤波器的中心。将预测采样乘以滤波器的中心的权重(例如,124),并且将周围的24个采样乘以对应权重。以这种方式,当前采样的左侧、右侧、上部和底部的所有采样都被用于滤波。
在一些实施例中,可以使用单边滤波器来执行IPS,其中在执行IPS时,右下权重被用于当前预测采样。以这种方式,只有当前预测采样的左侧和上部的采样被用于滤波,这可以解决时延问题。
在一些实施例中,上述25抽头滤波器被裁剪以得到将在IPS中使用的9抽头滤波器。图25A示出了根据本公开的一些实施例的示例性9抽头滤波器2500A。如图25A所示,25抽头滤波器2400的左上方9个抽头被选定作为9抽头单边滤波器2500A。将当前预测采样X乘以滤波器的右下方的权重(例如,124),并且将当前采样的左侧和上部的其他8个采样乘以对应权重。这可以减少乘法和加法,并且减少时延。
图25B示出了根据本公开的一些实施例的另一示例性9抽头单边滤波器2500B。如图25B所示,通过将25抽头滤波器2400折叠两次(例如,上下折叠,然后左右折叠)并且加上对应位置的权重,来从25抽头滤波器2400中推导获得9抽头单边滤波器2500B。然后,将当前预测采样X乘以滤波器的右下方的权重(例如,124),并且将当前采样的左侧和上部的其他8个采样乘以对应权重。
在一些实施例中,13抽头滤波器(例如,图6中的13抽头滤波器600)被裁剪以得到将在IPS中使用的6抽头滤波器。图26A示出了根据本公开的一些实施例的示例性6抽头单边滤波器2600A。如图26A所示,将当前预测采样X乘以滤波器的右下方的权重(例如,32),并且将当前采样的左侧和上部的其他5个采样乘以对应权重。
图26B示出了根据本公开的一些实施例的另一示例性6抽头单边滤波器2600B。如图26B所示,通过将13抽头滤波器600折叠两次(例如,上下折叠,然后左右折叠)并且加上对应位置的权重,来从13抽头滤波器600推导获得6抽头单边滤波器2600B。然后,将当前预测采样X乘以滤波器的右下方的权重(例如,32),并且将当前采样的左侧和上部的其他5个采样乘以对应权重。
在一些实施例中,设计了另一25抽头滤波器以在IPS中使用。图27示出了根据本公开的一些实施例的示例性81抽头滤波器2700。图28A示出了根据本公开的一些实施例的示例性25抽头滤波器2800A。如图28A所示,81抽头滤波器2700的左上25个抽头被选定作为25抽头单边滤波器2800A。将当前预测采样X乘以滤波器的右下方的权重(例如,68260),并且将当前采样的左侧和上部的其他24个采样乘以对应权重。
图28B示出了根据本公开的一些实施例的另一示例性25抽头单边滤波器2800B。如图28B所示,通过将81抽头滤波器2700折叠两次(例如,上下折叠,然后左右折叠)并且加上对应位置的权重,来从81抽头滤波器2700推导获得25抽头单边滤波器2800B。然后,将当前预测采样X乘以滤波器的右下方的权重(例如,68260),并且将当前采样的左侧和上部的其他24个采样乘以对应权重。
利用单边滤波器,可以减少乘法和加法,并且改进时延。
在一些实施例中,当对于预测块执行IPS时,可以跳过一些行。
图29示出了根据本公开的一些实施例的用于改进IPS的示例性方法2900的流程图。可以理解的是,方法2900可以是图16的方法1600中步骤1608的一部分。在一些实施例中,方法2900还可以包括以下步骤2902。
在步骤2902,对数量少于子块的高度的行进行滤波。对较少的行进行滤波而不是对所有行进行滤波可以减少时延。
例如,仅对预测块或子块的前X行进行滤波,并且不对其他行进行滤波。
在一些实施例中,X等于H-2,其中H是预测块或子块的高度的行的数量。然后,IPS仅被应用于预测块的前H-2行。此外,X可以是任何小于H的非负整数值。
传统上,用13抽头滤波器或25抽头滤波器执行IPS。在一些实施例中,可以减少抽头数以降低计算复杂性和缓冲。此外,减少垂直方向上的抽头可以解决时延问题。
图30A至图30D分别示出了根据本公开的一些实施例的示例性裁剪滤波器3000A-3000D。如图30A所示,通过移除13抽头滤波器600的顶行和底行,13抽头滤波器(例如,图6中的13抽头滤波器600)被裁剪为11抽头滤波器3000A。如图30B所示,通过移除25抽头滤波器700的顶行和底行,25抽头滤波器(例如,图7中的25抽头滤波器700)被裁剪为15抽头滤波器3000B。图30C示出了根据本公开的一些实施例的另一示例性裁剪15抽头滤波器2900C。图30D示出了根据本公开的一些实施例的另一示例性裁剪15抽头滤波器3000D。
传统上,IPS滤波器是二维滤波器。在一些实施例中,可以使用一维滤波器来代替二维滤波器,这样可以减少计算复杂性、硬件流水线时延和缓冲。抽头数可以是任何非负奇数整数值,并且每个权重是非负整数值。图31A示出了根据本公开的一些实施例的示例性水平一维5抽头滤波器3100A。图31B示出了根据本公开的一些实施例的示例性垂直一维5抽头滤波器3100B。图32A示出了根据本公开的一些实施例的另一示例性水平一维5抽头滤波器3200A。图32B示出了根据本公开的一些实施例的另一示例性垂直一维5抽头滤波器3200B。
图33A和图33B分别示出了根据本公开的一些实施例的另外的两个示例性一维5抽头滤波器3300A和3300B。如图33A和图33B所示,滤波器3300A和3300B的每个权重值都为2的幂,或者可以用几个数量的2的幂之和来表示,例如24=16+8。
在一些实施例中,滤波器设计可以具有以下特点中的一个,这可以减少计算复杂性:
1.权重之和为2的多次幂,这样可以用移位操作来代替乘法(例如,滤波器3100A和3100B)。
2.每个权重值为2多次幂或几个2的多次幂之和(例如,滤波器3300A和3300B)。
3.权重是水平和/或垂直对称的。因此,可以减少乘法的数量(例如,滤波器3000A-3000D)。
在一些实施例中,水平一维滤波器和垂直一维滤波器两者都被用于执行IPS滤波。例如,可以用水平一维滤波器对当前预测块中的所有采样执行水平滤波,并且然后用垂直一维滤波器对所有滤波采样执行垂直滤波。在一些实施例中,可以用垂直一维滤波器对当前预测块中的所有采样执行垂直滤波,并且然后用水平一维滤波器对所有滤波采样执行水平滤波。
在一些实施例中,仅用水平一维滤波器对当前预测块中的所有采样执行水平滤波。
在一些实施例中,仅用垂直一维滤波器对当前预测块中的所有采样执行垂直滤波。
在一些实施例中,使用水平一维滤波器和垂直一维滤波器中的一者或两者还是不使用滤波器是根据用于预测块的帧内预测模式来确定的。
图34A示出了根据本公开的一些实施例的用于选择滤波器的第一示例性流程图。如图34A所示,滤波器的选择如下:
在步骤3402A,确定帧内预测模式的编号。
在步骤3404A,响应于模式的编号小于3(例如,非角度模式,诸如平面、双线性或DC模式),执行二维滤波(首先水平并且其次垂直、或首先垂直并且其次水平)。
在步骤3406A,响应于模式的编号∈[19,32]或[51,65](例如,模式18的右侧的角度模式,参考图11),用水平一维滤波器对当前预测块中的所有采样仅执行水平滤波。
在步骤3408A,响应于模式的编号∈[3,18]或[34,50](例如,模式18的左侧的角度模式,参考图11),用垂直1D滤波器对当前预测块中的所有采样仅执行垂直滤波。
图34B示出了根据本公开的一些实施例的用于选择滤波器的第二示例性流程图。如图34B所示,滤波器的选择如下:
在步骤3402B,确定帧内预测模式的编号。
在步骤3404B,响应于模式的编号小于3(例如,非角度模式,诸如平面、双线性或DC模式),执行二维滤波(首先水平其次垂直、或者首先垂直其次水平)。
在步骤3406B处,响应于模式的编号∈[19,32]或[51,65](例如,模式18的右侧的角度模式,参考图11),用垂直一维滤波器对当前预测块中的所有采样仅执行垂直滤波。
在步骤3408B,响应于模式的编号∈[3,18]或[34,50](例如,模式18的左侧(包括模式18)的角度模式,参考图11),用水平1D滤波器对当前预测块中的所有采样仅执行水平滤波。
图34C示出了根据本公开的一些实施例的用于选择滤波器的第三示例性流程图。如图34C所示,滤波器的选择如下:
在步骤3402C,确定帧内预测模式的编号。
在步骤3404C,响应于模式的编号小于3(例如,非角度模式,诸如平面、双线性或DC模式),不执行滤波。
在步骤3406C,响应于模式的编号∈[19,32]或[51,65](例如,模式18的右侧的角度模式,参考图11),用所提出的水平一维滤波器对当前预测块中的所有采样仅执行水平滤波。
在步骤3408C,响应于模式的编号∈[3,18]或[34,50](例如,模式18的左侧(包括模式18)的角度模式,参考图11),用所提出的垂直一维滤波器对当前预测块中的所有采样仅执行垂直滤波。
图34D示出了根据本公开的一些实施例的用于选择滤波器的第四示例性流程图。如图34D所示,滤波器的选择如下:
在步骤3402D,确定帧内预测模式的编号。
在步骤3404D,响应于模式的编号小于3(例如,非角度模式,诸如平面、双线性或DC模式),不执行滤波。
在步骤3406D,响应于模式的编号∈[19,32]或[51,65](例如,模式18的右侧的角度模式,参考图11),用垂直1D滤波器对当前预测块中的所有采样仅执行垂直滤波。
在步骤3408D,响应于模式的编号∈[3,18]或[34,50](例如,模式18的左侧(包括模式18)的角度模式,参考图11),用水平1D滤波器对当前预测块中的所有采样仅执行水平滤波。
在一些实施例中,当执行IPS滤波时,根据帧内预测模式,确定使用具有不同权重的一维水平滤波器。例如,对于垂直模式,使用整形一维水平滤波器(权重之差很大)。对于水平模式,使用平滑1D水平滤波器(权重之差很小)。
在一些实施例中,水平一维滤波器和垂直一维滤波器中的权重可以不同。在一些实施例中,一维水平滤波器的抽头数可以不同于一维垂直滤波器的抽头数。为了减少存储开销和时延,一维垂直滤波器可以比一维水平滤波器具有更少的抽头数。例如,一维水平滤波器具有5个抽头,而一维垂直滤波器仅具有3个抽头。
本公开还提出对于边缘填充预测块使用一维水平滤波器,并且将该一维水平滤波器与一些参考采样组合。以这种方式,可以减少硬件流水线时延和缓冲。
在一些实施例中,当用一维水平滤波器对当前预测滤波器进行滤波时,可以使用来自对应位置处的顶参考行和左参考列的一些参考采样。
图35示出了根据本公开的一些实施例的示例性5+4抽头滤波器3500。如图35所示,可以使用5+4抽头滤波器3500。对于边缘填充预测块使用内部一维水平5抽头滤波器3501,并且对于对应位置处的4个参考采样(A-D)使用外部4个权重(例如,8)。因此,每个边仅两列需要被边缘填充。当对当前采样X进行滤波时,所使用的参考采样是:坐标在顶参考行中的两个采样(A和B),采样坐标分别等于当前采样X的水平坐标减1和加1;以及坐标在左参考列中的两个采样(C和D),采样坐标分别等于当前采样X的垂直坐标减1和加1。
图36示出了根据本公开的一些实施例的示例性5+6抽头滤波器3600。如图36所示,对于边缘填充预测块使用内部一维水平5抽头滤波器3501,并且对于对应位置处的6个参考采样(A-F)使用外部6个权重(例如,5)。当对当前采样X进行滤波时,所使用的参考采样是:坐标在顶参考行中A-C的三个采样,采样坐标分别等于当前采样的水平坐标、当前采样的水平坐标减1和加1;以及坐标在左参考列D-F中的三个采样,采样坐标分别等于当前采样X的垂直坐标、当前采样X的垂直坐标减1和加1。
在一些实施例中,仅使用对应位置处来自左参考列的一些参考采样。
图37示出了根据本公开的一些实施例的示例性3+4抽头滤波器3700。如图37所示,所使用的参考采样是坐标在左参考列(A-D)中的四个采样,采样坐标分别等于当前采样X的垂直坐标减1、减2、加1和加2。
在一些实施例中,对对应位置处的一些参考采样取平均值以用于滤波处理。
图38A示出了根据本公开的一些实施例的示例性5+2抽头滤波器3800A。如图38A所示,将两个外部权重(例如,16)乘以两个平均参考采样。顶平均参考采样D是顶参考行中的标记采样A与左参考列中的第一标记采样B的平均值。底平均参考采样E是顶参考行中的标记采样A与左参考列中的第二标记采样B的平均值。
图38B示出了根据本公开的一些实施例的示例性5+3抽头滤波器3800B。图38B所示的滤波器3800B和图38A所示的滤波器3800A可以执行相同的IPS。
图39示出了根据本公开的一些实施例的另一示例性5+2抽头滤波器3900。如图39所示,将两个外部权重(例如,16)乘以两个平均参考采样。每个平均采样是通过对图39所示的具有[1,2,1]的权重系数的三个参考采样的加权平均获得的。例如,顶平均采样G是通过对顶参考行中具有与三个参考采样A、B、C相对应的[1,2,1]的权重系数的三个参考采样A-C的加权平均获得的。底平均参考采样H是通过对左参考列中具有与三个参考采样D、E、F相对应的[1,2,1]的权重系数的三个参考采样D-F的加权平均获得的。
在一些实施例中,对于滤波处理使用根据帧内预测模式的对应位置处的参考采样。如果预测模式是非角度模式,则使用平均参考采样。如果预测模式是角度模式,则使用根据预测方向的参考采样。
图40示出了根据本公开的一些实施例的另一示例性5+2抽头滤波器4000。如图40所示,如果预测模式是角度模式(例如,模式18),则根据预测方向,将两个外部权重(例如,16)乘以两个参考采样(A和B)。
被用于边缘填充预测块的内部一维水平抽头的数量可以是任何正整数,例如3、5、7和9。使用的参考采样的数量可以是任何正整数,例如2和4。
在一些实施例中,滤波器不仅可以应用于亮度采样,还可以应用于色度采样。因此,使预测采样之间的预测边界平滑的好处可以施加于色度。在一些实施例中,用于色度采样的滤波器可以与用于亮度采样的滤波器相同。在一些实施例中,用于色度采样的滤波器可以比用于亮度采样的滤波器具有更少的抽头。在一些实施例中,用于色度采样的滤波器可以从用于亮度采样的滤波器中进行下采样。
传统上,通过预测采样的周围预测采样来对预测采样进行滤波。由于对采样进行预测的次序,因此引入了时延问题。在一些实施例中,在执行滤波时,可以使用参考采样而不是预测采样。图41是示出根据本公开的一些实施例的用参考采样进行示例性帧内预测滤波的示意图。如图41所示,采样X的右下方的采样4101还没有被预测。因此,在执行滤波时,采样4101被替换为参考采样。
在一些实施例中,用于替换预测采样的参考采样可以是左或顶参考采样。
在一些实施例中,用于替换预测采样的参考采样可以取决于帧内预测方向。
图42A至图42C示出了根据本公开的一些实施例的用参考采样在不同方向上进行示例性帧内预测滤波。如图42A至图42C所示,所使用的参考采样正交于帧内预测方向。作为另一示例,所使用的参考采样平行于帧内预测方向。
在一些实施例中,用于替换预测采样的参考采样可以取决于块形状。如果块是平且宽的,则使用顶参考采样。如果块是高且窄的,则使用左参考采样。
传统上,在对当前采样进行滤波时,滤波器中的每个权重都需要乘以对应采样,并且乘积之和需要除以滤波器中所有权重之和。本公开提出了扩大或减小滤波器的方法。
图43示出了根据本公开的一些实施例的用于改进IPS的示例性方法4300的流程图。可以理解的是,方法4300可以是图16的方法1600中步骤1608的一部分。在一些实施例中,方法4300还可以包括以下步骤4302-4306。
在步骤4302,由滤波器对当前采样执行滤波。
在步骤4304,通过将滤波器的每个权重乘以对应采样来获得乘积。
在步骤4306,通过将乘积之和除以第一数字来获得滤波预测值,其中,第一数字不同于所有权重之和。
在一些实施例中,乘积之和可以除以大于所有权重之和的数字。例如,如果所有权重之和为254,则相乘结果的和可以除以256。
在一些实施例中,乘积之和可以除以小于所有权重之和的数字。例如,如果所有权重之和为258,则相乘结果的和可以除以256。
在一些实施例中,通过IPS获得的滤波预测值可以进一步乘以其值小于1的减小因子。例如,减小因子可以等于254/256或252/256。
在一些实施例中,通过IPS获得的滤波预测值可以进一步乘以其值大于1的扩大因子。例如,扩大因子可以等于258/256或260/256。
在本公开中,提出了各种滤波器。这些滤波器之间的差异在于不同的滤波器抽头数量、不同的滤波器形状、不同的滤波器尺寸、不同的滤波器权重值以及不同的用于滤波器的参考采样。
在一些实施例中,两个或更多个滤波器可以用于IPS。将在编码器中选择具有最小率失真开销的滤波器。而且信令(一个或多个)附加标志以指示使用哪个滤波器。
在一些实施例中,两个或更多个滤波器可以用于IPS。而且可以根据预测模式来自适应地选择滤波器。
图44A示出了根据本公开的一些实施例的用于选择滤波器的示例性流程图。例如,预测模式被划分为几个不同的集合,对于每个集合的滤波器的选择如下:
在步骤4402A,确定帧内预测模式的编号。
在步骤4404A,响应于模式的编号小于3(例如,非角度模式,诸如平面、双线性或DC模式),使用如图38A所示的带有2个平均参考采样的一维水平5抽头滤波器。
在步骤4406A,响应于模式的编号∈[3,18]或[34,50](例如,模式18的左侧的角度模式,参考图11),使用如图35所示的利用来自顶参考行和左参考列的4个参考采样的一维水平5抽头滤波器。
在步骤4408A,响应于模式的编号∈[23,25]或[56,59](例如,围绕水平方向的角度模式,参考图11),使用如图37所示的利用来自左参考列的4个参考采样的一维水平3抽头滤波器。
在步骤4410A,响应于模式的编号∈[19,22]或[51,55]或[26,33]或[60,65]),使用如图40所示的根据预测模式利用2个参考采样的一维水平5抽头滤波器。
在一些实施例中,可以根据预测块的面积来自适应地选择滤波器。
图44B示出了根据本公开的一些实施例的用于选择滤波器的另一示例性流程图。例如,滤波器的选择如下:
在步骤4402B,确定预测块的面积。
在步骤4404B,响应于预测块的面积小于阈值(例如,1024),使用如图8所示的9+4抽头滤波器。
在步骤4406B,响应于其它预测块,使用如图35所示的利用来自顶参考行和左参考列的4个参考采样的一维水平5抽头滤波器。
作为另一个示例,如下地选择滤波器:
对于预测块的面积大于阈值(例如,1024)的情况,使用如图8所示的9+4抽头滤波器。
对于其它预测块,使用如图35所示的利用来自顶参考行和左参考列的4个参考采样的一维水平5抽头滤波器。
在一些实施例中,可以根据预测块的宽度来自适应地选择滤波器。
图44C示出了根据本公开的一些实施例的用于选择滤波器的另一示例性流程图。例如,如下地选择滤波器:
在步骤4402C,确定预测块的宽度。
在步骤4404C,响应于预测块的宽度小于阈值(例如,16),使用如图8所示的9+4抽头滤波器。
在步骤4406C,响应于其他预测块,使用如图35所示的利用来自顶参考行和左参考列的4个参考采样的一维水平5抽头滤波器。
作为又一个示例,如下地选择滤波器:
对于预测块的宽度大于阈值(例如,16)的情况,使用如图8所示的9+4抽头滤波器。
对于其它预测块,使用如图35所示的利用来自顶参考行和左参考列的4个参考采样的1D水平5抽头滤波器。
本公开的一个或多个实施例可以与其他一个或多个实施例组合。例如,W×H的预测块可以被垂直地划分为几个M×H的子块,并且一维水平滤波可以应用于每个预测采样。再如,W×H的预测块可以被垂直地划分为几个M×H的子块,并且5×3抽头滤波可以应用于每个预测采样。
InterPF方法通过对两个预测块Pred_inter和Pred_Q进行加权来生成最终预测块。Pred_inter是通过帧间预测推导获得的。像帧内预测那样,Pred_Q是由当前块的重建参考采样推导获得的。
在一些实施例中,IPS可以应用于InterPF。例如,可以对通过InterPF获得的最终预测块执行IPS。在一些实施例中,当InterPF编号等于0时,可以仅对Pred_Q(x,y)执行IPS。例如,前面提到的25抽头IPS滤波器可以用于对Pred_Q进行滤波。因此,改进了预测准确性。
AVS3中采用了用于色度帧内编码的两步跨分量预测模式(TSCPM),该TSCPM假设亮度与色度分量之间线性相关。当色度块利用跨分量预测模式时,要求两个步骤来得到色度预测块。
可以按以下步骤执行TSCPM:
1)从相邻重建采样得到线性模型。
2)将线性模型应用于最初重建亮度块以得到内部预测块。
3)对内部预测块进行下采样以生成最终色度预测块。
图45是示出根据本公开的一些实施例的TSCPM的示例性编码流程的示意图。在图45中,示出了色度预测块生成处理。共置的亮度重建块4501表示位于RL(x,y)的共置亮度块的(x,y)处的原始重建亮度采样。通过对每个亮度采样简单地应用带有参数(α,β)的线性模型,生成了时间色度预测块4502。在那之后,进一步对时间色度预测块4502进行下采样以生成最终色度预测块4503。
存在3个TSCPM模式;TSCPM_LT、TSCPM_L和TSCPM_T模式。这三个模式的区别在于选择不同的采样来构建线性模型参数。对于W×H的块,使用行[0,...,W-1]来表示顶相邻行的重建采样,并且使用列[0,...,H-1]来表示左相邻列的重建采样,选定采样可以如下:
对于TSCPM_LT模式:
●如果行[0,...,W-1]和列[0,...,H-1]两者都可用且W大于或等于H,则选择采样行[0]、行[W-W/H]、列[0]和列[H-1];
●如果行[0,...,W-1]和列[0,...,H-1]两者都可用且W小于H,则选择采样行[0]、行[W-1]、列[0]和列[H-H/W];
●如果仅行[0,...,W-1]可用,则选择采样行[0]、行[W/4]、行[2W/4]和行[3W/4];
●如果仅列[0,...,H-1]可用,则选择采样列[0]、列[H/4]、列[2H/4]和列[3H/4];
对于TSCPM_T模式:
●选择采样行[0]、行[W/4]、行[2W/4]和行[3W/4];
对于TSCPM_L模式:
●选择采样列[0]、列[H/4]、列[2H/4]和列[3H/4]。
根据亮度采样强度对4个选定采样进行整理,并将其分为2组。分别对两个较大的采样和两个较小的采样取平均值。利用2个平均点推导出跨分量预测模型。
基于等式(14)生成时间色度预测块。
P′c(x,y)=α×RL(x,y)+β 等式(14)
其中P'c(x,y)表示色度的时间预测采样,α和β是两个模型参数,并且RL(x,y)是重建亮度采样。
类似于通常的帧内预测处理,对P'c(x,y)应用剪切操作,以确保其在[0,1<<(BitDepth-1)]内。
基于等式(15),对于时间色度预测块的下采样处理引入六抽头滤波(例如,[121;121])。
Pc=(2×P′c(2x,2y)+2×P′c(2x,2y+1)+P′c(2x-1,2y)+P′c(2x+1,2y)+P′c(2x-1,2y+1)+P′c(2x+1,2y-1)+4)>>3 等式(15)
此外,对于位于最左列处的色度采样,替代地应用[11]下采样滤波器。
在AVS3中采用了多跨分量预测(PMC)方法,其中基于等式(16)和等式(17)由Y分量的重建值与Cb分量的重建值的线性模型推导出Cr分量的预测,
IPred=A·RL+B 等式(16)
FPredCr=IPred′-RCb 等式(17)
其中,RL表示Y的重建块,IPred是具有与亮度编码块相同尺寸的内部块,IPred'表示具有与色度编码块相同尺寸的从IPred下采样的块,RCb表示Cb的重建块,并且FPredCr表示Cr的预测块。等式(16)中的A和B是基于等式(18)和等式(19)从TSCPM的参数中推导出的PMC模型的两个参数,
A=α0+α1 等式(18)
B=β0+β1 等式(19)
其中,(α0,β0)和(α1,β1)是TSCPM中对于Cb和Cr推导出的两个线性模型参数集。PMC也具有三个模式:PMC_LT、PMC_T和PMC_L。在这三个模式中,当计算参数(α0,β0)和(α1,β1)时选择的采样位置可以分别与如上所述TSCPM_LT、TSCPM_T和TSCPM_L的三个模式相同。
图46A示出了根据本公开的一些实施例的用于TSCPM_T和PMC_T模式的用于推导出模型参数的示例性选定采样。图46B示出了根据本公开的一些实施例的用于TSCPM_L和PMC_L模式的用于推导出模型参数的示例性选定采样。对于如图46A和图46B所示的用于推导出模型参数的选定采样,可能存在一些问题。例如,当仅顶相邻行可用时,用于TSCPM_T和PMC_T模式的选定采样与TSCPM_LT和PMC-LT模式中的选定采样相同。当仅左相邻列可用时,用于TSCPM_L和PMC_L模式的选定采样与TSCPM_LT和PMC-LT模式中的选定采样相同。用于TSCPM_T和PMC_T模式的选定采样离左边界太近。用于TSCPM_L和PMC_L模式的选定采样离顶边界太近。因此,可以对于TSCPM_T、PMC_T、TSCPM_L和PMC_L模式(例如,这些模式仅使用一个参考边)细化选定采样。
在一些实施例中,在选择用于TSCPM_T、PMC_T、TSCPM_L和PMC_L模式(例如,这些模式仅使用一个参考边)的采样时,可以添加偏移。对于TSCPM_T和PMC_T模式,选定位置向右偏移oW。对于TSCPM_L和PMC_L模式,选定位置向底偏移oH。oW的值大于0且小于W/4。oH的值大于0且小于H/4。
图47示出了根据本公开的一些实施例的用于选择用于推导出模型参数的采样的示例性方法4700的流程图。方法4700可以由编码器(例如,通过图2A的处理200A或图2B的200B)来执行,或者由设备(例如,图4的设备400)的一个或多个软件或硬件组件来执行。例如,一个或多个处理器(例如,图4的处理器402)可以执行方法4700。在一些实施例中,方法4700可以由计算机程序产品来实现,该计算机程序产品实施在计算机可读介质中,并包括由计算机(例如图4的设备400)执行的计算机可执行指令,诸如程序代码。参考图47,方法4700可以包括以下步骤4702和4704。
在步骤4702,添加偏移值以选择用于仅应用一个参考边的跨分量预测模式的采样。例如,偏移值可以是W/8或H/8,其中,W和H是预测块的宽度和高度。
在步骤4704,用跨分量预测模式执行预测。
图48A和图48B示出了根据本公开的一些实施例的用于推导出模型参数的示例性选定采样。例如,oW被设置为等于W/8,并且oH被设置为等于H/8。如图48A所示,对于TSCPM_T和PMC_T模式,与图46A所示的选定采样相比,用于推导出模型参数的选定采样A-D被修改为向右偏移W/8。如图48B所示,对于TSCPM_L和PMC_L模式,与图46B所示的选定采样相比,用于推导出模型参数的选定采样A-D被修改为向下偏移H/8。
在一些实施例中,偏移可以仅用于TSCPM_L和TSCPM_T模式。在一些实施例中,偏移可以仅用于PMC_L和PMC_T模式。在一些实施例中,偏移可以用于TSCPM_L、TSCPM_T、PMC_L和PMC_T模式。
可以理解的是,本领域普通技术人员可以将所描述的实施例中的一些组合成一个实施例。
这些实施例可以进一步使用以下条款进行描述。
1.一种视频处理方法,包括:
将帧内预测块划分为一个或多个子块;
对于一个或多个子块执行边缘填充处理;以及
利用并行帧内预测平滑(IPS)处理对一个或多个子块进行滤波。
2.根据条款1所述的方法,其中,利用并行帧内预测平滑处理对一个或多个子块进行滤波包括:
利用一维(1D)滤波器对一个或多个子块进行滤波。
3.根据条款2所述的方法,还包括:
基于用于预测块的帧内预测模式确定是否利用一维滤波器进行滤波。
4.根据条款2或3的方法,还包括:
利用一维水平滤波器以及对应位置处来自顶参考行的一个或多个参考采样和/或来自左参考列的一个或多个参考采样对一个或多个子块进行滤波。
5.根据条款1至4中的任一个所述的方法,其中,使用两个或更多个滤波器用于并行帧内预测平滑处理。
6.根据条款5所述的方法,还包括:
由编码器基于最小码率失真开销来选择两个或多个滤波器;以及
信令一个或多个标志以指示该两个或多个滤波器。
7.根据条款5所述的方法,其中,两个或更多个滤波器是基于预测模式来选择的。
8.根据条款1至7中的任一个所述的方法,其中,预测块包括少于64个采样或多于4096个采样。
9.根据条款1至8中任一个所述的方法,还包括:
基于预测块的宽度和高度来确定是否执行并行帧内预测平滑处理。
10.根据条款1至9中任一个所述的方法,其中,对色度采样执行并行帧内预测平滑处理。
11.一种视频处理设备,该设备包括:
存储器,该存储器被配置为存储指令;以及
一个或多个处理器,该一个或多个处理器被配置为执行指令以使该设备执行:
将帧内预测块划分为一个或多个子块;
对于一个或多个子块执行边缘填充处理;以及
利用并行帧内预测平滑(IPS)处理对一个或多个子块进行滤波。
12.根据条款11所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
利用一维(1D)滤波器对一个或多个子块进行滤波。
13.根据条款12所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
基于用于预测块的帧内预测模式来确定是否用一维滤波器进行滤波。
14.根据条款12或13所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
利用一维水平滤波器以及对应位置处来自顶参考行的一个或多个参考采样和/或来自左参考列的一个或多个参考采样对一个或多个子块进行滤波。
15.根据条款11至14中的任一个所述的设备,其中,使用两个或更多个滤波器用于并行帧内预测平滑处理。
16.根据条款15所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
由编码器基于最小码率失真开销来选择两个或多个滤波器;以及
信令一个或多个标志以指示该两个或多个滤波器。
17.根据条款15所述的设备,其中,两个或更多个滤波器是基于预测模式来选择的。
18.根据条款11至17中的任一个所述的设备,其中,预测块包括少于64个采样或多于4096个采样。
19.根据条款11至18中的任一个所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
基于预测块的宽度和高度来确定是否执行并行帧内预测平滑处理。
20.根据条款11至19中的任一个所述的设备,其中,一个或多个处理器还被配置为执行指令以使该设备执行:
对色度采样执行并行帧内预测平滑处理。
21.一种非瞬时性计算机可读介质,该非瞬时性计算机可读介质存储有指令集,该指令集可由设备的一个或多个处理器执行以使该设备实施视频处理方法,该方法包括:
将帧内预测块划分为一个或多个子块;
对于一个或多个子块执行边缘填充处理;以及
利用并行帧内预测平滑(IPS)处理对一个或多个子块进行滤波。
22.根据条款21所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使设备还执行:
利用一维(1D)滤波器对一个或多个子块进行滤波。
23.根据条款22所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使设备还执行:
基于用于预测块的帧内预测模式来确定是否用一维滤波器进行滤波。
24.根据条款22或23所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使设备还执行:
利用一维水平滤波器以及对应位置处来自顶参考行的一个或多个参考采样和/或来自左参考列的一个或多个参考采样对一个或多个子块进行滤波。
25.根据条款21至24中的任一个所述的非瞬时性计算机可读介质,其中,使用两个或更多个滤波器用于并行帧内预测平滑处理。
26.根据条款25所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使设备还执行:
由编码器基于最小码率失真开销来选择两个或多个滤波器;以及
信令一个或多个标志以指示两个或多个滤波器。
27.根据条款25所述的非瞬时性计算机可读介质,其中,两个或更多个滤波器是基于预测模式来选择的。
28.根据条款21至27中的任一个所述的非瞬时性计算机可读介质,其中,预测块包括少于64个采样或多于4096个采样。
29.根据条款21至28中的任一个所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使该设备还执行:
基于预测块的宽度和高度来确定是否执行并行帧内预测平滑处理。
30.根据条款21至29中的任一个所述的非瞬时性计算机可读介质,其中,指令集可由设备的一个或多个处理器执行以使该设备还执行:
对色度采样执行并行帧内预测平滑处理。
在一些实施例中,还提供了包括指令的非临时性计算机可读存储介质,并且这些指令可由设备(诸如所公开的编码器和解码器)执行以用于执行上述方法。非瞬时性介质的常见形式包括例如软盘、柔性磁盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM或任何其他闪速存储器、NVRAM、高速缓存、寄存器、任何其他存储器芯片或盒以及相同的联网版本。设备可以包括一个或多个处理器(CPU)、输入/输出接口、网络接口和/或存储器。
应当注意到,本文中的关系术语,诸如“第一”和“第二”,仅用于区分实体或操作与另一实体或操作,并不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包括”、“具有”、“含有”和“包含”以及其他类似形式意图在含义上是等同的,并且是开放式的,原因在于这些词中的任何一个后面的一个项目或多个项目并不意味着是此项目或此类项目的详尽列表,也不意味着仅限于所列出的一个项目或多个项目。
如本文所使用的,除非另有明确说明,术语“或”涵盖所有可能的组合,除非不可行。例如,如果声明数据库可以包括A或B,那么,除非另有明确说明或不可行,否则数据库可以包括A,或B,或A和B。作为第二示例,如果声明数据库可以包括A、B或C,那么,除非另有明确说明或不可行,否则数据库可以包括A、或B、或C、或A和B、或A和C、或B和C、或A和B和C。
可以理解的是,上述实施例可以由硬件、或软件(程序代码)、或硬件和软件的组合来实现。如果由软件实现,它可以被存储在上述计算机可读介质中。软件在由处理器执行时可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以由硬件、或软件、或硬件和软件的组合来实现。本领域普通技术人员还将理解,上述模块/单元中的多个模块/单元可以合并作为一个模块/单元,并且上述模块/单元中的每一个可以进一步被划分为多个子模块/子单元。
在前面的说明书中,已经参考诸多具体细节描述了实施例,这些具体细节可以因实现方式变化。可以对所描述的实施例进行某些改编和修改。考虑到本文公开的本发明的说明书和实践,其他实施例对于本领域技术人员来说是显而易见的。预期说明书和示例仅被认为是示例性的,本发明的真实范围和精神由下面的权利要求来指示。预期图中所示的步骤顺序仅用于说明性目的,并且不意图被限于任何特定的步骤顺序。因此,本领域技术人员可以理解,在实现相同方法时,这些步骤可以以不同的次序执行。
在图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定术语,但是它们仅以一般性和描述性意义使用,并且不是出于限制的目的。