首页> 中国专利> 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定

针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定

摘要

在使用基于散列的块匹配来编码块的领域中的创新在许多情况下都改善编码效率。例如,这些创新中的一些涉及关于在预测期间何时使用块翻动的编码器侧判定。其他创新涉及关于何时对使用帧内块复制(“BC”)预测来预测的块使用跳跃模式的编码器侧判定。

著录项

  • 公开/公告号CN105556971A

    专利类型发明专利

  • 公开/公告日2016-05-04

    原文格式PDF

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

    申请/专利号CN201480029780.0

  • 发明设计人 B·李;J·许;F·吴;

    申请日2014-03-04

  • 分类号H04N19/593(20060101);H04N19/61(20060101);H04N19/105(20060101);H04N19/176(20060101);

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

  • 代理人罗婷婷

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 15:07:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-30

    授权

    授权

  • 2016-06-01

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

    实质审查的生效

  • 2016-05-04

    公开

    公开

说明书

背景

工程师使用压缩(也叫做源编码)来降低数字视频的比特率。压缩通过将视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。

解压(也被称为解码)从压缩的形式中重构一种版本的原始信息。“编解码器”是编码器/解码器系统。

在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-TH.261、H.262(MPEG-2或ISO/IEC13818-2)、H.263和H.264(MPEG-4AVC或ISO/IEC14496-10)标准、MPEG-1(ISO/IEC11172-2)和MPEG-4可视(ISO/IEC14496-2)标准以及SMPTE421M(VC-1)标准。

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

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

如当前在H.265/HEVC标准中规定并在针对H.265/HEVC标准的某一参考软件中实现的,帧内BC预测模式具有若干问题。具体地,对具有可预测的BC位移的块的编码不会被高效地处理,并且针对具有相反模式的内容的帧内BC预测不会被高效地处理。

概述

概括而言,详细描述呈现了在使用预测来编码块的领域中的创新。例如,这些创新中的一些涉及关于在预测期间何时使用块翻动的编码器侧判定。其他创新涉及关于何时对使用帧内块复制(“BC”)预测来预测的块使用跳跃模式的编码器侧判定。

根据本文中描述的创新的第一方面,编码器执行基于散列的块匹配以便为当前图片中的当前块确定参考区域。基于散列的块匹配考虑当前块的预测区域相对于参考区域的翻动。例如,作为基于散列的块匹配的一部分,编码器翻动当前块,为经翻动的当前块确定块散列值,并随后搜索散列表以标识出多个候选块中具有与经翻动的当前块的块散列值匹配的块散列值的任一者。散列表根据其块散列值来组织候选块。

或者,作为另一示例,散列表根据其块散列值来组织候选块,并且散列表还根据其块散列值来组织候选块的至少一些经翻动的版本。作为基于散列的块匹配的一部分,编码器可确定当前块的块散列值,并随后搜索散列表以标识出候选块及候选块的经翻动版本中具有与当前块的块散列值匹配的块散列值的任一者。

对于块矢量(“BV”)估计,当前图片包括候选块。对于运动估计,参考图片包括候选块。候选块可包括具有相同块尺寸或不同块尺寸的块。

编码器基于参考区域来确定当前块的预测区域。预测区域可相对于参考区域被翻动。例如,预测区域相对于参考区域被水平地翻动和/或相对于参考区域被垂直地翻动。

编码器使用预测区域来编码当前块,并在比特流中输出经编码的数据。例如,经编码的数据包括块的BV值,该BV值指示到参考区域的位移。或者,经编码的数据包括当前块的运动矢量(“MV”)值,该MV值指示到参考区域的位移。

根据本文中描述的创新的第二方面,编码器判定是否将使用帧内BC预测以跳跃模式对当前图片中的当前块进行编码。当作出该判定时,编码器执行基于散列的块匹配以确定当前图片中的参考区域。例如,作为当前块是使用帧内BC预测以跳跃模式来编码的条件,编码器检查参考区域的输入样本值等同地匹配当前块的相应输入样本值。在作出该判定时,编码器还可将当前块的量化参数(“QP”)与参考区域的QP值进行比较。例如,作为当前块是使用帧内BC预测以跳跃模式来编码的条件,编码器检查当前块的QP值大于或等于参考区域的QP值。或者,取代检查块和参考区域的QP值,编码器相对于参考区域评估该块的残留值。

当当前块是使用帧内BC预测以跳跃模式来编码的时候,编码器确定当前块的BV值。当前块的BV值指示到参考区域的位移。编码器使用帧内BC预测用该BV值来编码当前块。编码器随后在比特流中输出经编码的数据。由于当前块是使用帧内BC预测以跳跃模式来编码的,所以比特流缺少当前块的残留数据。

这些创新可以被实现为方法的一部分、被适配成执行该方法的计算系统的一部分或存储用于使得计算系统执行该方法的计算机可执行指令的有形计算机可读介质的一部分。各个创新可被结合地或分开地使用。具体地,所描述的对帧内BC预测中的块翻动的编码器侧判定可结合所描述的对用于帧内BC预测的块的跳跃模式的编码器侧判定来使用。

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

附图简述

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

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

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

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

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

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

图7a和7b是分别示出针对图片中的块的帧内BC预测和针对该块的BV预测的示图。

图8a-8d、9a-9c和10a-10c是示出针对各块的参考区域的翻动的示图。

图11和12是分别示出用于编码和解码的技术的流程图,其中帧内BC预测区域被相对于参考区域翻动。

图13和14是示出用于包括针对帧内BC预测的块的跳跃模式的编码的技术的流程图。

图15和16是示出用于包括针对帧内BC预测的块的跳跃模式的解码的技术的流程图。

图17a和17b是示出编码单元的根据现有方法的句法结构的表格。

图18是示出编码单元的可用跳跃模式编码成帧内BC预测的块的新句法结构的表。图19是示出块匹配中针对示例帧的块的候选块的示图。

图20是示出基于散列的块匹配中的候选块的散列值的表格。

图21a-21c是示出组织基于散列的块匹配的候选块的示例数据结构的表格。

图22a-22c是示出组织用于迭代的基于散列的块匹配的候选块的示例数据结构的表格。

图23a和23b是示出第二示例视频编码器的示图,并且图24a和24b是示出第三示例视频编码器的示图,结合这些编码器可实现所描述的一些实施例。

图25是示出用于判定在编码期间是否使用块翻动的技术的流程图。

图26是示出用于判定在编码期间是否应当用帧内BC预测跳跃模式来编码块的技术的流程图。

详细描述

该详细描述呈现了在使用预测来编码块的领域中的创新。例如,这些创新中的一些涉及关于在预测期间何时使用块翻动的编码器侧判定。其他创新涉及关于何时对使用帧内块复制(“BC”)预测来预测的块使用跳跃模式的编码器侧判定。在许多情况下,这些创新改善了编码效率。

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

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

本文中描述的一些创新(例如,块翻动)是参考帧内BC预测来描述的。这些创新也可适用于其他上下文(例如,运动补偿中针对参考区域的块翻动)。

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

通常,所给出的技术/工具并不解决所有这些问题。

I.示例计算系统

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

参考图1,计算系统(100)包括一个或多个处理单元(110、115)和存储器(120、125)。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是(诸)处理单元可访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或这两者的某一组合。

存储器(120,125)存储实现帧内BC预测中的块翻动和/或跳跃模式的编码器侧判定的一个或多个创新的软件(180),该软件处于适用于由(诸)处理单元执行的计算机可执行指令的形式。

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

有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、DVD或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储(140)存储针对实现帧内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”))来实现。

出于介绍的目的,本详细描述使用了如“确定”和“使用”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。

II.示例网络环境

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

在图2a所示的网络环境(201)中,每个实时通信(“TC”)工具(210)都包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符合H.265/HEVC标准、SMPTE421M标准、ISO/TEC14496-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示出可以被包括在编码工具(12)中的示例编码器系统(300)。替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。图4示出可以被包括在回放工具(214)中的示例解码器系统(400)。替换地,回放工具(214)使用另一解码器系统。回放工具(214)还可以包括用于管理与一个或多个编码工具(212)的连接的客户机侧控制器逻辑。

III.示例编码器系统

图3是结合其可实现所描述的一些实施例的示例编码器系统(300)的框图。编码器系统(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色彩空间到诸如RGB的另一色彩空间和/或从另一色彩空间到YUV色彩空间的转换操作)的精确定义取决于实现。一般来说,如本文中所使用的,术语YUV指示具有亮度(或辉度)分量和一个或多个色度(或色差)分量的任意色彩空间,包括Y’UV、YIQ、Y’IQ和YDbDr以及诸如YCbCr和YCoCg之类的变型。色度样本值可以被子采样到较低的色度采样率(例如用于YUV4:2:0格式),或者色度样本值可以具有与亮度样本值相同的分辨率(例如用于YUV4:4:4格式)。或者,视频可用另一格式(例如,RGB4:4:4格式)来编码。

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

一般来说,编码器(340)包括执行编码任务的多个编码模块,编码任务为诸如分割成小块、帧内预测估计和预测、运动估计和补偿、频率变换、量化和熵编码。由编码器(340)执行的确切操作可以取决于压缩格式而变化。

输出的经编码数据的格式可以是H.265/HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变型或扩展。

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

对于根据H.265/HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度样本值和被组织为两个色度CTB的相应的色度样本值。

