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

帧内预测方法及设备

文献发布时间:2023-06-19 11:14:36


帧内预测方法及设备

相关申请案交叉申请

本申请要求于2018年11月21日提交的第62/770,736号、发明名称为“帧内预测方法及设备(Intra Prediction Method and Device)”美国临时专利申请的优先权,其公开内容通过引用并入本文中。

技术领域

本发明实施例大体上涉及视频译码领域,尤其涉及帧内预测方法和设备领域。

背景技术

即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。

发明内容

本发明的实施例提供了用于对图像进行编码和解码的帧内预测装置和方法。本发明的实施例不应解释为限制本文阐述的示例。

本发明第一方面提供的方法包括:获取当前块的帧内预测模式;获得当前块的分量的参考样本的可用性;用可用的参考样本替换不可用的参考样本;根据所述帧内预测模式和所述替换后的参考样本获得当前块的预测;根据预测重建当前块。在一个实施例中,该分量包括Y分量、Cb分量或Cr分量。在另一个实施例中,该分量包括亮度分量或色度分量。

由于本发明的第一方面获得每个分量中的参考样本的可用性,因此可以更准确地提供可用信息。

根据第一方面的一种实现方式,重建块中的所有Cb样本被标记为可用;或者,重建块中的所有Cr样本被标记为可用。

由于第一方面的这种实现方式为每个分量中的每个样本存储可用信息,因此可以在帧内预测过程中更准确地提供可用信息。

根据本发明的第二方面,解码器包括处理电路,用于执行上述方法的步骤。

根据本发明的第三方面,编码器包括处理电路,用于执行上述方法的步骤。

根据本发明的第四方面,计算机程序产品包括程序代码,当处理器执行程序代码时,执行上述方法。

根据本发明的第五方面,用于帧内预测的解码器包括一个或多个处理单元和非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到一个或多个处理单元并存储程序指令,一个或多个处理单元执行程序指令以执行上述方法。

根据本发明的第六方面,用于帧内预测的编码器包括一个或多个处理单元和非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到一个或多个处理单元并存储程序指令,一个或多个处理单元执行程序指令以执行上述方法。

本发明实施例还提供了一种用于执行上述方法的解码设备和编码设备。

为了清楚起见,上述任一实施例可以与上述任一其它实施例组合以创建本发明范围内的新实施例。

从结合附图和权利要求书的以下详细描述中,将更清楚地理解这些和其它特征。

附图说明

为了更完整地理解本发明,参考以下结合附图和详细描述而进行的简要描述,其中,相同的附图标记表示相同的部分。

图1A为可以实现本发明实施例的示例译码系统的框图。

图1B为可以实现本发明实施例的另一个示例译码系统的框图。

图2为可以实现本发明实施例的示例视频编码器的框图。

图3为可以实现本发明实施例的视频解码器的示例的框图。

图4为本发明示例性实施例提供的网络设备的示意图。

图5为本发明示例性实施例提供的可用作图1A的源设备和目标设备中的一者或两者的装置的简化框图。

图6为可以用于本发明的描述的H.265/HEVC的帧内预测算法描述。

图7为本发明示例性实施例提供的参考样本的示意图。

图8为本发明示例性实施例提供的可用的和不可用的参考样本的示意图。

图9为本发明示例性实施例提供的获得重建信号的简化流程图。

图10为本发明示例性实施例提供的获得预测信号的简化流程图。

图11为本发明示例性实施例提供的当前块中的样本被标记为可用的示意图。

图12为本发明示例性实施例提供的在单元N×N中当前块中的样本被标记为可用的示意图。

图13为本发明示例性实施例提供的当前块的右边界和底边界处的样本被标记为可用的示意图。

图14为本发明示例性实施例提供的在单元N中当前块的右边界和底边界处的样本被标记为可用的示意图。

图15为本发明示例性实施例提供的在单元N×N中当前块的右边界和底边界处的样本被标记为可用的示意图。

图16为本发明示例性实施例提供的色度分量的样本的标记方法的示意图。

图17为实现内容分发服务的内容供应系统3100的示例性结构的框图。

图18为终端设备的示例的结构的框图。

具体实施方式

首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用多种技术来实现,无论该技术是当前已知的技术还是现有的技术。本发明不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明和描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效部分的完整范围内修改。

图1A为可以使用双向预测技术的示例译码系统10的示意性框图。如图1A所示,译码系统10包括源设备12,源设备12提供经编码的视频数据,目标设备14对该经编码的视频数据进行解码。特别地,源设备12可以通过计算机可读介质16向目标设备14提供视频数据。源设备12和目标设备14可以包括多种设备中的任一种,包括台式计算机、笔记本电脑(即膝上型计算机)、平板电脑、机顶盒、手持电话(例如智能电话、智能平板)、电视、摄像机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备12和目标设备14可以用于无线通信。

目标设备14可以通过计算机可读介质16接收待解码的经编码的视频数据。计算机可读介质16可以包括能够将编码视频数据从源设备12移动到目标设备14的任何类型的介质或设备。在一个示例中,计算机可读介质16可以包括通信介质,以使源设备12能够实时地将经编码的视频数据直接发送到目标设备14。经编码的视频数据可以根据通信标准(例如无线通信协议)进行调制,并发送到目标设备14。通信介质可以包括任何无线或有线通信介质,例如射频(radio frequency,RF)频谱或一个或多个物理传输线路。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网或全球网络(如因特网)。通信介质可以包括路由器、交换机、基站或可能有助于促进从源设备12到目标设备14的通信的任何其它设备。

在一些示例中,经编码的数据可以从输出接口22输出到存储设备。类似地,经编码的数据可以通过输入接口从存储设备访问。存储设备可以包括各种分布式或本地访问的数据存储介质中的任一种,例如硬盘驱动器、蓝光光盘、数字视频磁盘(digital video disk,DVD)、压缩光盘只读存储器(compact disc read-only memory,CD-ROM)、闪存、易失性或非易失性存储器,或用于存储经编码的视频数据的任何其它合适的数字存储介质。在另一个示例中,存储设备可以对应文件服务器或者可以对应可以存储源设备12生成的经编码的视频的其它中间存储设备。目标设备14可以通过流式或下载从存储设备访问存储的视频数据。文件服务器可以是能够存储经编码的视频数据并将该经编码的视频数据发送到目标设备14的任何类型的服务器。示例性文件服务器包括Web服务器(例如,针对网站)、文件传输协议(file transfer protocol,FTP)服务器、网络附加存储(network attached storage,NAS)设备或本地磁盘驱动器。目标设备14可以通过任何标准数据连接(包括互联网连接)访问经编码的视频数据。这可以包括适合于访问存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(digital subscriber line,DSL)、电缆调制解调器等)或两者的组合。来自存储设备的经编码的视频数据的传输可以是流式传输、下载传输或其组合。

本发明的技术不一定局限于无线应用或设置。这些技术可以应用于视频译码,以支持多种多媒体应用中的任一种,例如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(如基于HTTP的动态自适应流媒体(dynamic adaptive streaming overHTTP,DASH))、编码到数据存储介质中的数字视频、对存储在数据存储介质中的数字视频进行解码或其它应用。在一些示例中,译码系统10可以用于支持单向或双向视频传输以支持例如视频流、视频播放、视频广播和/或视频电话等应用。

在图1A的示例中,源设备12包括视频源18、视频编码器20和输出接口22。目标设备14包括输入接口28、视频解码器30和显示设备32。根据本发明,源设备12的视频编码器200和/或目标设备14的视频解码器300可以应用双向预测技术。在其它示例中,源设备和目标设备可以包括其它组件或装置。例如,源设备12可以从外部视频源(例如外部摄像机)接收视频数据。同样地,目标设备14可以与外部显示设备连接,而不是包括集成显示设备。

图1A所示的译码系统10仅仅是一个示例。双向预测技术可以由任何数字视频编码和/或解码设备执行。尽管本发明的技术通常由视频译码设备执行,但这些技术也可以由视频编码器/解码器执行,通常称为“编解码器(CODEC)”。此外,本发明的技术也可以由视频预处理器执行。视频编码器和/或解码器可以是图形处理单元(graphics processing unit,GPU)或类似的设备。

源设备12和目标设备14仅仅是这种译码设备的示例,其中源设备12生成经译码的视频数据并将其发送到目标设备14。在一些示例中,源设备12和目标设备14可以以基本对称的方式操作,使得源设备12和目标设备14中的每一个都包括视频编码分量和解码分量。因此,译码系统10可以支持视频设备12、14之间的单向或双向视频传输,例如用于视频流、视频播放、视频广播或视频电话。

源设备12的视频源18可以包括视频捕获设备(例如视频摄像机)、包括之前捕获的视频的视频档案,和/或从视频内容提供者接收视频的视频馈送接口。作为另一替代方案,视频源18可以生成基于计算机图形的数据作为源视频,或者生成实时视频、存档视频和计算机生成的视频的组合。

在一些情况下,当视频源18为视频摄像机时,源设备12和目标设备14可以形成摄像头电话或视频电话。但是,如上所述,本发明中描述的技术一般可以适用于视频译码,并且可以应用于无线和/或有线应用。在每种情况下,捕获的、预捕获的或计算机生成的视频可以由视频编码器20编码。然后,经编码的视频信息可以由输出接口22输出到计算机可读介质16中。

计算机可读介质16可以包括瞬态介质,例如无线广播或有线网络传输,或存储介质(即非瞬态存储介质),例如硬盘、闪存驱动器、光盘、数字视频光盘、蓝光光盘,或其它计算机可读介质。在一些示例中,网络服务器(未示出)可以从源设备12接收经编码的视频数据,并且例如通过网络传输将经编码的视频数据提供给目标设备14。类似地,介质生产设施(例如光盘冲压设施)的计算设备可以从源设备12接收经编码的视频数据,并产生包括经编码的视频数据的光盘。因此,在各种示例中,计算机可读介质16可以理解为包括各种形式的一个或多个计算机可读介质。

