首页> 中国专利> 在对重叠区域内的经重构样本值的块向量预测和估计方面的创新

在对重叠区域内的经重构样本值的块向量预测和估计方面的创新

摘要

针对帧内块复制(“BC”)预测模式的编码器侧选项方面的创新促成在编码的码率失真性能和/或计算效率方面更高效的帧内BC预测。例如,这些创新中的一些涉及在块向量估计期间对当前块的重叠区域内的样本值的估计。其他创新涉及在编码或解码期间使用“乒乓”方法对块向量(“BV”)值的预测。

著录项

  • 公开/公告号CN105874791A

    专利类型发明专利

  • 公开/公告日2016-08-17

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201480072229.4

  • 发明设计人 L·朱;G·J·沙利文;Y·吴;

    申请日2014-12-22

  • 分类号H04N19/137(20140101);H04N19/176(20140101);H04N19/513(20140101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人罗婷婷

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 00:17:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-05

    授权

    授权

  • 2016-09-14

    实质审查的生效 IPC(主分类):H04N19/137 申请日:20141222

    实质审查的生效

  • 2016-08-17

    公开

    公开

说明书

背景

工程师使用压缩(也被称为源编码(source coding或source encoding))来降低数字视频的比特率。压缩通过将视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。解压(也被称为解码)从压缩的形式中重构原始信息的某版本。“编解码器”是编码器/解码器系统。

在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-T H.261、H.262(MPEG-2或ISO/IEC 13818-2)、H.263和H.264(MPEG-4AVC或ISO/IEC14496-10)标准、MPEG-1(ISO/IEC 11172 1 172-2)和MPEG-4视觉(ISO/IEC14496-2)标准以及SMPTE 421M(VC-1)标准。最近,HEVC标准(ITU-T H.265或ISO/IEC 23008-2)已被批准。当前,正在开发(例如,针对可缩放视频编码/解码、针对在样本比特深度或色度采样率方面具有较高保真度的视频的编码/解码、或针对多视图编码/解码)HEVC标准的扩展。视频编解码器标准通常定义针对经编码的视频比特流的句法的选项,从而详述当在编码和解码时使用特定特征时该比特流中的参数。在许多情况下,视频编解码器标准还提供关于解码器应当执行以在解码时取得一致的结果的解码操作的细节。除了编解码器标准外,各种专用编解码器格式定义针对经编码的视频比特流的句法的其他选项以及相应的解码操作。

帧内块复制(“BC”)是H.265/HEVC扩展的处于开发中的预测模式。对于帧内BC预测模式,图片的当前块的样本值是使用同一图片中的先前重构的样本值来预测的。块向量(“BV”)指示从当前块到图片的包括用于预测的先前重构的样本值的区域的位移。BV被信号化在比特流中。帧内BC预测是一种形式的图片内预测——针对图片的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。

如当前在HEVC标准中的草稿扩展中规定并在针对HEVC标准的草稿扩展的某一参考软件中实现的,帧内BC预测模式具有若干问题。例如,有关如何使用帧内BC预测的编码器侧判定没有被有效作出。作为另一示例,BV值在许多场景中都没有被高效地信号化。

概述

概括而言,详细的描述呈现了帧内块复制(“BC”)预测模式的编码器侧操作方面的创新。例如,这些创新中的一些涉及在块向量(“BV”)估计期间估计当前块的重叠区域内的经重构样本值的方式。其他创新涉及在编码或解码期间使用“乒乓”方法对BV值的预测,其中在预测块的BV值时,编码器或解码器在候选BV值对之间进行选择。

根据本文中描述的创新的一个方面,编码器或解码器处理当前图片的编码单元(“CU”),其中CU具有四个预测单元(“PU”)。一般来说,CU是用于编码和解码的目的的一个或多个块的集合,并且这些PU中的每一PU是CU内用于信号化预测信息和/或预测处理的目的的一个或多个块的集合。对于四个PU中的每一PU,编码器或解码器:(1)使用候选BV值对中的一个候选BV值来预测BV值,其中标志值指示在候选BV值对之间的选择,以及(2)使用预测的BV值来处理该PU的BV值。对于CU中的不同PU而言,候选BV值对可以是不同的。例如,对于第一PU,候选BV值对包括第一初始候选BV值(被标记为BVinit_0)和第二初始候选BV值(被标记为BVinit_1)。对于第二PU,候选BV值对包括第一PU的BV值和BVinit_0。对于第三PU,候选BV值对包括针对当前CU的第一和第二PU的BV值。最后,对于第四PU,候选BV值对包括针对当前CU的第二和第三PU的BV值。然而,对于当前图片的后续CU,候选BV值对包括针对当前CU的第一和第二PU的BV值(即使针对当前CU的第一和第二PU的BV值在针对当前CU的第三和第四PU的BV值之前被处理)。

根据本文中描述的创新的另一方面,编码器或解码器处理当前图片的多个CU。这些CU中的至少一个CU具有单个PU,并且这些CU中的至少一个CU具有多个PU。对于多个CU中的给定CU,如果给定CU具有单个PU,则编码器或解码器(1)使用候选BV值对(包括存储在第一BV缓冲器中的第一初始候选BV值和存储在第二BV缓冲器中的第二初始候选BV值)中的一个候选BV值来预测BV值,其中标志值指示候选BV值对之间的选择,以及(2)使用预测的BV值来处理单个PU的BV值。通过这么做,编码器或解码器取决于PU的BV值是否等于存储在第一BV缓冲器中的BV值来选择性地更新第一BV缓冲器和第二BV缓冲器。

否则(给定CU具有多个PU),对于这些PU中的每一PU,编码器或解码器(1)使用候选BV值对中的一个候选BV值来预测BV值,其中标志值指示在候选BV值对之间的选择,以及(2)使用预测的BV值来处理该PU的BV值。候选BV值对对于不同的PU而言可以是不同的。如果该PU为给定CU中的第一或第二PU,编码器或解码器取决于PU的BV值是否等于存储在第一BV缓冲器中的BV值来选择性地更新第一BV缓冲器和第二BV缓冲器。对于给定CU中的第三PU或第四PU,编码器跳过更新PV缓冲器。

根据本文中描述的创新的另一方面,编码器估计在图片的当前块的重叠区域内的经重构样本值。当前块具有多个更小的块。重叠区域覆盖当前块中处于多个更小的块中的至少一个更小的块的潜在帧内预测区域中的部分。编码器随后执行BV估计来确定当前块的BV值。BV估计使用在当前块的重叠区域内的估计出的经重构样本值中的至少一些。

针对BV预测和帧内BC预测模式的编码器侧选项的创新可以被实现为方法的一部分、被适配成执行该方法的计算系统的一部分或存储用于使计算设备执行该方法的计算机可执行指令的有形计算机可读介质的一部分。各创新可以结合地或分开地使用。

参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。

附图简述

图1是其中可实现所描述的一些实施例的示例计算系统的示图。

图2a和2b是其中可实现所描述的一些实施例的示例网络环境的示图。

图3是结合其可实现所描述的一些实施例的示例编码器系统的示图。

图4是结合其可实现所描述的一些实施例的示例解码器系统的示图。

图5a和5b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。

图6是示出结合其可实现所描述的一些实施例的示例视频解码器的示图。

图7是示出针对图片的块的帧内BC预测的示图。

图8是示出针对BV值的搜索范围的示例约束的示图。

图9是示出用于采用帧内BC预测模式来进行编码的通用技术的流程图,其中该帧内BC预测模式受制于针对BV值的选择的一个或多个约束。

图10是示出对图片的块的示例z-扫描次序的示图。

图11是示出BV缓冲器中的候选BV值的示图,并且图12是示出另一数据结构中的候选BV值的示图。

图13是示出根据示例乒乓方法对2Nx2N CU的2Nx2N PU的BV预测的示例的示图。

图14是示出根据示例乒乓方法的对2Nx2N CU的NxN PU的BV预测的示例的示图。

图15是示出根据示例乒乓方法的对2Nx2N CU的Nx2N PU或2NxN PU的BV预测的示例的示图。

图16是根据示例乒乓方法的用于用多个PU来预测CU的BV值的示例技术的流程图。

图17是示出根据示例乒乓方法的用于预测CU的BV值的示例技术的流程图。

图18是示出用于在BV估计期间选择性地将各块合并成较大的块的通用技术的流程图。

图19是示出在BV估计期间选择性地将各块合并成较大的块的优点的示图。

图20是示出用于为块并发地执行BV估计和作出块拆分判定的通用技术的流程图。

图21是示出用于为块并发地评估候选BV值以及块拆分判定的示例技术的流程图。

图22a和22b是示出在BV估计期间当前块的重叠区域的示图。

图23是示出编码器用来估计重叠区域内的经重构样本值的BV估计的示例技术的流程图。

图24是示出在BV估计期间具有采用YUV 4:2:2格式的视频的最小变换尺寸的重叠区域的示图。

详细描述

该详细描述呈现了编码和解码期间的块向量(“BV”)预测方面以及编码期间对帧内块复制(“BC”)预测模式的编码器侧判定方面的创新具体地,该详细描述呈现用于在BV估计期间估计在当前块的重叠区域内的样本值的创新。该详细描述还呈现在编码或解码期间使用“乒乓”方法的BV预测的创新,根据此,编码器或解码器在预测块的BV值时在候选BV值对之间进行选择。

虽然在此所述的操作是被适当描述为由视频编码器或视频解码器来执行,但在许多情况中,所述操作可以由另一类型的媒体处理工具(例如图像编码器或图像解码器)来执行。

本文中描述的一些创新是参考专用于HEVC标准的句法元素和操作来示出的。例如,对HEVC标准的草稿版本JCTVC-O1005——即2013年11月的“高效视频编码(HEVC)范围扩展文本规范:第5稿”JCTVC-01005-v3作出参考。本文中描述的各创新还可以被实现为用于其它标准或格式。

更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技术/工具并不解决所有这些问题。

I.示例计算系统。

图1示出了其中可实现所描述的若干创新的合适计算系统(100)的概括示例。计算系统(100)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算系统中实现。

参考图1,计算系统(100)包括一个或多个处理单元(110、115)和存储器(120、125)。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合,可由处理单元存取。存储器(120,125)存储实现用于BV预测和/或在BV估计期间估计当前块的重叠区域内的样本值或者帧内BC预测模式的其他编码器侧选项的一个或多个创新的软件(180),该软件处于适用于由(诸)处理单元执行的计算机可执行指令的形式。

计算系统可具有附加的特征。例如,计算系统(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算系统(100)的各组件互连。通常,操作系统软件(未示出)为在计算系统(100)中执行的其它软件提供操作环境,并协调计算系统(100)的各组件的活动。

有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、DVD或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储器(140)存储实现用于BV预测和/或在BV估计期间估计当前块的重叠区域内的样本值或者帧内BC预测模式的其他编码器侧选项的一个或多个创新的软件(180)的指令。

(诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(诸)输入设备(150)可以是相机、视频卡、TV调谐卡、或接受模拟或数字形式的视频输入的类似设备、或将视频样本读到计算系统(100)中的CD-ROM或CD-RW。(诸)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。

(诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。

各创新可以在计算机可读介质的一般上下文中描述。计算机可读介质是可在计算环境内访问的任何可用有形介质。作为示例而非局限,对于计算系统(100),计算机可读介质包括存储器(120、125)、存储(140)、和以上任意的组合。

各创新可在计算机可执行指令(诸如包括在程序模块中的在计算系统中在目标现实或虚拟处理器上执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。

术语“系统”和“设备”在此被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。

所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的集成电路(例如,诸如ASIC数字信号处理器(“DSP”)之类的ASIC、图像处理单元(“GPU”)、或诸如场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”))来实现。

为了呈现起见,本详细描述使用了如“确定”和“使用”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。如本文中使用的,术语“优化(optimiz*)”(包括诸如optimization和optimizing之类的变形)指代在给定判定范围之下的选项中的选择,并且并不暗示优化的选择是扩展判定范围的“最佳”或“最优”选择。

II.示例网络环境。

图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可包括因特网或另一计算机网络。

在图2a所示的网络环境(201)中,每个实时通信(“RTC”)工具(210)都包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符合HEVC标准(也被称为H.265)、SMPTE 421M标准、ISO/IEC 14496-10标准(也被称为H.264或AVC)、另一标准、或专用格式的变型或扩展的输出,其中相应的解码器(270)接受来自编码器(220)的经编码的数据。双向通信可以是视频会议、视频电话呼叫或其它双方或多方通信场景的部分。虽然,图2a中的网络环境(201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或更多个实时通信工具(210)。

实时通信工具(210)管理编码器(220)作出的编码。图3示出可以被包括在实时通信工具(210)中的示例编码器系统(300)。替换地,实时通信工具(210)使用另一编码器系统。实时通信工具(210)还管理解码器(270)作出的解码。图4示出可以被包括在实时通信工具(210)中的示例解码器系统(400)。替换地,实时通信工具(210)使用另一解码器系统。

在图2b中示出的网络环境(202)中,编码工具(212)包括编码供递送给多个回放工具(214)的视频的编码器(220),此多个回放工具(214)包括解码器(270)。单向通信可被提供用于视频监视系统、web相机监视系统、远程桌面会议演示或在其中编码视频并将视频从一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两个回放工具(214),但该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具(214)接收该流、缓冲所接收的经编码数据达合适的时间段并开始解码和回放。

图3示出可以被包括在编码工具(212)中的示例编码器系统(300)。替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。图4示出可以被包括在回放工具(214)中的示例解码器系统(400)。替换地,回放工具(214)使用另一解码器系统。回放工具(214)还可以包括用于管理与一个或多个编码工具(212)的连接的客户机侧控制器逻辑。

III.示例编码器系统。

图3是结合其可实现所描述的一些实施例的示例编码器系统(300)的框图。编码器系统(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码模式、转码模式和用于从文件或流中产生供回放的媒体的较高等待时间编码模式)操作的通用编码工具,或它可以是适用于一种这样的编码模式的专用编码工具。编码器系统(300)可以被实现为操作系统模块、应用库的部分、独立的应用。总体上,编码器系统(300)从视频源(310)接收源视频帧序列(311)并产生经编码数据作为到信道(390)的输出。输出到信道的经编码的数据可包括使用帧内BC预测模式来编码的内容。

视频源(310)可以是相机、调谐器卡、存储介质、或其它数字视频源。视频源(310)以例如每秒30帧的帧速率产生视频帧序列。如本文中所使用的,术语“帧”一般指代源、经编码的或经重构的图像数据。对于逐行扫描视频,帧是逐行扫描视频帧。对于隔行视频,在各示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个互补的隔行视频场可以被编码在一起作为单个视频帧或者被编码成两个经分开编码的场。除了指示逐行扫描视频帧或隔行扫描视频帧之外,术语“帧”或“图片”可以指示单个非成对的视频场、互补的成对视频场、表示在给定时间的视频对象的视频对象平面、或较大图像中的感兴趣区域。视频对象平面或区域可以是包括场景的多个对象或区域的较大图像的一部分。

抵达的源帧(311)被存储在包括多个帧缓冲器存储区域(321、322、…、32n)的源帧临时存储器存储区域(320)中。帧缓冲器(321、322等)在源帧存储区域(320)中保持一个源帧。在一个或多个源帧(311)已被存储在帧缓冲器(321、322等)中后,帧选择器(330)从源帧存储区域(320)中选择个体源帧。帧选择器(330)选择帧以供输入到编码器(340)的次序可不同于视频源(310)产生这些帧的次序,例如某些帧的编码可以被按序延迟,从而允许一些更后面的帧被先编码并由此促成时间上向后的预测。在编码器(340)之前,编码器系统(300)可包括预处理器(未示出),该预处理器在编码之前执行对选中的帧(331)的预处理(例如滤波)。预处理可包括将色彩空间转换成主要(例如亮度)和次要(例如偏向红色和偏向蓝色的色度差)分量以及对编码的重采样处理(例如以减少色度分量的空间分辨率)。通常,在编码之前,视频已被转换成诸如YUV的色彩空间,其中亮度(Y)分量的样本值表示明亮度或强度值,而色度(U,V)分量的样本值表示色差值。色度样本值可以被子采样到较低的色度采样率(例如用于YUV 4:2:0格式或YUV 4:2:2),或者色度样本值可以具有与亮度样本值相同的分辨率(例如用于YUV 4:4:4格式)。在YUV 4:2:0格式中,色度分量在水平上被下采样了1/2并且在垂直上被下采样了1/2。在YUV 4:2:2格式中,色度分量在水平上被下采样了1/2。或者,视频可用另一格式(例如,RGB 4:4:4格式)来编码。

编码器(340)编码选中的帧(331)以产生经编码的帧(341)并且还产生存储器管理控制操作(“MMCO”)信号(342)或参考图片集(“RPS”)信息。如果当前帧不是已被编码的第一帧,则在执行其编码处理时,编码器(340)可以使用已经被存储在经解码帧的临时存储器存储区域(360)中的一个或多个先前被编码/解码的帧(369)。这样的存储的经解码帧(369)被用作用于当前源帧(331)的内容的帧间预测的参考帧。MMCO/RPS信息(342)向解码器指示哪些经重构的帧可被用作参考帧,并且因此应该被存储在帧存储区域中。

一般来说,编码器(340)包括执行编码任务的多个编码模块,编码任务为诸如分割成小块、帧内预测估计和预测、运动估计和补偿、频率变换、量化和熵编码。由编码器(340)执行的确切操作可以取决于压缩格式而变化。输出的经编码数据的格式可以是HEVC格式(H.265)、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变型或扩展。

编码器(340)可以将帧分割成相同尺寸或不同尺寸的多个小块。例如,编码器(340)沿小块行和小块列来拆分帧,这些小块行和小块列利用帧边界定义在该帧内的小块的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于提供并发处理的选项。帧还可以被组织成一个或多个片,其中一个片可以是整个帧或该帧的区域。片可以独立于帧中的其它片编码,这改善了错误复原性。出于编码和解码的目的,片或小块的内容被进一步分割成块或其它样本值集。

对于根据HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度采样值,并且对应的色度采样值被组织为两个色度CTB。CTU(及其CTB)的尺寸由编码器来选择,并且可例如为64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB”)和两个对应的色度CB。例如,具有64x64亮度CTB和两个64x64色度CTB(YUV 4:4:4格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个32x32色度CB,并且每个CU可能被进一步拆分成更小的CU。或者,作为另一示例,具有64x64亮度CTB和两个32x32色度CTB(YUV 4:2:0格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个16x16色度CB,并且每个CU可能被进一步拆分成更小的CU。CU的最小允许尺寸(例如8×8、16×16)可被信号化在比特流中。

通常,CU具有诸如帧间或帧内之类的预测模式。出于信号化预测信息(例如预测模式细节、移位值等)和/或预测处理的目的,CU包括一个或多个预测单元。预测单元(“PU”)具有亮度预测块(“PB”)和两个对应的色度PB。对于帧内预测的CU,PU与CU具有相同的尺寸,除非CU具有最小尺寸(例如8×8)。在那个情况下,CU可被拆分成四个更小的PU(例如,如果最小CU尺寸为8x8,则每个PU为4x4),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。在帧内预测的CU中的PU可以包含单个TU(尺寸与PU相同)或多个TU。如本文中所使用的,术语“块”可以指示CB、PB、TB或某些其它样本值集,这取决于上下文。编码器决定如何将视频分割成CTU、CU、PU、TU等。

回到图3,编码器根据来自源帧(331)中的其它、先前重构的样本值的预测来表示该帧(331)内编码的块。对于帧内BC预测,图片内估计器估计块相对于其它、先前重构的采样值的块的位移。帧内预测参考区域(或简称帧内预测区域)是帧中用于生成块的BC预测值的样本的区域。帧内预测区域可以用(在BV估计中确定的)块矢量(“BV”)值来指示。对于块的空间内预测,图片内估计器估计相邻的经重构的样本值到该块的外插。图片内估计器可以输出经熵编码的预测信息(例如帧内BC预测的BV值或帧内空间预测的预测模式(方向))。帧内预测预测器应用预测信息来确定帧内预测值。

编码器(340)依据来自参考帧的预测来表示源帧(331)的帧间编码的预测的块。运动估计器估计块相对于一个或多个参考帧(369)的运动。当使用多个参考帧时,这多个参考帧可来自不同的时间方向或相同的时间方向。经运动补偿的预测参考区域是(诸)参考帧中用于生成当前帧中的样本块的经运动补偿的预测值的样本区域。运动估计器输出经熵编码的诸如运动矢量(“MV”)信息之类的运动信息。运动补偿器将MV应用于参考帧(369)以确定用于帧间预测的经运动补偿的预测值。

编码器可以确定在块预测值(帧内或帧间)和对应的原始值之间的差值(如果有的话)。

这些预测残留值将进一步使用频率变换、量化和熵编码来编码。例如,编码器(340)为图片、小块、片和/或视频的其它部分设置量化参数(“QP”)的值,并相应地量化变换系数。编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如MV信息、BV信息、QP值、模式决策、参数选择)。典型的熵编码技术包括指数-Golomb编码、Golomb-Rice编码、算术编码、差分编码、Huffman编码、行程长度编码、可变长度对可变长度(“V2V”)编码、可变长度对固定长度(“V2F”)编码、Lempel-Ziv(“LZ”)编码、字典编码、概率区间划分熵编码(“PIPE”)和上述编码的组合。熵编码器可对不同种类的信息使用不同的编码技术,并可组合地应用多个技术(例如,通过应用Golomb-Rice编码,随后应用算术编码),并可从特定编码技术内的多个码表中进行选择。

自适应去块滤波器可以被包括在编码器(340)中的运动补偿循环内以平滑经解码的帧中的块边界行和/或列上的间断。可替换地或另外地应用其它滤波(诸如去振铃滤波、自适应环路滤波(“ALF”)或样本自适应偏移(“SAO”)滤波,未示出)作为内环路滤波操作。

经编码的帧(341)和MMCO/RPS信息(342)(或与MMCO/RPS信息(342)等价的信息,因为在编码器(340)处已经知道各帧的依赖关系和排序结构)由解码处理仿真器(350)处理。解码处理仿真器(350)实现了解码器的一些功能,例如对任务进行解码以重构参考帧。以与MMCO/RPS信息(342)相一致的方式,解码处理仿真器(350)确定给定的经编码帧(341)是否需要被重构并被存储以供在对要编码的后续帧的帧间预测中用作参考帧。如果经编码的帧(341)需要被存储,则解码处理仿真器(350)对将由解码器进行的解码处理建模,该解码器接收经编码的帧(341)并产生相应的经解码的帧(351)。通过这么做,当编码器(340)已经使用已被存储在经解码帧存储区域(360)中的经解码的帧(369)时,解码处理仿真器(350)还使用来自存储区域(360)的经解码的帧(369)作为解码处理的一部分。

经解码帧临时存储器存储区域(360)包括多个帧缓冲存储区域(361,362,…,36n)。以与MMCO/RPS信息(342)相一致的方式,解码处理仿真器(350)管理存储区域(360)中的内容,以便标识出具有编码器(340)不再需要将其用作参考帧的帧的任何帧缓冲区(361、362等)。在对解码处理进行建模之后,解码处理仿真器(350)在帧缓冲器(361、362等)中存储已经以此方式标识出的新解码的帧(351)。

经编码的帧(341)和MMCO/RPS信息(342)被缓冲在临时的经编码数据区域(370)中。被聚集在经编码数据区域(370)中的经编码数据包含一个或多个图片的经编码数据作为基本经编码视频位流的句法的一部分。在经编码数据区域(370)中被聚集的经编码数据还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一个或多个参数)。

来自临时的经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处理。信道编码器(380)可以分组化和/或复用经聚集的数据以供作为媒体流传输或存储(例如根据媒体程序流或传输流格式,例如ITU-T H.222.0|ISO/IEC 13818-1或因特网实时传输协议格式(例如IETF RFC 3550)),在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以组织经聚集的数据以供存储成文件(例如根据媒体容器格式,诸如ISO/IEC 14496-12),在这种情况中信道编码器(380)可添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。信道编码器(380)或信道(390)还可以包括例如用于前向纠错(“FEC”)编码和模拟信号调制的其它元素(未示出)。

IV.示例解码器系统。

图4是结合其可实现所描述的一些实施例的示例解码器系统(400)的框图。解码器系统(400)可以是能够在多种解码模式(例如针对实时通信的低等待时间解码模式以及针对来自文件或流中的媒体回放的较高等待时间解码模式)中的任一者操作的通用解码工具,或它可以是适用于一种这样的解码模式的专用解码工具。解码器系统(400)可以被实现为操作系统模块、应用库的一部分或独立的应用。总体上,解码器系统(400)从信道(410)接收经编码数据并产生经重构的帧作为针对输出目的地(490)的输出。经编码的数据可包括使用帧内BC预测模式编码的内容。

解码器系统(400)包括信道(410),该信道(410)可以表示存储、通信连接或针对作为输入的经编码数据的另一信道。信道(410)产生已经被信道编码的经编码数据。信道解码器(420)可以处理经编码数据。例如,信道解码器(420)可以(例如根据诸如ITU-T H.222.0|ISO/IEC 13818-1的媒体程序流或传输流格式,或诸如IETF RFC 3550的因特网实时传输协议格式)去分组化和/或去复用已被聚集以供作为媒体流来传输或存储的数据,在这种情况中,信道解码器(420)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信道解码器(420)可以(例如根据诸如ISO/IEC 14496-12的媒体容器格式)来将已被聚集以供作为文件来存储的经编码的视频数据分开,在这种情况中,信道解码器(420)可以解析所添加的作为媒体存储文件的句法的一部分的句法元素。或者,更一般地,信道解码器(420)可以实现一个或多个媒体系统去复用协议或传输协议,在这种情况中,信道解码器(420)可以解析所添加的作为(诸)协议的句法的一部分的句法元素。信道(410)或信道解码器(420)还可以包括例如用于FEC解码和模拟信号解调的其它元素(未示出)。

从信道解码器(420)输出的经编码数据(421)被存储在临时的经编码数据区域(430)中,直到已经接收到足够数量的这样的数据。经编码数据(421)包括经编码的帧(431)和MMCO/RPS信息(432)。在经编码数据区域(430)中的经编码数据(421)包含一个或多个图片的经编码数据作为基本编码的视频比特流的句法的一部分。在经编码数据区域(430)中的经编码数据(421)还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个SEI消息或VUI消息中的一个或多个参数)。

一般来说,经编码数据区域(430)临时存储经编码数据(421),直到这样的经编码数据(421)被解码器(450)使用。此时,经编码帧(431)和MMCO/RPS信息(432)的经编码数据被从经编码数据区域(430)传输到解码器(450)。当解码继续时,新的经编码数据被添加到经编码数据区域(430)并且保留在经编码数据区域(430)中的最旧的经编码数据被传输到解码器(450)。

解码器(450)解码经编码帧(431)以产生相应的经解码帧(451)。在适当时,当执行其解码处理时,解码器(450)可以将一个或多个先前解码的帧(469)用作帧间预测的参考帧。解码器(450)从经解码帧临时存储器存储区域(460)中读取这样的先前解码的帧(469)。通常,解码器(450)包括执行诸如熵解码、帧内预测、运动补偿帧间预测、逆量化、逆频率变换和小块合并之类的解码任务的多个解码模块。由解码器(450)执行的确切操作可以取决于压缩格式而变化。

例如,解码器(450)接收经压缩的帧或帧序列的经编码数据,并产生包括经解码的帧(451)的输出。在解码器(450)中,缓冲器接收针对经压缩的帧的经编码数据,并在适当时,使得接收到的经编码数据对熵解码器可用。熵解码器对经熵编码的量化数据以及经熵编码的辅助信息进行熵解码,通常应用编码器中执行的熵编码的逆来进行熵解码。运动补偿器将运动信息应用于一个或多个参考帧以形成针对正被重构的帧的任何帧间编码块的经运动补偿的预测值。帧内预测模块可从相邻的、先前重构的样本值中空间地预测当前块的样本值,或者对于帧内BC预测,使用帧中的帧内预测区域的先前重构的样本值来预测当前块的样本值。帧内预测区域可用BV值来指示。解码器(450)还重构预测残留值。逆量化器对经熵解码的数据进行逆量化。例如,解码器(450)基于比特流中的句法元素来设置图片、小块、片和/或其它视频部分的QP值,并相应地对变换系数进行逆量化。逆频率变换器将量化的频域数据转换成空间域数据。对于帧间预测的块,解码器(450)将重构的预测残留值与经运动补偿的预测值组合。解码器(450)可以类似地将预测残留值与来自帧内预测的预测值相组合。自适应去块滤波器被包括在视频解码器(450)中的运动补偿环路内以平滑经解码的帧(451)中的块边界行和/或列上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波、ALF或SAO滤波;未示出)作为内环路滤波操作。

经解码帧临时存储器存储区域(460)包括多个帧缓冲器存储区域(461、462、…、46n)。经解码帧存储区域(460)是经解码图片缓冲区的一个示例。解码器(450)使用MMCO/PS信息(432)来标识该解码器可将经解码帧(451)存储在其中的帧缓冲器(461、462等)。解码器(450)将经解码的帧(451)存储在那个帧缓冲器中。

输出序列发生器(480)标识按输出次序将产生的下一帧何时可在经编码帧存储区域(460)中获得。当按输出顺序将产生的下一帧(481)可在经解码帧存储区域(460)中获得时,输出序列发生器(480)读取该下一帧并将其输出到输出目的地(490)(例如显示器)。一般来说,输出序列发生器(480)将帧从经解码帧存储区域(460)中输出的次序可以与解码器(450)解码这些帧的次序不同。

V.示例视频编码器。

图5a和5b是可结合其实现所描述的一些实施例的通用视频编码器(500)的框图。编码器(500)接收包括当前图片的视频图片序列作为输入视频信号(505)并在经编码视频位流(595)中产生经编码数据作为输出。

编码器(500)是基于块的并使用取决于实现的块格式。块还可在不同的阶段上被进一步细分,例如在预测、频率变换和/或熵编码阶段。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块以用于编码和解码。在针对HEVC标准的编码的实现中,编码器将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。

编码器(500)使用图片内编码和/或图片间编码来压缩图片。编码器(500)的许多组件被用于图片内编码和图片间编码两者。由这些组件执行的确切操作可取决于所压缩的信息的类型而变化。

小块化模块(510)可选地将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(510)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。

通用编码控件(520)接收输入视频信号(505)的图片以及来自编码器(500)的各个模块的反馈(未示出)。整体上,通用编码控件(520)将控制信号(未示出)提供给其它模块(例如小块化模块(510)、变换器/缩放器/量化器(530)、缩放器/逆变换器(535)、图片内估计器(540)、运动估计器(550)以及帧内/帧间切换)以设置和改变编码期间的编码参数。特别是,通用编码控件(520)可以决定在编码期间是否和如何使用帧内BC预测。通用编码控件(520)还可以估计编码期间的中间结果,例如执行速率-失真分析来估计。通用编码控件(520)产生指示在编码期间所做出的决定的通用控制数据(522),使得对应的解码器可以作出一致的决定。通用控制数据(522)被提供给头部格式化器/熵编码器(590)。

如果使用图片间预测来预测当前的图片,运动估计器(550)相对于一个或多个参考图片估计输入视频信号(505)的当前图片的采样值的块的运动。经解码的图片缓冲器(570)缓冲一个或多个经重构的先前编码的图片以供用作参考图片。当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。运动估计器(550)产生诸如MV数据、合并模式索引值和参考图片选择数据之类的辅助信息运动数据(552)。运动数据(552)被提供给头部格式化器/熵编码器(590)以及运动补偿器(555)。

运动补偿器(555)将MV应用于来自经解码的图片缓冲器(570)的(诸)经重构的参考图片。运动补偿器(555)产生针对当前图片的经运动补偿的预测。

在编码器(500)内的分开的路径中,图片内估计器(540)确定如何执行对输入视频信号(505)的当前图片的样本值块的图片内预测。当前图片可全部或部分使用图片内编码来编码。对于帧内空间预测,图片内估计器(540)使用当前图片的重构(538)的值来确定如何从当前图片的邻近的、先前重构的样本值中空间地预测当前图片的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内估计器(540)估计当前块的样本值到当前图片内的不同候选区域的位移。BV值可使用BV预测的乒乓方法来预测,如以下所描述的。对于帧内BC预测,帧内预测估计器(540)可包含使用以下描述的一个或多个约束的BV选择过程,并且它可出于BV估计的目的估计在当前块的重叠区域中的重构样本值。

图片内估计器(540)产生辅助信息帧内预测数据(542),诸如指示帧内预测使用空间预测还是帧内BC预测的信息(例如,每帧内块的标志值)、预测模式方向(针对帧内空间预测的情况)、以及BV值(针对帧内BC预测的情况)。图片内预测数据(542)被提供给头部格式化器/熵编码器(590)以及图片内预测器(545)。

根据帧内预测数据(542),图片内预测器(545)在空间上从当前图片的邻近的先前重构的样本值中预测当前图片的当前块的样本值。或者,对于帧内BC预测,图片内预测器(545)使用帧内预测区域的先前重构的样本值来预测当前块的样本值,帧内预测区域由针对当前块的BV值指示。当图片的色度数据具有与亮度数据相同的分辨率时(例如,当格式为YUV 4:4:4格式或RGB 4:4:4格式时),对色度块应用的BV值可与对亮度块应用的BV值相同。另一方面,当图片的色度数据相对于亮度数据而言具有降低的分辨率时(例如,当格式为YUV 4:2:0格式或YUV4:2:2格式时),对色度块应用的BV值可被缩小并可能被四舍五入以对色度分辨率方面的差异进行调整(例如,对于YUV 4:2:0格式,通过将BV值的垂直和水平分量除以2并且将其截短或四舍五入成整数值来调整;对于YUV 4:2:2,通过将BV值的水平分量除以2并将其截短或四舍五入成整数值来调整)。

帧内/帧间切换选择经运动补偿的预测或图片内预测的值用作给定块的预测(558)。预测(558)的块和输入视频信号(505)的原始当前图片的对应部分之间的差异(如果有的话)提供残留值(518)。在当前图片的重构期间,经重构的残留值与预测(558)组合来从视频信号(505)中产生对原始内容的重构(538)。然而,在有损压缩中,还是从视频信号(505)中丢失了一些信息。

在变换器/缩放器/量化器(530)中,频率变换器将空间域视频数据转换为频域(即频谱、变换)数据。对于基于块的视频编码,频率变换器将离散余弦变换(“DCT”)、其整数近似、或其它类型的前向块变换(例如离散正弦变换或其整数近似)应用于预测残留数据的块(如果预测(558)为空则应用于采样值数据),产生频率变换系数的块。编码器(500)可能还能够指示这样的变换步骤被省略了。缩放器/量化器对变换系数进行缩放和量化。例如,量化器用量化步骤尺寸将死区标量量化应用于频域数据,该量化步骤尺寸在逐图片的基础上、逐小块的基础上、逐片的基础上、逐块的基础上、因频率而异的基础上或在其他基础上变化。。经量化的变换系数数据(532)被提供给头部格式化器/熵编码器(590)。

在缩放器/逆变换器(535)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。编码器(500)将经重构的残留值与预测(558)的值(例如,经运动补偿的预测值、图片内预测值)组合以形成重构(538)。

对于图片内预测,重构(538)的值可以被馈送回图片内估计器(540)和图片内预测器(545)。同样,重构(538)的值可以被用于对后续图片的经运动补偿的预测。重构(538)的值可被进一步滤波。对于视频信号(505)的给定图片,滤波控件(560)确定如何对重构(538)的值执行去块滤波和SAO滤波。滤波控件(560)生成滤波控制数据(562),它被提供给头部格式化器/熵编码器(590)和合并器/(诸)滤波器(565)。

在合并器/(诸)滤波器(565)中,编码器(500)将来自不同小块的内容合并到图片的经重构版本中。编码器(500)根据滤波器控制数据(562)选择性地执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或ALF;未示出)。取决于编码器(500)的设置,小块边界可以被选择性地滤波或根本不被滤波,并且编码器(500)可以在经编码的位流内提供指示是否应用这样的滤波的句法。经解码的图片缓冲器(570)缓冲经重构的当前图片以供在后续的经运动补偿的预测中使用。

头部格式化器/熵编码器(590)对通用控制数据(522)、经量化的变换系数数据(532)、图片内预测数据(542)、运动数据(552)以及滤波器控制数据(562)进行格式化和/或熵编码。例如,头部格式化器/熵编码器(590)使用上下文自适应二进制算法编码来对各句法元素(诸如BV值的句法元素)进行熵编码。头部格式化器/熵编码器(590)在对BV值进行编码时可使用用于BV预测的乒乓方法,如以下所描述的。

头部格式化器/熵编码器(590)在经编码的视频位流(595)中提供经编码数据。经编码的视频比特流(595)的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变体或扩展。

取决于所需的压缩的实现和类型,编码器的模块可被添加、省略、拆分成多个模块、与其它模块组合、和/或用相似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的编码器执行一个或多个所描述的技术。编码器的具体实施例通常使用编码器(500)的变型或补充版本。所示的编码器(500)内的各模块之间的关系指示了信息在编码器中的一般流动;为简明起见,未示出其它关系。

VI.示例视频解码器。

图6是结合其可实现所描述的一些实施例的通用解码器(600)的框图。解码器(600)接收经编码的视频比特流(605)中的经编码数据并产生包括经重构视频(695)的图片的输出。经编码的视频比特流(605)的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变体或扩展。

解码器(600)是基于块的并使用取决于实现的块格式。块可以在不同的阶段被进一步细分。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块。在针对HEVC标准的解码实现中,将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。

解码器(600)使用图片内解码和/或图片间解码来对图片进行解压缩。解码器(600)的许多组件被用于图片内解码和图片间解码这两者。由这些组件执行的确切操作可以取决于正被解压缩的信息的类型而变化。

缓冲器接收经编码的视频比特流(605)中的经编码数据,并使得接收到的经编码数据可用于解析器/熵解码器(610)。解析器/熵解码器(610)通常应用在编码器(500)中执行的熵编码的逆(例如上下文自适应二进制算术解码)对经熵编码的数据进行熵解码。作为解析和熵解码的结果,解析器/熵解码器(610)产生通用控制数据(622)、经量化的变换系数数据(632)、图片内预测数据(642)、运动数据(652)以及滤波器控制数据(662)。具体地,对于帧内预测数据(642),解析器/熵解码器(610)例如使用上下文自适应二进制算术解码来对BV值的句法元素进行熵解码。解析器/熵解码器(610)在对BV值进行解码时可使用用于BV预测的乒乓方法,如以下所描述的。

通用解码控件(620)接收通用控制数据(622)并将控制信号(未示出)提供给其它模块(例如缩放器/逆变换器(635)、图片内预测器(645)、运动补偿器(655)以及帧内/帧间切换)以设置和改变解码期间的解码参数。

如果当前图片是使用图片间预测来预测的,则运动补偿器(655)接收运动数据(652),例如MV数据、参考图片选择数据以及合并模式索引值。运动补偿器(655)将MV应用于来自经解码的图片缓冲器(670)的(诸)经重构的参考图片。运动补偿器(655)产生针对当前图片中的帧间编码块的运动补偿的预测。经解码图片缓冲器(670)存储一个或多个先前重构的图片以供用作参考图片。

在解码器(600)内的分开路径中,帧内预测预测器(645)接收帧内预测数据(642),诸如指示帧内预测是使用空间预测还是帧内BC预测的信息(例如,每个帧内块的标记值)、预测模式方向(针对帧内空间预测的情况)、和BV值(针对帧内BC预测的情况)。对于帧内空间预测,根据预测模式数据使用当前图片的重构(638)的值,图片内预测器(645)从当前图片的相邻的、先前重构的样本值中空间地预测当前图片的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内预测器(645)使用图片内预测区域的先前重构的样本值来预测当前块的样本值,图片内预测区域的先前重构的样本值由针对当前块的BV值来指示。

帧内/帧间切换选择经运动补偿的预测或图片内预测的值用作给定块的预测(658)。例如,当遵循HEVC句法时,可以基于为图片中的CU编码的句法元素来控制图片内/图片间切换,该CU可以包括图片内预测的CU和图片间预测的CU。解码器(600)将预测(658)与重构的残留值组合以产生来自视频信号的内容的重构(638)。

为了重构残留值,缩放器/逆变换器(635)接收并处理经量化的变换系数数据(632)。在缩放器/逆变换器(635)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。例如,逆频率变换器将逆块变换应用到频率变换系数,从而产生样本值数据或预测残留数据。逆频率变换可以是逆DCT、其整数近似、或另一种类型的逆频率变换(例如逆离散正弦变换或其整数近似)。

对于图片内预测,重构(638)的值可以被馈送回图片内预测器(645)。对于图片间预测,重构(638)的值可以被进一步滤波。在合并器/(诸)滤波器(665)中,解码器(600)将来自不同小块的内容合并到图片的经重构版本中。解码器(600)根据滤波器控制数据(662)和滤波自适应规则来执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或ALF;未示出)。小块边界可以被选择性地滤波或根本不滤波,这取决于解码器(600)的设置或经编码的比特流数据内的句法指示。经解码的图片缓冲器(670)缓冲经重构的当前图片以供在后续的经运动补偿的预测中使用。

