视频和图像编码/解码中的块向量预测的制作方法

文档序号:10557425阅读:398来源:国知局
视频和图像编码/解码中的块向量预测的制作方法
【专利摘要】在块向量(“BV”)值的预测方面的创新改善了使用帧内块复制(“BC”)预测对块进行编码或解码。例如,创新中的一些涉及使用具有非零值的默认BV预测值。其它创新涉及使用当前块的多个BV预测值候选中的被选择的一个BV预测值候选。又一些创新涉及使用跳跃模式,其中当前帧内BC预测的块使用预测的BV值。
【专利说明】视频和图像编码/解码中的块向量预测
[0001 ] 背景
[0002]工程师使用压缩(也叫做源编码(source coding或source encoding))来降低数字视频的比特率。压缩通过将视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。解压(也被称为解码)从压缩的形式中重构一种版本的原始信息。“编解码器”是编码器/解码器系统。
[0003]在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-T H.26UH.262(MPEG-2或IS0/IEC 13818-2)、Η.263和H.264(MPEG_4AVC或IS0/IEC 14496-10)标准、MPEG-KIS0/IEC 11172 I 172-2)和MPEG-4视觉(IS0/IEC 14496-2)标准以及SMPTE 421M(VC_1)标准。最近,HEVC标准(ITU-T H.265SIS0/IEC 23008-2)已被批准。当前,正在开发(例如,针对可缩放视频编码/解码、针对在样本比特深度或色度采样率方面具有较高保真度的视频的编码/解码、或针对多视图编码/解码的)HEVC标准的扩展。视频编解码器标准通常定义针对经编码的视频比特流的句法的选项,从而详述当在编码和解码时使用特定特征时该比特流中的参数。在许多情况下,视频编解码器标准还提供关于解码器应当执行以在解码时取得一致的结果的解码操作的细节。除了编解码器标准外,各种专用编解码器格式定义针对经编码的视频比特流的句法的其他选项以及相应的解码操作。
[0004]帧内块复制(“BC”)是H.265/HEVC扩展的处于开发中的预测模式。对于帧内BC预测模式,图片的当前块的样本值是使用同一图片中的先前重构的样本值来预测的。块向量(“BV”)指示从当前块到图片的包括用于预测的先前重构的样本值的区域的位移。BV被信号化在比特流中。帧内BC预测是一种形式的图片内预测一一针对图片的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。
[0005]如当前在HEVC标准中规定并在针对HEVC标准的某一参考软件中实现的,帧内BC预测模式具有若干问题。具体来说,在许多情形下,BV值没有被有效地信号化,并且采用可预测BC移位的块编码不能高效率地被处理。
[0006]概述
[0007]概括来说,详细的描述呈现了在使用帧内块复制(“BC”)预测对块进行编码和/或解码期间在块向量(“BV”)值的预测方面的创新。例如,创新中的一些涉及使用具有非零值的默认BV预测值。其它创新涉及使用当前块的多个BV预测值候选中的被选择的一个BV预测值候选。又一些创新涉及使用跳跃模式,其中当前帧内BC预测的块使用预测的BV值。在许多情形下,创新改善了 BV值的编码效率,或者以其他方式改善帧内BC预测的块的编码效率。
[0008]根据本文中描述的创新的第一方面,编码器确定图片的当前块的默认BV预测值。默认BV预测值包括具有非零值的BV预测值分量。例如,默认BV预测值的垂直和水平BV分量中的一个为零,而另一个具有非零值。编码器使用默认BV预测值来对当前块进行编码。例如,编码器使用当前块的BV值来执行帧内块复制(“BC”)预测、使用当前块的BV值和默认BV预测值来确定BV差、以及随后对BV差进行编码。或者,编码器直接使用默认BV预测值来执行帧内BC预测。
[0009]对应的解码器确定图片的当前块的默认BV预测值。默认BV预测值包括具有非零值的BV预测值分量。例如,默认BV预测值的垂直和水平BV分量中的一个为零,而另一个具有非零值。解码器使用默认BV预测值来对当前块进行解码。例如,解码器对当前块的BV差进行解码,随后将经解码的BV差与默认BV预测值组合以重构当前块的BV值。解码器使用BV值来执行帧内BC预测。或者,解码器直接使用默认BV预测值来执行帧内BC预测。
[0010]编码器或解码器可取决于图片的前一个块的实际BV值是否可用来有条件地使用默认BV预测值。例如,编码器/解码器检查图片的前一个块的实际BV值是否可用。如果是,则前一个块的实际BV值被用作为当前块的BV预测值。否则,默认BV预测值被用作为当前块的BV预测值。在一些实现中,如果(I)前一个块和当前块是给定编码树单元的一部分,并且(2)前一个块的预测模式是帧内BC预测模式,则前一个块的实际BV值是可用的。
[0011]根据本文中描述的创新的第二方面,编码器使用BV预测来确定图片的当前块的BV值。当前块的BV值指示到图片中的区域的位移。编码器使用帧内BC用BV值(此处为BV预测值)来对当前块进行编码。编码器在比特流中输出当前块是以跳跃模式编码的指示,并且比特流缺少当前块的BV差和残留数据。
[0012]对应的解码器从比特流中接收图片的当前块是以跳跃模式编码的指示。比特流缺少当前块的BV差和残留数据。解码器使用BV预测来确定当前块的BV值。解码器随后使用帧内块复制预测用BV值(此处为BV预测值)来对当前块进行解码。
[0013]对于被跳过的块,比特流可包括索引值,该索引值指示从多个BV预测值候选的集合中对要用作当前块的BV值(此处为BV预测值)的BV预测值候选的选择。索引值可以是标志值或整数值。
[0014]根据本文中描述的创新的第三方面,编码器确定图片的当前块的多个BV预测值候选的集合,随后选择要用于当前块的一个BV预测值候选。编码器使用所选择的BV预测值候选来对当前块进行编码,在比特流中输出指示所选择的BV预测值候选的索引值。
[0015]对应的解码器从比特流中接收索引值。解码器确定图片的当前块的多个BV预测值候选的集合,并且基于索引值来选择要用于当前块的一个BV预测值候选。解码器使用所选择的BV预测值候选对当前块进行解码。
[0016]在一些情况下,比特流包括当前块的BV差(当前块是非跳跃模式、非合并模式块)。BV差指示所选择的BV预测值候选和当前块的BV值之间的差。在其它情况下,当前块是合并模式块,并且比特流缺少当前块的BV差但是可包括当前块的残留数据。在又一些其它情况下,比特流中的值指示当前块是跳跃模式块。在这些情况下,比特流缺少当前块的BV差,并且比特流缺少当前块的残留数据。
[0017]总得来说,多个BV预测值候选包括多至X个之前的块的实际BV值。之前的块可以至少部分基于当前块周围的邻居(例如,当前块的左边、上边以及右上的块)的位置来标识。或者,之前的块可至少部分基于与当前块相比的解码顺序来标识(例如,最后三个帧内BC预测的块)。多个BV预测值候选还可包括一个或多个默认BV预测值。
[0018]针对BV预测的创新可以被实现为方法的一部分、被适配成执行该方法的计算设备的一部分或存储用于使计算设备执行该方法的计算机可执行指令的有形计算机可读介质的一部分。各创新可以结合地或分开地使用。具体来说,针对BV预测的合并模式可与具有非零运动的默认BV预测值和/或针对帧内BC预测的块的跳跃模式结合使用。针对帧内BC预测的块的跳跃模式可与具有非零运动的默认BV预测值结合使用。
[0019]参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
[0020]附图简述
[0021]图1是其中可实现所描述的一些实施例的示例计算系统的示图。
[0022]图2a和2b是其中可实现所描述的一些实施例的示例网络环境的示图。
[0023]图3是结合其可实现所描述的一些实施例的示例编码器系统的示图。
[0024]图4是结合其可实现所描述的一些实施例的示例解码器系统的示图。
[0025]图5a和5b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。
[0026]图6是示出结合其可实现所描述的一些实施例的示例视频解码器的示图。
[0027]图7a—7d分别是示出针对图片的块的帧内BC预测、针对块的BV预测、默认(0,0)BV预测值、以及具有非零值的默认BV预测值的示图。
[0028]图8和9是示出包括使用具有非零值的默认BV预测值的编码的技术的流程图。
[0029]图10和11是示出包括使用具有非零值的默认BV预测值的解码的技术的流程图。
[0030]图12和13分别是示出包括针对帧内BC预测的块的跳跃模式的编码和解码的技术的流程图。
[0031]图14是示出图片中的之前的块的实际BV值中的BV预测值候选的示图。
[0032]图15是示出图片中的相邻块的实际BV值中的BV预测值候选的示图。
[0033]图16a和16b是示出包括在多个BV预测值候选中进行选择的编码的技术的流程图。
[0034]图17a和17b是示出包括在多个BV预测值候选中进行选择的解码的技术的流程图。
[0035]详细描述
[0036]详细的描述呈现了在使用帧内块复制(“BC”)预测对块进行编码和/或解码期间在块向量(“BV”)值的预测方面的创新。例如,创新中的一些涉及使用具有非零值的默认BV预测值。其它创新涉及使用当前块的多个BV预测值候选中的被选择的一个BV预测值候选。又一些创新涉及使用跳跃模式,其中当前帧内BC预测的块使用预测的BV值。在许多情形下,创新改善了 BV值的编码效率,这可降低比特率和/或改善质量,或者以其他方式改善帧内BC预测的块的编码效率。
[0037]虽然本文中描述的操作是被适当描述为由视频编码器或视频解码器来执行,但在许多情况中,这些操作可由另一类型的媒体处理工具(例如图像编码器或图像解码器)来执行。
[0038]本文中描述的一些创新是参考专用于HEVC标准的句法元素和操作来示出的。例如,对HEVC标准的草稿版本JCTVC-01005——即2013年11月的“高效视频编码(HEVC)范围扩展文本规范:第5稿”作出参考。本文中描述的各创新还可以被实现为用于其它标准或格式。
[0039]更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技术/工具并不解决所有这些问题。
[0040]1.示例计算系统
[0041]图1示出了其中可实现所描述的若干创新的合适计算系统(100)的概括示例。计算系统(100)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算系统中实现。
[0042]参考图1,计算系统(100)包括一个或多个处理单元(I 10、115)和存储器(120、125)。处理单元(I 10、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是(诸)处理单元可访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPR0M、闪存等)或这两者的某一组合。存储器(120,125)存储实现针对帧内块向量预测的一个或多个创新的软件(180),该软件用适用于由(诸)处理单元执行的计算机可执行指令的形式。
[0043]计算系统可具有附加的特征。例如,计算系统(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算系统(100)的各组件互连。通常,操作系统软件(未示出)为在计算系统(100)中执行的其它软件提供操作环境,并协调计算系统(100)的各组件的活动。
[0044]有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、⑶-R0M、DVD或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储(140)存储实现针对块向量预测的一个或多个创新的软件(180)的指令。
[0045](诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(诸)输入设备(150)可以是相机、视频卡、TV调谐卡、或接受模拟或数字形式的视频输入的类似设备、或将视频样本读到计算系统(100)中的⑶-ROM或⑶-RW。(诸)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。
[0046](诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。
[0047]各创新可以在计算机可读介质的一般上下文中描述。计算机可读介质是可在计算环境内访问的任何可用有形介质。作为示例而非局限,对于计算系统(100),计算机可读介质包括存储器(120、125)、存储(140)、和以上任意的组合。
[0048]各创新可在计算机可执行指令(诸如包括在程序模块中的在计算系统中在目标现实或虚拟处理器上执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。
[0049]术语“系统”和“设备”在此被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。
[0050]所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的集成电路(例如,诸如ASIC数字信号处理器(“DSP”)之类的ASIC、图像处理单元(“GPU”)、或诸如场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”))来实现。
[0051]为了呈现起见,本详细描述使用了如“确定”和“使用”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。
[0052]I1.示例网络环境
[0053]图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可包括因特网或另一计算机网络。
[0054]在图2a所示的网络环境(201)中,每个实时通信(“RTC”)工具(210)都包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符HEVC标准(也被称为H.265), SMPTE 42IM标准、IS0/IEC14496-10标准(也被称为H.264或AVC)、另一标准、或专用格式的变型或扩展的输出,使得相应的解码器(270)接受来自编码器(220)的经编码的数据。双向通信可以是视频会议、视频电话呼叫或其它双方或多方通信场景的部分。虽然,图2a中的网络环境(201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或更多个实时通信工具(210)。
[0055]实时通信工具(210)管理编码器(220)进行的编码。图3示出可以被包括在实时通信工具(210)中的示例编码器系统(300)。替换地,实时通信工具(210)使用另一编码器系统。实时通信工具(210)还管理解码器(270)做出的解码。图4示出可以被包括在实时通信工具(210)中的示例解码器系统(400)。替换地,实时通信工具(210)使用另一解码器系统。
[0056]在图2b中示出的网络环境(202)中,编码工具(212)包括编码供递送给多个回放工具(214)的视频的编码器(220),此多个回放工具(214)包括解码器(270)。单向通信可被提供用于视频监视系统、web相机监视系统、远程桌面会议演示或在其中编码视频并将视频从一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两个回放工具(214),但该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具(214)接收该流、缓冲所接收的经编码数据达合适的时间段并开始解码和回放。
[0057]图3示出可以被包括在编码工具(212)中的示例编码器系统(300)。替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。图4示出可以被包括在回放工具(214)中的示例解码器系统(400)。替换地,回放工具(214)使用另一解码器系统。回放工具(214)还可以包括用于管理与一个或多个编码工具(212)的连接的客户机侧控制器逻辑。
[0058]II 1.示例编码器系统。
[0059]图3是结合其可实现所描述的一些实施例的示例编码器系统(300)的框图。编码器系统(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码模式、转码模式和用于从文件或流中产生供回放的媒体的较高等待时间编码模式)操作的通用编码工具,或它可以是适用于一种这样的编码模式的专用编码工具。编码器系统(300)可以被实现为操作系统模块、应用库的部分、独立的应用。总体上,编码器系统(300)从视频源(310)接收源视频帧序列(311)并产生经编码数据作为到信道(390)的输出。输出到信道的经编码的数据可包括使用如本文中所述的BV预测中的创新来编码的内容。
[0060]视频源(310)可以是相机、调谐器卡、存储介质、或其它数字视频源。视频源(310)以例如每秒30帧的帧速率产生视频帧序列。如本文中所使用的,术语“帧”一般指代源、经编码的或经重构的图像数据。对于逐行扫描视频,帧是逐行扫描视频帧。对于隔行视频,在各示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个互补的隔行视频场可以被编码在一起作为单个视频帧或者被编码成两个经分开编码的场。除了指示逐行扫描视频帧或隔行扫描视频帧之外,术语“帧”或“图片”可以指示单个非成对的视频场、互补的成对视频场、表示在给定时间的视频对象的视频对象平面、或较大图像中的感兴趣区域。视频对象平面或区域可以是包括场景的多个对象或区域的较大图像的一部分。
[0061]抵达的源帧(311)被存储在包括多个帧缓冲区存储区域(321、322、-_、3211)的源帧临时存储器存储区域(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:4:4格式)。或者,视频可用另一格式(例如,RGB 4:4:4格式)来编码。
[0062]编码器(340)编码选中的帧(331)以产生经编码的帧(341)并且还产生存储器管理控制操作(“MMC0”)信号(342)或参考图片集(“RPS”)信息。如果当前帧不是已被编码的第一帧,则在执行其编码处理时,编码器(340)可以使用已经被存储在经解码帧的临时存储器存储区域(360)中的一个或多个先前被编码/解码的帧(369)。这样的存储的经解码帧(369)被用作用于当前源帧(331)的内容的帧间预测的参考帧。丽C0/RPS信息(342)向解码器指示哪些经重构的帧可被用作参考帧,并且因此应该被存储在帧存储区域中。
[0063]—般来说,编码器(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)或其它格式的变型或扩展。
[0064]编码器(340)可以将帧分割成相同尺寸或不同尺寸的多个小块。例如,编码器
(340)沿小块行和小块列来拆分帧,这些小块行和小块列利用帧边界定义在该帧内的小块的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于提供并行处理的选项。帧还可以被组织成一个或多个片,其中一个片可以是整个帧或该帧的区域。片可以独立于帧中的其它片编码,这改善了错误复原性。出于编码和解码的目的,片或小块的内容被进一步分割成块或其它样本值集。
[0065]对于根据HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度采样值,并且对应的色度采样值被组织为两个色度CTBXTU(及其CTB)的尺寸由编码器来选择,并且可例如为64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB” )和两个对应的色度CB ο例如,具有64x64亮度CTB和两个64x64色度CTB (YUV4:4:4格式)的CTU可以被拆分成4个⑶,其中每个⑶包括一 32x32亮度CB和两个32x32色度CB,并且每个CU可能被进一步拆分成更小的CU。或者,作为另一示例,具有64x64亮度CTB和两个32x32色度CTB (YUV 4:2:0格式)的CTU可以被拆分成4个⑶,其中每个⑶包括一 32x32亮度CB和两个16x16色度CB,并且每个⑶可能被进一步拆分成更小的⑶。⑶的最小允许尺寸(例如8X 8、16 X 16)可被信号化在位流中。
[0066]通常,CU具有诸如帧间或帧内之类的预测模式。出于信号化预测信息(例如预测模式细节、移位值等)和/或预测处理的目的,CU包括一个或多个预测单元。预测单元(“PU”)具有亮度预测块(“PB” )和两个对应的色度I3B ο对于帧内预测的CU,PU与CU具有相同的尺寸,除非CU具有最小尺寸(例如8x8)。在该情况下,CU可被拆分成四个较小的HJ(例如,如果最小CU尺寸为8x8,则PU为4x4),或者HJ可具有最小CU尺寸,如CU的句法元素所指示的。出于残留编码/解码的目的,CU还具有一个或多个变换单元,其中变换单元(“TU”)具有一变换块(“TB” )和两个色度TB。在帧内预测的CU中的PU可以包含单个TU(尺寸与PU相同)或多个TU。如本文中所使用的,术语“±夬”可以指示CB、PB、TB或某些其它样本值集,这取决于上下文。编码器决定如何将视频分割成CTU、⑶、PU、TU等。
[0067]回到图3,编码器根据来自源帧(331)中的其它、先前重构的样本值的预测来表示该帧(331)内编码的块。对于帧内BC预测,图片内估计器估计块相对于其它、先前重构的采样值的块的位移。帧内预测参考区域是帧中用于生成块的BC预测值的样本区域。帧内预测区域可以用(在BV估计中确定的)块向量(“BV”)值来指示。对于块的空间内预测,图片内估计器估计相邻的经重构的样本值到该块的外插。图片内估计器可以输出经熵编码的预测信息(例如帧内BC预测的BV值或帧内空间预测的预测模式(方向))。帧内预测预测器应用预测信息来确定帧内预测值。
[0068]编码器(340)依据来自参考帧的预测来表示源帧(331)的帧间编码的预测的块。运动估计器估计块相对于一个或多个参考帧(369)的运动。当使用多个参考帧时,这多个参考帧可来自不同的时间方向或相同的时间方向。经运动补偿的预测参考区域是(诸)参考帧中用于生成当前帧中的样本块的经运动补偿的预测值的样本区域。运动估计器输出经熵编码的诸如运动向量(“MV”)信息之类的运动信息。运动补偿器将MV应用于参考帧(3 6 9)以确定用于帧间预测的经运动补偿的预测值。
[0069]编码器可以确定在块预测值(帧内或帧间)和对应的原始值之间的差值(如果有的话)。这些预测残留值将进一步使用频率变换、量化和熵编码来编码。例如,编码器(340)为图片、小块、片和/或视频的其它部分设置量化参数(“QP”)的值,并相应地量化变换系数。编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如MV信息、BV预测值的索引值、BV差、QP值、模式决策、参数选择)。典型的熵编码技术包括指数-Go1mb编码、Golomb-Rice编码、算术编码、差分编码、Huffman编码、行程长度编码、可变长度对可变长度(“V2V”)编码、可变长度对固定长度(“V2F”)编码、Lempel-ZiV( “LZ”)编码、字典编码、概率区间划分熵编码(“PIPE”)和上述编码的组合。熵编码器可对不同种类的信息使用不同的编码技术,并可组合地应用多个技术(例如,通过应用Golomb-Rice编码,随后应用算术编码),并可从特定编码技术内的多个码表中进行选择。
[0070]自适应去块滤波器可以被包括在编码器(340)中的运动补偿循环内以平滑经解码的帧中的块边界行和/或列上的间断。可替换地或另外地应用其它滤波(诸如去振铃滤波、自适应环路滤波(uAir)或样本自适应偏移(“SA0”)滤波,未示出)作为内环路滤波操作。[0071 ] 经编码的帧(341)和MMC0/RPS信息(342)(或与MMC0/RPS信息(342)等价的信息,因为在编码器(340)处已经知道各帧的依赖关系和排序结构)由解码处理仿真器(350)处理。解码处理仿真器(350)实现了解码器的一些功能,例如对任务进行解码以重构参考帧。以与MM⑶/RPS信息(342)相一致的方式,解码处理仿真器(350)确定给定的经编码帧(341)是否需要被重构并被存储以供在对要编码的后续帧的帧间预测中用作参考帧。如果经编码的帧
(341)需要被存储,则解码处理仿真器(350)对将由解码器进行的解码处理建模,该解码器接收经编码的帧(341)并产生相应的经解码的帧(351)。通过这么做,当编码器(340)已经使用已被存储在经解码帧存储区域(360)中的经解码的帧(369)时,解码处理仿真器(350)还使用来自存储区域(360)的经解码的帧(369)作为解码处理的一部分。
[0072]经解码帧临时存储器存储区域(360)包括多个帧缓冲存储区域(361、362、...、36η)。以与MMC0/RPS信息(342)相一致的方式,解码处理仿真器(350)管理存储区域(360)中的内容,以便标识出具有编码器(340)不再需要将其用作参考帧的帧的任何帧缓冲区(361、362等)。在对解码处理进行建模之后,解码处理仿真器(350)在帧缓冲区(361、362等)中存储已经以此方式标识出的新解码的帧(351)。
[0073]经编码的帧(341)和MM⑶/RPS信息(342)被缓冲在临时的经编码数据区域(370)中。被聚集在经编码数据区域(370)中的经编码数据包含一个或多个图片的经编码数据作为基本经编码视频位流的句法的一部分。在经编码数据区域(370)中被聚集的经编码数据还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一个或多个参数)。
[0074]来自临时的经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处理。信道编码器(380)可以(例如根据诸如ITU-T H.222.0|IS0/IEC 13818-1的媒体程序流或传输流格式,或诸如IETF RFC 3550的因特网实时传输协议格式)分组化和/或复用经聚集的数据供作为媒体流来传输或存储,在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以(例如根据诸如IS0/IEC14496-12的媒体容器格式)组织经聚集的数据以供作为文件来存储,在这种情况中,信道编码器(380)可以添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。信道编码器(380)或信道(390)还可以包括例如用于前向纠错(“FEC")编码和模拟信号调制的其它元素(未示出)。
[0075]IV.示例解码器系统。
[0076]图4是结合其可实现所描述的一些实施例的示例解码器系统(400)的框图。解码器系统(400)可以是能够在多种解码模式(例如针对实时通信的低等待时间解码模式以及针对来自文件或流中的媒体回放的较高等待时间解码模式)中的任一者操作的通用解码工具,或它可以是适用于一种这样的解码模式的专用解码工具。解码器系统(400)可以被实现为操作系统模块、应用库的一部分或独立的应用。总体上,解码器系统(400)从信道(410)接收经编码数据并产生经重构的帧作为针对输出目的地(490)的输出。经编码的数据可包括已使用本文中所描述的BV预测中的创新来编码的内容。
[0077]解码器系统(400)包括信道(410),该信道(410)可以表示存储、通信连接或针对作为输入的经编码数据的另一信道。信道(410)产生已经被信道编码的经编码数据。信道解码器(420)可以处理经编码数据。例如,信道解码器(420)可以(例如根据诸如ITU-T H.222.0IS0/IEC 13818-1的媒体程序流或传输流格式,或诸如IETF RFC 3550的因特网实时传输协议格式)去分组化和/或去复用已被聚集以供作为媒体流来传输或存储的数据,在这种情况中,信道解码器(420)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信道解码器(420)可以(例如根据诸如IS0/IEC 14496-12的媒体容器格式)来将已被聚集以供作为文件来存储的经编码的视频数据分开,在这种情况中,信道解码器(420)可以解析所添加的作为媒体存储文件的句法的一部分的句法元素。或者,更一般地,信道解码器(420)可以实现一个或多个媒体系统去复用协议或传输协议,在这种情况中,信道解码器(420)可以解析所添加的作为(诸)协议的句法的一部分的句法元素。信道(410)或信道解码器(420)还可以包括例如用于FEC解码和模拟信号解调的其它元素(未示出)。
[0078]从信道解码器(420)输出的经编码数据(421)被存储在临时的经编码数据区域(430)中,直到已经接收到足够数量的这样的数据。经编码数据(421)包括经编码的帧(431)和MMC0/RPS信息(432)。在经编码数据区域(430)中的经编码数据(421)包含一个或多个图片的经编码数据作为基本编码的视频比特流的句法的一部分。在经编码数据区域(430)中的经编码数据(421)还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个SE I消息或VUI消息中的一个或多个参数)。
[0079]一般来说,经编码数据区域(430)临时存储经编码数据(421),直到这样的经编码数据(421)被解码器(450)使用。此时,经编码帧(431)和MMC0/RPS信息(432)的经编码数据被从经编码数据区域(430)传输到解码器(450)。当解码继续时,新的经编码数据被添加到经编码数据区域(430)并且保留在经编码数据区域(430)中的最旧的经编码数据被传输到解码器(450)。
[0080]解码器(450)解码经编码帧(431)以产生相应的经解码帧(451)。在适当时,当执行其解码处理时,解码器(450)可以将一个或多个先前解码的帧(469)用作帧间预测的参考帧。解码器(450)从经解码帧临时存储器存储区域(460)中读取这样的先前解码的帧(469)。通常,解码器(450)包括执行诸如熵解码、帧内预测、运动补偿帧间预测、逆量化、逆频率变换和小块合并之类的解码任务的多个解码模块。由解码器(450)执行的确切操作可以取决于压缩格式而变化。
[0081]例如,解码器(450)接收经压缩的帧或帧序列的经编码数据,并产生包括经解码的帧(451)的输出。在解码器(450)中,缓冲器接收针对经压缩的帧的经编码数据,并在适当时,使得接收到的经编码数据对熵解码器可用。熵解码器对经熵编码的量化数据以及经熵编码的辅助信息进行熵解码,通常应用编码器中执行的熵编码的逆来进行熵解码。运动补偿器将运动信息应用于一个或多个参考帧以形成针对正被重构的帧的任何帧间编码块的经运动补偿的预测值。帧内预测模块可从相邻的、先前重构的样本值中空间地预测当前块的样本值,或者对于帧内BC预测,使用帧中的帧内预测区域的先前重构的样本值来预测当前块的样本值。帧内预测区域可用BV值来指示。解码器(450)还重构预测残留值。逆量化器对经熵解码的数据进行逆量化。例如,解码器(450)基于比特流中的句法元素来设置图片、小块、片和/或其它视频部分的QP值,并相应地对变换系数进行逆量化。逆频率变换器将量化的频域数据转换成空间域数据。对于帧间预测的块,解码器(450)将重构的预测残留值与经运动补偿的预测值组合。解码器(450)可以类似地将预测残留值与来自帧内预测的预测值组合。自适应去块滤波器被包括在视频解码器(450)中的运动补偿环路内以平滑经解码的帧(451)中的块边界行和/或列上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波、ALF或SAO滤波;未示出)作为内环路滤波操作。
[0082]经解码帧临时存储器存储区域(460)包括多个帧缓冲区存储区域(461、462、...、46η)。经解码帧存储区域(460)是经解码图片缓冲区的一个示例。解码器(450)使用MMC0/PS信息(432)来标识该解码器可将经解码帧(451)存储在其中的帧缓冲器(461、462等)。解码器(450)将经解码的帧(451)存储在那个帧缓冲器中。
[0083]输出序列发生器(480)标识按输出次序将产生的下一帧何时可在经编码帧存储区域(460)中获得。当按输出次序将产生的下一帧(481)可在经解码帧存储区域(460)中获得时,输出序列发生器(480)读取该下一帧并将其输出到输出目的地(490)(例如显不器)。一般来说,输出序列发生器(480)将帧从经解码帧存储区域(460)中输出的次序可以与解码器(450)解码这些帧的次序不同。
[0084]V.示例视频编码器。
[0085]图5a和5b是可结合其实现所描述的一些实施例的通用视频编码器(500)的框图。编码器(500)接收包括当前图片的视频图片序列作为输入视频信号(505)并在经编码视频位流(595)中产生经编码数据作为输出。
[0086]编码器(500)是基于块的并使用取决于实现的块格式。块还可在不同的阶段上被进一步细分,例如在预测、频率变换和/或熵编码阶段。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块以用于编码和解码。在针对HEVC标准的编码的实现中,编码器将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
[0087]编码器(500)使用图片内编码和/或图片间编码来压缩图片。编码器(500)的许多组件被用于图片内编码和图片间编码两者。由这些组件执行的确切操作可取决于所压缩的信息的类型而变化。
[0088]小块化模块(510)可选地将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(510)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。
[0089]通用编码控件(520)接收输入视频信号(505)的图片以及来自编码器(500)的各个模块的反馈(未示出)。整体上,通用编码控件(520)将控制信号(未示出)提供给其它模块(例如小块化模块(510)、变换器/缩放器/量化器(530)、缩放器/逆变换器(535)、图片内估计器(540)、运动估计器(550)以及帧内/帧间切换)以设置和改变编码期间的编码参数。具体来说,通用编码控件(520)可决定在编码期间是否以及如何使用BV预测的各方面(例如,采用预测的BV值的跳跃模式、用于BV预测的合并模式)。通用编码控件(520)还可以估计编码期间的中间结果,例如执行速率-失真分析来估计。通用编码控件(520)产生指示在编码期间所做出的决定的通用控制数据(522),使得对应的解码器可以作出一致的决定。通用控制数据(522)被提供给头部格式化器/熵编码器(590)。
[0090]如果使用图片间预测来预测当前的图片,运动估计器(550)相对于一个或多个参考图片估计输入视频信号(505)的当前图片的采样值的块的运动。经解码的图片缓冲器(570)缓冲一个或多个经重构的先前编码的图片以供用作参考图片。当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。运动估计器(550)产生诸如MV数据、合并模式索引值和参考图片选择数据的辅助信息运动数据(552)。运动数据(552)被提供给头部格式化器/熵编码器(590)以及运动补偿器(555)。
[0091]运动补偿器(555)将MV应用于来自经解码的图片缓冲器(570)的(诸)经重构的参考图片。运动补偿器(555)产生针对当前图片的经运动补偿的预测。
[0092]在编码器(500)内的分开的路径中,图片内估计器(540)确定如何执行对输入视频信号(505)的当前图片的样本值块的图片内预测。当前图片可全部或部分使用图片内编码来编码。对于帧内空间预测,图片内估计器(540)使用当前图片的重构(538)的值来确定如何从当前图片的邻近的、先前重构的样本值中空间地预测当前图片的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内估计器(540)估计当前块的样本值到当前图片内的不同候选区域的位移。
[0093]图片内估计器(540)产生辅助信息帧内预测数据(542),诸如指示帧内预测使用空间预测还是帧内BC预测的信息(例如,每帧内块的标志值)、预测模式方向(针对帧内空间预测的情况)、以及BV值(针对帧内BC预测的情况)。图片内预测数据(542)被提供给头部格式化器/熵编码器(590)以及图片内预测器(545)。
[0094]根据帧内预测数据(542),图片内预测器(545)从当前图片的邻近的先前重构的样本值中在空间上预测当前图片的当前块的样本值。或者,对于帧内BC预测,图片内预测器(545)使用帧内预测参考区域的先前重构的样本值来预测当前块的样本值,帧内预测参考区域由针对当前块的BV值来指示。在一些情况下(例如,对于跳跃模式块或合并模式块),BV值可以是BV预测值(经预测的BV值)。当图片的色度数据具有与亮度数据相同的分辨率时(例如,当格式为YUV 4:4:4格式或RGB 4:4:4格式时),对色度块应用的BV值可与对亮度块应用的BV值相同。另一方面,当图片的色度数据相对于亮度数据具有降低的分辨率时(例如,当格式为YUV 4:2:0格式时),对色度块应用的BV值可被缩小并可能被四舍五入以对色度分辨率方面的差异进行调整(例如,通过将BV值的垂直和水平分量除以2并且将其截短或四舍五入成整数值来调整)。
[0095]帧内/帧间切换选择经运动补偿的预测或图片内预测的值用作给定块的预测(558)。对于非跳跃模式块,预测(558)的块和输入视频信号(505)的原始当前图片的对应部分之间的差异(如果有的话)提供残留值(518)的值。在当前图片的重构期间,对于非跳跃模式块,经重构的残留值与预测(558)组合来从视频信号(505)中产生对原始内容的重构(538)。然而,在有损压缩中,还是从视频信号(505)中丢失了一些信息。
[0096]在变换器/缩放器/量化器(530)中,频率变换器将空间域视频信息转换为频域(SP频谱、变换)数据。对于基于块的视频编码,频率变换器将离散余弦变换(“DCT”)、其整数近似、或其它类型的前向块变换(例如离散正弦变换或其整数近似)应用于预测残留数据的块(如果预测(558)为空则应用于采样值数据),产生频率变换系数的块。编码器(500)可能还能够指示这样的变换步骤被省略了。缩放器/量化器对变换系数进行缩放和量化。例如,量化器用量化步骤尺寸将死区标量量化应用于频域数据,该量化步骤尺寸在逐图片的基础上、逐小块的基础上、逐片的基础上、逐块的基础上、因频率而异的基础上或在其他基础上变化。。经量化的变换系数数据(532)被提供给头部格式化器/熵编码器(590)。
[0097]在缩放器/逆变换器(535)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。对于非跳跃模式块,编码器(500)将经重构的残留值与预测(558)的值(例如,经运动补偿的预测值、图片内预测值)组合以形成重构(538)。对于跳跃模式块,编码器(500)使用预测(558)的值作为重构(538)。
[0098]对于图片内预测,重构(538)的值可以被馈送回图片内估计器(540)和图片内预测器(545)。同样,重构(538)的值可以被用于对后续图片的经运动补偿的预测。重构(538)的值可被进一步滤波。对于视频信号(505)的给定图片,滤波控件(560)确定如何对重构(538)的值执行去块滤波和SAO滤波。滤波控件(560)生成滤波控制数据(562),它被提供给头部格式化器/熵编码器(590)和合并器/(诸)滤波器(565)。
[0099]在合并器/(诸)滤波器(565)中,编码器(500)将来自不同小块的内容合并到图片的经重构版本中。编码器(500)根据滤波器控制数据(562)选择性地执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或ALF;未示出)。取决于编码器(500)的设置,小块边界可以被选择性地滤波或根本不被滤波,并且编码器(500)可以在经编码的位流内提供指示是否应用这样的滤波的句法。经解码的图片缓冲器(570)缓冲经重构的当前图片以供在后续的经运动补偿的预测中使用。
[0100]头部格式化器/熵编码器(590)对通用控制数据(522)、经量化的变换系数数据(532)、图片内预测数据(542)、运动数据(552)以及滤波器控制数据(562)进行格式化和/或熵编码。对于帧内预测数据(542),头部格式化器/熵编码器(590)选择(帧内BV预测的)BV预测值索引值并例如使用上下文自适应的二进制算术编码来对其进行熵编码。在一些情况中,头部格式化器/熵编码器(590)还(相对于BV值的BV预测值)确定BV值的BV差,随后对BV差进行熵编码,例如使用上下文自适应二进制算术编码来对BV差进行熵编码。对于跳跃模式块或合并模式块,BV差被忽略。
[0101]头部格式化器/熵编码器(590)在经编码的视频位流(595)中提供经编码数据。经编码的视频比特流(595)的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG_x格式(例如,]^^6-1、]\0^6-2或10^6-4)、!1.261格式(例如,!1.261、!1.262、!1.263或!1.264)或其它格式的变型或扩展。
[0102]取决于所需的压缩的实现和类型,编码器的模块可被添加、省略、拆分成多个模块、与其它模块组合、和/或用相似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的编码器执行一个或多个所描述的技术。编码器的具体实施例通常使用编码器(500)的变型或补充版本。所示的编码器(500)内的各模块之间的关系指示了信息在编码器中的一般流动;为简明起见,未示出其它关系。
[0103]V1.示例视频解码器。
[0104]图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)或其它格式的变型或扩展。
[0105]解码器(600)是基于块的并使用取决于实现的块格式。块可以在不同的阶段被进一步细分。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块。在针对HEVC标准的解码实现中,将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
[0106]解码器(600)使用图片内解码和/或图片间解码来对图片进行解压缩。解码器(600)的许多组件被用于图片内解码和图片间解码这两者。由这些组件执行的确切操作可以取决于正被解压缩的信息的类型而变化。
[0107]缓冲器接收经编码的视频比特流(605)中的经编码数据,并使得接收到的经编码数据可用于解析器/熵解码器(610)。解析器/熵解码器(610)通常应用在编码器(500)中执行的熵编码的逆(例如上下文自适应二进制算术解码)对经熵编码的数据进行熵解码。作为解析和熵解码的结果,解析器/熵解码器(610)产生通用控制数据(622)、经量化的变换系数数据(632)、图片内预测数据(642)、运动数据(652)以及滤波器控制数据(662)。对于帧内预测数据(642),解析器/熵解码器(610)对(帧内BC预测的)BV预测值索引值进行熵解码。对于非跳跃模式、非合并模式块,解析器/熵解码器(610)还可以(例如使用上下文自适应二进制算术解码)对BV值的BV差进行熵解码,随后将该BV差与相应的BV预测值组合以重构BV值。对于跳跃模式或合并模式块,BV差被从比特流中省略,并且BV值就直接是BV预测值(例如,以BV预测值索引值来指示)。
[0108]通用解码控件(620)接收通用控制数据(622)并将控制信号(未示出)提供给其它模块(例如缩放器/逆变换器(635)、图片内预测器(645)、运动补偿器(655)以及帧内/帧间切换)以设置和改变解码期间的解码参数。
[0109]如果当前图片是使用图片间预测来预测的,则运动补偿器(655)接收运动数据(652),例如MV数据、参考图片选择数据以及合并模式索引值。运动补偿器(655)将MV应用于来自经解码的图片缓冲器(670)的(诸)经重构的参考图片。运动补偿器(655)产生针对当前图片中的帧间编码块的运动补偿的预测。经解码图片缓冲器(670)存储一个或多个先前重构的图片以供用作参考图片。
[0110]在解码器(600)内的分开路径中,帧内预测预测器(645)接收帧内预测数据(642),诸如指示帧内预测是使用空间预测还是帧内BC预测的信息(例如,每个帧内块的标记值)、预测模式方向(针对帧内空间预测的情况)、和BV值(针对帧内BC预测的情况)。对于帧内空间预测,根据预测模式数据使用当前图片的重构(638)的值,图片内预测器(645)从当前图片的相邻的、先前重构的样本值中空间地预测当前图片的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内预测器(645)使用帧内预测区域的先前重构的样本值来预测当前块的样本值,图片内预测区域的先前重构的样本值由针对当前块的BV值来指示。
[0111]帧内/帧间切换选择经运动补偿的预测或图片内预测的值用作给定块的预测(658)。例如,当遵循HEVC句法时,可以基于为图片中的CU编码的句法元素来控制图片内/图片间切换,该CU可以包括图片内预测的CU和图片间预测的CU。对于非跳跃模式块,解码器(600)将预测(658)与重构的残留值组合以产生来自视频信号的内容的重构(638)。对于跳跃模式块,解码器(600)使用预测(658)的值作为重构(638)。
[0112]为了重构非跳跃模式块的残留值,缩放器/逆变换器(635)接收并处理经量化的变换系数数据(632)。在缩放器/逆变换器(635)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。例如,逆频率变换器将逆块变换应用到频率变换系数,从而产生样本值数据或预测残留数据。逆频率变换可以是逆DCT、其整数近似、或另一种类型的逆频率变换(例如逆离散正弦变换或其整数近似)。
[0113]对于图片内预测,重构(638)的值可以被馈送回图片内预测器(645)。对于图片间预测,重构(638)的值可以被进一步滤波。在合并器/(诸)滤波器(665)中,解码器(600)将来自不同小块的内容合并到图片的经重构版本中。解码器(600)根据滤波器控制数据(662)和滤波自适应规则来执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或ALF;未示出)。小块边界可以被选择性地滤波或根本不滤波,这取决于解码器(600)的设置或经编码的比特流数据内的句法指示。经解码的图片缓冲器(670)缓冲经重构的当前图片以供在后续的经运动补偿的预测中使用。
[0114]解码器(600)还可包括后处理滤波器。后处理滤波器(608)可以包括去振铃滤波、自适应维纳滤波、膜颗粒再现滤波、SAO滤波或另一种类型的滤波。
[0115]取决于所希望的解压缩的实现和类型,解码器的模块可以被添加、省略、拆分成多个模块、与其他模块组合和/或用类似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的解码器执行一个或多个所描述的技术。解码器的具体实施例通常使用解码器(600)的变型或补充版本。所示的解码器(600)内的模块之间的关系指示信息在解码器中的一般流动;为简明起见,未示出其它关系。
[0116]VI1.块向量预测方面的创新。
[0117]本章节介绍块向量(“BV”)预测的各个特征。特征中的一些涉及默认BV预测值的使用,而其它特征涉及针对BV预测值的合并模式或针对帧内块复制(“BC”)预测的跳跃模式。这些特征可促成在速率-失真性能方面更有效的帧内BC预测。
[0118]具体地,本文中描述的各创新可在编码诸如屏幕捕捉内容之类的某种“人工”创建的视频内容时改善速率-失真性能。屏幕捕捉内容典型地包括重复的结构(例如图形、文本字符),其为帧内BC预测提供了改善性能的机会。屏幕捕捉内容通常用具有高色度采样分辨率的格式(例如YUV 4:4:4或RGB 4:4:4)来编码,但是它也可以用具有较低的色度采样分辨率(例如YUV 4:2:0)的格式来编码。编码/解码屏幕捕捉内容的常见场景包括远程桌面会议和对自然视频或其它“经混合的内容”视频的图形覆盖的编码/解码。
[0119]A.帧内BC预测模式、BV值和BV预测一介绍
[0120]对于帧内BC预测,图片的当前块的样本值是使用同一图片中的样本值来预测的。BV值指示从当前块到图片的包括用于预测的样本值的区域的位移。用于预测的样本值是先前重构的样本值。BV值可以在比特流中被信号化,并且解码器可以使用BV值来确定图片的区域以用于预测,其也在解码器处被重构。帧内BC预测是一种形式的图片内预测一一针对图片的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。
[0121]图7a示出针对当前帧(710)的当前块(760)的帧内BC预测。当前块可以是编码单元(“CU”)的编码块(“CB”)、预测单元(“PU”)的预测块(“PB” )、变换单元(“TU”)的变换块(“TB”)或其它块。当前块的尺寸可以是64 X 64、32 X 32、16 X 16、8 X 8或某个其它尺寸。更一般地,当前块的尺寸为mXn,其中m和η中的每一者都是整数,并且其中m和η可彼此相等或可具有不同的值。替换地,当前块可具有某一其他形状(例如,经编码视频对象的具有非矩形形状的区域)。
[0122]BV(761)指示当前块(760)到图片的包括用于预测的样本值的区域(762)的位移(或偏移)。由BV(761)指示的帧内预测区域(762)有时被称为当前块(760)的“匹配块”。匹配块可与当前块(760)相同,或它可以是当前块(760)的近似。假设当前块的左上位置是在当前帧的位置(XQ,yQ)处,并假设帧内预测区域的左上位置在当前帧的位置(X1,yi)处。BV指示位移(xmy1-yo)。例如,如果当前块的左上位置在位置(256,128)处,并且参考区域的左上位置在位置(176,104)处,则BV值为(-80,-24)。在本示例中,负水平位移指示在当前块的左边的位置,而负垂直位移指示在当前块之上的位置。
[0123]帧内BC预测可以通过利用使用BC操作的冗余性(例如帧内部的重复模式)来改善编码效率。代替直接编码当前块的样本值,使用BV值来表示当前块的样本值。即使当前块的样本值不直接匹配用BV值指示的参考区域的样本值,但是这些差异可能是可忽略的(即在感知上不是显而易见的)。或者,如果这些差异是显著的,则这些差异可被编码成可比当前块的原始样本值更高效地被压缩的残留值。
[0124]共同地,使用帧内BC预测编码的块的BV值可消费大量的比特。这些BV值可被熵编码以降低比特率。为了进一步降低BV值的比特率,编码器可使用BV值的预测。BV值通常展示出冗余性一给定块的BV值通常与图片中的先前块的BV值相似或甚至相同。对于BV预测,给定块的BV值是使用BV预测值来预测的。给定块的BV值和BV预测值之间的差(或BV差)随后被熵编码。通常,BV差是针对BV值的水平和垂直分量以及BV预测值来计算的。当BV预测工作良好时,BV差具有支持高效熵编码的概率分布。在HEVC标准的当前草稿版本(JCTVC-01005)中,BV预测值是当前CTU内最后编码的CU的BV值(即,当前CTU内的先前帧内BC预测的块的BV值)。
[0125]图7b示出帧中的当前块(760)的BV(761)以及帧(710)中的先前块(750)的BV(751)。先前块(750)的BV(751)用作当前块(760)的BV(761)的BV预测值。例如,如果BV值为(-80,-24)并且BV预测值为(-80,-32),则为(O,8)的BV差被熵编码。
[0126]解码器接收BV值的经熵编码的BV差,并对该BV差进行熵解码。解码器还确定BV值的BV预测值。由解码器确定的BV预测值与由编码器确定的BV预测值相同。解码器将BV预测值和经解码的BV差组合以重构BV值。
[0127]在HEVC标准的当前草稿版本(JCTVC-01005)中,基于实际BV值的BV预测值在一些情形下不可用。例如,前一实际BV值对于给定CTU中的第一个帧内BC预测的块不可用。当前一实际BV值对于BV预测值不可用时(如图7c中所示),(0,0)的默认值被用作为BV预测值。事实上,这意味着在没有BV值对CTU中的前一帧内BC预测的块可用时,BV预测被跳过。
[0128]B.具有非零分量的默认BV预测值
[0129]根据本文中描述的创新的一个方面,当前一实际BV值不可用作为当前块的BV值的BV预测值时,编码器和解码器使用具有非零分量的默认BV预测值。相比于为零值的默认BV预测值,具有非零分量的默认BV预测值趋于更接近于当前块的BV值,这导致对BV差的更高效的熵编码。另外,具有非零值的默认BV预测值能够提供对于BV预测采用跳跃模式还是合并模式的有用选项。
[0130]1.示例默认BV预测值
[0131]如图7d中所示,对于当前块(760)的BV值(761),默认BV预测值(763)可具有非零水平分量。例如,默认BV预测值是一个水平向量(BVx,O)。水平BV分量BVx的值可以是一个固定的非零值。或者,BVx的值可以是当前块的宽度,该宽度是避免当前块和参考区域之间重叠的水平BV分量BVx的最小值。
[0132]例如,当当前块是具有宽度W和高度H的CU的CB时,水平BV分量BVx的值的默认BV预测值可以是等于CU的宽度W的负偏移。也就是说,默认BV预测值可以是(_W,0)。每当(基于前一个块的实际BV值的)常规BV预测值不可用时,默认BV预测值(BVx,0)可被使用。或者,默认BV预测值(BVx,0)可以取决于当前块的BV值而有条件地使用。例如,如果当前块的BV值的垂直BV分量小于-H,则默认BV预测值为(-W,O)。否则(当前块的BV值的垂直BV分量不小于-H),默认BV预测值为(0,0)。这一条件确保了在当前块的BV值具有显著垂直BV分量时不应用默认BV预测值(_W,0)。替代地,非零默认BV预测值(BVx,0)根据另一条件而被有条件地应用。
[0133]替代具有为-W的负偏移,默认BV预测值可具有另一负偏移。例如,默认BV预测值可以为(_2*W,0)。
[0134]替代地,默认BV预测值是垂直向量(O,BVy)。垂直BV分量BVy的值可以是一个固定的非零值,或者BVy的值可以是当前块的高度,该高度是避免当前块和参考区域之间重叠的BVy的最小值。例如,当当前块是具有宽度W和高度H的CU的CB时,默认BV预测值可以是(0,-H)。默认BV预测值(0,BVy)可在每当常规BV预测值不可用时被使用,或者默认BV预测值(0,BVy)可取决于当前块的BV值有条件地使用。
[0135]替代地,默认BV预测值可具有非零水平分量和非零垂直分量。
[0136]2.采用默认BV预测值的示例编码
[0137]图8示出用于在编码期间使用具有非零分量的默认BV预测值的通用技术(800)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(800)。
[0138]编码器确定(830)图片的当前块的默认BV预测值。例如,在HEVC实现中,当前块是编码树单元的编码单元的一部分。默认BV预测值包括具有非零值的BV预测值分量。例如,具有非零值的BV预测值分量是水平BV分量。取决于实现,非零水平BV分量可具有固定的值(与当前块的大小无关)、等于当前块的宽度的值、或者某个其它非零值。或者,具有非零值的BV预测值分量是垂直BV分量。取决于实现,非零垂直BV分量可具有固定的值(与当前块的大小无关)、等于当前块的高度的值、或者某个其它非零值。或者,默认BV预测值可包括非零水平BV分量和非零垂直BV分量。默认BV预测值可以是为如章节C中描述的跳跃模式或者为如章节D中描述的合并模式所聚集的一组多个BV预测值候选的一部分。
[0139]编码器使用默认BV预测值来对当前块进行编码(850)。例如,编码器(a)使用当前块的BV值来执行帧内BC预测、(b)使用当前块的BV值和默认BV预测值来确定BV差、以及(c)对BV差进行编码。替代地,编码器直接使用默认BV预测值来执行帧内BC预测。
[0140]图9示出用于在编码期间使用具有非零分量的默认BV预测值的更详细的示例技术(900)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(900)ο
[0141]作为开始,编码器标识(910)图片的当前块的BV值。编码器可使用任何形式的BV估计来标识当前块的BV值。在HEVC实现中,当前块是编码树单元的编码单元的一部分。
[0142]编码器检查(920)实际BV值是否可用作为BV预测值。例如,编码器检查图片的前一个块的实际BV值是否可用。在HEVC实现中,如果(I)前一个块和当前块是同一CTU的一部分,并且(2)前一个块的预测模式是帧内BC预测模式,则前一个块的实际BV值是可用的。例如,前一个块的实际BV值对于给定CTU中的第一个帧内BC预测的块不可用。
[0143]如果实际BV不可用作为BV预测值,则编码器使用(940)实际BV作为BV预测值。另一方面,如果没有任何之前的块的实际BV可用作为BV预测值,则编码器确定(930)当前块的默认BV预测值。默认BV预测值包括具有非零值的BV预测值分量。例如,如以上结合图8的动作(830)所描述的来确定默认BV预测值。
[0144]编码器确定(950)当前块的BV值和BV预测值之间的BV差。编码器对该BV差进行熵编码(960)。
[0145]3.采用默认BV预测值的示例解码
[0146]图10示出用于在解码期间使用具有非零分量的默认BV预测值的通用技术(1000)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1000)。
[0147]解码器确定(1030)图片的当前块的默认BV预测值。例如,在HEVC实现中,当前块是编码树单元的编码单元的一部分。默认BV预测值包括具有非零值的BV预测值分量。例如,具有非零值的BV预测值分量是水平BV分量。取决于实现,非零水平BV分量可具有固定的值(与当前块的大小无关)、等于当前块的宽度的值、或者某个其它非零值。或者,具有非零值的BV预测值分量是垂直BV分量。取决于实现,非零垂直BV分量可具有固定的值(与当前块的大小无关)、等于当前块的高度的值、或者某个其它非零值。或者,默认BV预测值可包括非零水平BV分量和非零垂直BV分量。默认BV预测值可以是为如章节C中描述的跳跃模式或者为如章节D中描述的合并模式所聚集的一组多个BV预测值候选的一部分。
[0148]解码器使用默认BV预测值来对当前块进行解码(1050)。例如,解码器(a)对当前块的BV差进行解码、(b)将经解码的BV差与默认BV预测值组合以重构当前块的BV值、以及(c)使用当前块的BV值来执行帧内BC预测。替代地,解码器直接使用默认BV预测值来执行帧内BC预测。
[0149]图11示出用于在解码期间使用具有非零分量的默认BV预测值的更详细的示例技术(I 100)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(IlOO)0
[0150]解码器检查(1120)实际BV是否可用作为图片的当前块的BV值的BV预测值。例如,解码器检查图片的前一个块的实际BV值是否可用。在HEVC实现中,如果(I)前一个块和当前块是同一 CTU的一部分,并且(2)前一个块的预测模式是帧内BC预测模式,则前一个块的实际BV值是可用的。前一个块的实际BV值例如对于给定CTU中的第一个帧内BC预测的块不可用。
[0151]如果实际BV不可用作为BV预测值,则解码器使用(1140)实际BV作为BV预测值。另一方面,如果没有任何之前的块的实际BV可用作为BV预测值,则解码器确定(1130)当前块的默认BV预测值。默认BV预测值包括具有非零值的BV预测值分量。例如,如以上结合图10的动作(1030)所描述的来确定默认BV预测值。
[0152]解码器还对当前块的BV差进行熵解码(1150)。解码器随后将BV差与BV预测值组合(1160)以重构当前块的BV值。
[0153]4.替换和变型
[0154]在以上描述的默认BV预测值的各示例中,默认BV预测值的值不受当前块的位置约束。替代地,默认BV预测值的值可以受当前块的位置约束。例如,如果当前块处于图片的边缘处使得默认BV预测值将指向图片之外的位置,则默认BV预测值被约束为指向图片内的位置,或者使用(O,0)BV预测值。或者,作为其中BV值被约束为引用某个CTU集合(例如,当前CTU和前一 CTU)中的位置的HEVC实现的另一示例,默认BV预测值被约束为弓丨用该CTU集合内的位置。或者,作为其中图片包括多个小块或多个切片的HEVC实现的另一示例,BV值(以及默认BV预测值)可被约束为引用当前小块(和/或当前切片)内的位置。
[0155]在以上描述的默认BV预测值的各示例中,默认BV预测值的值不取决于当前块的位置而切换。替代地,默认BV预测值的值可以取决于当前块的位置而切换。例如,如果当前块处于除了图片(或小块、或切片,如果使用的话)的左边缘以外的任何位置,则默认BV预测值是水平BV预测值(BVx,0)。如果当前块处于图片(或小块、或切片,如果使用的话)的左边缘,或者默认水平BV预测值否则将引用图片(或小块、或切片,如果使用的话)之外的位置,则默认BV预测值是垂直BV预测值(0,BVy)。并且,如果当前块处于图片(或小块、或切片,如果使用的话)的左上角,或者默认水平BV预测值和垂直BV预测值否则将引用图片(或小块、或切片,如果使用的话)之外的位置,则默认BV预测值是(0,0)BV预测值。
[0156]C.帧内BC预测的跳跃模式
[0157]根据本文中描述的创新的另一方面,编码器和解码器针对某些帧内BC预测的块使用跳跃模式。在跳跃模式中,帧内BC预测的块使用预测的BV值并且在比特流中不具有残留数据。在一些情形下,使用针对帧内BC预测的块的跳跃模式能够显著地改善速率-失真效率。
[0158]总得来说,编码器决定何时为当前帧内BC预测的块使用跳跃模式。编码器能够基于帧内BC预测区域与当前块有多接近地匹配、基于残留值的感知重要性、基于可用于对残留值进行编码的比特率、和/或基于其它因素来决定使用跳跃模式。在其中编码速度是约束的例如实时编码的某些编码模式下,编码器可偏好为帧内BC预测的块使用跳跃模式。
[0159]图12示出包括针对帧内BC预测的块的跳跃模式的编码的通用技术(1200)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(1200)。
[0160]对于图片的当前块,如果当前块是以跳跃模式编码的帧内BC预测的块,则编码器使用(I 210) BV预测来确定当前块的BV值。当前块的BV值指示在该图片中的一区域的位移。BV预测可包括合并模式预测、使用最后编码的帧内BC预测的块的BV值的预测、使用相邻的帧内BC预测的块的BV值的分量级中值的预测、或者某种其它形式的BV预测。当前块是例如CTU的⑶的一部分。
[0161]编码器使用帧内BC预测用BV值(此处为预测的BV值)来编码(1220)当前块。编码器在比特流中输出(1230)当前块是以跳跃模式编码的指示。由于该块是以跳跃模式编码的,因此比特流缺少当前块的BV差和残留数据。然而,比特流可包括索引值,该索引值指示从多个BV预测值候选的集合中对要用作当前块的BV值的BV预测值候选的选择。例如,当多个BV预测值候选的集合具有两个BV预测值候选时,该索引值是一个标志(flag)值。或者,当多个BV预测值候选的集合具有不止两个BV预测值候选时,该索引值是一个整数值。该索引值可使用例如算术编码来进行熵编码。
[0162]图13示出包括针对帧内BC预测的块的跳跃模式的解码的通用技术(1300)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1300)。
[0163]对于图片的当前块,如果当前块是以跳跃模式编码的帧内BC预测的块,则解码器从比特流中接收(1310)该当前块是以跳跃模式编码的指示。由于该块是以跳跃模式编码的,因此比特流缺少当前块的BV差和残留数据。然而,如以上所描述的,比特流可包括索引值,该索引值指示从多个BV预测值候选的集合中对要用作当前块的BV值的BV预测值候选的选择。当前块是例如CTU的CU的一部分。
[0164]解码器使用(1320)BV预测来确定当前块的BV值。BV预测一般与编码器处执行的BV预测成镜像。BV预测可包括合并模式预测、使用最后编码的帧内BC预测的块的BV值的预测、使用相邻的帧内BC预测的块的BV值的分量级中值的预测、或者某种其它形式的BV预测。解码器使用帧内BC预测用BV值(此处为预测的BV值)来解码(1330)当前块。
[0165]D.针对BV预测的合并模式
[0166]根据本文中描述的创新的另一方面,编码器和解码器使用针对BV预测的合并模式。合并模式能够显著地改善BV预测的质量,这进而降低了比特流中的BV差所消耗的比特的量。
[0167]对于合并模式,在确定块的BV预测值时,编码器聚集BV预测值候选的集合,选择BV预测值候选中的一个以用作为该块的BV预测值,并且在比特流中信号化指示该被选择的BV预测值候选的索引值。解码器聚集该BV预测值候选的集合,并且基于被信号化的索引值来选择BV预测值候选中要用作为该块的BV预测值的那个BV预测值候选。尽管索引值消耗比特流中的比特,但是合并模式能够显著地改善BV预测并且因此减少BV差所消耗的比特,从而得到整体的比特率降低。
[0168]在示例实现中,针对BV预测的合并模式与针对帧内BC预测的块的跳跃模式组合使用。替代地,针对BV预测的合并模式可在即使未采用针对帧内BC预测的块的跳跃模式的情况下使用。
[0169]1.示例BV预测值候选以及索引值
[0170]当确定合并模式下块的BV预测值时,编码器或解码器聚集BV预测值候选的集合。该BV预测值候选的集合的构成取决于实现,但是在编码器侧和解码器侧是相同的。
[0171]在一个方法中,BV预测值候选是从图片中的之前编码的块的实际BV值中聚集出来的。总得来说,编码器和解码器确定图片中的多至X个之前的块的实际BV值。之前的块是图片中的之前编码的帧内BC预测的块。具体来说,它们是按照在解码顺序上比当前块更早的最近的X个帧内BC预测的块。X的值取决于实现并且可以是例如2、3、4、5或某个其它数字。使用更多BV预测值候选一般会提高索引值的比特率,但是会改善BV预测的质量,这进而减少了 BV差消耗的比特。
[0172]之前的帧内BC预测的块不需要是当前块的邻居。如果少于X个具有实际BV值的之前的块可用,则BV预测值候选的集合可包括少于X个BV预测值候选。
[0173]图14示出了这一方法的示例。在图14中,三个之前的帧内BC预测的块(1430,1440,1450)的三个BV值(1431,1441,1451)提供用于当前帧(1410)的当前块(1460)的BV预测值的合并模式的BV预测值候选。尽管在图14的示例中,之前的块(1430,1440,1450)是连续的,但是之前的块不需要是连续的。(也就是说,提供BV预测值候选的之前的帧内BC预测的块可以被图片中的其它非帧内BC预测的块隔开。)
[0174]BV预测值候选的集合可进一步包括一个或多个默认BV预测值。在图14的示例中,BV预测值候选的集合包括具有水平位移的默认BV预测值(BVx,0)以及具有垂直位移的默认BV预测值(O,BVy)。具体来说,具有水平位移和垂直位移的默认BV预测值趋于对文本内容来说是有用的,文本内容一般遵循完全水平或垂直的方向。
[0175]合并模式索引值与相应的BV预测值候选相关联。典型的,越小的索引值与越可能被选择的BV预测值候选相关联,而越大的索引值与越不可能被选择的BV预测值候选相关联,这趋于在熵编码后降低索引值的比特率。在图14中,根据预期的选择可能性,索引值idx0---1dx 4被指派给具有BV值(1451,1441,1431)和默认BV预测值的BV预测值候选。
[0176]例如,在一些实现中,之前编码的块的两个实际BV值被存储为BV预测值候选BVcand0和BVcandl。在新的BV值被使用之后,较旧的BV预测值候选BVcand^替换为较新的BV预测值候选BVcandQ,而较新的BV预测值候选BVcandQ被替换为刚刚使用的BV值。在编码器侧,对于当前块,编码器选择BVcandQ和BVcandl中的一个以用作为BV预测值。作为合并模式索引值,编码器信号化指示BVcandQ和BVcandl中的哪一个被编码器使用并且应当被解码器使用的标志值。在解码器侧,解码器接收并解析标志值,并且基于该标志值选择BVcandQ和BVcandl中的要用作为当前块的BV预测值的那个。在这一方法中,编码器和解码器各自存储和更新两个BV预测值候选BVcandQ和BVcandl ο
[0177]作为另一示例,在一些其它实现中,之前编码的块的一个实际BV值被存储为第一BV预测值候选BV_d0,而默认BV预测值被存储为第二 BV预测值候选BV_dl。例如,默认BV预测值是(BVx,0),其中BVx可以是等于当前块的宽度W或具有某个其它非零值的负偏移。在新的BV值被使用之后,第一 BV预测值候选BVcandQ被替换为刚刚使用的BV值,但是第二 BV预测值BVcandI不改变。在编码器侧,对于当前块,编码器选择BVcandQ和BVcandI中的一个以用作为BV预测值。编码器信号化指示BVcandQ和BVcandl中的哪一个被编码器使用并且应当被解码器使用的标志值。解码器接收并解析标志值,并且基于该标志值选择BVcandQ和BVcandl中的要用作为当前块的BV预测值的那个。在这一方法中,编码器和解码器各自存储两个BV预测值候选BVcandQ和BV_di,并且在编码或解码期间,第一BV预测值候选BVeandQ被更新。
[0178]在另一方法中,BV预测值候选是从邻近图片中的当前块的之前编码的块的实际BV值中聚集出来的。编码器和解码器确定多至X个相邻块的实际BV值。相邻的块是图片中在当前块左边、在当前块上边、在当前块右上方的之前编码的帧内BC预测的块。X的值取决于实现并且可以是例如2、3、4、5或某个其它数字。如果少于X个具有实际BV值的相邻块可用,则BV预测值候选的集合可包括少于X个BV预测值候选。
[0179]图15示出了这一方法的示例。在图15中,三个相邻帧内BC预测的块(I530,1540,1550)的三个BV值(1531,1541,1551)提供用于当前帧(1510)的当前块(1560)的BV预测值的合并模式的BV预测值候选。如果相邻块中的一个不可用(例如,不是帧内BC预测的块,或者在图片、小块或切片之外),则在一些情况下,另一相邻块可被添加(例如,当前块左上方的块)。如图15中所示,BV预测值候选的集合包括一个或多个默认BV预测值(诸如具有水平位移的默认BV预测值(BVx,0)以及具有垂直位移的默认BV预测值(0,BVy))。在图15中,根据预期的选择可能性,索引值idx O…idx 4被指派给具有BV值(1541,1531,1551)和默认BV预测值的BV预测值候选。
[0180]对BV预测值候选中的冗余值的处理取决于实现。在一些实现中,用于合并模式的BV预测值候选的集合可包括冗余值一一也就是说,冗余BV预测值候选不被移除或替代。在其它实现中,在聚集用于合并模式的BV预测值候选的集合时,编码器和解码器不向该集合添加冗余的BV预测值。这一方法可导致较小的BV预测值候选的集合,这可降低编码的索引值的比特率。在又一些其它实现中,在聚集用于合并模式的BV预测值候选的集合时,编码器和解码器将会与集合中已存在的BV预测值候选冗余的BV预测值候选替换为(例如,来自另一之前编码的帧内BC预测的块、来自另一相邻的帧内BC预测的块、来自另一默认BV预测值选项的)不同的BV预测值候选。例如,如果之前的第三个帧内BC预测的块的BV值与之前的第一个帧内BC预测的块或之前的第二个帧内BC预测的块的BV值相同,则编码器/解码器替代地将之前的第四个帧内BC预测的块的BV值添加到BV预测值候选的集合。如果该BV值将是冗余的,则编码器/解码器替代地添加之前的第五个、第六个等帧内BC预测的块的BV值。或者,编码器/解码器添加另一默认BV预测值。
[0181]2.采用所选择的BV预测值的示例编码
[0182]图16a示出包括针对BV预测值的合并模式的编码的通用技术(1600)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(1600)。
[0183]作为开始,编码器确定(1610)图片的当前的帧内BC预测的块的多个BV预测值候选的集合。当前块是例如CTU的CU的一部分。编码器可使用参照图14和15描述的方法中的一个或使用另一方法来确定BV预测值候选的集合。总得来说,BV预测值候选可分别包括多至X个之前块的实际BV值,其中X取决于实现(例如,X是2、3、4、5或某个其它数字)οX个之前的块可以至少部分基于当前块周围的邻居的位置(参见例如图15)和/或与当前块相比的解码顺序(参见例如图14)来标识。BV预测值候选还可包括一个或多个默认BV预测值(例如,各自具有带有非零值的BV预测值分量)。
[0184]编码器选择(1620)多个BV预测值候选中要用于当前的帧内BC预测的块的一个BV预测值候选。例如,在当前块将使用帧内BC预测用所选的BV预测值候选来编码时,编码器依据某一度量(例如,绝对差之和、均方差)来选择针对其的参考帧内预测区域最接近地匹配当前块的BV预测值候选。或者,当当前块具有将被用于帧内BC预测的BV值(通过BV估计标识出),则编码器选择最接近匹配当前块的BV值的BV预测值候选。该选择导致最小的BV差,这趋于改善熵编码的效率。
[0185]编码器使用所选择的BV预测值候选来对当前帧内BC预测的块进行编码(1630)。图16b示出示例实现中对当前块进行编码(1630)的细节。编码器检查(1632)当前块是否是以跳跃模式编码的。如果是,则编码器使用帧内BC预测用所选择的BV预测值而不是使用任何残留数据来编码(1633)当前块。否则(不是跳跃模式),则编码器检查(1634)当前块是否是以合并模式编码的。如果是,则编码器使用帧内BC预测用所选择的BV预测值来编码(1635)当前块。在合并模式中,编码器可选地对当前块的残留数据进行编码。否则(不是合并模式),则编码器使用帧内BC预测用当前块的BV值来编码(1637)当前块,可选地编码当前块的残留数据。
[0186]编码器在比特流中输出(1640)指示所选择的BV预测值候选的索引值。当BV预测值候选的集合包括两个BV预测值候选时,该索引值可以是一个标志值。或者,当存在不止两个BV预测值候选时,该索引值可以是一个整数值。索引值可被熵编码或信号化为固定长度值。如果帧内BC预测模式语法元素指示当前块是使用帧内BC预测模式来编码的,则索引值可以被(有条件地)在比特流中信号化作为单独的语法元素。或者,索引值可以被与另一语法元素(例如,指示当前块是否是使用帧内BC预测模式来编码的语法元素)联合地在比特流中信号化。
[0187]编码器还输出当前块的任何经编码的数据。比特流中的值可指示当前块是否是以跳跃模式编码的。如果当前块是跳跃模式块,则比特流缺少当前块的BV差并且缺少当前块的残留数据。如果当前块是合并模式块,则比特流缺少当前块的BV差但是可包括当前块的残留数据。否则(当前块是非跳跃模式、非合并模式块),比特流包括当前块的BV差(指示所选择的BV预测值候选和当前块的BV值之间的差)并且还可包括当前块的残留数据。
[0188]当编码器使用数据结构来跟踪被用于之前的帧内BC预测的块的实际BV值时,编码器可用当前块的BV值来更新数据结构。
[0189]3.采用所选择的BV预测值的示例解码
[0190]图17a示出包括针对BV预测值的合并模式的解码的通用技术(1700)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1700)。
[0191]作为开始,解码器从比特流中接收(1710)图片的当前块的索引值。当前块是例如CTU的CU的一部分。索引值指示多个BV预测值候选的集合中被选择的BV预测值候选。当BV预测值候选的集合包括两个BV预测值候选时,该索引值可以是一个标志值。或者,当存在不止两个BV预测值候选时,该索引值可以是一个整数值。索引值可被熵编码(在这种情况下,解码器对索引值进行熵解码)或信号化为固定长度值。如果帧内BC预测模式语法元素指示当前块是使用帧内BC预测模式来编码的,则索引值可以被(有条件地)在比特流中信号化作为单独的语法元素。或者,索引值可以被与另一语法元素(例如,指示当前块是否是使用帧内BC预测模式来编码的语法元素)联合地在比特流中信号化。
[0192]解码器还接收当前块的任何经编码的数据。解码器在解码的适当阶段对经编码的数据进行熵解码。比特流中的值可指示当前块是否是以跳跃模式编码的。如果当前块是跳跃模式块,则比特流缺少当前块的BV差并且缺少当前块的残留数据。如果当前块是合并模式块,则比特流缺少当前块的BV差但是可包括当前块的残留数据。否则(当前块是非跳跃模式、非合并模式块),则比特流包括当前块的BV差并且还可包括当前块的残留数据。
[0193]解码器确定(1720)当前块的多个BV预测值候选的集合。解码器可使用参照图14和15描述的方法中的一个或使用另一方法来确定BV预测值候选的集合。总得来说,BV预测值候选可包括多至X个之前块的实际BV值,其中X取决于实现(例如,X是2、3、4、5或某个其它数字hx个之前的块可以至少部分基于当前块周围的邻居的位置(参见例如图15)和/或与当前块相比的解码顺序(参见例如图14)来标识。BV预测值候选还可包括一个或多个默认BV预测值(例如,各自具有带有非零值的BV预测值分量)。
[0194]基于索引值,解码器选择(1730)多个BV预测值候选中要用于当前块的一个BV预测值候选。解码器使用所选择的BV预测值候选对当前块进行解码(1740)。图17b示出示例实现中对当前块进行解码(1740)的细节。解码器检查(1742)当前块是否是以跳跃模式编码的。如果是,则解码器使用帧内BC预测用所选择的BV预测值而不是使用任何残留数据来解码(1743)当前块。否则(不是跳跃模式),则解码器检查(1744)当前块是否是以合并模式编码的。如果是,则解码器使用帧内BC预测用所选择的BV预测值来解码(1745)当前块。在合并模式中,解码器对当前块的残留数据(如果存在)进行解码。否则(不是合并模式),则解码器使用帧内BC预测用当前块的BV值来解码(1747)当前块(用相对于所选择的BV预测值的BV差来解码),还对当前块的残留数据(如果存在)进行解码。
[0195]当解码器使用数据结构来跟踪被用于之前的帧内BC预测的块的实际BV值时,解码器可用当前块的BV值来更新数据结构。
[0196]4.合并模式的示例实现
[0197]在HEVC实现中,CU的语法和语义可被修改以信号化用于BV预测的合并模式和/或用于帧内BC预测的块的跳跃模式的语法元素。
[0198]在HEVC规范的草稿(JCTVC_01005_v3)中,cu_skip_flag[x0] [y0]指示当前⑶是否被跳过,但是该标志仅在当前切片是预测性(“P”)切片或双向预测性(“B”)切片的情况下被信号化。索引x0,y0指定了被考虑的CB的左上亮度样本相对于图片的左上亮度样本的位置(叉0,70)。如果(311_81^_€]^|^0][70]为1,则当前0]被跳过,并且对于该0],(311_81^_€]^[x0][y0]之后不再解析更多的语法元素,除了合并候选索引merge_idx[x0][y0]。如果cu_81^口_;^38|^0][70]为0,则当前0]不被跳过。当(311_81^口_;^38|^0][70]不存在,贝11其被推断为O O
[ΟΙ"]根据一个可能的修改,cu_skip_flag[xO][yO]也可在当前切片是帧内(“I”)切片的情况下被信号化。当帧内BC预测被启用(根据顺序参数集中的标志intra_blOCk_COpy_enabled_flag),如果cu_skip_flag[xO] [y0]的值为I,则当前OJ被跳过,并且对于该OJ,cu_Skip_flag[xO][yO]之后不再解析更多的语法元素,除了 BV预测值索引值idx。具体来说,对于当前被跳过的CU,没有BV差被信号化。另一方面,如果CU_skip_flag[X0][y0]的值为0,则当前⑶不被跳过。
[0200]在HEVC规范的草稿(JCTVC_01005_v3)中,intra_bc_f lag[x0] [y0]指不当前⑶是否是以帧内BC预测模式编码的。数组索引x0,y0指定了被考虑的CB的左上亮度样本相对于图片的左上亮度样本的位置(x0,y0)。如果intra_bc_flag[xO][yO]为I,则当前CU是以帧内BC预测模式编码的。如果;1111:作_130_;^38|^0][70]为0,则当前^是以帧内空间预测来编码的。当不存在时,intra_bc_f lag的值被推断为是O。
[0201 ]根据一个可能的修改,对于intra_bc_f lag[x0] [y0],当intra_bc_f lag[x0] [y0]为I时,当前CU的语法包括指示对BV预测值候选的选择的BV预测值索引值idx。索引值idx可以是一个标志值,用以指示在两个BV预测值候选之间的选择,或者是一个整数值,用以指示在不止两个BV预测值候选中的选择。该索引值可使用例如算术编码来进行熵编码。?0202] 或者,根据另一可能的修改,对于intra_bc_flag[x0][y0],语法元素是整数值而不是二进制标志。如JCTVC_01005_v3中所述,如果intra_bc_f lag[x0] [5^0]为0,则当前01是以帧内空间预测来编码的。另一方面,如果intra_bc_flag[x0][y0]大于0,则当前⑶是以帧内BC预测模式编码的,并且intra_bc_flag[x0][y0]还指示BV预测值索引值idx。例如,如果intra_bc_f lag[xO] [yO]为I,则idx为I ;如果intra_bc_f lag[xO] [yO]为2,则idx为2;依此类推。换言之,BV预测值索引值idx与空间或BC预测的二进制值联合编码在单个语法元素中。
[°203] 对于修改intra_bc_f lag[xO] [yO]和信号化索引值idx的任意一种方式,变量BvIntraPredictor [compldx]规定要用于当前⑶的帧内BC预测的BV预测值候选。例如,在图14的不例中,BvIntraPredictor [O] [compIdx]、BvIntraPredictor[ I ] [compIdx]和BvIntraPredictor[2] [compIdx]存储多达三个最近的之前帧内BC预测的块的BV值。或者,在图 15的不例中,Bv IntraPredi c tor [O] [comp Idx]、BvIntraPredictor [ I ] [comp Idx]和BvIntraPredictor[2][compIdx]存储多达三个相邻的帧内BC预测的块的BV值。BvIntraPredictor[3] [compIdx]和BvIntraPredictor[4] [compIdx]分别存储水平和垂直方向上的默认BV预测值。水平BV分量被指派CompIdx = O,而垂直BV分量被指派compldx = I。
[0204]对于跳跃模式块或合并模式块,不为该块信号化BV差。该块的BV值是被选择的BV预测值候选。
[0205]对于非跳跃模式、非合并模式块,在比特流中信号化BV差。变量BvdIntra[xO][yO][compldx]规定BV差。数组索引xO,yO指定了被考虑的PB的左上亮度样本相对于图片的左上亮度样本的位置UO,y0)。水平BV差分量被指派compldx = 0,而垂直BV差分量被指派compldx= I。对于CompIdx = 0..1,块的BV值是BvIntra[xO] [compldx] =BvdIntra[xO] [yO][compIdx]+BvIntraPredictor[compIdx]。
[0206]变量BvIntraPredictor [comp Idx]可随后被更新以包括当前⑶的BV值。
[0207]5.替换和变型
[0208]在当前块具有通过BV估计而标识的BV值时,编码器可使用任何形式的BV估计来标识当前块的BV值。在当前块的BV估计期间,编码器可通过估计可用于当前块的一个或多个BV预测值候选来开始。用BV预测值候选来开始BV估计可帮助快速标识合适的BV值,以避免对其它BV值进行评估。编码器根据需要对其它BV值进行评估。编码器可使用数据结构来跟踪BV预测值候选。当BV值可应用于不同尺寸的块(例如,用于32x32CU、16xl6CU、8x8CU或更小的TU或CU)时,数据结构可包括针对不同大小的块的不同BV预测值候选(例如,用于32x32⑶的一个或多个BV预测值候选、用于16x16⑶的一个或多个BV预测值候选等等)。对于当前块,编码器首先评估存储在数据结构中的针对当前块的级别(尺寸)的BV预测值候选,随后如果需要的话继续对其它BV值进行评估。
[0209]鉴于可应用所公开的本发明的原理的许多可能的实施例,应当认识到,所示实施例仅是本发明的优选示例,并且不应认为是限制本发明的范围。相反,本发明的范围由后续的权利要求来界定。我们要求作为我们的发明保护落入这些权利要求范围和精神内的所有内容。
【主权项】
1.一种在具有视频编码器或图像编码器的计算设备中的方法,所述方法包括: 确定图片的当前块的默认块向量(“BV”)预测值,所述默认BV预测值包括具有非零值的BV预测值分量;以及 使用所述默认BV预测值来对所述当前块进行编码。2.如权利要求1所述的方法,其特征在于,使用所述默认BV预测值来对所述当前块进行编码包括: 使用所述当前块的BV值来执行帧内块复制(“BC”)预测; 使用所述当前块的BV值以及所述当前块的默认BV预测值来确定所述当前块的BV差;以及 对所述当前块的BV差进行编码。3.如权利要求1所述的方法,其特征在于,使用所述默认BV预测值来对所述当前块进行编码包括使用所述默认BV预测值来执行帧内BC预测。4.一种在具有视频解码器或图像解码器的计算设备中的方法,所述方法包括: 确定图片的当前块的默认块向量(“BV”)预测值,所述默认BV预测值包括具有非零值的BV预测值分量;以及 使用所述默认BV预测值来对所述当前块进行解码。5.如权利要求4所述的方法,其特征在于,使用所述默认BV预测值来对所述当前块进行解码包括: 对所述当前块的BV差进行解码; 将经解码的所述当前块的BV差与所述当前块的默认BV预测值组合以重构所述当前块的BV值;以及 使用所述当前块的BV值来执行帧内块复制(“BC”)预测。6.如权利要求4所述的方法,其特征在于,使用所述默认BV预测值来对所述当前块进行解码包括使用所述默认BV预测值来执行帧内BC预测。7.如权利要求1一6中的任意一项所述的方法,其特征在于,所述默认BV预测值是经聚集的多个BV预测值候选的集合的一部分。8.如权利要求1一6中的任意一项所述的方法,其特征在于,还包括: 检查所述图片的前一个块的实际BV值是否可用,其中所述当前块的默认BV预测值仅在所述图片的任何一个之前的块的实际BV值都不可用的情况下被使用。9.如权利要求8所述的方法,其特征在于,如果(I)所述前一个块和所述当前块是给定编码树单元的一部分,并且(2)所述前一个块的预测模式是帧内BC预测模式,则所述前一个块的实际BV值是可用的。10.如权利要求1一 9中的任意一项所述的方法,其特征在于,所述当前块是编码单元的一部分。11.如权利要求1一 10中的任意一项所述的方法,其特征在于,所述具有非零值的BV预测值分量是水平BV分量。12.如权利要求1一 10中的任意一项所述的方法,其特征在于,所述具有非零值的BV预测值分量是垂直BV分量。13.如权利要求1一 10中的任意一项所述的方法,其特征在于,所述非零值是所述当前块的高度或宽度。14.如权利要求1一 10中的任意一项所述的方法,其特征在于,所述非零值是与所述当前块的尺寸无关的固定值。15.—种在具有视频编码器或图像编码器的计算设备中的方法,所述方法包括: 使用块向量(“BV”)预测来确定图片的当前块的BV值,所述当前块的BV值指示到所述图片内的区域的位移; 使用帧内块复制预测用所述BV值来对所述当前块进行编码;以及在比特流中输出所述当前块是以跳跃模式编码的指示,其中所述比特流缺少所述当前块的BV差和残留数据。16.一种在具有视频解码器或图像解码器的计算设备中的方法,所述方法包括: 从比特流中接收图片的当前块是以跳跃模式编码的指示,其中所述比特流缺少所述当前块的块向量(“BV”)差和残留数据; 使用BV预测来确定所述当前块的BV值,所述当前块的BV值指示到所述图片内的区域的位移;以及 使用帧内块复制预测用所述BV值来对所述当前块进行解码。17.如权利要求15或16所述的方法,其特征在于,所述比特流包括索引值,所述索引值指示从多个BV预测值候选的集合中对要用作所述当前块的BV值的BV预测值候选的选择。18.如权利要求17所述的方法,其特征在于,所述索引值是标志值,所述多个BV预测值候选的集合具有两个BV预测值候选。19.如权利要求17所述的方法,其特征在于,所述索引值是整数值,所述多个BV预测值候选的集合具有不止两个BV预测值候选。20.如权利要求19所述的方法,其特征在于,所述多个BV预测值候选包括一个或多个默认BV预测值,所述一个或多个默认BV预测值中的每一个包括具有非零值的BV预测值分量。21.—种在具有视频编码器或图像编码器的计算设备中的方法,所述方法包括: 确定图片的当前块的多个块向量(“BV”)预测值候选的集合; 选择所述多个BV预测值候选中要用于当前块的一个BV预测值候选; 使用所选择的BV预测值候选来对所述当前块进行编码;以及 在比特流中输出指示所选择的BV预测值候选的索引值。22.一种在具有视频解码器或图像解码器的计算设备中的方法,所述方法包括: 从比特流中接收索引值; 确定图片的当前块的多个块向量(“BV”)预测值候选的集合; 基于所述索引值,选择所述多个BV预测值候选中的要用于所述当前块的一个BV预测值候选;以及 使用所选择的BV预测值候选来对所述当前块进行解码。23.如权利要求21或22所述的方法,其特征在于,所述当前块是合并模式块,并且其中所述比特流缺少所述当前块的BV差。24.如权利要求23所述的方法,其特征在于,所述比特流缺少所述当前块的残留数据。25.如权利要求23所述的方法,其特征在于,所述比特流包括所述当前块的残留数据。26.如权利要求21或22所述的方法,其特征在于,所述比特流中的值指示所述当前块是跳跃模式块,其中所述比特流缺少所述当前块的BV差,并且其中所述比特流缺少所述当前块的残留数据。27.如权利要求21或22所述的方法,其特征在于,所述比特流包括所述当前块的BV差,所述BV差指示所选择的BV预测值候选和所述当前块的BV值之间的差。28.如权利要求21— 27中的任意一项所述的方法,其特征在于,所述索引值是标志值,所述多个BV预测值候选的集合具有两个BV预测值候选。29.如权利要求21— 27中的任意一项所述的方法,其特征在于,所述索引值是整数值,所述多个BV预测值候选的集合具有不止两个BV预测值候选。30.如权利要求21— 29中的任意一项所述的方法,其特征在于,所述多个BV预测值候选包括多至X个之前的块的实际BV值。31.如权利要求30所述的方法,其特征在于,X至少为2。32.如权利要求30所述的方法,其特征在于,所述之前的块是至少部分基于所述当前块周围的邻居的位置来标识的。33.如权利要求30所述的方法,其特征在于,所述之前的块是至少部分基于与所述当前块相比的解码顺序来标识的。34.如权利要求21— 33中的任意一项所述的方法,其特征在于,所述多个BV预测值候选包括一个或多个默认BV预测值,所述一个或多个默认BV预测值中的每一个包括具有非零值的BV预测值分量。35.如权利要求21— 34中的任意一项所述的方法,其特征在于,所述索引值在所述比特流中被信号化作为指示所述当前块是否是使用帧内块复制预测模式来编码的语法元素的一部分。36.如权利要求21— 34中的任意一项所述的方法,其特征在于,如果帧内块复制预测模式语法元素指示所述当前块是使用帧内块复制预测模式来编码的,则所述索引值被有条件地在所述比特流中信号化。37.如权利要求21至36中的任意一项所述的方法,其特征在于,还包括: 更新用来跟踪之前的块的实际BV值的数据结构。38.—种被适配成执行权利要求1一 37中的任一项所述的方法的计算设备。39.—个或多个存储计算机可执行指令的计算机可读介质,所述计算机可执行指令使得计算设备因此被编程为执行如权利要求1 一 37中的任一项所述的方法。
【文档编号】H04N19/50GK105917650SQ201480072214
【公开日】2016年8月31日
【申请日】2014年1月3日
【发明人】L·朱, G·沙利文, J·许, S·桑库拉提, B·A·库马, F·吴
【申请人】微软技术许可有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1