CTU(及其CTB)的尺寸由编码器来选择,并且可例如为64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB”)和两个相应的色度CB。例如,具有64x64亮度CTB和两个64x64色度CTB(YUV4:4:4格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个32x32色度CB,并且每个CU可能被进一步拆分成更小的CU。或者,作为另一示例,具有64x64亮度CTB和两个32x32色度CTB(YUV4:2:0格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个16x16色度CB,并且每个CU可能被进一步拆分成更小的CU。CU的最小允许尺寸(例如8x8、16x16)可被信号化在比特流中。

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

在H.265/HEVC实现中,片可以包括单个片段(独立的片段)或被划分成多个片段(独立的片段和一个或多个从属的片段)。片段是在小块扫描中连续排序的整数个CTU,这些CTU包含在单个网络抽象层(“NAL”)单元中。对于独立的片段,片段头部包括适用于该独立的片段的句法元素的值。对于从属片段,截断的片段头部包括适用于该从属片段的句法元素的几个值,并且从属片段的其它句法元素的值是以解码次序从在前的独立的片段的值中推导出来的。

如本文中所使用的,术语“块”可以指示宏块、预测单元、残留数据单元、或者CB、PB或TB,或者某些其它样本值集,这取决于上下文。

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

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

编码器可以确定在块的预测值(帧内或帧间)和相应的原始值之间的差值(如果有的话)。这些预测残留值将进一步使用频率变换、量化和熵编码来编码。例如,编码器(340)为图片、小块、片和/或视频的其它部分设置量化参数(“QP”)的值,并相应地量化变换系数。编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如MV信息、BV预测值的索引值、BV差、QP值、模式决策、参数选择)。典型的熵编码技术包括指数-Golomb编码、Golomb-ice编码、算术编码、差分编码、Huffman编码、行程长度编码、可变长度到可变长度(“V2V”)编码、可变长度到固定长度(“V2F”)编码、Lempel-Ziv(“LZ”)编码、字典编码、概率区间划分熵编码(“PIPE”)和上述编码的组合。

熵编码器可对不同种类的信息使用不同的编码技术,并可组合地应用多个技术(例如,通过应用Golomb-Rice编码,随后应用算术编码),并可从特定编码技术内的多个码表中进行选择。

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

由编码器(340)产生的经编码的数据包括针对各层比特流句法的句法元素。对于根据H.265/HEVC标准的句法,例如,图片参数集(“PPS”)是包含可与图片相关联的句法元素的句法结构。PPS可被用于单个图片,或者PPS可被重用于序列中的多个图片。PPS通常被信号化为与图片的经编码数据分开(例如,针对PPS的一个NAL单元和针对图片的经编码数据的一个或多个其它NAL单元)。在图片的经编码数据内,句法元素指示要为该图片使用哪个PPS。类似地,对于根据H.265/HEVC标准的句法,序列参数集(“SPS”)是包含可与图片序列相关联的句法元素的句法结构。比特流可包括单个SPS或多个SPS。SPS通常被信号化成与序列的其它数据分开,并且其它数据中的句法元素指示要使用哪个SPS。

经编码的帧(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-TH.222.0|ISO/IEC13818-1的媒体程序流或传输流格式,或诸如IETFRFC3550的因特网实时传输协议格式)分组化和/或复用经聚集的数据供作为媒体流来传输或存储,在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以(例如根据诸如ISO/IEC14496-12的媒体容器格式)组织经聚集的数据以供作为文件来存储,在这种情况中,信道编码器(380)可以添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。信道编码器(380)或信道(390)还可以包括例如用于前向纠错(“FEC”)编码和模拟信号调制的其它元素(未示出)。

IV.示例解码器系统

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

解码器系统(400)包括信道(410),该信道(410)可以表示存储、通信连接或针对作为输入的经编码数据的另一信道。信道(410)产生已经被信道编码的经编码数据。信道解码器(420)可以处理经编码的数据。例如,信道解码器(420)可以(例如根据诸如ITU-TH.222.0|ISO/IEC13818-1的媒体程序流或传输流格式,或诸如IETFRFC3550的因特网实时传输协议格式)去分组化和/或去复用已被聚集以供作为媒体流来传输或存储的数据,在这种情况中,信道解码器(420)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信道解码器(420)可以(例如根据诸如ISO/IEC14496-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块,这些块随后可以被划分成更小的样本值块以用于编码和解码。在针对H.265/HEVC标准的编码的实现中,编码器将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。

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

小块化模块(510)可选地将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(510)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。在H.265/HEVC实现中,编码器(500)将图片分割成一个或多个片,其中每个片包括一个或多个片段。

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

如果当前图片是使用图片间预测来预测的,则运动估计器(550)相对于一个或多个参考图片估计输入视频信号(505)的当前图片中的样本值块的运动。运动估计器(550)可评估用于翻动图片间编码的块的给定参考区域的选项,如以下所描述的。经解码图片缓冲器(570)缓冲一个或多个重构的先前编码的图片以供用作参考图片。

当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。运动估计器(550)产生诸如MV数据、合并模式索引值、参考图片选择数据和块翻动是否被使用之类的辅助信息运动数据(552)。运动数据(552)被提供给头部格式化器/熵编码器(590)以及运动补偿器(555)。

运动补偿器(555)将MV应用于来自经解码图片缓冲器(570)的(诸)经重构的参考图片。运动补偿器(555)产生针对当前图片的经运动补偿的预测。当块翻动被使用时,运动补偿器(555)可考虑(当前块的)预测区域相对于其参考区域的翻动,如以下所描述的。

在编码器(500)内的分开的路径中,图片内估计器(540)确定如何执行对输入视频信号(505)的当前图片的样本值块的图片内预测。当前图片可全部或部分使用图片内编码来编码。对于帧内空间预测,使用当前图片的重构(538)的值,图片内估计器(540)确定如何从当前图片的邻近的、先前重构的样本值中空间地预测当前图片中的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内估计器(540)估计当前块的样本值到当前图片内的不同候选参考区域的位移。候选参考区域可包括重构的样本值,或者在一些实现中,出于BV估计的目的,包括来自输入视频的原始样本值。图片内估计器(540)可评估用于相对于相应的候选参考区域翻动(当前块的)帧内BC预测区域的不同选项,如以下所描述的。

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

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

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

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

在缩放器/逆变换器(535)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。对于非跳跃模式块,编码器(500)将经重构的残留值与预测(558)的值(例如,经运动补偿的预测值、图片内预测值)组合以形成重构(538)。对于跳跃模式块,编码器(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)。对于帧内预测数据(542),头部格式化器/熵编码器(590)可以选择(帧内BV预测的)BV预测值索引值并对其进行熵编码。头部格式化器/熵编码器(590)还可对指示是否将块翻动用于帧内BC预测(或运动补偿)的句法元素进行熵编码。在一些情况中,头部格式化器/熵编码器(590)还(相对于BV值的BV预测值)确定BV值的BV差,随后对BV差进行熵编码,例如使用上下文自适应二进制算术编码来对BV差进行熵编码。具体地,对于跳跃模式帧内BC预测的块,BV差被信号化。

头部格式化器/熵编码器(590)在经编码视频比特流(595)中提供经编码的数据。经编码的视频比特流的格式(595)可以是H.265/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)可以是H.265/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块,这些块随后可以被划分成更小的样本值块。在针对H.265/HEVC标准的解码实现中,将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。

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

缓冲器在经编码的视频比特流(605)中接收经编码数据,并使得接收到的经编码数据可用于解析器/熵解码器(610)。解析器/熵解码器(610)通常应用在编码器(500)中执行的熵编码的逆(例如上下文自适应二进制算术解码)对经熵编码的数据进行熵解码。作为解析和熵解码的结果,解析器/熵解码器(610)产生通用控制数据(622)、经量化的变换系数数据(632)、帧内预测数据(642)、运动数据(652)以及滤波器控制数据(662)。对于帧内预测数据(642),解析器/熵解码器(610)对(帧内BC预测的)BV预测值索引值进行熵解码。解析器/熵解码器(610)还可对指示是否将块翻动用于帧内BC预测(或运动补偿)的句法元素进行熵解码。在一些情况中,解析器/熵解码器(610)还可以(例如使用上下文自适应二进制算术解码)对BV值的BV差进行熵解码,随后将该BV差与相应的BV预测值组合以重构BV值。具体地,对于跳跃模式的帧内BC预测的块,将BV差从比特流中解析出来,并将其与(例如,用BV预测值索引值指示的)BV预测值组合以重构BV值。

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

如果当前图片是使用图片间预测来预测的,则运动补偿器(655)接收运动数据(652),例如MV数据、参考图片选择数据、合并模式索引值以及指示是否(对运动补偿)使用块翻动的句法元素。运动补偿器(655)将MV应用于来自经解码图片缓冲器(670)的(诸)经重构的参考图片。当块翻动被使用时,运动补偿器(655)可考虑(当前块的)预测区域相对于其参考区域的翻动,如以下所描述的。运动补偿器(655)产生针对当前图片中的帧间编码块的运动补偿的预测。经解码图片缓冲器(670)存储一个或多个先前重构的图片以供用作参考图片。

在解码器(600)内的分开路径中,帧内预测预测器(645)接收帧内预测数据(642),例如指示帧内预测使用空间预测还是帧内BC预测的信息、(针对帧内空间预测的)预测模式方向、(针对帧内BC预测的)BV值、以及指示是否(对帧内BC预测)使用块翻动的句法元素。对于帧内空间内预测,根据预测模式数据使用当前图片的重构(638)的值,图片内预测器(645)从当前图片的相邻的、先前重构的样本值中空间地预测当前图片中的当前块的样本值。或者,对于使用BV值的帧内BC预测,图片内预测器(645)使用帧内预测参考区域的先前重构的样本值来预测当前块的样本值,帧内预测参考区域由当前块的BV值来指示。对于帧内BC预测,图片内预测器(645)可考虑(当前块的)帧内BC预测区域相对于其参考区域的翻动,如以下所描述的。

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

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

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

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

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

VII.帧内块复制预测中的创新

该部分呈现帧内块复制(“BC”)预测的特征。例如,这些特征中的一些涉及其中帧内BC预测区域被相对于参考区域翻动的块翻动,该参考区域可由块矢量(“BV)值来指示。其他特征涉及跳跃模式的信号化,在跳跃模式中,当前的帧内BC预测的块使用经信号化的BV差但缺少残留数据。在许多情况下,这些特征改善了对帧内BC预测的块的编码效率。

具体地,本文中描述的各创新可在编码诸如屏幕捕捉内容之类的某种“人工”创建的视频内容时改善速率-失真性能。屏幕捕捉内容典型地包括重复的结构(例如图形、文本字符),其为帧内BC预测提供了改善性能的机会。屏幕捕捉内容通常用具有高色度采样分辨率的格式(例如YUV4:4:4或RGB4:4:4)来编码,但是它也可以用具有较低的色度采样分辨率(例如YUV4:2:0)的格式来编码。用于编码/解码屏幕捕捉内容的常见场景包括远程桌面会议,和对自然视频或其它“混合内容”视频上的图形覆盖的编码/解码。

A.帧内BC预测模式、BV值和BV预测—介绍

对于帧内BC预测,图片中的当前块的样本值是使用同一图片中的样本值来预测的。BV值指示从当前块到图片中包括用于预测的样本值的区域(“参考区域”)的位移。参考区域为当前块提供预测的值(“帧内BC预测区域”)。用于预测的样本值是先前重构的样本值,由此这些样本值可在编码期间在编码器处获得并在解码期间在解码器处获得。BV值可被信号化在比特流中,并且解码器可使用BV值来确定图片中的参考区域(其已在解码器处被重构)以供用于预测。帧内BC预测是一种形式的图片内预测—针对图片中的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。

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

BV(761)指示当前块(760)到图片中包括用于预测的样本值的参考区域(780)的位移(或偏移)。由BV(761)指示的参考区域(780)有时被称为当前块(760)的“匹配块”。匹配块可与当前块(760)相同,或它可以是当前块(760)的近似。假设当前块的左上位置在当前帧中的位置(x0,y0)处,并假设参考区域的左上位置在当前帧中的位置(x1,y1)处。BV指示位移(x1-x0,y1-y0)。例如,如果当前块的左上位置在位置(256,128)处,并且参考区域的左上位置在位置(176,104)处,则BV值为(-80,-24)。在本示例中,负水平位移指示在当前块的左边的位置,而负垂直位移指示在当前块之上的位置。

帧内BC预测可以通过利用使用BC操作的冗余性(例如帧内部的重复模式)来改善编码效率。代替直接编码当前块的样本值,使用BV值来表示当前块的样本值。即使当前块的样本值不直接匹配用BV值指示的参考区域的样本值,但是这些差异可能是可忽略的(即在感知上不是显而易见的)。或者,如果这些差异是显著的,则这些差异可被编码成可比当前块的原始样本值更高效地被压缩的残留值。

共同地,使用帧内BC预测编码的块的BV值可消费大量的比特。这些BV值可被熵编码以降低比特率。为了进一步降低BV值的比特率,编码器可使用BV值的预测。BV值通常展示出冗余性—给定块的BV值通常与图片中的先前块的BV值相似或甚至相同。对于BV预测,给定块的BV值是使用BV预测值来预测的。给定块的BV值和BV预测值之间的差(或BV差)随后被熵编码。通常,BV差是针对BV值的水平和垂直分量以及BV预测值来计算的。当BV预测工作良好时,BV差具有支持高效熵编码的概率分布。在H.265/HEVC标准的一个草稿版本(JCTVC-P1005)中,BV预测值是当前CTU内最后编码的CU的BV值(即,当前CTU内的先前帧内BV预测的块的BV值)。替换地,BV预测值是从(例如,在当前块的周围附近的)多个可用BV值中选择的。

图7b示出帧中的当前块(760)的BV(761)以及帧(710)中的先前块(750)的BV(751)。先前块(750)的BV(751)用作当前块(760)的BV(761)的BV预测值。例如,如果BV值为(-80,-24)并且BV预测值为(-80,-32),则为(0,8)的BV差被熵编码。

解码器接收BV值的经熵编码的BV差,并对该BV差进行熵解码。解码器还确定BV值的BV预测值。由解码器确定的BV预测值与由编码器确定的BV预测值相同。解码器将BV预测值和经解码的BV差组合以重构BV值。

B.帧内BC预测中的块翻动

在帧内BC预测的先前方法中,BV值所指示的参考区域为当前块提供帧内BV预测区域。即,参考区域的样本值是当前块的经帧内BC预测的值。

根据本文中描述的创新的一方面,当前块的帧内BC预测区域相对于参考区域被翻动。当前块的BV值可指示参考区域。取代将参考区域直接用作当前块的帧内BC预测区域,该参考区域可被水平地和/或垂直地翻动。具体地,块翻动可改善对屏幕捕捉内容的文本字符的编码效率。

1.块翻动的示例

图8a-8d、9a-9c和10a-10c示出帧内BC预测中的块翻动的示例。

图8a示出当前图片(810)中的当前块(860)。当前块(860)包括文本字符p,如图8b中详述的。当前块(860)的BV(861)指示到当前图片(810)中的参考区域(880)的位移。参考区域(880)包括文本字符d,如图8c中详述的。在没有翻动的情况下,参考区域(880)是当前块(860)的劣质预测值。(当前块(860)和参考区域(880)之间的逐样本的差是显著的。)

编码器和解码器可使用帧内BC预测中的块翻动来改善编码效率。例如,参考区域(880)可被水平和垂直地翻动,如在图8d的经翻动的参考区域(881)中所示的。在该示例中,当参考区域(880)被水平和垂直地翻动时,经翻动的参考区域(881)精确地匹配当前块(860)。(即,帧内BC预测区域对于当前块(880)而言是完美的,并且残留值仅包括零值样本)。

类似地,参考区域(880)可被水平地翻动。例如,如果给定块包括文本字符b,则参考区域(880)的水平翻动可得到精确地匹配给定块的经翻动的参考区域。或者,参考区域(880)可被垂直地翻动。例如,如果给定块包括文本字符q,则参考区域(880)的垂直翻动可得到精确地匹配给定块的经翻动的参考区域。

通过针对许多字体的块翻动,包括文本字符集合(例如,集合b、d、p和q或者集合u和n)中的一文本字符的块可从包括同一文本字符集合中的另一文本字符的参考区域中精确地预测出。对于其他字体,包括文本字符集合中的一文本字符的块可从包括同一文本字符集合中的另一文本字符的参考区域中大致地预测出。更一般地,块翻动可改善对屏幕内容中的文本字符或其他模式的各个字母的编码效率。

由此,通过块翻动,包括文本字符(或其他模式)的块可被帧内BC预测,即使该文本字符(或其他模式)先前没有出现在图片中,这与对块进行编码的其他方法相比可改善编码效率。或者,即使文本字符(或其他模式)先前已出现在图片中,帧内BC预测也可使用相比于具有相同文本字符(或其他模式)的参考区域更靠近块的经翻动的参考区域。较靠近的经翻动的区域的BV值可相比于较远的参考区域的BV值被高效地多的编码。例如,对于包括文本字符q的当前块,假设包括相同的字符q的第一候选参考区域可用BV值(-280,-24)来指示,而包括不同的字符p的第二候选参考区域可用BV值(-32,0)来指示。第二候选参考区域可被水平地翻动以精确地匹配当前块。第二候选参考区域的BV值与第一候选参考区域的BV值相比可被更高效地编码(更少的比特),甚至还考虑信号化句法元素以指示该块翻动。

如图9a-9c所示,块和参考区域可包括多个文本字符。图9a示出包括文本字符dl的当前块(960)。当前块(960)的BV值指示到同一图片中的参考区域(980)的位移。参考区域(980)包括文本字符lb,如图9b中详述的。在没有翻动的情况下,参考区域(980)是当前块(960)的差预测值。然而,如果参考区域(980)被水平地翻动,则经翻动的参考区域(981)精确地匹配当前块(960)。

在上述示例中,块和参考区域包括各完整的文本字符。如图10a-10c所示,块和参考区域可改为包括文本字符、符号或模式的一个或多个部分。图10a示出包括文本字符L的一部分的当前块(1060)。当前块(1060)的BV值指示到同一图片中的参考区域(1080)的位移。参考区域(1080)包括文本字符F的一部分,如图10b中详述的。在没有翻动的情况下,参考区域(1080)是当前块(1060)的差预测值。然而,如果参考区域(1080)被垂直地翻动,则经翻动的参考区域(1081)精确地匹配当前块(1060)。

2.示例翻动操作

当在帧内BC预测中使用块翻动时,块的帧内BC预测区域相对于该块的参考区域被翻动。块翻动操作可取决于实现而用各种方式来实现。

根据执行块翻动操作的一种方法,在确定当前块的帧内BC预测区域时,编码器或解码器(a)确定参考区域,(b)翻动参考区域,以及随后(c)将在经翻动的参考区域的相应位置处的样本值分配给在帧内BC预测区域的相应位置处的样本值。例如,对于16x16块,编码器或解码器确定该块的BV值所指示的16x16参考区域,随后水平地和/或垂直地翻动该16x16参考区域。这涉及创建该16x16参考区域的已经被翻动的副本。随后,在经翻动的参考区域的各位置处的样本值被分配给在帧内BC预测区域的相同位置处的样本值(例如,在经翻动的参考区域的位置(0,0)处的样本值被分配给在帧内BC预测区域的位置(0,0)处的样本值,在经翻动的参考区域的位置(0,1)处的样本值被分配给在帧内BC预测区域的位置(0,1)处的样本值,并以此类推)。

根据执行块翻动操作的另一方法,在确定当前块的帧内BC预测区域时,编码器或解码器(a)确定参考区域,(b)将在参考区域的相应位置处的样本值分配给在帧内BC预测区域的相应位置处的样本值,以及随后(c)翻动帧内BC预测区域。例如,对于16x16块,编码器或解码器确定该块的BV值所指示的16x16参考区域。在参考区域的各位置处的样本值被分配给在帧内BC预测区域的相同位置处的样本值(例如,在参考区域的位置(0,0)处的样本值被分配给在帧内BC预测区域的位置(0,0)处的样本值,在参考区域的位置(0,1)处的样本值被分配给在帧内BC预测区域的位置(0,1)处的样本值,并以此类推)。随后,编码器或解码器水平地和/或垂直地翻动该16x16帧内BC预测。这涉及创建该16x16帧内BC预测的已经被翻动的副本。

根据执行块翻动操作的第三方法,编码器和解码器避免创建参考区域或帧内BC预测区域的中间副本。在确定当前块的帧内BC预测区域时,编码器或解码器(a)确定参考区域,以及随后(b)将在参考区域的相应位置处的样本值分配给在帧内BC预测区域的对应位置处的样本值,其中这些对应位置考虑了块翻动。当水平翻动被使用时,参考区域的第一列提供帧内BC预测区域的最后一列,参考区域的第二列提供帧内BC预测区域的倒数第二列,并以此类推。当垂直翻动被使用时,参考区域的第一行提供帧内BC预测区域的最后一行,参考区域的第二行提供帧内BC预测区域的倒数第二行,并以此类推。当水平和垂直翻动被一起使用时,在向帧内BC预测区域的各位置分配样本时,可按相反的次序水平和垂直地遍历参考区域的各位置。例如,对于16x16块,编码器或解码器确定该块的BV值所指示的16x16参考区域。在参考区域的各位置处的样本值按相反的次序被水平地和/或垂直地分配给在帧内BC预测区域的相应位置处的样本值(例如,在参考区域的位置(0,0)处的样本值被分配给在帧内BC预测区域的位置(15,15)处的样本值,在参考区域的位置(0,1)处的样本值被分配给在帧内BC预测区域的位置(15,14)处的样本值,并以此类推)。

3.对块翻动的示例信号化

当启用针对帧内BC预测的块翻动时,使用或不使用块翻动的判定可取决于实现按各种方式来信号化。

可启用针对序列、图片或其他视频单元的块翻动。(例如SPS中的)序列层句法元素、(例如,PPS中的)图片层句法元素或(例如,片段头部中的)片头部层句法元素可指示块翻动被启用还是被禁用。或者,可启用针对一些编码和解码简档或层的块翻动。启用块翻动的判定可在逐方向的基础上作出(例如,仅水平块翻动、仅垂直块翻动、或水平和垂直块翻动两者)。如果块翻动被启用,则附加句法元素信号化何时以及如何使用块翻动。

当仅垂直翻动被启用时,一标志值可指示垂直翻动在帧内BC预测期间是否被使用。当仅水平翻动被启用时,一标志值可指示水平翻动在帧内BC预测期间是否被使用。当垂直翻动和水平翻动两者都被启用时,两个标志值可为水平和垂直翻动指示翻动在帧内BC预测期间是否被使用,其中每一标志指示针对翻动方向的判定。或者,可使用具有多个值的单个句法元素(例如,具有指示仅垂直翻动、仅水平翻动、水平和垂直翻动两者或不翻动的可能值)。

指示块翻动是否针对当前块被使用的句法元素(例如,标志值)可与当前块的其他句法元素一起被信号化在比特流中。例如,关于针对PU的块翻动的(诸)句法元素被信号化成针对该PU。或者,指示块翻动是否针对当前块被使用的句法元素可被信号化在针对包括当前块的较大块的比特流中。例如,关于针对一个或多个PU的块翻动的(诸)句法元素被信号化成针对包括(诸)PU的CU。替换地,指示块翻动是否针对当前块被使用的句法元素被信号化在比特率中的某一其他层级处。

指示块翻动是否针对当前块被使用的句法元素可被熵编码。例如,当前块的标志值是使用上下文自适应二进制算法编码来编码,并使用上下文自适应二进制算法解码来解码的。替换地,可使用不同形式的熵编码,或者可将句法元素信号化成固定长度的值。

指示块翻动是否针对当前块被使用的(诸)句法元素可被分开且有条件地信号化在比特流中。例如,指示块翻动被使用还是不被使用的标志值在当前块被帧内BC预测的情况下被信号化,但在当前块没有被帧内BC预测的情况下不被信号化。或者,指示块翻动是否针对当前块被使用的(诸)句法元素可与比特流中的另一句法元素一起被联合地编码。例如,指示块翻动被使用还是不被使用的标志值可与指示当前块是否被帧内BC预测的标志值一起被联合地编码。

4.基于散列的块重构中的块翻动的示例

取代发送指示参考区域的BV值,编码器可信号化指示该参考区域的散列值。具体地,该散列值指示构造在编码器处的块散列词典中的条目。

在题为“使用2D词典模式的屏幕内容编码”的JCTVC-O0357中描述了在编码器处构造并使用块散列词典的示例方法。章节VIII中描述了构造和使用块散列词典的其他示例方法。当解码器也具有块散列词典时,编码器使用当前图片的经重构的样本值来确定可能的参考区域的散列值,并根据散列值将可能的参考区域组织在其块散列词典中。解码器使用经信号化的散列值来确定其自己的块散列词典中的参考区域,该块散列词典根据散列值来组织可能的参考区域。解码器使用与编码器相同的方法来从当前图片的经重新构造的样本值中构造其块散列词典。由此,块散列词典在编码器和解码器处是相同的。

指示块散列词典中的参考区域的散列值可与帧内BC预测区域是否相对于参考区域被翻动的指示(例如,句法元素)分开。在这种情况下,解码器使用散列值从其块散列词典中确定参考区域,随后考虑参考区域的翻动。替换地,散列值可直接指示块散列词典中的经翻动的参考区域,其中编码器和解码器已经翻动了可能的参考区域,并且已为其相应的块散列词典计算了可能的经翻动参考区域的散列值。在这种情况下,解码器使用经信号化的散列值来从块散列词典中确定经翻动的参考区域;散列值本身提供帧内BC预测区域是否相对于参考区域被翻动的指示。

5.帧内BC预测中利用块翻动的示例编码

图11示出针对在编码期间在帧内BC预测中进行块翻动的示例技术(1100)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(1100)。

编码器基于图片中的参考区域来确定(1110)图片中的当前块的帧内BC预测区域。当前块可以是PU、CU或其他块。在BV估计中标识出的当前块的BV值可指示到该图片中的参考区域的位移。替换地,当前块的散列值可指示块散列词典中的参考区域。帧内BC预测区域相对于参考区域被翻动。例如,帧内BC预测区域相对于参考区域被水平地和/或垂直地翻动。以上被描述了执行块翻动操作的方法的示例(参见章节VII.B.2)。

编码器使用帧内BC预测区域来对当前块进行编码(1120)并在比特率中输出(1130)经编码的数据。经编码的数据包括帧内BC预测区域是否相对于参考区域被翻动的指示。例如,该指示是比特流中的一个或多个句法元素。以上描述了对块翻动是否被使用进行信号化的方法的示例(参见章节VII.B.3)。

编码器可类似地利用或不利用块翻动来在逐块的基础上为片、小块或图片编码其他帧内BC预测的块。章节VIII描述了编码器在作出关于在预测(例如,帧内BC预测)期间是否使用块翻动的判决时可遵循的示例方法。

6.帧内BC预测中利用块翻动的示例解码。

图12示出针对在解码期间在帧内BC预测中进行块翻动的示例技术(1200)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1200)。