解码器(600)还可包括后处理滤波器。后处理滤波器可以包括去振铃滤波、自适应维纳滤波、膜颗粒再现滤波、SAO滤波或另一种类型的滤波。

取决于所希望的解压缩的实现和类型,解码器的模块可以被添加、省略、拆分成多个模块、与其他模块组合和/或用类似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的解码器执行一个或多个所描述的技术。解码器的具体实施例通常使用解码器(600)的变型或补充版本。所示的解码器(600)内的模块之间的关系指示信息在解码器中的一般流动;为简明起见,未示出其它关系。

VII.帧内块复制预测模式。

本章节呈现帧内块复制(“BC”)预测模式的各特征。一些特征涉及选择块向量(“BV”)值,而其他特征涉及对BV值的编码/解码。这些特征可促成从编码和解码的码率失真性能和/或计算效率方面来看更有效的帧内BC预测。具体地,帧内BC预测可在编码诸如屏幕捕捉内容之类的某种“人工”创建的视频内容时改善速率-失真性能。屏幕捕捉内容典型地包括重复的结构(例如图形、文本字符),其为帧内BC预测提供了改善性能的机会。屏幕捕捉内容通常是用具有高色度采样分辨率的格式(例如YUV 4:4:4或RGB 4:4:4)来编码的,但是它也可以用具有较低色度采样分辨率的格式(例如YUV 4:2:0、YUV 4:2:2)来编码。