目标设备14的输入接口28从计算机可读介质16接收信息。计算机可读介质16的信息可以包括由视频编码器20定义的语法信息,视频解码器30也使用该语法信息,该语法信息包括描述块和其它译码单元(例如,图像组(group of image,GOP)的特征和/或处理的语法元素。显示设备32向用户显示经解码的视频数据,并且可以包括多种显示设备中的任一种,例如阴极射线管(cathode ray tube,CRT)、液晶显示器(liquid crystal display,LCD)、等离子显示器、有机发光二极管(organic light emitting diode,OLED)显示器,或者其它类型的显示设备。

视频编码器200和视频解码器300可以根据视频译码标准(例如当前正在开发的高效视频译码(High Efficiency Video Coding,HEVC)标准)操作,并且可以符合HEVC测试模型(HEVC Test Model,HM)。或者,视频编码器200和视频解码器300可以根据其它专有或行业标准操作,例如国际电信联盟电信标准化部门(International TelecommunicationsUnion Telecommunication Standardization Sector,ITU-T)H.264标准,或者称为活动图像专家组(Motion Picture Expert Group,MPEG)-4,第10部分,高级视频译码(AdvancedVideo Coding,AVC)、H.265/HEVC或此类标准的扩展。但是,本发明的技术不限于任何特定的译码标准。视频译码标准的其它示例包括MPEG-2和ITU-T H.263。尽管未在图1A中示出,但在一些方面,视频编码器200和视频解码器300可以分别与音频编码器和解码器集成,并且可以包括适当的复用解复用器(multiplexer-demultiplexer,MUX-DEMUX)单元或其它硬件和软件,以对公用数据流或单独数据流中的音频和视频进行编码。如果适用,MUX-DEMUX单元可以符合ITU H.223复用器协议,或用户数据报协议(user datagram protocol,UDP)等其它协议。

视频编码器200和视频解码器300可以实现为各种合适的编码器电路中的任一种,例如一个或多个微处理器数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当这些技术部分地在软件中实现时,则设备可以将软件指令存储在合适的非瞬时性计算机可读介质中,并且通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。视频编码器200和视频解码器300中的每一个可以包括在一个或多个编码器或解码器中,其中任何一个编码器或解码器可以集成为相应设备中的组合编码器/解码器(编解码器)的一部分。视频编码器200和/或视频解码器300等设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。

图1B为一个示例性实施例提供的包括图2的编码器200和/或图3的解码器300的示例视频译码系统40的示意性框图。系统40可以实现本发明的技术,例如帧间预测中的融合估计。在所示出的实现方式中,视频译码系统40可以包括成像设备41、视频编码器20、视频解码器300(和/或处理单元46的逻辑电路47实现的视频译码器)、天线42、一个或多个处理器43、一个或多个存储器44,和/或显示设备45。

如图所示,成像设备41、天线42、处理单元46、逻辑电路47、视频编码器20、视频解码器30、处理器43、存储器44、和/或显示设备45可以彼此通信。如所讨论的那样,尽管视频编码器20和视频解码器30两者都示出,但在各种实际场景中,视频译码系统40可以仅包括视频编码器20或仅包括视频解码器30。

如图所示,在一些示例中,视频译码系统40可以包括天线42。例如,天线42可以用于发送或接收视频数据的编码码流。此外,在一些示例中,视频译码系统40可以包括显示设备45。显示设备45可以用于呈现视频数据。如图所示,在一些示例中,逻辑电路47可以通过处理单元46实现。处理单元46可以包括专用集成电路(application-specific integratedcircuit,ASIC)逻辑、图形处理器、通用处理器等。视频译码系统40还可包括可选处理器43,可选处理器43可以类似地包括专用集成电路(application-specific integratedcircuit,ASIC)逻辑、图形处理器、通用处理器等。在一些示例中,逻辑电路54可以通过硬件、视频译码专用硬件等实现,并且处理器43可以实现通用软件、操作系统等。另外,存储器44可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(staticrandom access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)等)或非易失性存储器(例如,闪存等)等。在非限制性示例中,存储器44可以通过高速缓存存储器实现。在一些示例中,逻辑电路47可以访问存储器44(例如用于实现图像缓冲器)。在其它示例中,逻辑电路47和/或处理单元46可以包括用于实现图像缓冲器等的存储器(例如,高速缓存等)。

在一些示例中,通过逻辑电路实现的视频编码器200可以包括图像缓冲器(例如通过处理单元46或存储器44实现)和图形处理单元(例如通过处理单元46实现)。图形处理单元可以通信地耦合到图像缓冲器。图形处理单元可以包括通过逻辑电路47实现的视频编码器200,以实现结合图2所讨论的各种模块和/或本文所描述的任何其它编码器系统或子系统。逻辑电路可以用于执行本文所描述的各种操作。

视频解码器300可以以与通过逻辑电路47实现的类似方式实现,以实现结合图3的解码器300所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。在一些示例中,可以通过逻辑电路实现的视频解码器300可以包括图像缓冲器(例如通过处理单元46或存储器44实现)和图形处理单元(例如通过处理单元46实现)。图形处理单元可以通信地耦合到图像缓冲器。图形处理单元可以包括通过逻辑电路47实现的视频解码器300,以实现结合图3所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。