解码器接收(1210)比特流中的经编码的数据。经编码的数据包括图片中的当前块的帧内BC预测区域是否相对于图片中的参考区域被翻动的指示。当前块可以是PU、CU或其他块。例如,该指示是比特流中的一个或多个句法元素。以上描述了对块翻动是否被使用进行信号化的方法的示例(参见章节VII.B.3)。

解码器基于图片中的参考区域来确定(1220)图片中的当前块的帧内BC预测区域。当前块的BV值可指示到参考区域的位移。替换地,当前块的散列值可指示块散列词典中的参考区域。帧内BC预测区域相对于参考区域被翻动。例如,帧内BC预测区域相对于参考区域被水平地和/或垂直地翻动。以上被描述了执行块翻动操作的方法的示例(参见章节VII.B.2)。解码器使用帧内BC预测区域来解码(1230)当前块。

解码器可类似地利用或不利用块翻动来在逐块的基础上为片、小块或图片解码其他帧内BC预测的块。

C.帧内BC预测的跳跃模式

在帧内BC预测的一些先前方法中,当前CU的标志指示CU是否是以帧内BC预测模式来编码的。如果为是,则当前CU的第二标志指示该CU是否具有残留数据。该信号化缺少残留数据的帧内BC预测的块的方式在许多屏幕内容编码/解码场景中都是低效的。