A.帧内BC预测模式-介绍。

对于帧内BC预测模式,图片的当前块的样本值是使用同一图片中的样本值来预测的。BV指示从当前块到图片的包括用于预测的样本值的区域的位移。通常,用于预测的样本值是先前重构的样本值。BV被信号化在比特流中。帧内BC预测是一种形式的图片内预测——针对图片的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。

图7示出针对当前帧(710)的当前块(730)的帧内BC预测。当前块可以是编码单元(“CU”)的编码块(“CB”)、预测单元(“PU”)的预测块(“PB”)、变换单元(“TU”)的变换块(“TB”)或其它块。当前块的尺寸可以是64×64、32×32、16×16、8×8或某个其它尺寸。更一般地,当前块的尺寸为m×n,其中m和n中的每一者都是整数,并且其中m和n可彼此相等或可具有不同的值。替换地,当前块可具有某一其他形状(例如,经编码视频对象的具有非矩形形状的区域)。

BV(740)指示当前块(730)到图片的包括用于预测的样本值的区域(750)的位移(或偏移)。假设当前块的左上位置是在当前帧的位置(x0,y0)处,并假设帧内预测区域的左上位置在当前帧的位置(x1,y1)处。BV指示位移(x1-x0,y1-y0)。例如,如果当前块的左上位置在位置(320,256)处,并且帧内预测区域的左上位置在位置(295,270)处,则BV值为(-25,14)。在本示例中,负水平位移指示在当前块的左边的位置,而负垂直位移指示在当前块之上的位置。