在一些示例中,视频译码系统40的天线42可以用于接收视频数据的编码码流。如所讨论的那样,编码码流可以包括与本文所讨论的视频帧编码相关的数据、指示符、索引值、模式选择数据等,例如与译码分割相关的数据(例如,变换系数或量化变换系数,可选的指示符(如所讨论的)和/或定义译码分割的数据。视频译码系统40还可以包括耦合到天线42的视频解码器300,视频解码器300用于对编码码流进行解码。显示设备45用于呈现视频帧。

图2为可以实现本申请技术的视频编码器200的示例的框图。视频编码器200可以对视频条带(slice)内的视频块进行帧内和帧间译码。帧内译码通过空间预测来减少或消除给定视频帧或图像中的视频的空间冗余。帧间译码通过时间预测来减少或消除视频序列的相邻帧或图像中的视频的时间冗余。帧内模式(I模式)可以指几种基于空间的译码模式中的任一种。帧间模式(例如单向预测(P模式)或双向预测(B模式))可以指几种基于时间的译码模式中的任一种。

图2为用于实现本发明的技术的示例性视频编码器200的示意性/概念性框图。在图2的示例中,视频编码器200包括残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波单元220、解码图像缓冲器(decoded picture buffer,DPB)230、预测处理单元260和熵编码单元270。预测处理单元260可以包括帧间估计242、帧间预测单元244、帧内估计单元252、帧内预测单元254和模式选择单元262。帧间预测单元244还可以包括运动补偿单元(未示出)。根据混合视频编解码器,图2所示的视频编码器200也可以称为混合视频编码器或视频编码器。

例如,残差计算单元204、变换处理单元206、量化单元208、预测处理单元260和熵编码单元270构成编码器200的前向信号路径,而例如反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码器缓冲器(decoded picture buffer,DPB)230和预测处理单元260构成编码器的反向信号路径,其中编码器的反向信号路径对应解码器(参见图3的解码器300)的信号路径。

例如,编码器200用于通过输入端202接收图像201或图像201的块203,图像201是例如是构成视频或视频序列的图像序列的图像。图像块203还可以称为当前图像块或待译码图像块,图像201称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。

分割

编码器200的实施例可以包括分割单元(图2中未示出),分割单元用于将图像201分割成多个块(例如块203之类的块),通常分割成多个非重叠块。分割单元可以用于对视频序列中的所有图像和定义块大小的对应的栅格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像分割成对应的块。

在HEVC和其它视频译码规范中,为了生成图像的编码表示,可以生成一组译码树单元(coding tree unit,CTU)。每个CTU都可以包括亮度样本的译码树块、色度样本的两个对应的译码树块以及用于对译码树块的样本进行译码的语法结构。在单色图像或具有三个独立颜色平面的图像中,CTU可以包括单个译码树块和用于对译码树块的样本进行译码的语法结构。译码树块可以是N×N的样本块。CTU也可以称为树块或最大译码单元(largestcoding unit,LCU)。HEVC的CTU可以与H.264/AVC等其它标准的宏块大体类似。但是,CTU不一定局限于特定大小,并且可以包括一个或多个译码单元(coding unit,CU)。条带可以包括以光栅扫描顺序连续排序的整数个CTU。

在HEVC中,使用表示为译码树的四叉树结构将CTU分割成CU,以适应不同的局部特征。在CU级别上决定是通过帧间(时间)预测还是通过帧内(空间)预测对图像区域进行译码。CU可以包括图像的亮度样本的译码块、色度样本的两个对应的译码块,以及用于对译码块的样本进行译码的语法结构,该图像具有亮度样本阵列、Cb样本阵列和Cr样本阵列。在单色图像或具有三个独立颜色平面的图像中,CU可以包括单个译码块和用于对译码块的样本进行译码的语法结构。译码块为N×N的样本块。在一些示例中,CU的大小可以与CTU相同。用一种译码模式对每个CU进行译码,该译码模式可以是例如帧内译码模式或帧间译码模式。也可以使用其它译码模式。编码器200接收视频数据。编码器200可以对视频数据的图像的条带中的每个CTU进行编码。作为对CTU进行编码的一部分,编码器200的预测处理单元260或其它处理单元(包括但不限于图2中所示的编码器200的单元)可以执行分割以将CTU的CTB分割成更小的块203。较小的块可以是CU的译码块。

码流中的语法数据也可以定义CTU的大小。一个条带包括按译码顺序排列的多个连续的CTU。可以将视频帧(frame)或图像(image/picture)分割成一个或多个条带。如前所述,可以根据四叉树将每个树块分割成译码单元(coding unit,CU)。通常,四叉树数据结构包括每个CU一个节点,根节点对应于树块(例如,CTU)。如果将一个CU分割成四个子CU,则与该CU对应的节点包括4个子节点,每个子节点对应一个子CU。四叉树结构的多个节点包括叶节点和非叶节点。叶节点在树结构中没有子节点(即,不进一步划分叶节点)。非叶节点包括树结构的根节点。对于多个节点中的每个相应的非根节点,相应的非根节点对应CU的子CU,CU的子CU对应相应的非根节点的树结构中的父节点。每个相应的非叶节点在树结构中具有一个或多个子节点。

四叉树数据结构的每个节点可以为对应的CU提供语法数据。例如,四叉树中的节点可以包括划分标志,表示是否已将该节点对应的CU划分为子CU。CU的语法元素可以递归定义,并且可以取决于是否已将CU划分为子CU。如果没有进一步对CU进行划分,则该CU称为叶CU。如果进一步对CU的块进行划分,则该CU通常可以称为非叶CU。每一级分割都是四叉树划分,划分为四个子CU。黑色CU是叶节点(即,未进一步划分的块)的示例。

CU的作用与H.264标准中的宏块类似,只是CU没有大小区分。例如,可以将树块划分为四个子节点(也称为子CU),每个子节点又可以为父节点并划分为另外四个子节点。最终的未划分的子节点称为四叉树的叶节点,包括译码节点,也称为叶CU。与译码码流相关的语法数据可以定义为对树块进行划分的最大次数,称为最大CU深度,还可以定义译码节点的最小大小。相应地,码流也可以定义最小译码单元(smallest coding unit,SCU)。术语“块”指HEVC上下文中的CU、PU或TU中的任一种,或在其它标准上下文中的类似数据结构(例如,H.264/AVC中的宏块及其子块)。

在HEVC中,每个CU还可以根据PU划分类型划分为一个、两个或四个PU。在一个PU内,进行相同的预测过程,并且以PU为单位将相关信息发送到解码器。在通过预测过程获得残差块后,根据PU划分类型,可以根据与用于CU的译码树类似的其它四叉树结构将CU分割为变换单元(transform units,TU)。HEVC结构的一个关键特征是它具有CU、PU和TU等多个分割概念。可以将PU分割为非正方形的形状。与CU相关的语法数据还可以描述,例如,将CU分割为一个或多个PU。TU的形状可以是正方形或非正方形(例如,矩形),与CU相关的语法数据可以描述,例如,根据四叉树将CU分割为一个或多个TU。CU在使用跳过(skip)模式、直接模式、帧内预测模式或帧间预测模式编码的情况下,分割模式可能不同。

VVC(通用视频译码,Versatile Video Coding)中不考虑PU和TU概念的不同,支持多种CU分割形状。CU的大小与译码节点的大小对应,可以是正方形或非正方形(例如,矩形)。CU的大小可以从4×4个像素(或8×8个像素)到树块的大小,最大为128×128个像素或更大(例如256×256个像素)。

在编码器200生成CU的预测块(例如亮度、Cb和Cr预测块)之后,编码器200可以生成CU的残差块。例如,编码器100可以生成CU的亮度残差块。CU的亮度残差块中的每个样本表示CU的预测亮度块中的亮度样本与CU的原始亮度译码块中的相应样本之间的差异。此外,编码器200可以生成CU的Cb残差块。CU的Cb残差块中的每个样本可以表示CU的预测性Cb块中的Cb样本与CU的原始Cb译码块中的对应样本之间的差异。编码器200也可以生成CU的Cr残差块。CU的Cr残差块中的每个样本可以表示CU的预测Cr块中的Cr样本与CU的原始Cr译码块中的对应样本之间的差异。

在一些示例中,编码器200不对变换块进行变换。在这样的示例中,编码器200可以以与变换系数相同的方式处理残差样本值。因此,在编码器200不进行变换的示例中,以下关于变换系数和系数块的讨论可以适用于残差样本的变换块。

在生成系数块(例如,亮度系数块、Cb系数块或Cr系数块)之后,编码器200可以对系数块进行量化以尽可能地减少用于表示系数块的数据量,从而进行进一步压缩。量化通常是指将一系列值简化为单个值的过程。在编码器200对系数块进行量化之后,编码器200可以对表示量化变换系数的语法元素进行熵编码。例如,编码器200可以对表示量化变换系数的语法元素执行上下文自适应二进制算术译码(Context-Adaptive Binary ArithmeticCoding)或其它熵译码技术。

编码器200可以输出经编码的图像数据271的码流,该码流包括一列比特,这一列比特形成经译码的图像和相关数据的表示。因此,码流包括视频数据的编码表示。

在J.An等人的《用于下一代视频译码的块分割结构》(国际电信联盟,COM16-C966,2015年9月(下文简称“VCEG提议COM16-C966”))中,提出了四叉树二叉树(quad-tree-binary-tree,QTBT)分割技术,用于未来的HEVC之外的视频译码标准。仿真结果表明,所提出的QTBT结构比HEVC中使用的四叉树结构更有效。在HEVC中,为了减少运动补偿的内存访问,限制了对小块的帧间预测,因此,不支持对4×8的块和8×4的块进行双向预测,以及不支持对4×4的块进行帧间预测。在JEM的QTBT中,取消了这些限制。

在QTBT中,CU可以是正方形和矩形。例如,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。可以用二叉树结构对四叉树叶节点进行进一步分割。二叉树分割有两种分割类型:对称水平分割和对称垂直分割。每种情况都是水平或垂直地将节点从中间向下进行分割的。二叉树叶节点称为译码单元(coding unit,CU),该分段用于预测和变换处理,无需进一步分割。即,CU、PU和TU在QTBT译码块结构中具有相同的块大小。CU可以由不同颜色分量的译码块(code block,CB)组成,例如,在4:2:0色度格式的P和B条带的情况下,一个CU包括一个亮度CB和两个色度CB;或者CU可以由单个分量的CB组成,例如,一个CU仅包括一个亮度CB或者在I条带的情况下仅包括两个色度CB。

为QTBT分割方案定义如下参数:

–CTU大小:四叉树的根节点大小,与HEVC中的概念相同。

–MinQTSize:允许的最小四叉树叶节点大小。

–MaxBTSize:允许的最大二叉树根节点大小。

–MaxBTDPepth:允许的最大二叉树深度。

–MinBTSize:允许的最小二叉树叶节点大小。

在QTBT分割结构的一个示例中,将CTU大小设置为128个×128个亮度样本,其中,具有两个相应的64×64个色度样本的块,将MinQTSize设置为16×16,将MaxBTSize设置为64×64,将MinBTSize(宽度和高度)设置为4×4,将MaxBTDepth设置为4。四叉树分割首先应用于CTU,以生成四叉树叶节点。四叉树叶节点的大小可以为16×16(即,MinQTSize)到128×128(即,CTU大小)。当四叉树节点的大小等于MinQTSize时,不再考虑进一步的四叉树。如果叶四叉树节点为128×128,则其大小超过了MaxBTSize(即64×64),因此不通过二叉树进行进一步划分。否则,可以通过二叉树对叶四叉树节点进一步分割。因此,四叉树叶节点也是二叉树的根节点,其二叉树深度为0。当二叉树深度达到MaxBTDepth(即,4)时,不再考虑进一步划分。当二叉树节点的宽度等于MinBTSize(即,4)时,不再考虑进一步的水平划分。同理,当二叉树节点的高度等于MinBTSize时,不再考虑进一步的垂直划分。对二叉树的叶节点进行预测和变换处理,无需进一步分割。在JEM中,最大CTU大小为256×256个亮度样本。可以对二叉树(binary-tree,CU)的叶节点进行进一步处理(例如,通过执行预测过程和变换过程),无需进一步分割。

此外,在QTBT方案中,亮度和色度具有单独的QTBT结构。目前,对于P和B条带,一个CTU中的亮度和色度CTB可以共用同一QTBT结构。但是,对于I条带,通过QTBT结构将亮度CTB分割为CU,并且可以通过其它QTBT结构将色度CTB分割为色度CU。即,I条带中的CU由亮度分量的译码块或两个色度分量的译码块组成,而P条带或B条带中的CU由所有三个颜色分量的译码块组成。

编码器200针对QTBT结构应用率失真优化(rate-distortion optimization,RDO)过程以确定块分割。

此外,在第20170208336号美国专利申请公开中提出了名为多类型树(multi-type-tree,MTT)的块分割结构,以替换基于QT、BT和/或QTBT的CU结构。MTT分割结构仍为递归树结构。在MTT中,使用多个不同的分割结构(例如,三个或更多个)。例如,根据MTT技术,在树结构的每个深度处,可以对树结构的每个相应的非叶节点使用三个或更多个不同的分割结构。树结构中节点的深度可以指从树结构的节点到根的路径的长度(例如,划分次数)。分割结构通常可以指一个块可以分为多少个不同的块。分割结构可以是将一个块分为四个块的四叉树分割结构、将一个块分为两个块的二叉树分割结构、或者将一个块分为三个块的三叉树分割结构,此外,三叉树分割结构可以不通过中心对块进行分割。分割结构可以有多个不同的分割类型。分割类型还可以定义对块进行分割的方式,包括对称或非对称分割、均匀或非均匀分割和/或水平或垂直分割。

在MTT中,在树结构的每个深度处,编码器200可以用于对子树进行进一步划分,所述进一步划分使用三个以上的分割结构中的一个分割结构的特定分割类型。例如,编码器100可以用于根据QT、BT、三叉树(triple-tree,TT)和其它分割结构确定特定分割类型。在一个示例中,QT分割结构可以包括正方形四叉树或矩形四叉树分割类型。编码器200可以使用正方形四叉树分割来分割正方形块,方法是将该块沿中心水平和垂直地分为四个大小相等的正方形块。同样地,编码器200可以使用矩形四叉树分割来分割矩形(例如,非正方形)块,方法是将该矩形块沿中心水平和垂直地分为四个大小相等的矩形块。

BT分割结构可以包括水平对称二叉树、垂直对称二叉树、水平非对称二叉树和垂直非对称二叉树中的至少一种。对于水平对称二叉树分割类型,编码器200可以用于将块沿中心水平地划分为大小相同的两个对称块。对于垂直对称二叉树分割类型,编码器200可以用于将块沿中心垂直地划分为大小相同的两个对称块。对于水平非对称二叉树分割类型,编码器200可以用于水平地将块划分为大小不同的两个块。例如,一个块的大小可以是父块的1/4,另一个块的大小可以是父块的3/4,类似于PART_2N×nU或PART_2N×nD分割类型。对于垂直非对称二叉树分割类型,编码器200可以用于垂直地将块划分为大小不同的两个块。例如,一个块的大小可以是父块的1/4,另一个块的大小可以是父块的3/4,类似于PART_nL×2N或PART_nR×2N分割类型。在其它示例中,非对称二叉树分割类型可以将父块分为不同大小的部分。例如,一个子块可以是父块的3/8,另一个子块可以是父块的5/8。当然,这样的分割类型可以是垂直的,也可以是水平的。

TT分割结构与QT或BT结构不同,TT分割结构不会沿中心对块进行划分。块的中心区域保持在同一子块中。与产生四个块的QT或产生两个块的二叉树不同之处在于,根据TT分割结构进行的划分产生三个块。根据TT分割结构的示例分割类型包括对称分割类型(水平和垂直)以及非对称分割类型(水平和垂直)。此外,根据TT分割结构,对称分割类型可以是不均匀的(uneven/non-uniform)或均匀的(even/uniform)。根据TT分割结构,非对称分割类型是不均匀的。在一个示例中,TT分割结构可以包括以下分割类型中的至少一种:水平均匀对称三叉树分割类型、垂直均匀对称三叉树分割类型、水平不均匀对称三叉树分割类型、垂直不均匀对称三叉树分割类型、水平不均匀非对称三叉树分割类型,或垂直不均匀非对称三叉树分割类型。

通常,不均匀对称三叉树分割类型是围绕块的中心线对称的分割类型,但是其中,得到的三个块中的至少一个块的大小与其它两个块的大小不相同。在一个优选的示例中,两个侧块的大小均为该块的1/4,而中心块的大小为该块的1/2。均匀对称三叉树分割类型是围绕块的中心线对称的分割类型,且得到的块大小都相同。如果块的高度或宽度(取决于垂直或水平分割)是3的倍数,则这种分割是可能的。不均匀非对称三叉树分割类型是指围绕块的中心线不对称的分割类型,其中,得到的块中的至少一个块与另外两个块的大小不相同。

在将块(例如,在子树节点处)划分为不对称三叉树分割类型的示例中,编码器200和/或解码器300可以应用限制,使得三个分割部分中的两个分割部分大小相同。这种限制可以对应于编码器200在对视频数据进行编码时必须遵守的限制。此外,在一些示例中,编码器200和解码器300可以应用限制,因此,当根据非对称三叉树分割类型进行划分时,两个分割部分的面积之和等于其余的一个分割部分的面积。

在一些示例中,编码器200可以用于针对QT、BT和TT分割结构中的每种分割结构从上述所有分割类型中选择分割类型。在其它示例中,编码器200可以用于仅从前述分割类型的子集中确定分割类型。例如,上述分割类型(或其它分割类型)的子集可以用于四叉树结构的特定块大小或特定深度。所支持分割类型的子集可以在码流中进行指示(signal)以由解码器200使用,或者可以进行预定义,使得编码器200和解码器300可以在没有任何指示的情况下确定子集。

在其它示例中,对于所有CTU中的所有深度,所支持的分割类型的数量可以是固定的。也就是说,可以对编码器200和解码器300进行预配置,以对CTU的任何深度使用相同数量的分割类型。在其它示例中,所支持的分割类型的数量可以变化,并且可以取决于深度、条带类型或其它之前经译码的信息。在一个示例中,在树结构的深度0或深度1处,仅使用QT分割结构。在大于1的深度处,可以使用QT、BT和TT分割结构中的每一个。

在一些示例中,编码器200和/或解码器300可以对所支持的分割类型进行预配置的限制,以避免对视频图像的某个区域或CTU的区域进行重复分割。在一个示例中,当以非对称分割类型对块进行划分时,编码器200和/或解码器300可以不进一步对从当前块划分得到的最大子块进行划分。例如,当根据非对称分割类型(类似PART_2N×nU分割类型)对正方形块进行划分时,所有子块中的最大子块(类似PART_2N×nU的最大子块分割类型)为标记的叶节点,无法进行进一步划分。但是,较小的子块(类似于PART_2N×nU分割类型的较小子块)可以进行进一步划分。

作为另一个示例,其中,可以对所支持的分割类型进行限制以避免对特定区域进行重复分割,当以非对称分割类型对块进行划分时,无法沿同一方向对从当前块划割得到的最大子块进行进一步划分。例如,当正方形块为非对称分割类型(类似于PART_2N×nU分割类型)时,编码器200和/或解码器300可以不沿水平方向划分所有子块中的大子块(类似于PART_2N×nU分割类型的最大子块)。

作为另一示例,其中,可以对所支持的分割类型进行限制以使得容易进行进一步划分,当块的宽度/高度不是2的幂次方时(例如,当宽度高度不是2、4、8、16等时),编码器200和/或解码器300可以不水平或垂直地对块进行划分。

上述示例描述了编码器200可以执行MTT分割的方式。然后,解码器300也可以进行与编码器200所执行的分割相同的MTT分割。在一些示例中,可以通过在解码器300处应用同一组预定义的规则来确定编码器200对视频数据的图像进行分割的方式。但是,在许多情况下,编码器200可以根据用于正在译码的视频数据的特定图像的率失真准则确定要使用的特定分割结构和分割类型。因此,为了使解码器300确定特定图像的分割,编码器200可以在编码码流中指示语法元素,该语法元素表示分割图像以及图像的CTU的方式。解码器200可以解析这样的语法元素并相应地分割图像和CTU。

在一个示例中,视频编码器200的预测处理单元260可以用于执行上述分割技术的任何组合,特别是对于运动估计,下文会详细描述。

尽管块203的尺寸小于图像201,但是与图像201一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,图像块203例如可以包括一个样本阵列(例如,在黑白图像201的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像201的情况下,一个亮度阵列和两个色度阵列),或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的样本的数量定义了块203的大小。

如图2所示的编码器200用于对图像201逐块地进行编码,例如对每个块203执行编码和预测。

残差计算

残差计算单元204用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205,例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值来,以获得样本域中的残差块205。

变换

变换处理单元206用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,DCT)或离散正弦变换(discrete sine transform,DST),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。