根据本文中描述的创新的另一方面,编码器和解码器使用标志来信号化缺少残留数据的帧内BC预测的块。在跳跃模式中,帧内BC预测的块使用BV值,其中BV差被信号化在比特流中,并且在该比特流中不具有残留数据。具体地,对于屏幕捕捉内容,不具有残留数据的帧内BC预测的块是常见的。将单个标志(与多个标志相反)用于信号化不具有残留数据的帧内BC预测的块在这样的场景中是低效的。

1.帧内BC预测跳跃模式的示例信号化

在示例实现中,比特流中的单个标志指示当前块是否是用跳跃模式帧内BC预测的块。如果当前块不是用跳跃模式帧内BC预测的块,则比特流中的第二标志指示当前块是否是(不是用跳跃模式)帧内BC预测的块。如果当前块不是帧内BC预测的块,则比特流中的一个或多个其他句法元素指示当前块的模式(例如,是否为时间跳跃模式的标志、是否为帧内空间预测模式的标志、是否为图片间模式的标志、为帧内空间预测模式还是图片间模式的标志)。如果当前块是用跳跃模式帧内BC预测的块,则第二标志和其他句法元素不存在于当前块的比特流中。

指示当前块是否是跳跃模式中的帧内BC预测的块的标志被信号化在块级别处。当前块可以是尺寸为2Nx2N的CU。例如,对于16x16CU,N为8。替换地,当前块可以是PU或其他类型的块。指示当前块的模式的其他标志和句法元素也可被信号化在比特流中的块级别处。

在一些示例实现中,用跳跃模式帧内BC预测的块缺少残留数据,但在比特流中包括BV差。替换地,跳跃模式中的帧内BC预测的块可使用预测的BV值(并且因此在比特流中缺少BV差)。

2.利用帧内BC预测跳跃模式的示例编码

图13示出用于用跳跃模式来编码帧内BC预测的块的示例技术(1300)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(1300)。

编码器确定(1310)图片中的当前块(例如,CU、PU)的BV值,例如使用BV估计来确定当前块的BV值。当前块的BV值指示到图片中的参考区域的位移。

编码器随后使用当前块的BV值和当前块的BV预测值来确定(1320)当前块的BV差。BV预测值可依据规则来选择,或者编码器可从多个BV预测值候选之中选择该BV预测值。

编码器使用帧内BC预测用BV值来编码(1330)当前块。在示例实现中,帧内BC预测可包括使用参考区域来确定当前块的帧内BC预测区域,其中该帧内BC预测区域相对于参考区域被翻动。帧内BC预测区域可相对于参考区域被水平地和/或垂直地翻动。上面描述了用于执行块翻动操作和对块翻动的使用进行信号化的选项。替换地,编码器在帧内BC预测中不使用块翻动。

编码器在比特流中输出(1340)经编码的数据。经编码的数据包括指示当前块是使用帧内BC预测以跳跃模式来编码的标志。由于当前块是用跳跃模式帧内BC预测的块,比特流包括当前块的BV差,但缺少当前块的残留数据。当编码器已从多个BV预测值候选中选择了BV预测值时,该比特流包括指示将所选的BV预测值候选用作当前块的BV预测值的索引值。

图14示出了用于使用帧内BC预测以跳跃模式和/或其他模式来编码图片中的块的示例技术(1400)。图像编码器或视频编码器(诸如参考图3或图5a-5b描述的编码器)可执行技术(1400)。

开始,编码器得到(1410)下一块,并确定(1420)是否使用帧内BC预测以跳跃模式来编码该块。例如,编码器评估帧内BC预测是否为块提供足够的编码效率,并评估残留数据是否包括任何有效值。替换地,编码器考虑其他标准。章节VIII描述了编码器在作出关于是否使用帧内BC预测的跳跃模式时可遵循的示例方法。

编码器可信号化比特流中指示当前块是否是使用帧内BC预测以跳跃模式来编码的标志。对于用跳跃模式帧内BC预测的块,编码器使用在图13的阶段(1310)到(1330)中示出的操作或使用另一方法来用帧内BC预测以跳跃模式编码(1430)该块。作为用跳跃模式帧内BC预测的块,该块在比特流中具有BV差,但在比特流中缺少残留数据。

在其他情况下(块不是用跳跃模式帧内BC预测的块),编码器用另一模式编码(1440)块。该另一模式可以是帧内BC预测非跳跃模式、帧内空间预测模式、图片间模式或其他模式。在这种情况下,一个或多个其他句法元素可指示块的模式。例如,在指示块是否是使用帧内BC预测以跳跃模式编码的第一标志(取决于在阶段1420的判定)之后,当块不是使用帧内BC预测以跳跃模式来编码的时候,第二标志指示该块是否是使用帧内BC预测以非跳跃模式来编码的。如果该块不是使用帧内BC预测以非跳跃模式来编码的,则一个或多个其他句法元素指示该块的编码模式。例如,一标志指示块的预测模式是帧内空间预测还是图片间预测。

在一些示例实现中,使用指示块是否是用跳跃模式帧内BC预测的标志存在附加的优点。在一些情况下,可避免对指示帧内BC预测的块的分割模式(2Nx2N、2NxN、Nx2N或NxN)的句法元素进行信号化。例如,如果块不是使用帧内BC预测以非跳跃模式来编码的,则编码器在比特流中信号化指示块的分割模式的句法元素。另一方面,如果块是使用帧内BC预测以跳跃模式来编码的,则编码器忽略在比特流中对指示块的分割模式的句法元素进行信号化,并且块的分割模式被改为假设具有定义的值(例如,2Nx2N)。由此,在这些情况下,将块标记为用跳跃模式帧内BC预测的早期标志也对块的分割模式具有定义的值进行信号化。