在一些示例实现中,帧内预测区域(750)被约束到在与当前块(730)相同的片或小块内。这样的帧内BC预测不使用在其它片或小块中的采样值。帧内预测区域(750)的位置可受制于一个或多个其它约束(例如,对于搜索范围的约束,与对帧间编码的块的重构的采样值的使用有关的约束)。

具有帧内BC预测的预测模式的块可以是CB、PB或其它块。当块是CB时,可以在CU级上用信号通知块的BV值(而CU中的其它CB使用相同的BV或其经缩放的版本)。或者,当块是PB时,可以在PU级上用信号通知块的BV值(而PU中的其它PB使用相同的BV或其经缩放的版本)。更一般地,在块的适当的句法级上用信道通知帧内-BC预测块的BV。

根据帧内BC预测模式,预测的块复制操作可以在CB级(当根据CB信号化BV时)或PB(当根据PB信号化BV时)被执行。例如,假设16×16CB具有单个16×16PB。(PB的)BV被应用于块复制16×16区域。当帧内预测区域被约束为不与正被预测的16×16块重叠时,BV在水平或垂直上具有至少16的幅值(绝对值)。

替换地,即使当为PB或CB信号化BV时,可以在PB或CB内的TB级执行块复制操作。在这种方式中,BV,就像应用于TB一样,可参考相同PB或CB中的其它TB的位置。例如,假设16×16CB具有单个16×16PB,但是出于残留编码/解码的目的被拆分成十六个4×4TB。(PB的)BV被应用以按照光栅扫描次序对第一TB的4×4区域进行块复制,随后同一BV被应用以按照光栅扫描次序对第二TB的4×4区域进行块复制,依此类推。在将残留值与对那些之前重构的TB的预测值组合之后,用于TB的BC操作中的4×4区域可包括在同一CB中之前被重构的TB中的位置。(BV仍然不参考正被预测的同一TB中的位置。)在TB级应用BC操作促进了对于具有相对小的幅值的BV的使用。

对于CU的色度块的帧内BC预测操作一般对应于对于CU的亮度块的帧内BC预测操作。一般来说,色度PB和色度TB的分割直接对应于CU中亮度PB和亮度TB的分割。当视频的格式是YUV 4:4:4时,色度PB和TB的大小与对应的亮度PB和TB的大小匹配。当视频的格式是YUV 4:2:0时,色度PB和TB的宽度和高度是对应的亮度PB和TB的一半。然而,如果亮度TB具有最小变换尺寸,则使用具有该最小变换尺寸的单个色度TB。当视频的格式是YUV 4:2:2时,色度PB和TB的宽度是对应的亮度PB和TB的一半。

在一些实现中,对于帧内BC预测的CU,对PU中的色度块的帧内BC预测使用与对于PU中的亮度块的帧内BC预测相同的BV值,这通常是当色度数据已减少了相对于亮度数据的分辨率时(例如,当格式是YUV 4:2:0或YUV 4:2:2格式时)在缩放和舍入之后进行的。替代地,可针对PU的亮度块和色度块用信号指示不同的BV值。

在一些实现中,如果PU的亮度块的预测模式是帧内BC预测,则该PU的色度块的预测模式也是帧内BC预测。例如,用信号指示该PU的预测模式。替代地,PU的亮度块或色度块的预测模式可以是帧内BC预测,但不都是帧内BC预测。

B.约束针对帧内BC预测模式的BV搜索。

在一些示例实现中,编码器根据一个或多个约束来限制BV范围。通过限制BV范围,编码和解码期间为了帧内BC预测而进行的快速存储器存取所参考的重构的样本值的区域可被缩小,这有助于得到较低的实现成本。

图8示出了针对BV值的搜索范围的示例约束。除了当前帧(810)的当前块(830),图8还示出了通过两个CTB(820、822)来限定的搜索范围。当前CTB(820)是当前CTU的一部分并且包括当前块(830)。在CTB(822)在其左侧的情况下,当前CTB(820)限定了能够在其中找到当前块(830)的可允许BV的搜索范围。BV(842、844)参考区域位于该搜索范围之外,因此那些BV值(842、844)不被允许。

在一些示例实现中,当前块的BV值的搜索范围是当前CTB和在其左侧的CTB。例如,CTB可具有64x64、32x32或16x16个样本值的大小,这产生128x64、64x32或32x16个样本值的搜索范围。只有在当前CTB和左侧CTB中的样本值被用于当前块的帧内BC预测。这通过对搜索过程进行约束而简化了编码器实现。还通过限制解码器在快速存储器中缓冲的用于帧内预测的样本值的数量而简化了解码器实现。另一约束是帧内预测不能参考来自另一片或小块的样本值。对于具有位于(x0,y0)处的左上位置的当前的块m>sizeY>sizeY的CTB,编码器可如下地为具有水平分量BV[0]和垂直分量BV[1]的二维BV检查这些约束。

·BV[0]≥-((x0%CTBsizeY)+CTBsizeY)

·BV[1]≥-(y0%CTBsizeY)

·位于位置(x0,y0)、(x0+BV[0],y0+BV[1])和(x0+BV[0]+m-1,y0+BV[1]+n-1)处的样本值应当在同一片中。

·位于位置(x0,y0)、(x0+BV[0],y0+BV[1])和(x0+BV[0]+m-1,y0+BV[1]+n-1)处的样本值应当在同一小块中。

图9示出用于采用帧内BC预测模式的编码的技术(900),其中该帧内BC预测模式受制于针对BV值的选择的一个或多个约束。编码器(诸如参考图3或图5a-5b描述的编码器)可执行该技术(900)。

作为开始,编码器确定(910)图片的当前块的BV。当前块可以是CB、PB或其他块。该BV指示到图片内的一区域的位移。在确定BV时,编码器检查一个或多个约束。

根据一个可能的约束,编码器检查用于帧内BC预测的样本值的范围。编码器可检查候选帧内预测区域是否位于当前CTB和一个或多个其它CTB(例如,当前CTB左侧的CTB)所限定的范围内。例如,当BV具有第一分量BV[0]和第二分量BV[1],当前块具有位置(x0,y0)处的左上位置,并且每一个CTB具有宽度CTBwidth和高度CTBheight时,如果BV[0]>=-((x0%CTBwidth)+CTBwidth)且BV[1]>=-(y0%CTBheight),则满足约束。编码器可类似地检查在以下搜索范围内的BV[0]和BV[1]的值的上限:BV[0]<(CTBwidth-m-(x0%CTBwidth))且BV[1]<(CTBheight-n-(y0%CTBheight))。替换地,该搜索范围包括更多或更少的CTB,或者该搜索范围以某种其它方式来定义。

根据另一可能约束,编码器将搜索限制于当前片和小块(即,当前块和区域是图片的不大于1个片和图片的不大于1个小块的一部分)。编码器可检查当前块的左上位置、候选帧内预测区域的左上位置以及候选帧内预测区域的右下位置是否是单个片和单个小块的一部分。例如,如果(x0,y0)、(x0+BV[0],y0+BV[1])和(x0+BV[0]+m-1,y0+BV[1]+n-1)是单个片和单个小块的一部分,则满足约束。

替代地,编码器检查其它和/或附加约束。

编码器使用BV来执行(920)对于当前块的帧内BC预测。例如,编码器对整个当前块执行帧内BC预测。或者,编码器对与当前块相关联的多个块(例如,对于逐TB为基础的多个TB,其中TB与具有该BV的当前PB相关联)执行帧内BC预测。

编码器对BV进行编码(930)。例如,编码器如以下所描述的对BV进行编码(930)。编码器可为另一帧内BC预测模式块重复该技术(900)。

对于帧内BC预测,编码器和解码器使用重构的样本值。未重构的样本值可被呈现作为尚未被编码和重构的图片的部分。为了避免将未重构的样本值用于帧内BC预测,编码器可设置针对可允许的BV值的约束,使得只有真实的、之前被重构的样本值被用于根据BV进行的帧内BC预测。

在一些示例实现中,编码器通过考虑当前块和包含候选帧内预测区域的右下位置的块的z-扫描次序来检查BV值。更具体地,编码器检查包含位置(x0+BV[0]+m-1,y0+BV[1]+n-1)的块的z-扫描次序是否小于包含(x0,y0)的块的z-扫描次序。如果是,则包含帧内预测区域的右下位置的块已经在先前被重构(并且因此具有该帧内预测区域的剩余部分)。BV还满足条件V[0]+m≤0和BV[1]+n≤0中的至少一个,确保帧内预测区域不覆盖当前块。

z-扫描次序遵循分隔图片的顺序指定的块排序。图10示出用于当前块(1030)和可能包括候选BV的帧内预测区域的右下位置的块的示例z-扫描次序(1000)。当前块(1030)可以是CB、PB或其他块。z-扫描次序通常被以在行中从左到右顺序分派给块,在从上到下的连续行中重复。当块被拆分时,可以在被拆分的块内递归地分派z-扫描次序。对于用于HEVC标准的编码/解码的实现,z-扫描次序通过CTB光栅扫描模式(在CTB行中从左到右,从上到下在连续CTB行中重复)从CTB到CTB开始行进。如果CTB被拆分,z-扫描次序遵循在经拆分的CTB内的四叉树的CB的光栅扫描模式。并且,如果CB被拆分(例如,拆成多个CB或拆成多个PB),z-扫描次序遵循在经拆分的CB内的块的光栅扫描模式。

替代地,当帧内BC预测可在逐TB的基础上执行时,编码器和解码器可检查帧内预测区域和当前块(TB)之间的可能重叠,随后使用检查的结果来决定当前TB是否应当被拆分成更小的TB来应用帧内BC预测操作。假设当前TB具有m xn的大小,其中m和n可以彼此相等或可具有不同值。如果BV[0]>-m并且BV[1]>-n,则帧内预测区域与当前的m x n TB重叠,这会产生问题,除非该当前的m xn TB被拆分成更小的TB来应用帧内BC预测操作。因此,如果BV[0]>-m并且BV[1]>-n,则编码器和解码器将当前TB拆分成更小的TB。对于更小的TB检查同一条件(例如,递归地检查),如果对于拆分后的更小的m和n值,还是BV[0]>-m且BV[1]>-n,则这些更小的TB可被进一步拆分。