变换处理单元206可以用于应用DCT/DST的整数近似,例如针对HEVC/H.265指定的变换。与正交DCT变换相比,此类整数近似通常通过某个因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些约束来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、精度和实施成本之间的权衡等。例如,在解码器300侧通过逆变换处理单元212等指定用于逆变换的特定缩放因子(以及在编码器200侧通过逆变换处理单元212等为相应的逆变换指定缩放因子),在编码器200侧可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。

量化

量化单元208用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化变换系数209。量化变换系数209也可以称为量化残差系数209。量化过程可以减小与部分或全部变换系数207相关的位深。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m,可以通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,QP)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的对应的解量化或反解量化操作可以包括乘以量化步长。根据一些标准(例如HEVC),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包括除法的方程的定点近似、根据量化参数计算量化步长大小。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并在码流等中将该自定义量化表从编码器指示到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。

反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,所以解量化系数211通常与变换系数不完全相同。

逆变换处理单元212用于对变换处理单元206所进行的变换进行逆变换,例如逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以在样本域中获得逆变换块213。逆变换块213也可以称为逆变换解量化块213或逆变换残差块213。

重建单元214(例如,求和器214)用于将逆变换块213(即,重建残差块213)添加到预测块265,以获得样本域中的重建块215,例如,通过将重建残差块213的样本值添加到预测块265的样本值。

可选地,例如行缓冲器216的缓冲单元216(或缓冲器216)用于缓冲或存储重建块215和相应的样本值,以例如用于帧内预测。在其它实施例中,编码器可以使用未滤波的重建块和/或存储在缓冲单元216中的相应的样本值用于任何类型的估计和/或预测,例如帧内预测。

编码器200的实施例可以使缓存单元216不仅用于存储用于帧内预测254的重建块215,而且也用于环路滤波器单元220(图2中未示出),和/或使例如缓冲单元216和解码图像缓冲单元230构成一个缓冲器。其它实施例可以使用解码图像缓冲器230的滤波块221和/或块或样本(块或样本在图2中未示出)作为帧内预测254的输入或基础。

环路滤波器单元220(或环路滤波器220)用于对重建块215进行滤波,以获得滤波块221,以例如平滑像素过渡或提高视频质量。环路滤波器单元220表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器和其它滤波器,例如双边滤波器,自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器或协作滤波器。尽管在图2中环路滤波器单元220示出为环内滤波器,但在其它配置中,环路滤波器单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。解码图像缓冲器230可以在环路滤波单元220对重建译码块进行滤波操作之后存储重建译码块。

例如,编码器200(相应地,环路滤波器单元220)的实施例可以直接输出环路滤波器参数(例如采样自适应偏移信息),或通过熵编码单元270或任何其它熵译码单元熵编码后输出环路滤波器参数,使得例如解码器300可以接收相同的环路滤波器参数并将相同的环路滤波器参数应用于解码。

解码图像缓冲器(decoded picture buffer,DPB)230可以是参考图像存储器,其存储参考图像数据,该参考图像数据由视频编码器20用来对视频数据进行编码。DPB 230可以由各种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random accessmemory,DRAM)(包括同步DRAM(synchronous DRAM,SDRAM))、磁阻RAM(magneto resistiveRAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储器设备。DPB 230和缓冲器216可以由同一存储器设备提供,也可以由不同的存储器设备提供。在一些示例中,解码图像缓冲器(decoded picture buffer,DPB)230用于存储滤波块221。解码图像缓冲器230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),以例如用于帧间预测。在一些示例中,如果重建了重建块215,但没有进行环内滤波,则解码图像缓冲器(decoded picture buffer,DPB)230用于存储重建块215。

预测处理单元260也称为块预测处理单元260,用于:接收或获取块203(例如,当前图像201的当前块203)和重建图像数据,例如,来自缓冲器216的相同(或当前)图像的参考样本和/或来自解码图像缓冲器230的一个或多个之前解码的图像的参考图像数据231;并且用于处理此类数据以进行预测,即,提供预测块265,预测块265可以是帧间预测块245或帧内预测块255。