同样,在许多情况下,对指示块的残留数据的存在或缺失的标志的信号化可被避免。当然,如果块是使用帧内BC预测以跳跃模式来编码的,则编码器忽略在比特流中对指示块的残留数据的存在或缺失的标志进行信号化。(将块标记为是用跳跃模式帧内BC预测的早期标志已经信号化了这样的信息)。块的残留数据被假设为不存在于比特流中。

在另一情况下,也可避免对指示残留数据的存在或缺失的标志的信号化。具体地,如果块是使用帧内BC预测以非跳跃模式编码的,并且块的分割模式具有定义的值(例如,2Nx2N),则编码器忽略在比特流中对指示块的残留数据的存在或缺失的标志进行信号化。在这种情况下,块的残留数据被假设为存在于比特流中。(如果块的分割模式是定义的值,并且块缺少残留数据,则块将是用跳跃模式帧内BC预测的块,这已由早期标志指示出。)最后,如果块是使用帧内BC预测以非跳跃模式来编码的,并且块的分割模式不具有定义的值,则编码器在比特流中对指示块的残留数据的存在或缺失的标志进行信号化。

编码器确定(1450)是否继续图片中的下一块。如果如此,则编码器得到(1410)下一块并继续编码。

编码器可在逐图片的基础上、逐小块的基础上、逐片的基础上或某一其他基础上重复技术(1400)。

3.利用帧内BC预测跳跃模式的示例编码

图15示出用于解码用跳跃模式帧内BC预测的块的示例技术(1500)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1500)。

解码器接收(1510)比特流中的经编码数据。经编码的数据包括指示图片中的当前块(例如,CU、PU)是使用帧内BC预测以跳跃模式来编码的标志。由于当前块是用跳跃模式帧内BC预测的块,因此比特流包括当前块的BV差,但缺少当前块的残留数据。

解码器使用当前块的BV差和当前块的BV预测值来确定(1520)当前块的BV值。当前块的BV值指示到该图片中的参考区域的位移。BV预测值可依据规则来选择。或者,使用比特流中用于选择将哪个BV预测值候选用作当前块的BV预测值的索引值,解码器可从多个BV预测值候选中选择BV预测值。

解码器使用帧内BC预测用BV值来解码(1530)当前块。在示例实现中,帧内BC预测可包括使用参考区域来确定当前块的帧内BC预测区域,其中该帧内BC预测区域相对于参考区域被翻动。帧内BC预测区域可相对于参考区域被水平地和/或垂直地翻动。上面描述了用于执行块翻动操作和对块翻动的使用进行信号化的选项。替换地,解码器在帧内BC预测中不使用块翻动。

图16示出了用于使用帧内BC预测以跳跃模式和/或其他模式来解码图片中的块的示例技术(1600)。图像解码器或视频解码器(诸如参考图4或图6描述的解码器)可执行技术(1600)。

开始,解码器得到(1610)下一块的经编码数据,并确定(1620)是否使用帧内BC预测以跳跃模式来解码该块。例如,解码器可接收比特流中指示块是否是使用帧内BC预测以跳跃模式来编码的标志,并对该标志进行解析。

对于用跳跃模式帧内BC预测的块,解码器使用在图15的阶段(1520)和(1530)中示出的操作或使用另一方法来用帧内BC预测以跳跃模式解码(1630)该块。作为用跳跃模式帧内BC预测的块,该块在比特流中具有BV差,但在比特流中缺少残留数据。

在其他情况下(块不是用跳跃模式帧内BC预测的块),解码器用另一模式解码(1640)该块。该另一模式可以是帧内BC预测非跳跃模式、帧内空间预测模式、图片间模式或其他模式。在这种情况下,一个或多个其他句法元素可指示块的模式。例如,在指示块是否是使用帧内BC预测以跳跃模式编码的第一标志(取决于在阶段(1620)的判定)之后,当块不是使用帧内BC预测以跳跃模式来编码的时候,第二标志指示该块是否是使用帧内BC预测以非跳跃模式来编码的。如果该块不是使用帧内BC预测以非跳跃模式来编码的,则一个或多个其他句法元素指示该块的编码模式。例如,一标志指示块的预测模式是帧内空间预测还是图片间预测。

如在前一章节中提到的,在一些示例实现中,使用指示块是否是用跳跃模式帧内BC预测的标志存在附加的优点。例如,如果块不是使用帧内BC预测以非跳跃模式来编码的,则比特流包括指示块的分割模式的句法元素。另一方面,如果块是使用帧内BC预测以跳跃模式来编码的,则比特流缺少指示块的分割模式的句法元素。解码器推断出块的分割模式是定义的值(例如,2Nx2N)。

同样,在许多情况下,可避免对指示块的残留数据的存在或缺失的标志的信号化。当然,如果块是使用帧内BC预测以跳跃模式来编码的,则比特流缺少指示块的残留数据的存在或缺失的标志。相反,从将块标记为用跳跃模式帧内BC预测的早期标志中,解码器推断出块的残留数据不存在于比特流中。

在另一情况下,也可避免对指示残留数据的存在或缺失的标志的信号化。具体地,如果块是使用帧内BC预测以非跳跃模式来编码的,并且块的分割模式具有定义的值(例如,2Nx2N),则比特流缺少指示块的残留数据的存在或缺失的标志。在这种情况下,解码器推断出块的残留数据存在于比特流中。最后,如果块是使用帧内BC预测以非跳跃模式来编码的,并且块的分割模式不具有定义的值,则比特流包括指示块的残留数据的存在或缺失的标志。

解码器确定(1650)是否继续图片中的下一块。如果如此,则解码器得到(1610)下一块的经编码数据并继续解码。

解码器可在逐图片的基础上、逐小块的基础上、逐片的基础上或某一其他基础上重复技术(1600)。

4.针对编码单元的示例句法

图17a和17b示出根据现有方法的编码单元(“CU”)的句法结构(1700)。JCTVC-P1005中定义了句法结构(1700)中示出的句法元素。本文中汇总了所选的句法元素。

当帧内BC预测被启用(如用intra_block_copy_enabled_flag(帧内块复制启用标志)指示的)时,可对CU的句法元素intra_bc_flag(帧内bc标志)进行信号化。句法元素intra_bc_flag指定CU是否是用帧内BC预测模式来编码的。如果其值为1,则CU是用帧内BC预测模式来编码的。如果其值为0,则CU不是用帧内BC预测模式来编码的。在该情况下(intra_bc_flag为0),句法元素pred_mode_flag(预测模式标志)存在并指示CU是用帧间预测模式来编码的还是用帧内空间预测模式来编码的。

如果块是帧内BC预测的(并在几个其他情况下),则比特流包括CU的part_mode(部分模式)句法元素。part_mode句法元素指示CU的分割模式(即,2Nx2N、2NxN、Nx2N、NxN)。

CU句法结构(1700)随后包括分割的BV值(在CU是帧内BC预测的情况下)、帧内预测方向信息(在CU是帧内空间预测的情况下)或预测单元信息(在CU是帧间预测的情况下)。随后,在一些情况下,CU句法结构(1700)包括rqt_root_cbf(rqt根cbf)句法元素。具体地,如果CU是帧内BC预测的,则存在rqt_root_cbf句法元素。rqt_root_cbf句法元素指示是否存在针对CU的transform_tree()(变换树)句法结构。transform_tree()句法结构针对CU的残留数据。如果rqt_root_cbf为1,则存在针对CU的transform_tree()句法结构。如果rqt_root_cbf为0,则不存在针对CU的transform_tree()句法结构。当不存在rqt_root_cbf时,推断其值为1。因此,如之前提到的,在该方法中,两个标志(intra_bc_flag和rqt_root_cbf)用于指示用跳跃模式帧内BC预测的块。

图18示出可被编码成用跳跃模式帧内BC预测的块的编码单元的新句法结构(1800)。图18中突出显示了相对于图17a和17b中示出的句法结构(1700)的改变。

当帧内BC预测被启用(如用intra_block_copy_enabled_flag(帧内块复制启用标志)指示的)时,可对CU的intra_bc_skip_flag(帧内bc跳跃标志)进行信号化。句法元素intra_bc_skip_flag指示CU是否是用跳跃模式帧内BC预测的块。如果CU是用跳跃模式帧内BC预测的(intra_bc_skip_flag等于1),则句法元素intra_bc_flag和pred_mode_flag与句法元素rqt_root_cbf一样被忽略。同样,在这种情况下,CU的分割模式具有定义的值2Nx2N。

另一方面,如果句法元素intra_bc_skip_flag指示CU不是用跳跃模式帧内BC预测的(intra_bc_skip_flag等于0),则存在句法元素intra_bc_flag。句法元素intra_bc_flag指定CU是否是用帧内BC预测模式来编码的,如参考图17a和17b解释的。此外,如果intra_bc_flag为0,则句法元pred_mode_flag存在并指示CU是用帧间预测模式还是用帧内空间预测模式来编码的,如参考图17a和17b解释的。

如果块是用非跳跃模式帧内BC预测的(即,intra_bc_flag为1且intra_bc_skip_flag为0),则比特流包括CU的part_mode句法元素。part_mode句法元素指示CU的分割模式(例如,2Nx2N、2NxN、Nx2N、NxN)。另一方面,如果块是用跳跃模式帧内BC预测的,则在比特流中没有为CU信号化part_mode句法元素。相反,分割模式被推断为具有为2Nx2N的定义值。由此,对于这样的块,intra_bc_skip_flag对CU的分割模式具有为2Nx2N的定义值进行信号化,并且避免对part_mode句法元素的单独信号化。

在从图18中略去的章节中,句法结构(1800)随后包括分割的BV值(在CU是帧内BC预测的情况下)、帧内预测方向信息(在CU是帧内空间预测的情况下)或预测单元信息(在CU是帧间预测的情况下)。

最后,在一些情况下,句法结构(1800)包括rqt_root_cbf句法元素。具体地,如果CU是用非跳跃模式帧内BC预测的,则存在rqt_root_cbf句法元素,只要CU的分割模式不是为2Nx2N的定义值。当存在时,rqt_root_cbf句法元素的值指示是否针对CU存在的transform_tree()句法结构,如参考图17a和17b解释的。在另一方面,在以下情况下不存在rqt_root_cbf句法元素:(1)如果CU是用跳跃模式帧内BC预测的或者(2)如果CU是帧内BC预测的并且CU的分割模式是为2Nx2N的定义值。如果CU是用跳跃模式帧内BC预测的,则推断rqt_root_cbf的值为0(不存在针对CU的残留数据)。在其他情况下,如果CU是帧内BC预测的并且CU的分割模式是为2Nx2N的定义值,则推断rqt_root_cbf的值为1(存在针对CU的残留数据)。

VIII.针对块翻动和帧内BC预测的跳跃模式的编码器侧判定

该章节呈现针对块翻动和帧内BC预测的跳跃模式的编码器侧判定作出过程的各示例方法。在这些示例方法中,编码器在帧内BC估计(和/或运动估计,针对块翻动的情况)期间使用当前块和候选块之间的基于散列的块匹配。