例如,假设PB的BV是(-9,-5),并且当前TB是32x32的块。编码器和解码器确定-9>-32且-5>-32,这表示帧内预测区域(其左上角位移-9,-5)将与当前的32x32TB重叠。编码器和解码器将该32x32TB拆分成四个16x16TB。对于每一个16x16TB,编码器和解码器确定-9>-16且-5>-16,这表示帧内预测区域(其左上角位移-9,-5)将与当前的16x16TB重叠。编码器和解码器继续将每个16x16TB拆分成四个8x8TB。对于8x8TB,(-9,-5)的BV不是问题,因此8x8TB不被进一步执行拆分。

在这一场景中,当TB由于BV值和TB的大小的缘故而被拆分时,编码器可省略对于标志值的信令,该标志值原本会指示当前TB是否要拆分成更小的TB。编码数据的比特流缺少指导解码器将当前TB拆分成更小TB的标志值。替代地,解码器可根据BV值和TB的大小来推导TB应当被拆分。这可节省原先被花费在指示关于拆分TB的信息的比特。

C.对BV值的编码和解码。

共同地,使用帧内BC预测编码的块的BV值可消费大量的比特。这些BV值可被熵编码以降低比特率。为了进一步降低BV值的比特率,编码器可使用BV值的预测。BV值通常展示出冗余性—给定块的BV值通常与图片中的先前块的BV值相似或甚至相同。对于BV预测,给定块的BV值是使用BV预测值来预测的。给定块的BV值和BV预测值之间的差(或BV差)随后被熵编码。通常,BV差是针对BV值的水平和垂直分量以及BV预测值来计算的。当BV预测工作良好时,BV差具有支持高效熵编码的概率分布。编码器和解码器在对BV值进行编码/解码时可使用基本BV预测和/或合并模式/BV竞争。

对于编码和解码期间的基本BV预测,当前块的BV值可基于一个或多个之前的块的BV值来预测。例如,相邻块(例如,当前块左侧的块)的BV值可被用于确定当前块的BV值的BV预测值。如果当前块的BV值为(-80,-24)并且BV预测值为(-80,-32),则为(0,8)的BV差被熵编码。或者,当前块的BV值的BV预测符可以是多个相邻块(例如,当前块的左侧、上方以及左上的块)的BV值的分量级的中值或平均。

在解码期间,解码器接收BV值的经熵编码的BV差(如果有的话),并对该BV差进行熵解码。解码器还确定BV值的BV预测值。(由解码器确定的BV预测值与由编码器确定的BV预测值相同。)重构的BV差(如果有的话)随后被与BV预测值组合。

当来自先前块的实际BV值不可用时(例如,当确定给定CTU中的第一帧内BC预测的块的BV值时),编码器和解码器可使用默认BV预测值。例如,默认BV预测值可以为(0,0)。或者,默认BV预测值可以为(-W,0)或(-2*W,0),其中W是当前块的宽度。或者,默认BV预测值可以为(0,-H)或(0,-2*H),其中H是当前块的高度。相比于为零值的默认BV预测值,具有非零分量的默认BV预测值往往更接近于当前块的BV值,这导致对BV差的更高效的熵编码。或者,默认BV预测值的分量可具有给定的非零值(例如,8或16)。

在任何情况下,当对当前块而言可能的BV值被约束为落在特定搜索范围内(例如,当前CTB以及在当前CTB左侧的CTB,如在先前章节中描述的)并且BV值无法导致当前块和其帧内预测区域之间的重叠时,在一些情况下,当前块的BV值可仅具有一个可能值。例如,如果(1)当前CTB具有单个CB作为当前块,(2)BV值的搜索范围是当前CTB以及在其左侧的CTB,并且(3)当前块及其帧内预测区域之间的重叠不被允许,则该单个CB的BV值必须具有为(-W,0)的BV值。其他BV值要么参考该搜索范围之外的位置要么参考该当前块之内的位置。在该情况下,编码器可跳过对当前块的BV值(或BV差)的信号化。解码器可检查标识该情况并推断为(-W,0)的BV值的条件,而无需对当前块的任何BV值(或BV差)进行解析和解码。

或者,编码器和解码器在用于空间上与当前块邻近的重构块(例如,当前块左侧的块、当前块上方的块等等)的BV值中确定用于当前块的一个或多个候选BV值。候选BV值还可包括用于时间上与当前块相邻的重构块的一个或多个BV值,其中时间上相邻的块处于另一图片中与当前块对应的位置(例如,同一位置或重叠的位置)。在编码和解码期间,可通过规则确定候选BV值的列表以消除冗余BV值。在编码期间,编码器可信号通知一个或多个句法元素以指示哪个候选BV值被用作为当前块的BV预测符。在一些模式中,该BV预测符可被用作为当前块的BV值,这有效地将当前块的BV值与提供候选BV值的邻居的BV值“合并”。或者,编码器可基于BV值和BV预测符来确定并编码BV差。在解码期间,解码器可接收一个或多个句法元素以指示哪个候选BV值被用作为当前块的BV预测符。在一些模式中,该BV预测符可被用作为当前块的BV值,这有效地将当前块的BV值与提供候选BV值的邻居的BV值“合并”。或者,解码器可接收和解码BV差,该BV差被解码器用来与BV预测符组合以重构BV值。BV“跳过”或BV“直接”模式可被提供,其中(根据规则而选择的)BV预测符被用作为当前块的BV值,其中没有为当前块用信号通知的残留值。以下描述使用乒乓方法的BV预测的示例,其中在预测块的BV值时,编码器或解码器在候选BV值对之间进行选择。

D.组合帧内BC预测的各特征的示例实现。

如所提到的,以上的帧内BC预测的各特征可被分开和单独地使用。或者,以上的帧内BC预测的各特征可被组合使用。

例如,在一个组合的一般遵循HEVC句法的实现中,为PU(其可以是CU或者CU的一部分)用信号通知BV值。PU可包括一个或多个TU。帧内BC预测过程工作在TB级、以逐TB为基础地进行、并且使用所为PU信号通知的BV值。(所有的TB使用相同的BV值,并且对于当前TB的帧内BC预测可使用同一CU中其它早前的TB的重构的样本值。)BV值可使用一个或多个相邻PU的BV值(例如,使用用于BV预测的乒乓方法)来预测。BV值的选择被约束:(a)使得编码器被禁止选择将导致参考位于还未被编码/重构的区域内的任何样本值的BV值(即,当前TB的帧内预测区域的样本值必须在被按照解码/比特流次序位于当前TB之前的其它TB所覆盖的区域中;也就是说,对于给定TB,BV值被约束为参考在该TB之外的区域);(b)以减少解码器中必需的存储器容量(例如,通过将根据BV值的参考约束为处于当前CTB和当前CTB左侧的一个或两个CTB内);以及(c)以禁止根据BV值的参考处于当前片之外、处于当前小块之外、或者处于图片之外。

VIII.块向量预测方面的创新。

根据本文中描述的创新的一个方面,编码器和解码器使用根据”乒乓”方法的块向量(“BV”)预测。具体地,在一些场景中,在对屏幕内容视频进行编码时,用于BV预测的示例乒乓方法改善编码效率。

在示例乒乓方法中,编码器和解码器维持候选BV值对作为状态信息。图11示出BV缓冲器(1100)中可在示例乒乓方法中使用的候选BV值对。在BV缓冲器(1100)中,BV缓冲器0存储第一初始候选BV值,该第一初始候选BV值被标记为BVinit_0。BV缓冲器1存储第二初始候选BV值,该第二初始候选BV值被标记为BVinit_1。一般来说,BV缓冲器0的BV值变量可被标记为PBV0,并且BV缓冲器1的BV值变量可被标记为PBV1。

图12示出了根据示例乒乓方法可存储候选BV值对的另一数据结构(1200)。数据结构(1200)存储第一初始候选BV值,该第一初始候选BV值被标记为BVinit_0并与索引值idx0相关联。第二初始候选BV值(BVinit_1)与数据结构(1200)中的索引值idx1相关联。一般来说,与idx0相关联的BV值变量可被标记为PBV0,并且与idx1相关联的BV值变量可被标记为PBV1。

替换地,编码器和解码器使用另一数据结构来跟踪候选BV值对以用于根据乒乓方法的BV预测。

根据示例乒乓方法,编码器从候选BV值对中选择供对PU的BV值使用的BV预测值。例如,在PU将用所选的候选BV值使用帧内BC预测来编码时,编码器依据某一度量(例如,绝对差之和、均方差)来选择其所参考的帧内预测区域最接近地匹配该PU的候选BV值。或者,当该PU具有将被用于帧内BC预测的BV值(通过BV估计标识出)时,编码器选择最接近地匹配该PU的该BV值的候选BV值。该选择导致最小的BV差,这趋于改善熵编码的效率。

对于BV值,编码器信号化指示候选BV值对中选中的候选BV值的标志值,以便向解码器指示候选BV值对中的哪个候选BV值应当被用作BV预测值。该标志值可被熵编码或信号化为固定长度值。该标志值可被(有条件地)信号化在比特流中作为分开的句法元素,或者该标志值可与另一句法元素联合起来被信号化在比特流中。

当候选BV值对中的每一候选BV值同等地可能为BV预测值时,该标志值可高效地被信号化为固定长度值(例如,1比特),或者以绕过模式使用二进制算术编码(假设这两个可能值同等地可能)。第一值(例如,0)指示对第一候选BV值的选择,并且第二值(例如,1)指示对第二候选BV值的选择。当候选BV值对中的一个候选BV值比另一种更有可能时,标志值也可被信号化成固定长度值,但编码效率可被降低。

当该对中的一个候选BV值更可能被选作BV预测值时,使用基于上下文的算术编码来信号化标志值可能更高效。例如,当编码或解码针对片开始,并随后在编码/解码期间被更新以考虑不同标志值的出现时,标志值的概率内容可被初始化为等于两个可能标志值的概率。在具有针对BV预测值的单独上下文的情况下,标志值可改善编码效率,但由于上下文建模等而增加了编码和解码的复杂性。通常,预期将被更频繁地选择的候选BV值被存储在第一BV缓冲器(例如,BV缓冲器0)中并被指示为具有第一标志值,并且预期将被较不频繁地选择的候选BV值被存储在另一BV缓冲器(例如,BV缓冲器1)中并被指示为具有另一标志值。由此,平均来说,指示第一BV缓冲器的标志值在算术编码中可使用更少数目的分数比特来编码。然而,对于一些内容,更常用的候选BV值可被存储在另一BV缓冲器(例如,BV缓冲器1)中,其中上下文建模考虑BV预测值分布的改变。

解码器解析/解码BV值的标志值,并使用该标志值来确定候选BV值对中的哪个候选BV值是该BV值的BV预测值。解码器使用选中的候选BV值作为BV预测值。

编码器和解码器跟踪并更新哪些BV值在候选BV值对中。在先前的乒乓方法中,当新BV值被产生(或重构)时,该对中的较老的候选BV值(PBV1)被该对中的较新的BV值(PBV0)替换,并且该对中的较新的BV值(PBV0)被刚产生的/重构的BV值(BV)替换。(也就是说,PBV1=PBV0并且PBV0=BV。)随着每一BV值被产生或重构,候选BV值对被更新。

在本文中描述的示例乒乓方法中,编码器和解码器可自动地更新候选BV值对以在某BV值被产生或重构后包括该BV值。然而,这可导致候选BV值对具有两个相同的候选BV值。在该情况下,编码器(在认识到两个候选BV值相同的情况下)可跳过对指示在候选BV值对之间选择的标志值的信号化,并且解码器(在认识到两个候选BV值相同的情况下)可跳过对该标志值的解析,而改为仅使用此相同的候选BV值中的任一者作为BV预测值。

或者,在本文中描述的示例乒乓方法中,编码器和解码器可选择性地更新候选BV值对(和BV缓冲器)以避免具有相同的候选BV值。编码器或解码器仅在新BV值不等于将保持在候选BV值对中的候选BV值时才更新该对。如果新BV值等于将保持在该对中的候选BV值,则编码器或解码器跳过更新操作。例如,编码器或解码器如下选择性地更新候选BV值对(PBV0和PBV1)以包括新BV值BV

if(BV!=PBV0){

PBV1=PBV0;

PBV0=BV

}else{

do nothing(什么也不做);

}

通过测试条件BV!=PBV0,编码器和解码器避免其中PBV0等于PBV1的情况,在该情况下,标志值指示BV预测值被浪费。另一方面,检查该条件增加了BV预测的复杂度,在给定资源要求或依据编码效率方面的增益来证明合理性的情况下,该复杂度可能不是可接受的。

例如,假设PBV0为(-12,0)且PBV1为(-16,0)。如果BV为(-17,0),则(-12,0)替换PBV1的(-16,0),并且(-17,0)替换PBV0的(-12,0)。来自PBV1的先前BV值(-16,0)被丢弃。另一方面,如果BV为(-12,0),则PBV0和PBV1不改变,因为BV匹配PBV0。如果BV匹配PBV1(在该示例中,两者都为(-16,0)),则PBV0和PBV1的次序被高效地切换—(-12,0)替换PBV1的(-16,0),并且(BV的)(-16,0)替换PBV0的(-12,0)。

在本文中描述的示例乒乓方法中,对于具有四个PU的CU,编码器和解码器在更新用于BV预测的候选BV值对时使用不同的模式。在概念上,不同的模式使用对候选BV值对的CU级更新,而不是PU级更新。在完成了针对CU的BV预测后,候选BV值对包括该CU的前两个PU的BV值—BV缓冲器0中的PU1的BV值以及BV缓冲器1中的PU0的BV值。相反,根据先前的乒乓方法,在针对CU的BV预测被完成后,候选BV值对包括该CU的后两个PU的BV值,这后两个PU可以是PU3和PU2。