模式选择单元262可以用于选择预测模式(例如,帧内或帧间预测模式)和/或选择对应的预测块245或255作为预测块265,以用于残差块205的计算和重建块215的重建。

模式选择单元262的实施例可以用于(例如从预测处理单元260支持的那些预测模式中)选择预测模式,该预测模式提供最佳匹配,或者换句话说,提供最小残差(最小残差更有利于压缩,以便传输或存储),或者提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者考虑或平衡两者。模式选择单元262可以用于根据率失真优化(ratedistortion optimization,RDO)确定预测模式,即确定这样一种预测模式:该预测模式提供最小率失真优化,或相关的率失真至少满足预测模式选择标准。

下文中更详细地解释由示例编码器200执行的预测处理(例如通过预测处理单元260)和模式选择(例如通过模式选择单元262)。

如上所述,编码器200用于从一组(预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。

该组帧内预测模式可以包括35种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或H.265中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或正在开发的H.266中定义的定向模式等。

该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在DBP 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素和/或四分之一像素插值,或不应用像素插值。

除了上述预测模式之外,还可以应用跳过模式和/或直接模式。

预测处理单元260还可以用于例如,通过迭代地使用四叉树分割(quad-tree-partitioning,QT)、二叉树分割(binary partitioning,BT)或三叉树分割(triple-tree-partitioning,TT)或其任何组合,将块203分割成较小的块部分或子块,以及用于例如对块部分或子块中的每一个执行预测,其中模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。

帧间预测单元244可以包括运动估计(motion estimation,ME)单元和运动补偿(motion compensationMC)单元(图2中未示出)。运动估计单元用于接收或获取图像块203(当前图像201的当前图像块203)和解码图像331,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像331的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像331,或者,换句话说,当前图像和之前解码的图像331可以是构成视频序列的图像序列的一部分或可以构成该序列。例如,编码器200可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引……)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移量(空间偏移),作为运动估计单元(图2中未示出)的帧间预测参数。这个偏移量也称为运动矢量(motionvector,MV)。融合是HEVC中用到的重要的运动估计工具,VVC中也使用融合。为了执行融合估计,首先要构建融合候选列表,其中,每个候选都包括所有运动数据,该运动数据包括是否使用一个或两个参考图像列表的信息以及每个列表的参考索引和运动矢量。融合候选列表是根据以下候选构建的:1.最多四个空间融合候选,这些候选是从五个空间相邻(即相邻)块获得的;2.一个时间融合候选,该时间融合候选是从两个时间、并置块获得的;3.其它融合候选,包括组合双向预测候选和零运动矢量候选。

帧内预测单元254还用于根据帧内预测参数(例如,选择的帧内预测模式)确定帧内预测块255。在任何情况下,在为块选择帧内预测模式之后,帧内预测单元254还用于向熵编码单元270提供帧内预测参数,即指示为块选择的帧内预测模式的信息。在一个示例中,帧内预测单元254可以用于执行下文描述的帧内预测技术的任何组合。

熵编码单元270用于单独地或联合地(或根本不)对量化残差系数209、帧间预测参数、帧内预测参数和/或环路滤波器参数应用熵编码算法或方案(例如,可变长度译码(variable length coding,VLC)方案,上下文自适应VLC(context adaptive VLC,CAVLC)方案、算术译码方案、上下文自适应二进制算术译码(context adaptive binaryarithmetic coding,CABAC)方案、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,SBAC)方案、概率区间分割熵(probability interval partitioning entropy,PIPE)译码,或者其它熵编码方法或技术),以获得可由输出端272输出的经编码的图像数据21,例如以编码码流21的形式输出。编码码流21可以发送到视频解码器30,或者进行存档,以便随后由视频解码器30发送或检索。熵编码单元270还可以用于对正在译码的当前视频条带的其它语法元素进行熵编码。

视频编码器200的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器200可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器200可以将量化单元208和反量化单元210组合成单个单元。

图3为用于实现本发明的技术的示例性视频解码器300。视频解码器300用于接收例如由编码器200编码的经编码的图像数据(例如,编码码流)271,以获得解码图像331。在解码过程期间,视频解码器300从视频编码器200接收视频数据,例如表示编码视频条带的图像块和相关的语法元素的编码视频码流。

在图3的示例中,解码器300包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如,求和器314)、缓冲器316、环路滤波器320、解码图像缓冲器330和预测处理单元360。预测处理单元360可包括帧间预测单元344、帧内预测单元354和模式选择单元362。在一些示例中,视频解码器300可以执行与图2中关于视频编码器200描述的编码通道大体上互逆的解码通道。

熵解码单元304用于对经编码的图像数据271执行熵解码以例如获得量化系数309和/或经解码的译码参数(图3中未示出),例如(经解码的)帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素中的任何或全部。熵解码单元304还用于将帧间预测参数、帧内预测参数和/或其它语法元素转发至预测处理单元360。视频解码器300可以在视频条带级和/或视频块级接收语法元素。

反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元112具有相同的功能,重建单元314可以与重建单元114具有相同的功能,缓冲器316可以与缓冲器116具有相同的功能,环路滤波器320可以与环路滤波器120具有相同的功能,解码图像缓冲器330可以与解码图像缓冲器130具有相同的功能。

预测处理单元360可以包括帧间预测单元344和帧内预测单元354,其中帧间预测单元344在功能上类似于帧间预测单元144,帧内预测单元354在功能上类似于帧内预测单元154。预测处理单元360通常用于进行块预测和/或从编码数据21中获取预测块365,以及例如从熵解码单元304接收或获取(显式地或隐式地)预测相关参数和/或所选择的预测模式的信息。

当视频条带译码为帧内译码(I)条带时,预测处理单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前帧或图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频帧译码为帧间译码(即,B或P)条带时,预测处理单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器300可以根据DPB 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。

预测处理单元360用于通过解析运动矢量和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,预测处理单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带,P条带或GPB条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。

反量化单元310可以用于对码流中提供的并由熵解码单元304解码的量化变换系数进行反量化(即,解量化(de-quantize))。反量化过程可以包括:使用视频编码器100计算的视频条带中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。

逆变换处理单元312用于对变换系数应用逆变换,例如,逆DCT、逆整数变换或概念上类似的逆变换过程,以便在像素域中生成残差块。

重建单元314(例如,求和器314)用于将逆变换块313(即,重建残差块313)添加到预测块365,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值添加到预测块365的样本值。

环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以例如平滑像素的突变或提高视频质量。在一个示例中,环路滤波单元320可以用于执行以下描述的滤波技术的任何组合。环路滤波器单元320表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器和其它滤波器,例如双边滤波器,自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器或协作滤波器。尽管在图3中环路滤波器单元320示出为环内滤波器,但在其它配置中,环路滤波器单元320可以实现为后环路滤波器。

然后,给定帧或图像中的解码视频块321存储在解码图像缓冲器330中,解码图像缓冲器330存储用于后续运动补偿的参考图像。

解码器300用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。

视频解码器300的其它变型可以用于解码压缩码流。例如,解码器300可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器300可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器300可以将反量化单元310和逆变换处理单元312组合成单个单元。

图4为本发明的一个实施例提供的网络设备400(例如,译码设备)的示意图。网络设备400适用于实现本文描述的公开实施例。在一个实施例中,网络设备400可以是解码器(例如,图1A中的视频解码器30)或编码器(例如,图1A中的视频编码器20)。在一个实施例中,网络设备400可以是如上所述的图1A中的视频解码器30或图1A中的视频编码器20的一个或多个组件。

网络设备400包括:用于接收数据的入端口410和接收单元(Rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)430;用于发送数据的发送器单元(Tx)440和出端口450;以及用于存储数据的存储器460。网络设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,以用于光或电信号的出或入。

处理器430通过硬件和软件实现。处理器430可以实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,具有译码模块470可以大大提高网络设备400的功能,并影响网络设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。

存储器460包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。存储器460可以是易失性和/或非易失性存储器,并且可以是只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、三元内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(staticrandom-access memory,SRAM)。

图5为一个示例性实施例通过的装置500的简化框图,该装置500可以用作图1A中的源设备12和目标设备14中的一者或两者。装置500可以实现本发明的技术。装置500可以是包括多个计算设备的计算系统的形式,也可以是单个计算设备的形式,例如手机、平板电脑、膝上型电脑、笔记本电脑、台式电脑等。

装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。

装置500中的存储器504在一种实现方式中可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至N,其还包括执行本文所描述的方法的视频译码应用程序。装置500还可以包括辅助存储器514形式的其它存储器,例如,辅助存储器514可以是与移动计算设备一起使用的存储卡。由于视频通信会话可能包括大量信息,因此它们可以全部或部分地存储在辅助存储器514中,并且根据需要加载到存储器504中用于进行处理。

装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。除了显示器518之外或作为显示器518的替代方案,还可以提供允许用户对装置500进行编程或以其它方式使用装置500的其它输出设备。当输出设备是或包括显示器时,显示器可以通过各种方式实现,包括通过液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode-ray tube,CRT)显示器、等离子显示器或发光二极管(light emitting diode,LED)显示器,例如有机LED(organic LED,OLED)显示器。

装置500还可以包括图像感测设备520或与图像感测设备520通信,图像感测设备520例如为摄像机或任何现有的或以后开发的、能够感测例如操作装置500的用户的图像等图像的其它图像感测设备520。可以将图像感测设备520定位成朝向操作装置500的用户。在一个示例中,图像感测设备520的位置和光轴可以使视野包括直接邻近显示器518的区域,从该区域可以看见显示器518。

装置500还可以包括声音感测设备522或与声音感测设备522通信,声音感测设备522例如为麦克风或任何现有的或以后开发的、能够感测装置500附近声音的其它声音感测设备。可以将声音感测设备522定位成朝向操作装置500的用户,并且可以用于接收用户在操作装置500时发出的声音,例如语音或其它话语。