虽然帧内BC预测可通过使用BC操作利用冗余性(诸如在帧内部的重复图案)来改善编码效率,但由于编码器可评估的候选块的数目,寻找到当前块的匹配块可能是计算上复杂且耗时的。在逐样本(sample-wise)的块匹配中将当前块的样本值与单个候选块的样本值进行匹配可涉及成千个操作。例如,将64x64的当前块的样本值与64x64的候选块进行比较可涉及64x64=4096个比较操作(例如,减法操作)以及记录这些比较操作的结果的操作。

图19示出块匹配操作中针对当前帧(1910)的当前块(1930)的一些候选块。四个BV(1941,1942,1943,1944)指示四个候选块的位移。这些候选块可在帧(1910)的经重构内容内的任何地方。(块通常是从左向右随后从上到下地来编码的。)候选块可与其它候选块重叠,如针对由BV(1943,1944)所指示的候选块示出的。当BV值的搜索范围包括帧的所有先前重构的区域时,由于当前块可与其进行比较的候选块的较大数目,BV估计的计算复杂性特别成问题。

在当前块和甚至很小的可能候选块集合之间执行逐样本的块匹配操作可能是非常计算密集的。如果为整个帧的各候选块计算散列值,则操作的数目甚至更大。类似地,如果搜索范围包括一个或多个先前重构的帧(用于运动估计的(诸)参考帧),则由于当前块与其进行比较的候选块的大数目,逐样本的块匹配可消耗非常大数目的操作。

A.基于散列的块匹配

当编码器使用基于散列的块匹配时,编码器确定多个候选块中的每一者的散列值。散列表存储这些候选块的散列值。编码器还通过相同的散列方法来确定当前块的散列值,并随后搜索散列表以查找匹配的散列值。如果两个块相同,则其散列值相同。通过使用散列值,编码器可快速并高效地标识出与当前块具有相同散列值的候选块,并滤除具有不同散列值的候选块。随后,编码器可进一步估计与当前块具有相同散列值的那些候选块。(不同的块可具有相同的散列值。因此,编码器可在具有相同散列值的候选块之中标识出匹配当前块的候选块。)基于散列的块匹配通常使块匹配过程加速。

在一些示例实现中,基于散列的块匹配中考虑的候选块包括输入样本值。也就是说,这些候选块是图片的输入版本的一部分。候选块的散列值是从输入样本值中确定的。在基于散列的块匹配期间,编码器使用输入样本值来确定当前块的散列值。编码器将该散列值与从候选块的输入样本值中确定的散列值进行比较(或者以其他方式使用该散列值)。即使如此,从匹配块重构的样本值被用来表示当前块。由此,BC预测操作仍使用经重构的样本值。替换地,基于散列的块匹配中考虑的候选块包括经重构的样本值。也就是说,这些候选块是图片中的先前编码随后重构的内容中的一部分。候选块的散列值是从经重构的样本值中确定的。在基于散列的块匹配期间,编码器使用输入样本值来确定当前块的散列值。编码器将该散列值与从候选块的经重构的样本值中确定的散列值进行比较(或者以其他方式使用该散列值)。散列表在编码期间增长了,因为更多的候选块被添加到图片的经重构内容中并因此变得可用于在针对图片的稍后块的基于散列的块匹配中使用。

图20示出基于散列的块匹配中的候选块B(x,y)的散列值(2000),其中x和y分别指示给定候选块的左上位置的水平和垂直坐标。候选块具有使用散列函数h()确定的散列值。对于搜索范围中的候选块B(x,y),编码器确定该候选块的散列值h(B)。编码器可确定搜索范围中的所有候选块的散列值。或者,编码器可筛选出具有某些样本值图案的候选块。

一般来说,散列函数h()得到n个可能的散列值,这n个可能的散列值被指定为h0到hn-1。对于给定散列值而言,具有该散列值的各候选块被分组在一起。例如,在图20中,候选块B(1266,263)、B(1357,365)、B(1429,401)、B(502,464)、……都具有散列值h0。群组可包括不同数目的候选块。例如,在图20中,针对散列值h4的群组包括单个候选块,而针对散列值h0的群组包括四个以上的候选块。

通过这种方式,可能的候选块被分成n个类别。例如,如果散列函数h()产生12比特散列值,则候选块被拆分成212=4.096个类别。在一些实现中,每散列值的候选块数可通过消除具有那个散列值的冗余、相同的块或者通过筛选出具有某些样本值图案的候选块被进一步降低。同样,在一些实现中,编码器可使用不同的散列函数来迭代地减少候选块数。

散列函数h()可以是密码散列函数、循环冗余校验(“CRC”)函数或其他散列函数。一些类型的散列函数(例如,CRC函数)将相似的块映射到不同的散列值,这在寻找与当前块精确对应的匹配块是可能是高效的。其他类型的散列函数(例如,局部敏感散列函数)将相似的块映射到相同的散列值,这在匹配块近似于当前块时可能是合适的。以下描述了示例散列函数(参见章节VIII.D)。

在基于散列的块匹配期间,使用散列函数h(),编码器确定当前块B当前的散列值。在图20中,散列值h(B当前)为h3。通过使用当前块的散列值,编码器可标识出具有相同散列值(在图20中的轮廓框示出)的候选块,并滤除其他候选块。当散列函数将相似的块映射到不同的散列值时,标识出的候选块(与当前块有相同的散列值)包括可能与当前块相同的块。当散列函数将相似的块映射到相同的散列值时,标识出的候选块(与当前块有相同的散列值)包括可能与当前块相同或者可能是当前块的紧密近似的块。不管怎样,从这些标识出的候选块中,编码器可(例如,使用逐样本的块匹配操作)标识出当前块的匹配块。

总的来说,由于散列值比较与逐样本的块匹配相比要简单的多,因此基于散列的块匹配可使得评估大搜索范围中的候选块的过程变得高效的多。

同样,候选块的散列值可在编码期间被重用于对图片内的不同块的基于散列的块匹配。在该情况下,计算候选块的散列值的成本可跨针对整个图片的基于散列的块匹配操作来分摊。

B.用于基于散列的块匹配的数据结构

在一些示例实现中,编码器使用根据候选块的散列值来组织这些候选块的数据结构。该数据结构可有助于使基于散列的块匹配变得更计算高效。数据结构实现例如块散列词典或散列表,如本文中描述的。

图21a示出组织用于基于散列的块匹配的候选块的示例数据结构(2100)。对于散列函数h(),n个可能的散列值为h0到hn-1。具有相同散列值的候选块被分类在相同的候选块列表中。给定候选块列表可包括零个或更多个条目。例如,针对散列值h2的候选块列表不具有条目,针对散列值h6的列表具有两个条目,并且针对散列值h1的列表具有四个以上的条目。条目(hi,k)包括针对具有散列值hi的第k个候选块的信息。如图21b中所示,候选块列表中的条目可包括块B(x,y)的地址(例如,块的左上位置的水平和垂直坐标)。或者,如图21c中所示,候选块列表中的条目可包括块B(x,y)的地址以及来自第二散列函数的散列值,其可用于进行迭代的基于散列的块匹配。

在针对当前块的基于散列的块匹配(用于BV估计或运动估计)期间,编码器确定当前块h(B当前)的散列值。编码器保持具有相同散列值的候选块列表,并排除其他n-1个列表。为了选择匹配块,编码器可将当前块与所保持的候选块列表中的(诸)候选块(如果有的话)进行比较。由此,通过使用散列值h(B当前)的简单查找操作,编码器可消除候选块的(n-1)/n(平均),并聚焦于在所保持的列表中的剩余的1/n个候选块(平均),从而显著地减少了逐样本块匹配操作的数目。

该数据结构可被看作动态词典,其中每一条目表示一候选块。当候选块的散列值是从输入样本值中确定的时,该数据结构随着为更多的块计算出块散列值而增长。用块散列值表示的块的数目可取决于编码器筛选出多少块而改变。同样,具有给定块散列值的块的数目将逐图片地改变。在编码期间,编码器检查具有匹配块散列值的候选块实际上可用于用作参考区域(例如,作为先前编码和重构的内容的一部分)。当候选块的散列值是从经重构的样本值中确定的时,该数据结构在编码期间增长了,因为更多的候选块被添加到图片的经重构内容中并因此变得可用于在针对图片的稍后块的基于散列的块匹配中使用。具体地,在当前块被编码后,与刚编码的当前块重叠的新候选块可用于用作参考区域。

不同的数据结构可被用于不同尺寸的块。例如,一个数据结构包括各8x8候选块的散列值,第二数据结构包括各16x16候选块的散列值,第三数据结构包括各32x32候选块的散列值,并以此类推。在基于散列的块匹配期间使用的数据结构取决于当前块的尺寸。替换地,单个、统一的数据结构可被用于不同尺寸的块。散列函数可产生n比特散列值,其中该n比特散列值中的m个比特指示给定块尺寸的可能块之间根据w比特散列函数的散列值,并且n比特散列值中剩余的n-m个比特指示给定块尺寸。例如,14比特散列函数的前两个比特可指示块尺寸,而剩余的12个比特指示根据12比特散列函数的散列值。或者,散列函数可产生w比特散列值(而不管块的尺寸)以及存储指示候选块的块尺寸的信息的数据结构中针对候选块的条目,其可在基于散列的块匹配中使用。章节VIII.D包括关于其散列值可被组织在单个、统一数据结构中的示例散列函数的附加细节。

对于高分辨率图片,该数据结构可存储表示非常大量的候选块的信息。为了降低用于该数据结构的存储器量,编码器可消除冗余的值。例如,编码器可通过使用下面的方法来避免将相同的块添加到该数据结构中。

在将新的候选块B添加到该数据结构之前,编码器检查是否已经有与B相同的候选块被表示在该数据结构中。为了该检查,编码器可确定新候选块的散列值,随后还评估表示在该数据结构中的具有相同散列值的那些候选块。(具有不同散列值的候选块必定与该新候选块B不同。)如果该数据结构已经包括与B相同的候选块,则添加Bnew以代替先前的相同候选块或者简单地保持先前的相同候选块。如果该数据结构不包括与B相同的候选块,则将B添加到该数据结构中。

一般来说,通过消除相同的块来降低数据结构的尺寸可损害编码效率。当可能有多个相同的候选块可用时,这些相同的候选块可导致针对当前块的不同BV值,其中这些BV值之一可用比(诸)其他BV值更少的比特来编码。同样,具有相同原始样本值(并因此具有相同散列值)的候选块可具有不同的经重构的值,在该情况下,使用这些候选块之一与使用(诸)其他候选块相比可导致更好的预测。如果仅多个相同候选块之一被保持在该数据结构中,则编码器可能不会获悉将更高效地对当前块进行编码的BV值,或者可能选择其经重构的值会导致对当前块的低劣预测的块。由此,通过判定是否消除相同的块,编码器可对数据结构的存储器尺寸和编码效率进行折衷。编码器还可取决于候选块的内容筛选出不可能从帧内BC预测中获益的候选块。

C.迭代的基于散列的块匹配