替换地,编码器和解码器在更新用于BV预测的候选BV值对时可使用不同的模式。如果标志值是例如使用固定长度值来编码的,则编码器和解码器可在用刚产生的或重构的BV值来更新两个BV缓冲器之间“切换”(交替)。通过这种方式,编码器和解码器可使用单个操作来替换较老的候选BV值(而不是将较新的候选BV值移位到较老的候选BV值的位置点,随后再将新的BV值添加到该较新的候选BV值的先前位置点),但编码器和解码器需要跟踪哪个BV缓冲器接着应当被更新。同样,切换可通过干扰上下文自适应二进制算术编码而损害对标志值的编码效率。

当没有实际的BV值可用于用作候选BV值时(例如,在编码或解码CTU的第一CU之前),候选BV值对可被初始化为默认值。例如,两个候选BV值被初始化为(-2W,0),其中W是CU的宽度。或者,候选BV值之一可被初始化为(-2W,0),且另一候选BV值可被初始化为(0,-2H),其中H是CU的高度(并且可以与W相同)。或者,候选BV值可被初始化为另一值,诸如(-W,0)或(0,-H)。或者,出于简化的目的,取代使用依赖于实际CU尺寸的默认值,候选BV值可被初始化成诸如(-8,0)、(-16,0)、(0,-8)或(0,-16)之类的固定值,或者被初始化成被信号化在比特流中的某值。在尺寸为8或16的CU对于帧内BC预测最常见时,这例如可以是合适的。在任何情况下,在BV预测开始后,实际BV值代替候选BV值对中的默认BV值。

在所有以下示例中,除非另外指出,否则BV缓冲器0存储“占优势的”候选BV值,该“占优势的”候选BV值比存储在BV缓冲器1中的另一候选BV值更可能被选择。上下文自适应二进制算术编码可利用较常见的BV预测值标志值的较高概率来改善对标志值的编码效率。

A.针对2Nx2N CU中的2Nx2N PU的示例BV预测。

图13示出根据示例乒乓方法对2Nx2N CU的2Nx2N PU的BV预测的示例。2Nx2N CU包括其BV是使用候选BV值对来预测的单个2Nx2N PU(PU0)。

在图13中,BV缓冲器0最初存储第一初始候选BV值BVinit_0(PBV0),并且BV缓冲器1最初存储第二初始候选BV值BVinit_1(PBV1)。如2Nx2N>

随后如下更新候选BV值对。PBV1被用PBV0代替,且PBV0被用PU0的BV值代替。也就是说,PBV1=PBV0且PBV0=BV PU0。在图13中,BV缓冲器1被更新为存储BVinit_0,且BV缓冲器0被更新为存储PU0的BV值(BVPU0)。替换地,如以上所解释的,编码器或解码器取决于新BV值BV(此处为BVPU0)是否等于PBV0来选择性地更新候选BV值对(以及BV缓冲器)。

B.针对2Nx2N CU中的各NxN PU的示例BV预测。

图14示出根据示例乒乓方法对2Nx2N CU的四个NxN PU的BV预测的示例。2Nx2N CU包括四个NxN PU(PU0、PU1、PU2和PU3),这四个NxN PU的BV值是使用候选BV值对来预测的,该候选BV值对在针对CU的BV预测过程期间被更新。

在图14中,BV缓冲器0最初存储第一初始候选BV值BVinit_0(PBV0),并且BV缓冲器1最初存储第二初始候选BV值BVinit_1(PBV1)。如PU0的标志值所指示的,使用PBV0或PBV1中的任一者来预测第一NxN>PU0)。

随后通过用PBV0替换PBV1,并用PU0的BV值替换PBV0来更新候选BV值对。也就是说,PBV1=PBV0并且PBV0=BVPU0。在图14中,BV缓冲器1被更新为存储BVinit_0,且BV缓冲器0被更新为存储BVPU0。替换地,如以上所解释的,编码器或解码器取决于新BV值BV(此处为BVPU0)是否等于PBV0来选择性地更新候选BV值对(以及BV缓冲器)。

接着,如PU1的标志值所指示的,使用PBV0(在图14中,为其左侧邻居BVPU0)或PBV1(在图14中为BVinit_0)中的任一者来预测第二NxN>PU1)。

随后通过用PBV0替换PBV1,并用PU1的BV值替换PBV0来更新候选BV值对。也就是说,PBV1=PBV0且PBV0=BVPU1。在图14中,BV缓冲器1被更新为存储BVPU0,且BV缓冲器0被更新为存储BVPU1。替换地,如以上所解释的,编码器或解码器取决于新BV值BV(此处为BVPU1)是否等于PBV0来选择性地更新候选BV值对(以及BV缓冲器)。

接着,如PU2的标志值所指示的,使用PBV0(在图14中,为其右上邻居BVPU1)或PBV1(在图14中为其上侧邻居BVPU0)中的任一者来预测第三NxN>PU0(上侧邻居)比BVPU1(右上邻居)更可能为候选。(例如,在编码或解码期间)使用选中的BV预测值来处理PU2的BV值(BVPU2)。然后,BV缓冲器0中的候选BV值(在图14中为BVPU1)以及BV缓冲器1中的候选BV值(在图14中为BVPU0)是未改变的。

最后,如PU3的标志值所指示的,使用被缓冲在另一位置中的PU2的BV值(BVPU2)或PBV1(在图14中,为其上侧邻居BVPU1)来预测第四NxN>PU3)。然后,BV缓冲器0和BV缓冲器1中的候选BV值是未改变的。在图14中,在对该CU的四个NxN>PU1(在BV缓冲器0中)和BVPU0(在BV缓冲器1中)。

相反,根据先前的乒乓方法,对于针对2Nx2N CU的NxN PU的BV预测,当BV值被产生或重构时,BV缓冲器0中的候选BV值被移动到BV缓冲器1,并且刚产生/重构的BV值被存储在BV缓冲器0中。在对2Nx2N CU的四个NxN PU的BV预测的结束处,候选BV值对将为BVPU3(在BV缓冲器0中)和BVPU2(在BV缓冲器1中)。在实践中,先前的乒乓方法存在若干缺点。如果下一CU具有单个2Nx2N>PU0通常将为最佳BV预测值,但当前CU的BVPU0不会被作为候选BV值之一来保留。或者,如果下一CU具有两个Nx2N>PU0和BVPU1通常将分别是下一CU中的PU0和PU1的最佳BV预测值,但当前CU的BVPU0和BVPU1不被作为候选BV值来保留。

然而,根据本文中描述的示例乒乓方法,在针对2Nx2N CU的各NxN PU的BV预测(如图14中所示出的)后,候选BV值对为BVPU1(在BV缓冲器0中)和BVPU0(在BV缓冲器1中)。这保留可能对下一CU的BV预测最有用的候选BV值。

C.针对2Nx2N CU中的各Nx2N PU或2NxN PU的示例BV预测。

图15示出根据示例乒乓方法对2Nx2N CU中的两个Nx2N PU或两个2NxN PU的BV预测的示例。2Nx2N CU包括两个Nx2N PU(左侧的PU0和右侧的PU1)或两个2NxN PU(上侧的PU0和下侧的PU1),这些PU的BV值是使用候选BV值对来预测的,该候选BV值对在针对CU的BV预测过程期间被更新。

在图15中,BV缓冲器0最初存储第一初始候选BV值BVinit_0(PBV0),并且BV缓冲器1最初存储第二初始候选BV值BVinit_1(PBV1)。如PU0的标志值所指示的,使用PBV0或PBV1中的任一者来预测第一PU(PU0)的BV值。(例如,在编码或解码期间)使用选中的BV预测值来处理PU0的BV值(BVPU0)

随后通过用PBV0替换PBV1,并用PU0的BV值替换PBV0来更新候选BV值对。也就是说,PBV1=PBV0并且PBV0=BVPU0。在图15中,BV缓冲器1被更新为存储BVinit_0,且BV缓冲器0被更新为存储BVPU0。替换地,如以上所解释的,编码器或解码器取决于新BV值BV(此处为BVPU0)是否等于PBV0来选择性地更新候选BV值对(以及BV缓冲器)。

接着,如PU1的标志值所指示的,使用PBV0(在图15中,为其邻居BVPU0)或PBV1(在图15中为BVinit_0)中的任一者来预测第二PU(PU1)的BV值。(例如,在编码或解码期间)使用选中的BV预测值来处理PU1的BV值(BVPU1)。

随后通过用PBV0替换PBV1,并用PU1的BV值替换PBV0来更新候选BV值对。也就是说,PBV1=PBV0且PBV0=BVPU1。在图15中,BV缓冲器1被更新为存储BVPU0,且BV缓冲器0被更新为存储BVPU1。替换地,如以上所解释的,编码器或解码器取决于新BV值BV(此处为BVPU1)是否等于PBV0来选择性地更新候选BV值对(以及BV缓冲器)。

D.根据乒乓方法的示例BV预测技术。

图16是根据示例乒乓方法的用于用多个PU来预测CU的BV值的示例技术的流程图。一般来说,CU是用于编码和解码的目的的一个或多个块的集合,并且这些PU中的每一者是CU内用于信号化预测信息和/或预测处理的目的的一个或多个块的集合。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器或其他编码器)可执行技术(1600)。或者,图像解码器或视频解码器(诸如参考图4或图6描述的解码器或其他解码器)可执行技术(1600)。

开始,候选BV值对是第一初始候选BV值BVinit_0(PBV0)和第二初始候选BV值BVinit_1(PBV1),其分别被存储在BV缓冲器0和1中。

对于当前图片的当前CU中的多个PU中的每一PU,编码器或解码器使用候选BV值对中的一个候选BV值来预测(1610)该PU的BV值。标志值指示在候选BV值对之间的选择。对于CU中的不同PU而言,候选BV值对可以是不同的。例如,在当前CU包括四个PU时,对于第一PU,候选BV值对PBV0和PBV1可分别为BVinit_0和BVinit_1。对于第二PU,候选BV值对PBV0和PBV1可分别为第一PU的BV(BVPU0)和BVinit_0。对于第三PU,候选BV值对PBV0和PBV1可分别为第二PU的BV值(BVPU1)和BVPU0。最后,对于第四PU,候选BV值对可以是BVPU1和第三PU的BV值(BVPU2)。

编码器或解码器随后使用PU的预测的BV值来处理(1620)该PU的BV值。例如,在编码期间,编码器使用PU的BV值以及预测的BV值来确定BV差值。或者,在解码期间,解码器至少部分地基于预测的BV值来重构PU的BV值。

BV缓冲器可(取决于新BV值BV是否等于PBV0)被自动地或选择性地更新。例如,(如图14中所示出的),当当前CU包括四个PU时,在针对第一PU(PU0)的BV预测之前,BV缓冲器0存储BVinit_0,且BV缓冲器1存储BVinit_1。在针对第二PU(PU1)的BV预测之前,BV缓冲器0存储BVPU0且BV缓冲器1存储BVinit_1。在针对第三PU(PU2)的BV预测之前,BV缓冲器0存储BVPU1且BV缓冲器1存储BVPU0。在针对PU2的处理之后,BV缓冲器0保留BVPU1,且BV缓冲器1保留BVPU0

在针对当前CU的BV预测之后,在对BV缓冲器的更新已发生时,候选BV值对为当前CU的BVPU1和BVPU0。这些将是针对当前图片的候选CU的BV预测的初始候选BV值。由此,在当前CU包括四个PU时,最终的候选BV值对可包括针对当前CU的第一和第二PU的BV值,即使针对当前CU的第一和第二PU的BV值在针对当前CU的第三和第四PU的BV值之前被处理。

图17示出根据具有对BV缓冲器的选择性更新的示例乒乓方法的用于预测CU的BV值的另一示例技术。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器或其他编码器)可执行技术(1700)。或者,图像解码器或视频解码器(诸如参考图4或图6描述的解码器或其他解码器)可执行技术(1700)。

编码器或解码器处理当前图片的多个CU。例如,编码器将多个CU作为编码的一部分来处理,并将经编码的数据作为比特流的一部分来输出。或者,解码器将多个CU作为解码的一部分来处理,并输出经重构的样本值。多个CU的任何给定CU可包括单个PU或多个PU。

开始,候选BV值对是第一初始候选BV值BVinit_0(PBV0)和第二初始候选BV值BVinit_1(PBV1),其分别被存储在BV缓冲器0和1中。

对于多个CU中的给定CU,编码器或解码器检查(1710)该给定CU具有单个PU还是多个PU。如果给定CU具有单个PU,则编码器或解码器使用候选BV值对PBV0和PBV1(在图17中为BVinit_0和BVinit_1)之一来预测(1720)单个PU的BV值,其中标志值指示在候选BV值对之间的选择。编码器或解码器使用预测的BV值来处理(1730)该单个PU的BV值。编码器或解码器取决于该PU的BV值(BVPU0)是否等于存储在BV缓冲器0中的BV值(BVinit_0)来选择性地更新BV缓冲器0和1。例如,编码器或解码器比较BVPU0和存储在BV缓冲器0中的BV值(BVinit_0)。如果BVPU0不同于存储在BV缓冲器0中的BV值(BVinit_0),则编码器或解码器将来自BV缓冲器0的BV值(BVinit_0)存储在BV缓冲器1中,并将BVPU0存储在BV缓冲器0中。

在处理(1730)之后,在对BV缓冲器的更新已发生后,BV缓冲器0存储单个PU的BV值(BVPU0)并且BV缓冲器1存储BVinit_0。编码器或解码器检查(1740)是否继续该图片中的下一CU。如果如此,则将经缓冲的BV值对当作下一CU的初始候选BV值BVinit_0和BVinit_1