尽管图5将装置500的处理器502和存储器504描绘成集成到单个单元中,但可以使用其它配置。处理器502的操作可以分布在多个机器(每个机器具有一个或多个处理器)上,这些机器可以直接耦合或通过局域网或其它网络耦合。存储器504可以分布在多个机器上,例如基于网络的存储器或执行装置500的操作的多个机器中的存储器。尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。

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

已证明运动补偿、帧内预测和环路滤波器等视频压缩技术是有效的,因此应用于H.264/AVC和H.265/HEVC等各种视频译码标准中。例如,当没有可用的参考图像时,或者当当前块或图像不使用帧间预测译码时,可以对I帧或I条带进行帧内预测。帧内预测的参考样本通常是从同一图像中的之前译码的(或重建的)相邻块中获得的。例如,H.264/AVC和H.265/HEVC都使用相邻块的边界样本作为帧内预测的参考。使用多种不同的帧内预测模式来覆盖不同的纹理或结构特征。在每种模式下,使用不同的预测信号获得方法。例如,如图6所示,H.265/HEVC总共支持35种帧内预测模式。

H.265/HEVC中的帧内预测算法的说明

对于帧内预测,相邻块的解码边界样本作为参考。编码器从35个选项中选择每个块的最佳亮度帧内预测模式:33种定向预测模式、1种DC模式和1种平面模式。图6中规定了帧内预测方向与帧内预测模式编号之间的映射关系。需要说明的是,在最新的视频译码技术中,例如在VVC(通用视频译码,versatile video coding)中,开发了65种甚至更多的帧内预测模式,可以捕获自然视频呈现的任意边缘方向。

如图7所示,块“CUR”为待预测的当前块,沿相邻构建块(当前块左侧和上方)边界的灰度样本作为参考样本。可以通过根据由帧内预测模式指示的特定方法映射参考样本来获得预测信号。

参考图7,W为当前块的宽度,H为当前块的高度。W1为顶部参考样本的数量。H1为剩余参考样本的数量。通常,W1>W,H1>H,即,顶部参考样本还包括右上参考(相邻)样本,左参考样本还包括左下参考(相邻)样本。例如,H1=2×H,W1=2×W,或H1=H+W,W1=W+H。

参考样本并不总是可用的。例如,如图8所示,在进行可用性检查过程之后,当前块的顶部或上方有W2个样本可用,当前块的左侧有H2个样本可用。顶部有W3个样本不可用,左边有H3个样本不可用。

在获得预测信号之前,需要使用可用的样本替换(或填充)这些不可用的样本。例如,通过顺时针方向扫描参考样本,并使用最新可用的样本值替换不可用的样本。如果左边参考样本的下面部分不可用,则用最近的可用参考样本的值代替。

参考样本可用性检查

参考样本可用性检查是指检查参考样本是否可用。例如,如果已经重建了参考样本,则该参考样本可用。

在现有方法中,通常通过检查亮度样本来完成可用性检查过程,即,即使对于色度分量块,也通过检查相应的亮度样本的可用性来获得参考样本可用性。

在本发明提出的方法中,对于块,通过检查其自身分量的样本来执行参考样本可用性检查过程。这里的分量可以是Y分量、Cb分量或Cr分量。根据所提供的方法,对于块,通过检查其对应分量的样本来执行参考样本可用性检查过程。这里的分量可以是亮度分量或色度分量,色度分量可以同时包括Cb分量和Cr分量。这里的Cb分量和Cr分量称为色度分量,在可用性检测过程中不区分Cb分量和Cr分量。

本发明提出了一套方法,重点在以下两个方面。

根据本发明的第一方面,对于块,通过检查其自身分量的样本来完成参考样本可用性检查过程。这里的分量可以是Y分量、Cb分量或Cr分量。

对于Y块,通过检查参考样本是否可用(例如,通过检查是否已重建参考样本)来获得Y块的参考样本的可用性。

对于Cb块,通过检查参考样本是否可用(例如,通过检查是否已重建参考样本)来获得Cb块的参考样本的可用性。

对于Cr块,通过检查参考样本是否可用(例如,通过检查是否已重建参考样本)来获得Cr块的参考样本的可用性。

根据本发明的第二方面,对于块,通过检查其对应分量的样本来执行参考样本可用性检查过程。这里,分量可以是亮度分量或色度分量。Y分量称为亮度分量。Cb分量和Cr分量都称为色度分量。这里,在可用性检查过程中不区分Cb分量和Cr分量。

对于亮度块,通过检查参考样本是否可用(例如,通过检查是否已重建参考样本)来获得亮度块的参考样本的可用性。

对于色度块,通过检查参考样本是否可用(例如,通过检查是否已重建参考样本)来获得色度块的参考样本的可用性。

在现有解决方案中,对于块,无论块属于哪个分量,都是通过检查亮度样本来完成参考样本可用性检查过程的。相比之下,在本发明提出的方法中,对于属于不同分量的块,通过检查不同的分量样本来执行参考样本可用性检查过程。

这里要说明的是,本发明中提出的方法用于获得译码为帧内预测模式的块的参考样本的可用性。该方法可以由分别如图2和图3所示的帧内预测模块254或354执行。因此,该方法在解码端和编码端都适用。编码器和解码器中对块的参考样本的可用性检查过程是相同的。

图9为本发明示例性实施例提供的用于获得重建信号的方法的简化流程图。参考图9,对于译码为帧内预测模式的块,为了获得重建块(或信号,或样本),该方法包括首先获取块的预测(或预测信号,或样本)(901)。此后,该方法包括获取块的残差(或残差信号)(902)。然后,该方法包括通过将残差添加到当前块的预测来获得重建块(903)。

图10是本发明示例性实施例提供的获得预测(或预测信号)的简化流程图。参考图10,为了获得预测信号,该方法首先包括获取当前块的帧内预测模式,例如平面模式或DC模式等(1001)。此后,该方法包括获得当前块的分量的参考样本的可用性(1002)。在一个实施例中,该分量包括Y分量、Cb分量或Cr分量。在另一个实施例中,该分量包括亮度分量或色度分量。该方法可以通过检查相邻Y块内的Y样本的可用性来获得参考样本的可用性,其中相邻Y块包括参考样本;或者通过检查相邻Cb块内Cb样本的可用性来获得参考样本的可用性,其中相邻Cb块包括参考样本;或者通过检查相邻Cr块内Cr样本的可用性来获得参考样本的可用性,其中相邻Cr块包括参考样本。

当该方法确定存在不可用的参考样本时(在1003中为是),该方法包括使用可用的参考样本替换或填充不可用的参考样本(1004)。此后,该方法包括根据所述帧内预测模式和所述替换后的参考样本获得块的预测(1005)。在1003中,当该方法确定不存在不可用的参考样本时(在1003中为否),执行该方法的步骤1005,该步骤包括根据帧内预测模式和可用的参考样本获得当前块的预测。在1006中,该方法包括根据预测重建当前块。

这里要说明的是,下文描述的本发明的实施例涉及获得预测信号过程和改进参考样本可用性检查过程。

实施例1

在本实施例中,通过检查自身分量的样本来进行可用性检查过程。

参考图10,对于译码为帧内预测模式的块,为了获得预测信号,该方法包括:

步骤1:获取帧内预测模式(1001)

帧内预测模式是通过解析码流中的帧内预测模式相关的语法获得的。例如,对于Y块,需要解析intra_luma_mpm_flag、intra_luma_mpm_idx或intra_luma_mpm_remainder。对于Cb/Cr块,需要解析intra_chroma_pred_mode信号。此后,可以使用解析的语法来获得当前块的帧内预测模式。

步骤2:执行参考样本可用性检查过程(1002)

该步骤包括检查当前块的参考样本的可用性。

在一个实施例中,当块为Y块时,则通过检查Y分量的参考样本来获得参考样本可用性。或者,通过检查相邻Y样本(例如,通过检查相邻Y块的边界样本)来获得参考样本可用性。

在一个实施例中,当块为Cb块时,则通过检查Cb分量的参考样本来获得参考样本可用性。或者,通过检查相邻Cb样本(例如,通过检查相邻Cb块的边界样本)来获得参考样本可用性。

在一个实施例中,当块为Cr块时,则通过检查Cr分量的参考样本来获得参考样本可用性。或者,通过检查相邻Cr样本(例如,通过检查相邻Cr块的边界样本)来获得参考样本可用性。

步骤3:确定是否存在不可用的参考样本(1003)

在1003中,该方法包括确定是否存在不可用的参考样本。当该方法确定存在不可用的参考样本时,执行该方法的步骤4(1004),否则,执行该方法的步骤5(1005)。

步骤4:参考样本替换(1004)

参考样本替换是指用可用的参考样本值获得不可用的参考样本的样本值。在一个实施例中,通过顺时针方向扫描参考样本并使用最新可用的样本值来替换不可用的样本。如果左边参考样本的下面部分不可用,则用最近的可用参考样本的值代替。

步骤5:获得预测信号(1005)

在获得参考样本和帧内预测模式之后,可以通过将参考样本映射到当前块来获得预测信号,映射方法由帧内预测模式表示。

在获得当前块的预测信号之后,可以通过将残差信号添加到获得的预测信号来获得当前块的重建信号(图9的903)。

这里要说明的是,在重建当前块之后,块区域中的样本可以被标记为可用,如图11所示。也就是说,当当前块为Y块时,该块区域覆盖的位置上的所有Y样本都可用,当当前块为Cb块时,该块区域覆盖的位置上的所有Cb样本都可用,当当前块为Cr块时,块区域覆盖的位置上的所有Cr样本都可用。

这些章节的规范的一个示例如下所示:

参考样本可用性标注过程

该过程的输入为:

–样本位置(xTbCmp,yTbCmp),指定当前变换块的左上样本相对于当前图像的左上样本;

–变量refIdx,指定帧内预测参考线索引,

–变量refW,指定参考样本宽度,

–变量refH,指定参考样本高度,

–变量cIdx,指定当前块的颜色分量。

对于样本内预测,该过程的输出为参考样本refUnfilt[x][y],其中x=-1-refIdx,y=-1-refIdx..refH-1和x=-refIdx..refW-1,y=-1-refIdx。