当编码器使用具有n个可能的散列值的单个散列函数时,编码器可基于当前块的散列值排除n-1个候选块列表,但编码器仍可能需要对剩下的(诸)候选块执行逐样本的块匹配操作(如果有剩下的候选块的话)以得到具有匹配散列值的列表。同样,在更新组织候选块的数据结构时,编码器可需要执行逐样本的块匹配操作以标识出相同的块。共同地,这些逐样本的块匹配操作可能是计算密集的。

因此,在一些实现中,编码器使用迭代的基于散列的块匹配。迭代的基于散列的块匹配可加速块匹配过程,并且还加速更新组织候选块的数据结构的过程。

迭代的基于散列的块匹配使用用不同的散列函数确定的多个散列值。对于块B(当前块或候选块),除了散列值h(B)外,编码器还使用一不同的散列函数h'()确定另一散列值h'(B)。通过针对当前块的第一散列值h(B当前),编码器标识针对第一散列函数h()具有相同散列值的候选块。为了进一步排除这些标识出的候选块中的一些,编码器使用当前块的第二散列值h'(B当前),该散列值是使用一不同的散列函数来确定的。编码器将第二散列值h'(B当前)与先前标识出的候选块(其具有相同的第一散列值)的第二散列值进行比较,以便滤除这些候选块中的更多候选块。散列表根据不同的散列函数来跟踪这些候选块的散列值。

在图21a的示例中,如果h(B当前)=h3,则编码器选择具有条目(3,0)、条目(3,1)、条目(3,2)、条目(3,3)、……的各候选块以供进一步细化。如图21c所示,对于候选块B,条目包括块地址和来自散列函数h'()的第二散列值h'(B)。编码器将当前块的第二散列值h'(B当前)与具有条目(3,0)、条目(3,1)、条目(3,2)、条目(3,3)、……的各相应候选块的第二散列值h'(B)进行比较。基于第二散列值比较的结果,编码器可排除更多的候选块,从而留下分别具有第一和第二散列值匹配h(B当前t)和h'(B当前)的各候选块(如果有的话)。编码器可对任何剩下的候选块执行逐样本的块匹配以选择匹配的块。

图22a-22c示出了使用一不同的数据结构的迭代的基于散列的块匹配的另一示例。图22a中的数据结构(2200)依据来自第一散列函数h()(其具有n1个可能的散列值)的第一散列值来组织各候选块。数据结构(2200)包括散列值h0…hn1-1的列表。

在该示例中,编码器确定当前块的第一散列值h(B当前)=h2,并从结构(2200)中选择针对h2的列表。

如图22b所示,针对h2的列表(2210)包括多个列表,这些列表进一步依据来自第二散列函数h'()(其具有n2个可能的散列值)的第二散列值来组织剩下的候选块。列表(2210)包括针对散列值h'0…h'n2-1的列表,每一列表包括具有块地址(例如,相应的候选块的左上位置的水平和垂直坐标)的条目,如针对图22c中的条目(2220)示出的。在该示例中,编码器确定当前块的第二散列值h'(B当前)=h'0,并从列表(2210)中选择针对h'0的列表。对于在针对h'0的列表中的候选块,编码器可执行逐样本的块匹配以选择匹配的块。在该示例中,针对第二散列值的列表因针对第一散列值的给定列表而异。替换地,存在一个针对第二散列值的列表集合,并且编码器标识(1)在针对第一散列值的匹配列表中并且(2)还在针对第二散列值的匹配列表中的任何候选块。

除了基于散列的块匹配外,第二散列函数h'()还可用于简化更新组织候选块的数据结构的过程。例如,在编码器检查新候选块是否与已经表示在该数据结构中的候选块相同时,编码器可使用具有不同散列函数的多个散列值来滤除非相同的块。对于剩下的候选块,编码器可执行逐样本的块匹配以标识任何相同的块。

在前面的示例中,迭代的基于散列的块匹配和更新使用两个不同的散列函数。替换地,编码器使用三个、四个或更多个散列函数来进一步加速基于散列的块匹配或滤除非相同的块,并由此降低逐样本的块匹配操作的数目。

替换地,对于低复杂度编码器,编码器可在散列值匹配时忽略逐样本块匹配操作。对于具有大量可能散列值的散列函数,在两个块的所有散列值都匹配的情况下,有很高的概率这两个块是相同的。具体地,在更新数据结构时取代使用逐样本的块匹配来确认块是相同的,编码器可依赖于散列值比较来评估块是否相同。在假设新的候选块和现有的候选块是相同的情况下,如果这两个块的所有散列值都匹配,则编码器将候选块从数据结构中移除(或者不添加新的候选块)。如果散列值不匹配,则新的候选块被添加到数据结构中。这可导致对来自该数据结构的一些非相同块的执行,但逐样本的块匹配操作被避免。

D.示例散列函数

用于基于散列的块匹配的散列函数取决于实现。

散列函数可产生具有8比特、12比特、16比特、24比特、32比特或某一其他比特数的散列值。如果散列具有越少的比特,则数据结构包括越少的类别,但每一类别可包括越多的候选块。另一方面,使用具有越多比特的散列值往往会增加组织候选块的数据结构的尺寸。如果散列具有越多的比特,则数据结构包括越多的类别,但每一类别可包括越少的候选块。

在一些示例实现中,在基于散列的块匹配(和/或基于散列的块重构)中使用的散列函数是循环冗余校验(“CRC”)函数或CRC的一部分。CRC函数被快速而广泛地实现,因为它们通常被用于错误校验的目的。CRC函数在被应用到类似的输入值时往往产生非常不同的散列值。也就是说,轻微地改变块的样本值就可导致不同的CRC散列值。CRC函数可产生具有8比特、12比特、16比特、24比特、32比特或某一其他比特数的散列值。

CRC函数在被用于基于散列的块匹配时很好地用于找出与当前块精确相同的匹配块。然而,CRC函数通常不有助于找出仅近似于当前块的匹配块。

在其他示例实现中,在基于散列的块匹配(和/或基于散列的块重构)中使用的散列函数是密码散列函数或其一部分。例如,散列值可以为MD5值、SHA值、MD5值的一部分或SHA值的一部分。

在其他示例实现中,在基于散列的块匹配(和/或基于散列的块重构)中使用的散列函数使用求平均和XOR(异或)操作来确定候选块或当前块的签名。散列值包括基于块的平均值的分量和基于定向XOR操作的一个或多个分量。

例如,对于具有8比特样本值的8x8块B[i,j],散列值为具有三个8比特分量的24位值。第一8比特分量是块中的各样本值的平均值μ。

>μ=Σ0i<8,0j<8B[i,j]64>

对于第二和第三8比特分量,样本值的层图L[i,j]是使用该块的平均值μ导出的。

第二8比特分量r基于沿着层图L[i,j]的各行的XOR操作。对于层图L[i,j]中的每一行0≤j<8,第二分量的比特r[j]被确定。

r[j]=L[0,j]⊕L[1,j]⊕L[2,j]⊕L[3,j]⊕L[4,j]⊕L[5,j]⊕L[6,j]⊕L[7,j],

其中⊕表示XOR操作。

第三8比特分量c基于沿着层图L[i,j]的各列的XOR操作。对于层图L[i,j]中的每一列0≤i<8,第三分量的比特c[i]被确定。

c[i]=L[i,0]⊕L[i,1]⊕L[i,2]⊕L[i,3]⊕L[i,4]⊕L[i,5]⊕L[i,6]⊕L[i,7]。

因此,对于第二分量r,第j个比特是对第j行的层图的XOR。并且,对于第三分量c,第i个比特是对第i列的层图的XOR。该24比特散列值是(μ<<16)+(r<<8)+c,其中<<表示向左移位操作。

对于该散列函数,(基于XOR运算的)第二和第三分量对样本值中的小变化敏感。然而,基于求平均和XOR运算的散列函数在被用于基于散列的块匹配时很好地用于找出与当前块精确相同的匹配块。

取代8x8的块,使用求平均和XOR运算的散列函数可被用于不同尺寸的块,例如沿着16x16块的各行对或列对计算XOR运算以确定8比特分量r或c,沿着32x32块的四个行或四个列的群组计算XOR运算以确定8比特分量r或c,并以此类推。替换地,使用求平均和XOR运算的散列函数可产生具有不同比特数的散列值。

在其他示例实现中,在基于散列的块匹配(或基于散列的块重构)中使用的散列函数是局部敏感散列函数。局部敏感散列函数在被应用到类似的输入值时往往产生相同的散列值。也就是说,轻微地改变块的样本值通常不会导致不同的散列值。局部敏感散列函数可产生具有8比特、12比特、16比特、24比特、32比特或某一其他比特数的散列值。

例如,对于8x8块B,从块B的64个样本值中生产一64维矢量随机地生成另一64维矢量

散列函数取决于乘积例如,该散列函数可以为其中d是从范围0…d范围中选出的实数。如果两个块相似,则其矢量相似,并且其散列值和应当也是相同或相似的。

在一些示例实现中,在基于散列的块匹配(或基于散列的块重构)中使用的散列函数包括作为输入的块宽度和块高度。例如,该散列函数可以是经修改的CRC函数、经修改的密码散列函数、经修改的使用求平均和XOR运算的散列函数、或经修改的局部敏感散列函数,其散列值部分地取决于作为输入的块高度和块宽度。通过散列函数的这种变型,不同尺寸(诸如64x64、32x32、16x16和8x8)的候选块可被组织在单个数据结构内。经修改的散列函数可产生n比特的散列值,该散列值的m个比特指示根据底层的m比特散列函数的散列值。该n比特散列值中剩下的n-m个比特指示块尺寸。例如,假设经修改的散列函数产生14比特的散列值,其中前两个比特指示四个选项之中的块尺寸,并且剩下的12个比特指示那个尺寸的块之中的散列值。块被散列化,从而得到在范围0...4095中的12比特的散列值。如果块尺寸为4x4,则0<<12被添加到该12比特的散列值。如果块尺寸为8x8,则1<<12被添加到该12比特的散列值。如果块尺寸为16x16,则2<<12被添加到该12比特的散列值。并且,如果块尺寸为32x32,则3<<12被添加到该12比特的散列值。这得到在范围0...16383中的14比特的散列值,其中在范围0...4095中的散列值针对4x4块,在范围4096...8191中的散列值针对8x8块,在范围8192...12287中的散列值针对16x16块,并且在范围12288...16383中的散列值针对32x32块。如果更多的块尺寸是可能的,则可分配3、4或更多个比特来指示块的块尺寸。替换地,指示块尺寸的n-m个比特可以是n比特的散列值的最低有效位,其中在添加针对块尺寸的n-m个比特之前使一m比特的值向左移位m-m个比特。

替换地,散列函数作用于不同尺寸的块,但该散列函数产生m比特的散列值,而不管块的尺寸。不同块尺寸的候选块仍可被组织在单个数据结构中,但候选块的条目包括指示那个块的块尺寸的信息。块尺寸信息在基于散列的块匹配期间可被用来检查与当前块的块尺寸相比候选块的块尺寸。