否则,当给定CU具有多个PU时,编码器或解码器执行BV预测,并对给定CU的PU进行处理。对于给定CU中的多个PU中的每一PU,编码器或解码器使用候选BV值对PBV0和PBV1(最初为BVinit_0和BVinit_1,但稍后被更新)之一来预测(1750)该PU的BV值。该PU的标志值指示在候选BV值对之间的选择。编码器或解码器使用预测的BV值来处理(1760)该PU的BV值。如果该PU为给定CU中的第一或第二PU,则编码器或解码器取决于该PU的BV值(BVPUx)是否等于存储在BV缓冲器0中的BV值(PBV0)来选择性地更新BV缓冲器0和BV缓冲器1。例如,编码器或解码器比较BVPUx和PBV0。如果BVPUx不同于PBV0,则编码器或解码器将PBV0存储在BV缓冲器1中,并将BVPUx存储在BV缓冲器0中。

编码器或解码器检查(1770)该PU是否是给定CU中的最后一个PU。如果并非如此,则编码器或解码器继续针对给定CU中的下一PU的BV预测(1750)。例如,这些PU为2Nx2N CU中的四个NxN块、两个Nx2N块或两个2NxN块。

在针对给定CU的最后一个PU的处理(1760)之后,当对BV缓冲器的两个更新已发生时,BV缓冲器0存储给定CU的第二PU的BV值(BVPU1),且BV缓冲器1存储给定CU的第一PU的BV值(BVPU0)。编码器或解码器检查(1740)是否继续该图片中的下一CU。如果如此,则将经缓冲的BV值对BVPU1和BVPU0当作下一CU的初始候选BV值BVinit_0和BVinit_1

IX.帧内块复制预测模式的编码器侧选项。

本章节呈现对于帧内块复制(“BC”)预测的编码器侧选项的各项创新。这些创新中的一些创新涉及并发地执行块向量(“BV”)估计和为块作出块拆分判定。其他创新涉及在BV估计期间选择性地将块合并成更大的块。又一些创新涉及在BV估计期间对在当前块的重叠区域内的样本值的估计。一般来说,这些创新改善了帧内BC预测的编码效率。

作为BV估计的一部分,编码器可使用若干方法中的任一方法。编码器可使用全面搜索,从而评估搜索范围中允许的每一候选BV值。或者,编码器可使用部分搜索,从而评估搜索范围中允许的仅一些候选BV值。例如,编码器可在当前块的预测的BV值(例如,基于一个或多个相邻块的BV值来预测的)处开始部分搜索。在为部分搜索评估了在开始位置处的候选BV值后,编码器可(例如,根据螺旋搜索模式或某一其他模式)评估在距开始位置递增的距离处的一个或多个其他候选BV值。在评估给定候选BV值时,编码器可比较帧内预测区域中的所有样本值和当前块。或者,编码器可评估样本值的子集(即,值被评估的子样本)。在比较帧内预测区域和当前块之间的样本值以确定失真成本时,编码器可计算均方差、差方和、绝对差之和或某一其他失真测量。编码器还可确定与对候选BV值的编码相关联的码率成本(rate cost)。

在编码期间,在各个阶段,编码器可使用其中各选项的码率成本和失真成本被评估的码率失真优化(“RDO”)。一般来说,选项的码率失真成本由D+λR(或R+λD)给出,其中R表示经编码的数据的比特方面的码率成本,D表示使用诸如均方差或感性失真测量之类的度量的失真成本,并且λ是对比失真成本D对码率成本R进行加权的拉格朗日乘数(加权参数的示例)。编码器通常选择给出最小码率失真成本的选项。

A.在BV估计期间将各块选择性地合并到更大的块中。

在BV估计期间,编码器可将各块合并到更大的块中。通过这种方式,编码器可降低用于信号化BV信息的比特数。具体地,当帧内BV预测在逐TB的基础上执行时,编码器可在逐CB的基础上执行BV估计,随后将小CB合并到更大的CB中,这取决于在帧内BV预测期间将CB拆分成更小的TB,以避免TB及其帧内预测区域之间的重叠。

图18示出用于在BV估计期间将块选择性地合并到更大的块中的技术(1800)。该技术(1800)可由诸如参考图3或图5a和5b描述的编码器之类的编码器或由另一编码器来执行。

根据该技术,当编码器使用帧内BC预测来编码图片的数据时,对于具有第一尺寸的多个块中的每一者,编码器使用BV估计来标识(1810)BV值。第一尺寸可以为8x8、16x16、32x32或某一其他尺寸。一般来说,对于具有第一尺寸的块中的每一者,BV估计包括确定候选BV值的成本。该成本可包括码率成本和/或失真成本。标识出的BV值参考不与具有第一尺寸的块重叠的帧内预测区域。

编码器选择性地将这些块中的两个或更多个块合并(1820)到具有大于第一尺寸的第二尺寸的块中。第二尺寸可以为例如16x16、32x32、64x64或某一其他大小。例如,编码器将具有第一尺寸的多个块中的两个或更多个相邻块的BV值进行比较,并且如果比较的BV值是相同的,则将两个或更多个相邻块合并到具有第二尺寸的块中。具有第二尺寸的块被分配相同的BV值。与具有第一尺寸的块不同,该BV值可参考与具有第二尺寸的块重叠的帧内预测区域。

编码器可对另一块重复该技术(1800)。最后,编码器输出图片的经编码的数据。

在一些示例实现中,具有第一尺寸的多个块中的每一者是CB,并且具有第二尺寸的块也是CB。然而,帧内BC预测在逐TB的基础上执行。BV估计可使用针对具有第一尺寸的多个块中的每一者的搜索范围的全面搜索。或者,BV估计可使用针对具有第一尺寸的多个块中的每一者的搜索范围的部分搜索,例如,开始在该块的预测的BV值处,并且可能至少部分地基于已经被评估的候选BV值的成本来终止该部分搜索。

图19示出了在BV估计期间将各块选择性地合并(1900)到更大的块中的优点。在图19中,编号为0、1、2和3的四个块(用浅实线指示出)分别具有参考相应的帧内预测区域0’、1’、2’和3’的BV值。即,BV值参考块0的帧内预测区域0’,参考块1的帧内预测区域1’并以此类推。这些帧内预测区域是用虚线指示出的。块0、1、2或3中没有一个块与其相应的帧内预测区域重叠。然而,包括块0、1、2和3的较大的块(用粗实线示出)确实与其相应的帧内预测区域重叠。如果编码器将对该较大的块执行BV估计,则当帧内预测区域和块之间的重叠被禁止时,编码器将无法将图19中示出的BV值标识为可允许的BV值。相反,当编码器对更小的块0、1、2和3执行BV估计时,编码器为所有四个块标识相同的BV值,并且编码器可将这四个块合并到具有相同BV值的较大的块中。在编码或解码期间,较大的块将被拆分成更小的块,以用于实际的帧内BV预测操作。例如,具有给定尺寸的CB被拆分成更小的TB以用于在逐TB的基础上执行帧内BC预测操作,而在TB及其帧内预测区域之间没有重叠。

B.并发的块向量估计和块拆分判定。

编码器可为当前块并发地执行BV估计和块拆分判定。具体地,当帧内BC预测操作被在逐TB的基础上执行时,编码器可为当前块并发地评估候选BV值和可能的块拆分判定。

图20是示出用于并发地对块执行BV估计和作出块拆分判定的通用技术的流程图。该技术(2000)可由诸如参考图3或图5a和5b中描述的编码器之类的编码器或由另一编码器执行。

在编码器使用帧内BC预测来对图片的数据进行编码时,编码器对当前块的数据进行编码(2010)。作为编码(2010)的一部分,编码器并发地执行BV估计操作和块拆分判定操作。在一些示例实现中,当前块是在尺寸方面对应于TB的CB,并且帧内BC预测在逐TB的基础上被执行。例如,作为编码(2010)的一部分,编码器执行图21中示出的技术(2100)以为当前块并发地评估候选BV值以及可能的块拆分判定。

图21是示出用于为块并发地评估候选BV值以及块拆分判定的示例技术的流程图。该技术(2100)可由诸如参考图3或图5a和5b描述的编码器之类的编码器或由另一编码器来执行。

编码器使用BV估计操作标识(2110)当前块的候选BV值。当前块具有第一尺寸。例如,第一尺寸为8x8、16x16、32x32、64x64或某一其他尺寸。

编码器检查(2120)是否拆分当前块。例如,编码器评估利用当前块的候选BV值的帧内BC预测是否导致当前块和该候选BV值所参考的帧内预测区域之间的重叠。

取决于检查(2120)的结果,编码器选择性地将当前块拆分(2130)成多个块,每一块均具有小于第一尺寸的第二尺寸。例如,第二尺寸为4x4、8x8、16x16、32x32或某一其他尺寸。随后(当前块已经被拆分),编码器对这些更小的块中的每一者重复(2140)技术(2100)。也就是说,对于具有第二尺寸的块中的每一者,编码器对被当作当前块的具有第二尺寸的块重复该标识、评估、选择性地拆分等。

另一方面,如果当前块没有被拆分,则编码器对当前块进行编码(2150),并测量(2160)对当前块进行编码的成本。例如,在编码器对当前块进行编码时,编码器(a)使用帧内BC预测来预测当前块的样本值,(b)使用当前块的预测的样本值和样本值来确定当前块的残留值,(c)任选地将频率变换应用于残留值以产生变换系数,并对变换系数进行量化,(d)任选地对变换系数进行逆量化,并应用逆频率变换以重构残留值,以及(e)将残留值和预测的样本值组合。测量的成本可以为码率失真成本、码率成本或失真成本。码率成本可考虑信号化BV值的成本和信号化块拆分判定信息的成本两者。

替换地,编码器按某种其他方式来评估当前块的候选BV值和可能的块拆分判定。例如,除了考虑帧内预测区域和块之间的重叠之外,编码器还考虑该块是否已具有最小可允许尺寸。如果如此,则该块不被拆分,但该候选BV不被允许。

返回图20,作为编码(2010)的一部分,编码器可记录候选BV值的成本。编码器可随后评估一个或多个其他候选BV值。例如,编码器对另一候选BV值重复技术(2100)。最后,编码器为当前块(以及当前块内的块)选择一个或多个BV并作出块拆分判定,这导致最低的成本(例如,码率失真成本、码率成本或失真成本)。

编码器输出(2020)该块的经编码的数据。编码器可对另一块重复该技术(2000)。

C.估计重叠区域内的经重构的样本值。

在本文中描述的一些示例中,BV在CU级被信号化,并在CB级被应用于各块。CB和相应的帧内预测区域之间的重叠不被允许。在本文中描述的其他示例中,编码器在逐TB的基础上将BV值应用于更小的块,即使BV值是在较高的句法级别(例如,针对CU)处被信号化的。例如,具有32x32CB的CU的BV值被信号化,但该BV值被应用于处于4x4TB或8x8TB级的各块。这准许BV值具有较小的幅值,同时在处于TB级的块和被复制的帧内预测区域之间仍不具有重叠。

当出于帧内BC预测操作的目的而将给定块拆分成更小的块时,该给定块包括重叠区域,在该重叠区域中,给定块的各样本值可以是针对一个或多个更小的块的帧内预测区域的部分。本章节描述用于估计重叠区域内的经重构的样本值的方法。具体地,本章节描述用于在块的BV值在逐TB的基础上被应用于更小的块时,估计该块的重叠区域内的经重构的样本值的方法。

图22a示出具有尺寸2m x 2n的当前块(2210)。当前块(2210)包括用于帧内BC预测操作目的的四个m x n块(2221、2222、2223、2224)。例如,当前块(2210)是CU中的8x8块,并且四个更小的块(2221、2222、2223、2224)是具有4x4TB的4x4块。或者,当前块(2210)是CU中的16x16块,并且四个更小的块(2221、2222、2223、2224)是具有8x8TB的8x8块。当帧内BC预测操作以之字形扫描次序被应用于各m x n块(在图22a中,为块0、块1、块2、随后为块3)时,第一m x n块(2221)的帧内预测区域在当前2m x 2n块(2210)的外部。然而,对于第二m x n块(2222),帧内预测区域可部分地或完全地与第一m x n块(2221)重叠。对于第三m x n块(2223),帧内预测区域可部分地或完全地与第一m x n块(2221)或第二m x n块(2222)重叠。并且对于第四m x n块(2224),帧内预测区域可部分地或完全地与当前块(2210)的前三个m x n块(2221、2222、2223)重叠。

图22b示出当前块(2210)的重叠区域(2230)。该重叠区域(2230)以之字形扫描次序覆盖前三个m x n块(2221、2222、2223),因为这前三个m x n块中的样本值可能是当前块的至少一个m x n块的帧内预测区域的部分。对于另一尺寸的更小的块(例如,16x16块或32x32块中的各4x4块),重叠区域可覆盖当前块中的甚至更多的更小的块。

在BV估计期间,当编码器评估出于帧内BC预测操作的目的而被拆分成各更小块的当前块的候选BV值时,随着该编码器以之字形次序跨相应的更小块应用候选BV值,该编码器可计算出重叠区域内的实际经重构样本值。这可能是计算密集的,因为它涉及每更小块每候选BV值地应用编码操作和重构操作。相反,编码器可估计重叠区域内的经重构样本值。具体地,当帧内BV预测操作在逐TB的基础上对各更小的块执行时,编码器可估计包括多个更小的块的当前块的重叠区域内的经重构样本值。

图23是示出其中编码器估计重叠区域内的经重构样本值的BV估计的示例技术的流程图。该技术(2300)可由诸如参考图3或图5a和5b描述的编码器之类的编码器或由另一编码器来执行。