refW+refH+1+(2*refIdx)相邻样本refUnfilt[x][y]为环内滤波处理之前构建的样本,其中x=-1-refIdx,y=-1-refIdx..refH-1和x=-refIdx..refW-1,y=-1-refIdx,获得如下:

–相邻位置(xNbCmp,yNbCmp)由以下参数表示:(xNbCmp, yNbCmp) = (xTbCmp +x, yTbCmp + y) (310)

–调用条款6.4.4中指定的相邻块可用性获得过程,将当前样本位置(xCurr,yCurr)设置为(xTbCmp,yTbCmp),相邻样本位置为(xNbCmp,yNbCmp),将checkPredModeY设置为假,cIdx作为输入,输出赋值为availableN。

–每个样本refUnfilt[x][y]的获得如下:

–如果availableN为假,则将样本refUnfilt[x][y]标记为“不可用于帧内预测”。

–否则,将样本refUnfilt[x][y]标记为“可用于帧内预测”,将位置(xNbCmp,yNbCmp)的样本赋值给refUnfilt[x][y]。

相邻块可用性获得过程

该过程的输入为:

–当前块的左上样本相对于当前图像的左上样本的样本位置(xCurr,yCurr),

–相邻块相对于当前图像的左上亮度样本覆盖的样本位置(xNbCmp,yNbCmp),

–变量checkPredModeY指定可用性是否依赖于预测模式。

–变量cIdx指定当前块的颜色分量。

该过程的输出为覆盖该位置(xNbCmp,yNbCmp)的相邻块的可用性,表示为availableN。

当前亮度位置(xTbY,yTbY)和相邻亮度位置(xNbY,yNbY)的获得如下:

(xTbY,yTbY)=(cIdx==0)?(xCurr,yCurr):

(xCurr*SubWidthC,yCurr*SubHeightC)

(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):

(xNbCmp*SubWidthC,yNbCmp*SubHeightC)

相邻块可用性availableN的获得如下:

–如果以下条件中的一个或多个为真,则将availableN设置为假。

–xNbCmp小于0。

–yNbCmp小于0。

–xNbY大于等于pic_width_in_luma_samples。

–yNbY大于等于pic_height_in_luma_samples。

–IsAvailable[cIdx][xNbCmp][yNbCmp]为假。

–相邻块包括在与当前块不同的条带中。

–相邻块包括在与当前块不同的分块(tile)中。

–entropy_coding_sync_enabled_flag等于1且(xNbY>>CtbLog2SizeY)大于等于(xTbY>>CtbLog2SizeY)+1。

–否则,将availableN设置为真。

当以下条件同时满足时,将availableN设置为假:

–checkPredModeY为真。

–availableN为真。

–CuPredMode[0][xNbY][yNbY]不等于CuPredMode[0][xTbY][yTbY]。

IsAvailable[cIdx][x][y]用于存储每个分量cIdx在样本位置(x,y)处的样本的可用信息。

对于cIdx=0,0<=x<=pic_width_in_luma_samples,0<=y<=pic_height_in_luma_samples;

cIdx=1或2。0<=x<=pic_width_in_chroma_samples,0<=y<=pic_height_in_chroma_samples;

该过程的输入为:

–位置(xCurr,yCurr)指定当前块的左上样本相对于当前图像分量的左上样本的位置,

–变量nCurrSw和nCurrSh分别指定当前块的宽度和高度。

–变量cIdx指定当前块的颜色分量,

–(nCurrSw)x(nCurrSh)阵列predSamples指定当前块的预测样本。

–(nCurrSw)x(nCurrSh)阵列resSamples指定当前块的残差样本。

该过程的输出为重建的图像样本阵列recSamples。

根据颜色分量cIdx的值,进行以下赋值:

–如果cIdx=0,recSamples对应重建图像样本阵列S

–否则,如果cIdx等于1,则将tuCbfChroma设置为等于tu_cbf_cb[xCurr][yCurr],recSamples对应重建的色度样本阵列S

–否则(cIdx等于2),将tuCbfChroma设置为等于tu_cbf_cr[xCurr][yCurr],recSamples对应重建的色度样本阵列S

根据pic_lmcs_enabled_flag的值,以下情况适用:

–如果pic_lmcs_enabled_flag等于0,则位置(xCurr,yCurr)处的重建样本recSamples的(nCurrSw)x(nCurrSh)块获得如下,其中i=0..nCurrSw-1,j=0..nCurrSh-1:recSamples[xCurr+i][yCurr+j]=Clip1(predSamples[i][j]+resSamples[i][j])(1195)

–否则(pic_lmcs_enabled_flag等于1),以下情况适用:

–当cIdx等于0时,以下情况适用:

–调用条款8.7.5.2中指定的亮度样本的映射过程的图像重建,其中亮度位置(xCurr,yCurr)、块宽度nCurrSw和高度nCurrSh、预测亮度样本阵列predSamples、残差亮度样本阵列resSamples作为输入,输出为重建亮度样本阵列recSamples。

–否则(cIdx大于0),调用条款8.7.5.3中指定的色度样本的亮度相关色度残差缩放过程的图像重建,其中色度位置(xCurr,yCurr)、变换块宽度nCurrSw和高度nCurrSh、当前色度变换块tuCbfChroma的译码块标志、预测色度样本阵列predSamples、残差色度样本阵列resSamples作为输入,输出为重建色度样本阵列recSamples。

进行如下赋值,其中i=0..nCurrSw-1,j=0..nCurrSh-1:

xVb=(xCurr+i)%((cIdx==0)?IbcBufWidthY:IbcBufWidthC) (1196)

yVb=(yCurr+j)%((cIdx==0)?CtbSizeY:(CtbSizeY/subHeightC)) (1197)

IbcVirBuf[cIdx][xVb][yVb]=recSamples[xCurr+i][yCurr+j] (1198)

IsAvailable[cIdx][xCurr+i][yCurr+j]=TRUE (1199)

这些章节的规范的另一个示例如下所示:

参考样本可用性标注过程

该过程的输入为:

–样本位置(xTbCmp,yTbCmp),指定当前变换块的左上样本相对于当前图像的左上样本;

–变量refIdx,指定帧内预测参考线索引,

–变量refW,指定参考样本宽度,

–变量refH,指定参考样本高度,

–变量cIdx,指定当前块的颜色分量。

对于样本内预测,该过程的输出为参考样本refUnfilt[x][y],其中x=-1-refIdx,y=-1-refIdx..refH-1和x=-refIdx..refW-1,y=-1-refIdx。

refW+refH+1+(2*refIdx)相邻样本refUnfilt[x][y]为环内滤波处理之前构建的样本,其中x=-1-refIdx,y=-1-refIdx..refH-1和x=-refIdx..refW-1,y=-1-refIdx,获得如下:

–相邻位置(xNbCmp,yNbCmp)由以下参数指定:(xNbCmp,yNbCmp)=(xTbCmp+x,yTbCmp+y) (310)

–调用条款6.4.4中指定的相邻块可用性获得过程,将当前样本位置(xCurr,yCurr)设置为(xTbCmp,yTbCmp),相邻样本位置为(xNbCmp,yNbCmp),将checkPredModeY设置为假,cIdx作为输入,输出赋值为availableN。

–每个样本refUnfilt[x][y]的获得如下:

–如果availableN为假,则将样本refUnfilt[x][y]标记为“不可用于帧内预测”。

–否则,将样本refUnfilt[x][y]标记为“可用于帧内预测”,将位置(xNbCmp,yNbCmp)的样本赋值给refUnfilt[x][y]。

相邻块可用性获得过程

该过程的输入为:

–当前块的左上样本相对于当前图像的左上样本的样本位置(xCurr,yCurr),

–相邻块相对于当前图像的左上亮度样本覆盖的样本位置(xNbCmp,yNbCmp),

–变量checkPredModeY指定可用性是否依赖于预测模式。

–变量cIdx指定当前块的颜色分量。

该过程的输出为覆盖该位置(xNbCmp,yNbCmp)的相邻块的可用性,表示为availableN。

当前亮度位置(xTbY,yTbY)和相邻亮度位置(xNbY,yNbY)的获得如下:

(xTbY,yTbY)=(cIdx==0)?(xCurr,yCurr):