替换地,将另一散列函数用于基于散列的块匹配。

E.帧内BC预测模式—实现选项

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

根据帧内BC预测模式的预测的块复制操作可以在CB级(在BV值被每CB地信号化时)或PB级(在BV值被每PB地信号化时)执行。例如,假设16x16CB具有单个16x16PB。(PB的)BV值被应用以块复制16x16区域。替换地,块复制操作可在PB或CB内的TB级执行,即使BV值是针对PB或CB来信号化的。在这种方式中,如被应用于一TB的BV值可参考同一PB或CB中的其他TB的位置。

在一些实现中,对于帧内BC预测的CU而言,当色度数据相对于亮度数据具有降低的分辨率时(例如,当格式为YUV4:2:0格式时),可能在进行了缩放和舍入后,针对PU中的色度块的帧内BC预测与针对PU中的亮度块的帧内BC预测使用相同的BV值。替换地,可为PU的亮度块和色度块信号化不同的BV值。

F.利用基于散列的块匹配的示例视频编码器

图23a和23b示出从经重构的样本值确定散列值以供用于基于散列的块匹配的广义视频编码器(2300)。在大多方面,编码器(2300)的模块与图5a和5b中示出的编码器(500)的模块相同,并且在图23a和23b中对这样的模块使用相同的参考标记。然而,编码器(2300)包括块散列词典(2341),该块散列词典(2341)存储通过将散列函数应用于经重构的样本值来确定的散列值。例如,对于图片内估计器(540)的BV估计,块散列词典(2341)存储当前图片中的候选块的散列值。对于运动估计器(550)的运动估计,块散列词典(未示出)可存储一个或多个参考图片中的候选块的散列值。在基于散列的块匹配期间,编码器使用输入样本值来确定当前块的散列值。编码器将该散列值与从候选块的经重构样本值中确定的散列值进行比较(或者以其他方式使用散列值)。块散列词典(2341)是使用经重构的样本值来更新的。

替换地,在基于散列的块匹配中考虑的候选块包括输入样本值。也就是说,这些候选块是图片的输入版本的一部分。候选块的散列值是从输入样本值中确定的。在基于散列的块匹配期间,编码器使用输入样本值来确定当前块的散列值。编码器将该散列值与从候选块的输入样本值中确定的散列值进行比较(或者在其他情况下使用散列值)。即使如此,来自经重构的样本值的匹配块被用来表示当前块。由此,BC预测操作仍使用经重构的样本值。

图24a和24b示出从输入样本值确定散列值以供用于基于散列的块匹配的广义视频编码器(2400)。在大多方面,编码器(2400)的模块与图5a和5b中示出的编码器(500)的模块相同,并且在图24a和24b中相同的参考标记被用于这样的模块。然而,编码器(2400)包括块散列词典(2441),该块散列词典(2441)存储通过将散列函数应用于来自输入视频信号(505)的输入样本值来确定的散列值。例如,对于图片内估计器(540)的BV估计,块散列词典(2441)存储当前图片中的候选块的散列值。对于运动估计器(550)的运动估计,块散列词典(未示出)可存储一个或多个参考图片中的候选块的散列值。

在一些块被有损编码时,使用从输入样本值确定的散列值可改善帧内BC预测性能。在这种情况下,如果散列值是从经重构的样本值确定的,则由于量化噪声,编码器可能无法找出与当前块精确匹配的匹配块。通过从输入样本值确定散列值,基于散列的块匹配不会受由有损编码引入的失真的影响。编码器仍(例如使用BV值)向解码器信号化将哪个匹配块用于当前块。

G.针对预测期间的块翻动的编码器策略

在一些示例实现中,编码器在判定是否使用块翻动时使用基于散列的块匹配。基于散列的块匹配可提供快速而高效的方式来在BV估计或运动估计期间评估块翻动选项。

图25示出用于判定是否使用块翻动的示例技术(2500)。图像编码器或视频编码器(诸如参考图3、图23a-23b或图24a-24b描述的编码器)可执行技术(2500)。

编码器执行(2510)基于散列的块匹配以为当前图片中的当前块(例如,PU、CU)确定参考区域。该参考区域是从多个候选块中选择的。对于BV估计,当前图片包括候选块。对于运动估计,参考图片包括候选块。基于散列的块匹配考虑当前块的预测区域相对于参考区域的翻动。编码器可在基于散列的块匹配期间使用若干方法中的任何一种来考虑块翻动。

在第一方法中,编码器(水平地和/或垂直地)翻动当前块,并确定经翻动的当前块的块散列值。随后,编码器搜索散列表以标识出具有与经翻动的当前块的块散列值匹配的块散列值的任一候选块。散列表根据其块散列值来组织这些候选块。编码器还可在散列表中搜索以查找非翻动的当前块,从而确定当前块的块散列值并搜索散列表以标识出具有与当前块的块散列值匹配的块散列值的任一候选块。

例如,对于第一方法,编码器生成在有效区域(具有经重构的内容的区域)中的候选块的块散列值。取决于实现,候选块可具有固定尺寸(例如,8x8)或不同的块尺寸(例如,4x4、8x8、16x16和32x32或单行或单列样本值)。块散列值可基于输入样本值或经重构的样本值来确定,这取决于实现。如果经翻动的当前块的块散列值匹配散列表中的候选块的块散列值,则当前块可匹配经翻动的候选块。编码器可根据另一散列函数和/或用逐样本的块匹配来验证与其他块散列值的匹配,并选择提供最佳性能的候选块(具有或不具有块翻动的参考区域)。

在第二方法中,除了根据候选块的块散列值来组织这些候选块外,散列表根据经翻动版本的块散列值来组织候选块的至少一些经翻动的版本。候选块的经翻动版本可被水平地和/或垂直地翻动。在基于散列的块匹配期间,编码器确定当前块的块散列值。随后,编码器搜索散列表以标识出具有与当前块的块散列值匹配的块散列值的任一候选块及其经翻动的版本。

例如,对于第二方法,编码器生成在有效区域中的候选块的块散列值。取决于实现,候选块可具有固定尺寸或不同的块尺寸,并且块散列值可基于输入样本值或经重构的样本值来确定。编码器还生成候选块的经翻动版本(例如,被垂直地翻动、被水平地翻动和/或被垂直且水平地翻动)的块散列值通过这种方法,当前块的块散列值可匹配一个或多个非翻动候选块和/或一个或多个经翻动候选块的块散列值。编码器可根据另一散列函数和/或用逐样本的块匹配来验证与其他块散列值的匹配,并选择提供最佳性能的候选块(具有或不具有块匹配的参考区域)。与第一方法相比,第二方法使用更大的散列表(该散列表包括针对候选块的经翻动版本的块散列值)但可涉及更少的查找操作。

回过头看图25,编码器基于参考区域来确定(2520)当前块的预测区域。该预测区域可相对于参考区域被翻动(例如,被垂直地翻动、被水平地翻动或被垂直且水平地翻动)。

编码器使用预测区域来编码(2530)当前块,并在比特流中输出(2540)经编码的数据。对于运动估计,经编码的数据包括当前块的MV值,该MV值指示到参考区域的位移。对于BV估计,经编码的数据包括当前块的BV值,该BV值指示到参考区域的位移。或者,经编码的数据可包括当前块的散列值,该散列值指示块散列词典中的参考区域,其中该散列值与预测区域是否相对于参考区域被翻动的任何指示分开。或者,经编码的数据包括当前块的散列值,该散列值指示块散列词典中的帧内BC预测区域,其中该散列值提供该预测区域是否相对于参考区域被翻动的指示。

编码器可类似地在逐块的基础上为片、小块或图片编码其他预测的块(具有或不具有块翻动)。

H.针对帧内BC预测跳跃模式的编码器策略

在一些示例实现中,编码器在判定是否使用帧内BC预测以跳跃模式来编码块时使用基于散列的块匹配。基于散列的块匹配提供快速而高效的方式来估计针对编码模式的选项。

图26示出用于判定是否应当用帧内BC预测的跳跃模式来编码块的示例技术(2600)。图像编码器或视频编码器(诸如参考图3、图23a-23b或图24a-24b描述的编码器)可执行技术(2600)。

在高层,编码器判定是否要使用帧内BC预测以跳跃模式来编码当前图片中的当前块(例如,CU、PU)。编码器得到(2610)当前图片中的下一块,并执行(2620)基于散列的块匹配以确定当前图片中的参考区域。

编码器还可将该块的量化参数(“QP”)值与参考区域的QP值进行比较(2630)。如果参考区域覆盖具有不同QP值的各块中的部分,则参考区域的QP值可以是:(a)这些块的不同QP值中最小的QP值,(b)覆盖参考区域的最大部分的无论哪个块的QP值,(c)这些块的不同QP值中的平均QP值,(d)这些块的不同QP值中的加权平均QP值,(e)这些块的不同QP值中的最大QP值,或(f)从这些块的不同QP值中的一者或多者中推导出的某一其他QP值。替换地,取代比较块和参考区域的QP值,编码器相对于参考区域计算该块的残留值。

编码器确定(2640)该块是否是使用帧内BC预测以跳跃模式来编码的。例如,作为该块是使用帧内BC预测以跳跃模式来编码的条件,编码器检查参考区域的输入样本值等同地匹配该块的相应输入样本值。替换地,作为该块是使用帧内BC预测以跳跃模式来编码的条件,编码器检查参考区域的样本值充分接近于该块的相应样本值(例如,根据诸如绝对差之和或均方差之类的失真度量)。或者,作为另一示例,作为该块是使用帧内BC预测以跳跃模式来编码的条件,编码器检查该块的QP值大于或等于参考区域的QP值。(如果该块的QP值大于或等于参考区域的QP值,则该块的预期误差与参考区域的预期误差相比相当或更差。)替换地,代替检查该块和参考区域的QP值,编码器相对于参考区域来评估该块的残留值(例如,检查残留值中的能量、在频率变换后对残留值的非零频率系数进行计数)。或者,编码器可检查其它和/或附加条件。

如果该块将使用帧内BC预测以跳跃模式来编码时,编码器使用帧内BC预测用BV值来编码(2660)该块。该块的BV值指示到参考区域的位移。编码器还可使用该块的BV值和该块的BV预测值来确定该块的BV差,并编码BV差。编码器在比特流中输出该块的经编码的数据。由于该块是用跳跃模式帧内BC预测的块,比特流缺少该块的残留数据。

在其他情况下(该块不是使用帧内BC预测以跳跃模式来编码的),编码器用另一模式(例如,帧间预测、帧内空间预测、非跳跃式帧内BC预测)来编码(2650)该块。

编码器确定(2670)是否继续图片中的下一块。如果如此,则编码器得到(2610)下一块并继续编码。

编码器可在逐图像的基础上、逐小块的基础上、逐片的基础上或某一其他基础上重复技术(2600)。用跳跃模式帧内BC预测的块可能是使用块翻动来预测的,在该情况下,该块的帧内BC预测区域相对于参考区域被(垂直地和/或水平地)翻动。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号