对于图片的当前块,编码器估计(2310)在当前块的重叠区域内的经重构样本值。当前块具有多个更小的块。例如,当前块具有第一尺寸(例如,32x32、16x16或8x8),此多个块中的每一者均具有小于第一尺寸的第二尺寸(例如,16x16、8x8或4x4)。当前块可以是CU的块,在该情况下,多个更小的块中的每一者可处于TU的TB的级别。重叠区域覆盖当前块的在多个更小的块中的至少一个更小的块的潜在帧内预测区域中的部分。

根据用于估计重叠区域内的经重构样本值的第一方法,编码器分别将相应的原始样本值用作重叠区域内的经重构样本值。在当前块外部,BV估计可使用图片内的原始样本值。替换地,在当前块外部,BV估计可使用图片内的经重构样本值(即,在当前块外部的经重构样本值;在当前块的重叠区域内的原始样本值)。在该情况下,当在BV估计期间没有实际的经重构样本值可用时,在帧内预测区域中可使用原始样本值,但否则使用实际的经重构样本值。

根据用于估计重叠区域内的经重构样本值的第二方法,编码器处理重叠区域内的原始样本值。具体地,编码器对覆盖区域内的原始样本值应用频率变换、量化、逆量化和逆频率变换,从而得到重叠区域内的经重构样本值的近似。量化和逆量化可使用在当前块周围的邻域中已经被应用(或者预期将被应用)的量化参数。

根据用于估计重叠区域内的经重构样本值的第三方法,编码器在估计重叠区域内的经重构样本值时使用帧内BC预测操作。编码器使用至少一个BV预测值(诸如,图片中的先前块(例如,邻居块)的BV值或默认BV预测值)来预测重叠区域内的样本值。编码器基于重叠区域内的预测的样本值和相应的原始样本值之间的差异来确定残留值。编码器对这些残留值应用频率变换、量化、逆量化和逆频率变换。量化和逆量化可使用在当前块周围的邻域中已经被应用(或者预期将被应用)的量化参数。编码器将该处理的结果(即,经重构残留值)与预测的样本值组合,这得到重叠区域内的经重构样本值的近似。

在第三方法的一个变型中,编码器使用至少一个BV预测值(诸如,图片中的先前块(例如,邻居块)的BV值或默认BV预测值)来预测重叠区域内的样本值,但跳过对残留值的处理。重叠区域中的估计的经重构样本值是预测的样本值。

在第三方法的另一变型中,编码器可估计重叠区域的残留值是否将是显著的(例如,在变换、量化等后具有非零变换系数值)。例如,编码器可单独地或共同地评估残留值是否具有小幅值,或者检查残留值的某个其他条件。如果残留值不是显著的,则编码器可跳过残留值处理,而简单地将预测的样本值用作重叠区域中的估计的经重构样本值。否则(残留值是显著的),编码器可对残留值进行编码,随后重构残留值,随后将其与预测的样本值组合以产生重叠区域中的估计的经重构样本值,如以上所描述的。

编码器执行(2320)BV估计以确定当前块的BV值。BV估计使用估计出的当前块的重叠区域内的经重构样本值中的至少一些经重构样本值。BV估计还使用在当前块外部的图片内的经重构样本值(或者在一个方法中为原始样本值)。

BV估计还包括对于当前块的一个或多个候选BV值中的每一者,根据该候选BV值分别在各更小的块和候选帧内预测区域之间执行块匹配操作。例如,对于具有四个更小的块的当前块的给定候选BV值,编码器根据该给定候选BV值在这四个更小的块及其相应的候选帧内预测区域之间执行块匹配操作。

替换地,BV估计可包括(1)对于多个更小的块中的每一者,确定该更小的块的BV值,以及(2)将此多个更小的块的BV值合成为当前块的BV值。例如,对于具有四个更小的块的当前块,编码器连续地确定第一更小的块的BV值、第二更小的块的BV值、第三更小的块的BV值和第四更小的块的BV值。在第一更小的块后,BV估计可包括对当前块的重叠区域中的帧内预测区域的评估。编码器随后将这四个更小的块的BV值合成为当前块的BV值。例如,编码器可(a)对多个更小的块的BV值求平均,(b)计算多个更小的块的BV值的中值,(c)在多个更小的块的BV值周围的邻域中标识当前块的BV值,(d)使用候选BV值的RDO在多个更小的块的BV值周围的邻域中标识当前块的BV值,或者(e)按某种其他方式将多个更小的块的BV值合成为当前块的BV值。

在当前块的BV值已通过BV估计被标识出后,编码器可使用当前块的BV值对当前块执行帧内BC预测。通过这么做,编码器在逐块的基础上对多个更小的块执行BC操作。由此,编码器可以以当前块的级别执行BV估计,但以更小的块的级别执行BV补偿。例如,编码器可对8x8CU的8x8块执行BV估计,但在逐TB的基础上以之字形扫描次序对四个4x4块执行帧内BC操作(以及重构操作)。这些4x4块共享相同的(8x8CU的)BV值,并且编码器对各连续的4x4残留值块执行4x4变换、量化、逆量化、4x4逆变换等。第一4x4块(针对TB 0的情况)被重构,随后可在第二4x4块(针对TB1的情况)的帧内预测区域中被使用。第二4x4块被重构,随后可在第三4x4块(针对TB2的情况)的帧内预测区域中被使用。对于第四4x4块(针对TB3的情况),前三个4x4块中的任一者都可在帧内预测区域中被使用。

在解码器侧,如以上所描述的,解码器可检查BV值是否导致帧内预测区域和当前块之间的重叠。如果如此,该块(处于TB级)被拆分成四个更小的块(处于更小的TB的级别),则此四个更小的块以之字形次序被(使用帧内BC预测和重构操作)连续解码。由此,更小的块之一的经重构的样本值可用于以之字形次序在次小块的帧内预测区域中使用。如果TU的变换块标志为零,则帧内BC预测仅在CU级处被应用,并且色度解相关被禁用。

D.替换和变型

许多前述示例提出了对亮度块的BV值和帧内BV预测操作。对于采用YUV4:4:4格式的视频,色度分量与亮度分量具有相同的分辨率。供当前亮度块使用的BV值可供相应的色度块使用。在当前亮度块被拆分成用于帧内BC预测操作的更小的亮度块时,相应的色度块也按相同的方式被拆分成用于帧内BC预测操作的更小的色度块。

对于采用YUV 4:2:0格式的视频,色度分量在水平上被下采样了1/2并且在垂直上被下采样了1/2。例如,如果当前亮度块具有16x16的尺寸,则相应的色度块具有8x8的尺寸。在合适的缩放和四舍五入(和/或截短)操作后,供当前亮度块使用的BV值可供相应的色度块使用。一般来说,在当前亮度块被拆分成用于帧内BC预测操作的更小的亮度块时,相应的色度块也按相同的方式被拆分成用于帧内BC预测操作的更小的色度块。

然而,在一些实现中,情况并不总是这样的。在一些实现中,如果采用YUV4:2:0格式的视频的亮度TB具有最小变换尺寸,则具有该最小变换尺寸的各色度TB被用于该同一CB的那个亮度TB及其三个相邻亮度TB的色度对应物。例如,如果当前亮度TB具有最小尺寸4x4(并且与8x8亮度CB相关联),则相应的色度CB具有尺寸4x4。每一4x4色度CB都具有单个4x4色度TB。如可通过针对YUV 4:2:0格式的下采样来预期的,具有尺寸2x2的色度TB不被支持。在这样的实现中,将当前亮度块拆分成用于帧内BC预测操作的更小的亮度块以在这些更小的亮度块将具有最小变换尺寸的情况下将不被支持,因为在被应用于相应的色度块时,该拆分将导致比最小变换尺寸更小的色度块。在这样的实现中,对于更大的尺寸,将当前亮度块(以及相应的色度块)拆分成用于帧内BC预测操作的更小的块仍被准许。

对于采用YUV 4:2:2格式的视频,色度分量在水平上被下采样了1/2。例如,如果当前亮度块具有尺寸16x16,则相应的色度块具有尺寸8x16。在合适的缩放和四舍五入(和/或截短)操作后,用于当前亮度块的BV值可被用于相应的色度块。一般来说,在当前亮度块被拆分成更小的亮度块以用于帧内BC预测操作时,相应的色度块也可按相同的方式被拆分成用于帧内BC预测操作的更小的色度块。

然而,在一些实现中,情况并不总是这样的。在一些实现中,如果采用YUV4:2:2格式的视频的亮度TB具有最小变换尺寸,则具有该最小变换尺寸的各色度TB被用于处于同一CB中的那个亮度TB及相邻亮度TB的色度对应物。例如,如果当前亮度TB具有最小尺寸4x4(并且与8x8亮度CB相关联),则相应的4x8色度CB各自具有两个4x4色度TB。如可通过针对YUV 4:2:2格式的下采样来预期的,具有尺寸2x4的色度TB不被支持。相反,4x8色度CB的4x4色度TB中的每一者包括两个2x4色度区域的残留值。在这样的实现中,对于大于最小变换尺寸的块尺寸,如以上所描述的将当前亮度块拆分成用于帧内BC预测操作的更小的亮度块(并将色度块相应地拆分成用于帧内BC预测操作的更小的色度块,如以上所描述的)被准许。如果更小的块具有最小变换尺寸,则将当前亮度块拆分成用于帧内BC预测操作的更小的亮度块在残留值的色度块被重新布置的情况下被支持,如图24中所示的。

图24示出采用YUV 4:2:2格式的视频的具有最小变换尺寸4x4的块。8x8亮度块(2410)包括四个4x4亮度块(2421、2422、2423、2424),其编号为0…3。相应的4x8色度块(2430)包括相应的色度分量,其在水平上被下采样1/2。2x4的变换尺寸不被支持。

根据HEVC标志的当前草稿,对于4x8色度块,2x4块0和1一起被处理成用于残留编码和解码的具有4x4变换尺寸的4x4色度TB,并且2x4块2和3一起被处理成用于残留编码和解码的具有4x4变换尺寸的4x4色度TB。结果,由于2x4块0在2x4块1被重构之前不将被重构,因此对2x4块1的帧内BC预测操作无法参考2x4块0中的经重构样本值。类似地,对2x4块3的帧内BC预测操作无法参考2x4块2中的经重构样本值。

如图24中所示,4x8色度块(2440)中的各2x4块可出于残留编码和解码的目的而被重新布置。在该情况下,2x4块0和2一起被处理成用于残留编码和解码的具有4x4变换尺寸的4x4色度TB,并且2x4块1和3一起被处理成用于残留编码和解码的具有4x4变换尺寸的4x4色度TB。在4x8色度块(2430)的“未经重新布置的”2x4块中仍发生帧内BC预测操作。在4x8色度块被解码时,对2x4块0和2的帧内BC预测可首先发生,接着是对2x4块0和2的残留解码以及对2x4块0和2的样本值的重构。随后,2x4块1和3被重构。由此,2x4块0可在2x4块1被重构之前被重构,使得对2x4块1的帧内BC预测操作可参考2x4块0中的经重构样本值。类似地,对2x4块3的帧内BC预测操作可参考2x4块2中的经重构样本值。对残留值的2x4色度块的重新布置在编码器处和在解码器处发生。

对于用于残留编码和解码的具有经重新布置的2x4块的4x8色度块(2440),亮度块的左半部以及相应的色度块的重叠区域被支持,如以灰色示出的。在BV估计期间,编码器可估计重叠区域中的经重构样本值(如以上所描述的)并评估参考部分地或完全地覆盖该重叠区域的帧内预测区域的候选BV值。

通过该方法,具有非零水平BV分量的BV值被允许,但这些BV值具有零值垂直BV分量。这适合于例如屏幕捕捉内容,其在样本值方面通常展示出水平连续性。

在示例实现中,帧内BC预测针对亮度块并针对色度块使用具有整数样本精度的BV值。分数位移(以及重构样本值之间的分数内插)不被用于BV值。在图片的色度数据相对于图片的亮度数据而言具有降低的分辨率时(例如,在格式为YUV4:2:0格式或YUV 4:2:2格式时),来自亮度块的BV值在其被应用于相应的色度块之前可被缩小以对色度分辨率方面的差异进行调整,但被四舍五入和/或截短到具有整数样本精度的值。

替换地,针对亮度块的BV值具有整数样本精度,但针对相应的色度块的BV值具有分数样本精度。具体地,当图片的色度数据相对于图片的亮度数据而言具有降低的分辨率时,来自亮度块的BV值在其被应用于相应的色度块之前可被缩小以对色度分辨率方面的差异进行调整。对于YUV 4:2:0格式,BV值的垂直和水平分量可被除以2,并被截短或四舍五入,从而得到具有整数样本精度或分数样本精度(诸如一半样本精度)的值。例如,亮度块的BVy分量3被缩放成相应的色度块的BVy分量值1.5。对于YUV 4:2:2格式,BV值的水平分量可被除以2,并被截短或四舍五入,从而得到具有整数精度或分数样本精度(诸如一半样本位置精度)的值。在BV值具有分数样本精度时,经重构样本值之间的插值可使用线性插值、双三次插值或另一种形式的插值。

替换地,亮度块和相应的色度块的BV值可具有分数样本精度。再次,在BV值具有分数样本精度时,经重构样本值之间的插值可使用双线性插值、双三次插值或另一种形式的插值。

鉴于可应用所公开的本发明的原理的许多可能的实施例,应当认识到,所示实施例仅是本发明的优选示例,并且不应认为是限制本发明的范围。相反,本发明的范围由后续的权利要求来界定。我们要求作为我们的发明保护落入这些权利要求范围和精神内的所有内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号