(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(XXX)

(xNbCmp*SubWidthC,yNbCmp*SubHeightC)

相邻块可用性availableN的获得如下:

–如果以下条件中的一个或多个为真,则将availableN设置为假。

–xNbCmp小于0。

–yNbCmp小于0。

–xNbY大于等于pic_width_in_luma_samples。

–yNbY大于等于pic_height_in_luma_samples。

–IsAvailable[cIdx][xNbCmp][yNbCmp]为假。

–相邻块包括在与当前块不同的条带中。

–相邻块包括在与当前块不同的分块中。

–entropy_coding_sync_enabled_flag等于1且(xNbY>>CtbLog2SizeY)大于等于(xTbY>>CtbLog2SizeY)+1。

–否则,将availableN设置为真。

当以下条件同时满足时,将availableN设置为假:

–checkPredModeY为真。

–availableN为真。

–CuPredMode[0][xNbY][yNbY]不等于CuPredMode[0][xTbY][yTbY]。

该过程的输入为:

–位置(xCurr,yCurr)指定当前块的左上样本相对于当前图像分量的左上样本的位置,

–变量nCurrSw和nCurrSh分别指定当前块的宽度和高度。

–变量cIdx指定当前块的颜色分量,

–(nCurrSw)x(nCurrSh)阵列predSamples指定当前块的预测样本。

–(nCurrSw)x(nCurrSh)阵列resSamples指定当前块的残差样本。

该过程的输出为重建的图像样本阵列recSamples。

根据颜色分量cIdx的值,进行以下赋值:

–如果cIdx=0,recSamples对应重建图像样本阵列S

–否则,如果cIdx等于1,则将tuCbfChroma设置为等于tu_cbf_cb[xCurr][yCurr],recSamples对应重建的色度样本阵列S

–否则(cIdx等于2),将tuCbfChroma设置为等于tu_cbf_cr[xCurr][yCurr],recSamples对应重建的色度样本阵列S

根据pic_lmcs_enabled_flag的值,以下情况适用:

–如果pic_lmcs_enabled_flag等于0,则位置(xCurr,yCurr)处的重建样本recSamples的(nCurrSw)x(nCurrSh)块获得如下,其中i=0..nCurrSw-1,j=0..nCurrSh-1:

recSamples[xCurr+i][yCurr+j]=Clip1(predSamples[i][j]+resSamples[i][j])(1195)

–否则(pic_lmcs_enabled_flag等于1),以下情况适用:

–当cIdx等于0时,以下情况适用:

–调用条款8.7.5.2中指定的亮度样本的映射过程的图像重建,其中亮度位置(xCurr,yCurr)、块宽度nCurrSw和高度nCurrSh、预测亮度样本阵列predSamples、残差亮度样本阵列resSamples作为输入,输出为重建亮度样本阵列recSamples。

–否则(cIdx大于0),调用条款8.7.5.3中指定的色度样本的亮度相关色度残差缩放过程的图像重建,其中色度位置(xCurr,yCurr)、变换块宽度nCurrSw和高度nCurrSh、当前色度变换块tuCbfChroma的译码块标志、预测色度样本阵列predSamples、残差色度样本阵列resSamples作为输入,输出为重建色度样本阵列recSamples。

进行如下赋值,其中i=0..nCurrSw-1,j=0..nCurrSh-1:

xVb=(xCurr+i)%((cIdx==0)?IbcBufWidthY:IbcBufWidthC) (1196)

yVb=(yCurr+j)%((cIdx==0)?CtbSizeY:(CtbSizeY/subHeightC)) (1197)

IbcVirBuf[cIdx][xVb][yVb]=recSamples[xCurr+i][yCurr+j] (1198)

IsAvailable[cIdx][(xCurr+i)*((cIdx==0)?1:SubWidthC)][(yCurr+j)*((cIdx==0)?1:SubHeightC)]=TRUE (1199)

图12为本发明示例性实施例提供的在单元N×N中当前块中的样本被标记为可用的示意图。在一个实施例中,参考图12,在重建当前块后,N×N大小的单元中的样本被标记为可用,例如N=4或N=2。或者,对于Y分量块,N=4,对于Cb/Cr分量块,N=2。“可用”单元中的任何样本均视为“可用”。即,如果一个单元标记为“可用”,则单元区域内的任何样本都可以标记为“可用”。也就是说,当当前单元是Y单元时,单元区域覆盖的位置上的所有Y样本都可用;当当前单元是Cb单元时,单元区域覆盖的位置上的所有Cb样本都可用;当当前块为Cr单元时,单元区域覆盖的位置上的所有Cr样本都可用。

在一个实施例中,为了检查参考样本是否可用,该过程首先获取样本所属的单元的位置或索引,当确定单元为可用时,视参考样本可用或将参考样本标记为可用。

图13为本发明示例性实施例提供的当前块的右边界和底边界处的样本被标记为可用的示意图。在一个实施例中,参考图13,在重建当前块之后,仅右边界样本和底边界样本(将用作其它块的参考样本)被标记为可用。

图14为本发明示例性实施例提供的在单元N中当前块的右边界和底边界处的样本被标记为可用的示意图。在一个实施例中,参考图14,在重建当前块后,仅大小为N的单元中的右边界样本和底边界样本(将作为其它块的参考样本)被标记为可用,例如N=4或N=2。或者,对于Y分量块,N=4;对于Cb/Cr分量块,N=2。“可用”单元中的任何样本均视为“可用”。即,如果一个单元标记为“可用”,则单元区域内的任何样本都可以标记为“可用”。也就是说,当当前单元是Y单元时,单元区域覆盖的位置上的所有Y样本都可用;当当前单元是Cb单元时,单元区域覆盖的位置上的所有Cb样本都可用;当当前块为Cr单元时,单元区域覆盖的位置上的所有Cr样本都可用。

为了检查参考样本是否可用,在一个实施例中,该过程首先获取样本所属的单元的位置或索引,当确定单元为可用时,参考样本被标记为可用。

图15为本发明示例性实施例提供的在单元N×N中当前块的右边界和底边界处的样本被标记为可用的示意图。在一个实施例中,参考图15,在重建当前块后,仅大小为N×N的单元中的右边界样本和底边界样本(将作为其它块的参考样本)被标记为可用,例如N=4或N=2。或者,对于Y分量块,N=4;对于Cb/Cr分量块,N=2。“可用”单元中的任何样本均视为“可用”。即,当一个单元标记为“可用”时,单元区域内的任何样本都可以标记为“可用”。也就是说,当当前单元是Y单元时,单元区域覆盖的位置上的所有Y样本都可用;当当前单元是Cb单元时,单元区域覆盖的位置上的所有Cb样本都可用;当当前块为Cr单元时,单元区域覆盖的位置上的所有Cr样本都可用。

为了检查参考样本是否可用,在一个实施例中,过程或方法首先获取样本所属单元的位置或索引,当过程或方法确定单元“可用”时,过程或方法将参考样本标记为可用。

这里要说明的是,根据本发明实施例,每个分量(共3个分量,Y分量、Cb分量和Cr分量)的样本或单元“可用”信息保存在存储器中。

这里要说明的是,即使将块译码为帧间预测模式,在重建块后,也可以应用“可用”标记方法。

实施例2

在本实施例中,通过检查对应分量的样本来进行可用性检查过程。

实施例2与实施例1的区别在于,在可用性检测过程中,不区分Cb分量和Cr分量。对于块,通过检查其对应分量的样本来完成参考样本可用性检查过程。这里,分量可以是亮度分量或色度分量。Y分量称为亮度分量。Cb分量和Cr分量都称为色度分量。

实施例2与实施例1的区别仅在于步骤2,其它步骤与实施例1相同。下面详细描述实施例2的步骤2。

步骤2:执行参考样本可用性检查过程,包括检查当前块的参考样本可用性(图10中的1002)。

在一个实施例中,当块为亮度块时,通过检查参考亮度样本来获得参考样本可用性。

在一个实施例中,当块为色度块时,通过检查参考色度样本来获得参考样本可用性。

参考图10,在检查参考样本的可用性(1002)之后,该方法包括确定是否存在不可用的参考样本(1003)。当该方法确定存在不可用的参考样本时(在1003中为是),执行该方法的步骤1004,否则,执行该方法的步骤1005。

这里要说明的是,实施例1中讨论的标记方法可以直接用于实施例2,唯一的区别在于色度分量,仅在重建Cb分量块和Cr分量块之后,才可以将块区域中的色度样本标记为“可用”。

例如,对于亮度块,当重建块时,块区域中的样本可以被标记为可用。对于色度块,在重建Cb和Cr块之后,该块区域的样本可以被标记为“可用”。即,当当前块为亮度块时,块区域覆盖的位置上的所有亮度样本被标记为可用。当当前块为色度块时,在重建Cb和Cr块之后,块区域覆盖位置的所有色度样本被标记为可用。

实施例1中的其它标记方法也可以类似地进行使用。

这里要说明的是,在本发明的实施例中,每个分量(共2个分量,亮度分量和色度分量)的样本或单元“可用性”信息保存在存储器中。即,Cb分量和Cr分量将共用相同的“可用性”或“可用”信息。

这里要说明的是,即使将块译码为帧间预测模式,在重建块之后,也可以使用“可用”标记方法。

下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。

图17为用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于WIFI、以太网、电缆、无线(3G/4G/5G)、USB或者其任何组合等。

捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将经编码的数据发送给终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如上所述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将经编码的视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。

在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如上所述的目标设备14。当经编码的数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当经编码的数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。

对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、个人数字助理(personal digital assistant,PDA)3122或车载设备3124,终端设备可以将经解码的数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如STB 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。

该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。

图18为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(Real Time Streaming Protocol,RTSP)、超文本传输协议(HyperText Transfer Protocol,HTTP)、HTTP直播协议(HTTP Live streaming protocol,HLS)、MPEG-DASH、实时传输协议(Real-time Transport protocol,RTP)、实时消息协议(RealTime Messaging Protocol,RTMP)或其任何组合等。

协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为经编码的音频数据和经编码的视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。在这种情况下,将经编码的数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。

通过解复用处理,生成视频基本流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频ES进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频ES以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图Y中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器(图Y中未示出)中。

同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于经译码的音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。

如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。

本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。

根据本发明,所描述的方法和过程可以通过硬件、软件、固件或其任何组合实现。当通过软件实现时,该方法或过程可以由存储在计算机可读介质中并由硬件处理单元执行的指令或程序代码执行。

在所提出的方法中,将每个样本的可用信息存储在各分量中,使得在帧内预测过程中能够更准确地提供可用信息。

作为示例而非限制,计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,DSL)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光盘、数字通用光盘(digital versatile disc,DVD)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。

指令或程序代码可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,DSP)、通用微处理器、专用集成电路(application-specificintegrated circuit,ASIC)、现场可编程逻辑阵列(field programmable logic array,FPGA)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。

本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。

尽管本发明中已经提供了几个实施例,但应理解的是,在不背离本发明的精神或范围的情况下,所公开的系统和方法可以以许多其它特定形式实现。这些示例视为说明性而非限制性,并且意图不限于本文给出的细节。例如,可以将各种元件或组件组合或集成在另一个系统中,或者可以省略或不实现某些特征。

此外,在不背离本发明范围的情况下,在各种实施例中描述和示出为分立的或单独的技术、系统、子系统和方法,可以与其它系统、模块、技术或方法组合或集成。示出或讨论为相互耦合、直接耦合或通信的其它项目可以通过电、机械或其它方式通过一些接口、设备或中间部件间接耦合或通信。改变、替换和更改的其它示例可以由本领域技术人员确定,并且可以在不背离本文所公开的精神和范围的情况下进行。

相关技术
  • 帧内预测编码方法、帧内预测解码方法、帧内预测编码装置、帧内预测解码装置以及记录程序的记录介质
  • 用于帧内预测编码/解码包括画面数据的编码单元的方法和设备,所述帧内预测编码取决于预测树和变换树
技术分类

06120112852067