用于视频编码的基于散列的编码器判定的制作方法

文档序号:10618728阅读:185来源:国知局
用于视频编码的基于散列的编码器判定的制作方法
【专利摘要】呈现了使用基于散列的块匹配的结果的编码器侧判定方面的创新。例如,这些创新中的一些涉及构建包括一些(而非全部)均匀块的散列表的方式。其他创新涉及根据基于散列的块匹配的结果来确定运动向量分辨率的方式。又一些创新涉及编码期间的场景改变检测,包括长期参考图片选择和图片质量确定。
【专利说明】用于视频编码的基于散列的编码器判定
[0001 ] 背景
[0002]工程师使用压缩(也叫做源编码(source coding或source encoding))来降低数字视频的比特率。压缩通过将视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。解压(也被称为解码)从压缩的形式中重构一种版本的原始信息。“编解码器”是编码器/解码器系统。
[0003]在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-T H.26UH.262(MPEG-2或IS0/IEC 13818-2)、Η.263和H.264(MPEG_4AVC或IS0/IEC14496-10)标准、MPEG-1(IS0/IEC 11172 I 172-2)和MPEG-4可视(IS0/IEC14496-2)标准以及SMPTE 421M(VC_1)标准ο最近,H.265/HEVC标准(ITU-T H.265或IS0/IEC 23008-2)已被批准。目前,(例如,用于可缩放视频编码/解码、用于在样本比特深度或色度采样率方面具有较高保真度的视频的编码/解码、用于屏幕捕捉内容、或用于多视图编码/解码的)H.265/HEVC标准的扩展处于开发中。视频编解码器标准通常定义针对经编码的视频比特流的句法的选项,从而详述当在编码和解码时使用特定特征时该比特流中的参数。在许多情况下,视频编解码器标准还提供关于解码器应当执行以在解码时取得一致的结果的解码操作的细节。除了编解码器标准夕卜,各种专用编解码器格式定义针对经编码的视频比特流的句法的其他选项以及相应的解码操作。
[0004]一般而言,视频压缩技术包括“图像内”压缩和“图像间”压缩。图片内压缩技术压缩各个体图片,且图片间压缩技术参考前导和/或跟随图片(通常被称为参考或另一图片)来压缩图片。
[0005]图片间压缩技术通常使用运动估计和运动补偿通过利用视频序列中的时间冗余来降低比特率。运动估计是用于估计图片之间的运动的过程。在一个常用技术中,使用运动估计的编码器尝试将当前图片中的当前样本值块与另一图片(参考图片)中的搜索区域中的相同尺寸的候选块匹配。一般来说,参考图片是包含在对其他图片的解码过程中可用于预测的样本值的图片。
[0006]对于当前块,当编码器在参考图片中的搜索区域中找到精确或“足够接近”的匹配时,编码器将当前和候选块之间的位置改变参数化为运动数据(诸如运动矢量(“MV”))。常规上MV是二维值,具有指示左或右空间位移的水平MV分量和指示上或下空间位移的垂直MV分量。一般来说,运动补偿是使用运动数据从(诸)参考图片中重构图片的过程。
[0007]在一些编码技术中,将当前图片的块与一个或多个参考图片的块匹配。然而,在大量块需要被存储或匹配时,这样的匹配技术可遭受降低的性能。在其他编码技术中,运动向量精度可被改变(例如,在逐图片的基础上),但判定何时改变运动向量精度可以是困难的任务。在又一些编码技术中,场景改变检测被执行。然而,这样的检测技术可能无法高效或准确地检测涉及屏幕内容的场景改变。
[0008]概述
[0009]总而言之,详细描述呈现了在编码期间执行各种任务和操作时使用基于散列的块匹配的结果的编码器侧判定方面的创新。例如,这些创新中的一些涉及构建包括部分(而非全部)均匀块的散列表的方式。其他创新涉及根据基于散列的块匹配来确定运动向量分辨率。例如,图片的块可被分类成多个类别,并且向每一类别分配的块的数目可用于确定要使用哪个运动向量精度。其他创新涉及至少部分地使用基于散列的块匹配信息的场景改变检测。例如,图片可在场景改变的各个阶段(例如,在稳定场景期间、紧接在场景改变之前、在场景转变期间以及在新场景的开始处)被标识。场景改变信息可在编码期间在选择长期参考图片时和/或在调整图片质量时被使用。
[0010]参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
[0011]附图简述
[0012]图1是其中可实现所描述的一些实施例的示例计算系统的示图。
[0013]图2a和2b是其中可实现所描述的一些实施例的示例网络环境的示图。
[0014]图3是结合其可实现所描述的一些实施例的示例编码器系统的示图。
[0015]图4a和4b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。
[0016]图5是示出具有可为屏幕捕捉提供输入的内容的计算机桌面环境的示图。
[0017]图6是示出具有自然视频内容和人工创建的视频内容的复合视频的示图。
[0018]图7是示出在基于散列的块匹配中的候选块的散列值的表。
[0019]图8a_8c是示出为基于散列的块匹配组织候选块的示例数据结构的表。
[0020]图9a_9c是示出为迭代的基于散列的块匹配组织候选块的示例数据结构的表。图1Oa-1Oc是示出候选块的模式的示图。
[0021]图11是示出用于在散列表构造期间使用均质选择准则来选择均质块的技术的流程图。
[0022]图12a和12b是示出利用分别具有整数样本空间位移和分数样本空间位移的MV值的运动补偿的示图。
[0023]图13是示出用于取决于块分类的结果来选择MV精度的技术的流程图。
[0024]图14是示出用于执行在选择MV精度时使用的块分类的技术的流程图。
[0025]图15是示出用于在视频编码期间检测场景改变的技术的流程图。
[0026]详细描述
[0027]该详细描述呈现了使用基于散列的匹配技术来改善各种类型的操作的性能的编码器侧判定方面的创新。例如,这些创新中的一些涉及构建包括部分(而非全部)均匀块(例如,仅包括满足选择准则的那些均质块)的散列表的方式。其他创新涉及根据基于散列的块匹配来确定运动向量分辨率。例如,图片的块可被分类成多个类别,并且向每一类别分配的块的数目可用于确定要使用哪个运动向量精度。其他创新涉及至少部分地使用基于散列的块匹配信息的场景改变检测。例如,图片可在场景改变的各个阶段(例如,在稳定场景期间、紧接在场景改变之前、在场景转变期间以及在新场景的开始处)标识。场景改变信息可在编码期间在选择长期参考图片时和/或在调整图片质量时被使用。
[0028]具体地,这些创新可提供用于在对人工创建的视频内容(诸如屏幕捕捉内容)进行编码期间设置参数的计算上高效的方式。
[0029]虽然本文中描述的操作是被适当描述为由视频编码器来执行,但在许多情况中,这些操作可由另一类型的媒体处理工具(例如图像编码器)来执行。
[0030]本文中描述的一些创新是参考专用于H.265/HEVC标准的句法元素和操作来示出的。例如,对H.265/HEVC标准的草稿版本JCTVC-P1005—即2014年2月的“高效视频编码(HEVC)范围扩展文本规范:第6稿” JCTVC-P1005_vl作出参考。本文中描述的各创新还可以被实现为用于其它标准或格式。
[0031]本文中描述的许多创新可在对某个人工创建的视频内容(诸如来自屏幕捕捉模块的屏幕捕捉内容)进行编码时改善决定作出过程。屏幕捕捉内容通常包括重复的结构(例如图形、文本字符)。屏幕捕捉内容一般以具有高色度的采样分辨率的格式(例如,YUV 4:4:4或RGB 4:4:4)来编码,但是也可以具有较低色度的采样分辨率的格式(例如,YUV 4:2:0)来编码。对屏幕捕捉内容进行编码/解码的常见场景包括远程桌面会议和对自然视频或其它“混合内容”视频的图形覆盖进行编码/解码。这些创新也可以被用于自然视频内容,但可能不像那样有效。
[0032]更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技术/工具并不解决所有这些问题。
[0033]示例计算系统
[0034]图1示出了其中可实现几个所描述的创新的合适计算系统(100)的概括示例。计算系统(100)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算系统中实现。
[0035]参考图1,计算系统(100)包括一个或多个处理单元(I 10、115)和存储器(120、125)。处理单元(I 10、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,R0M、EEPR0M、闪存等)或两者的某种组合,可由处理单元存取。存储器(120,125)存储实现根据基于散列的块匹配的结果的编码器判定的一个或多个创新(例如,用于构建散列表、用于选择MV精度、以及用于检测场景改变并基于场景改变作出判定)的软件(180),该软件采用适用于由(诸)处理单元执行的计算机可执行指令的形式。
[0036]计算系统可具有附加的特征。例如,计算系统(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算系统(100)的各组件互连。通常,操作系统软件(未示出)为在计算系统(100)中执行的其它软件提供操作环境,并协调计算系统(100)的各组件的活动。
[0037]有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、⑶-R0M、DVD或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储(140)存储实现针对根据基于散列的块匹配的结果的编码器判定的一个或多个创新的软件(180)的指令。
[0038](诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(诸)输入设备(150)可以是相机、视频卡、TV调谐卡、屏幕捕捉模块或接受模拟或数字形式的视频输入的类似设备、或将视频输入读到计算系统(10)中的CD-ROM或CD-RW。(诸)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。
[0039](诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。
[0040]各创新可以在计算机可读存储介质的一般上下文中描述。计算机可读存储介质是可在计算环境内访问的任何可用有形介质。作为示例,对于计算系统(100),计算机可读介质包括存储器(120,125)和/或存储(140)。术语计算机可读存储介质不包括信号和载波。此外,术语计算机可读存储介质不包括通信连接(例如,170)。
[0041]各创新可在计算机可执行指令(诸如包括在程序模块中的在目标现实或虚拟处理器上在计算系统中执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。
[0042]术语“系统”和“设备”在此被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。
[0043]所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的集成电路(例如,诸如ASIC数字信号处理器(“DSP”)之类的ASIC、图像处理单元(“GPU”)、或诸如场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”))来实现。
[0044]为了呈现起见,本详细描述使用了如“确定”和“使用”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。
[0045]I1.示例网络环境
[0046]图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可包括因特网或另一计算机网络。
[0047]在图2a所示的网络环境(201)中,每个实时通信(“RTC”)工具(210)都包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符合H.265/HEVC标准、SMPTE 421M标准、IS0/IEC 14496-10标准(也称为H.264或AVC)、另一标准、或专用格式的变型或扩展的输出,使得相应的解码器(270)接受来自编码器(220)的经编码的数据。双向通信可以是视频会议、视频电话呼叫或其它双方或多方通信场景的部分。虽然,图2a中的网络环境(201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或更多个实时通信工具(210)。
[0048]实时通信工具(210)管理编码器(220)做出的编码。图3示出可以被包括在实时通信工具(210)中的示例编码器系统(300)。替换地,实时通信工具(210)使用另一编码器系统。实时通信工具(210)还管理解码器(270)做出的解码。
[0049]在图2b中示出的网络环境(202)中,编码工具(212)包括编码供递送给多个回放工具(214)的视频的编码器(220),此多个回放工具(214)包括解码器(270)。单向通信可被提供用于视频监视系统、web相机监视系统、远程桌面会议演示或在其中编码视频并将视频从一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两个回放工具(214),但该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具(214)接收该流、缓冲所接收的经编码数据达合适的时间段并开始解码和回放。
[0050]图3示出可以被包括在编码工具(212)中的示例编码器系统(300)。替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。回放工具(214)还可以包括用于管理与编码工具(212)的连接的客户机侧控制器逻辑。
[0051 ] II1.示例编码器系统。
[0052]图3是结合其可实现所描述的一些实施例的示例编码器系统(300)的框图。编码器系统(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码模式、转码模式和用于从文件或流中产生供回放的媒体的较高等待时间编码模式)操作的通用编码工具,或它可以是适用于一种这样的编码模式的专用编码工具。编码器系统(300)可以适用于编码特定类型的内容(例如屏幕捕捉内容)。编码器系统(300)可以被实现为操作系统模块、应用库的部分、独立的应用。总体上,编码器系统(300)从视频源(310)接收源视频帧序列(311)并产生经编码数据作为到信道(390)的输出。输出到信道的经编码的数据可包括使用如本文中所述的编码器侧决定编码的内容。
[0053]视频源(310)可以是相机、调谐卡、存储介质、屏幕捕捉模块或其它数字视频源。视频源(310)以例如每秒30帧的帧速率产生视频帧序列。如本文中所使用的,术语“帧”一般指代源、经编码的或经重构的图像数据。对于逐行扫描视频,帧是逐行扫描视频帧。对于隔行视频,在各示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个互补的隔行视频场可以被编码在一起作为单个视频帧或者被编码成两个经分开编码的场。除了指示逐行扫描视频帧或隔行扫描视频帧之外,术语“帧”或“图片”可以指示单个非成对的视频场、互补的成对视频场、表示在给定时间的视频对象的视频对象平面、或较大图像中的感兴趣区域。视频对象平面或区域可以是包括场景的多个对象或区域的较大图像的一部分。
[0054]抵达的源帧(311)被存储在包括多个帧缓冲器存储区域(321、322、…、32η)的源帧临时存储器存储区域(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之类的变体。色度采样值可以被子采样到较低的色度采样率(例如对于YUV 4:2:0格式),或者色度采样值可以具有与亮度采样值相同的分辨率(例如对于YUV4:4:4格式)。或者,视频可用另一格式(例如RGB 4:4:4格式、GBR 4:4:4格式或BGR 4:4:4格式)来编码。
[0055]编码器(340)编码所选的帧(331)以产生经编码的帧(341)并且还产生存储器管理控制操作(“MMC0”)信号(342)或参考图片集(“RPS”)信息。RPS是在针对当前帧或任意后续帧的运动补偿中可用于供参考的帧集。如果当前帧不是已被编码的第一帧,则在执行其编码处理时,编码器(340)可以使用已经被存储在经解码帧的临时存储器存储区域(360)中的一个或多个先前被编码/解码的帧(369)。这样的存储的经解码帧(369)被用作用于当前源帧(331)的内容的帧间预测的参考帧JMC0/RPS信息(342)向解码器指示哪些经重构的帧可被用作参考帧,并且因此应该被存储在帧存储区域中。以下描述作出关于要将哪些参考图片保留在RPS中的判定的示例方式。
[0056]一般来说,编码器(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)或其它格式的变型或扩展。
[0057]编码器(340)可以将帧分割成相同尺寸或不同尺寸的多个小块。例如,编码器
(340)沿小块行和小块列来拆分帧,这些小块行和小块列利用帧边界定义在该帧内的小块的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于提供并行处理的选项。帧还可以被组织成一个或多个片,其中一个片可以是整个帧或该帧的区域。片可以独立于帧中的其它片编码,这改善了错误复原性。出于编码和解码的目的,片或小块的内容被进一步分隔成块或其它采样值集。
[0058]对于根据H.265/HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度采样值,并且对应的色度采样值被组织为两个色度CTBXTU(及其CTB)的尺寸由编码器来选择,并且可例如为64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB”)和两个对应的色度CB。例如,具有64x64亮度CTB和两个64x64色度CTB(YUV 4: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)可被信号化在比特流中。
[0059]通常,CU具有诸如帧间或帧内之类的预测模式。出于信号化预测信息(例如预测模式细节、移位值等)和/或预测处理的目的,CU包括一个或多个预测单元。预测单元(“PU”)具有亮度预测块(“PB” )和两个对应的色度I3B ο对于帧内预测的CU,PU与CU具有相同的尺寸,除非CU具有最小尺寸(例如8 X 8)。在那个情况下,CU可被拆分成四个较小的PU(例如,如果最小CU尺寸为8x8,则PU为4x4),或者PU可具有最小CU尺寸,如针对CU的句法元素所指示的。出于残留编码/解码的目的,CU还具有一个或多个变换单元,其中变换单元(“TU”)具有一变换块(“TB”)和两个色度TB。在帧内预测的CU中的PU可以包含单个TU(尺寸与PU相同)或多个TU。编码器决定如何将视频分割成CTU、⑶、PU、TU等。
[0060]在H.265/HEVC实现中,片可以包括单个片段(独立的片段)或被划分成多个片段(独立的片段和一个或多个从属的片段)。片段是在小块扫描中包含在单个网络抽象层(“NAL”)单元中的连续排序的整数个CTU。对于独立的片段,片段头部包括适用于该独立的片段的句法元素的值。对于从属片段,截断的片段头部包括适用于该从属片段的句法元素的几个值,并且从属片段的其它句法元素的值是以解码顺序从在前的独立的片段的值中推导出来的。
[0061]如本文中所使用的,术语“±夬”可以指示宏块、预测单元、残留数据单元、或者CB、PB或TB,或者某些其它样本值集,这取决于上下文。
[0062]回到图3,编码器根据来自源帧(331)中的其它、先前重构的样本值的预测来表示该帧(331)内编码的块。对于帧内块复制(“BC”)预测,图片内估计器或运动估计器估计块相对于同一帧中的其它、先前重构的样本值的位移。帧内预测参考区域是帧中被用于生成块的BC预测值的样本值区域。帧内预测区域可以用块矢量(“BV”)值来指示,该块矢量值可在比特流中被表示为运动矢量(“MV”)值。对于块的空间内预测,图片内估计器估计相邻的经重构的样本值到该块的外插。预测信息(诸如,针对帧内BC预测的BV/MV值、或针对帧内空间预测的预测模式(方向))可被熵编码并被输出。帧内预测预测器(或针对BV/MV值的运动补偿器)应用预测信息来确定帧内预测值。
[0063]编码器(340)依据来自一个或多个参考帧(369)的预测来表示源帧(331)的帧间编码的预测的块。运动估计器估计块相对于一个或多个参考帧(369)的运动。运动估计器可例如使用本文中描述的方法来选择MV精度(例如,整数样本MV精度、1/2样本MV精度或1/4样本MV精度),随后在运动估计期间使用所选的MV精度。当使用多个参考帧时,这多个参考帧可来自不同的时间方向或相同的时间方向。经运动补偿的预测参考区域是在参考帧中被用于生成当前帧的采样值的块的经运动补偿的预测值的采样值的区域。运动估计器输出诸如MV量信息之类的运动信息,该运动信息被熵编码。运动补偿器将MV应用于参考帧(369)以确定用于帧间预测的经运动补偿的预测值。
[0064]编码器可以确定在块预测值(帧内或帧间)和对应的原始值之间的差值(如果有的话)。这些预测残留值将进一步使用频率变换、量化和熵编码来编码。例如,编码器(340)为图片、小块、片和/或视频的其它部分设置量化参数(“QP”)的值,并相应地量化变换系数。编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如MV信息、所选的MV精度、SAO滤波参数、RPS更新信息、QP值、模式决定、其他参数选择)。典型的熵编码技术包括指数-Go 1mb编码、Go 1mb-Ri ce编码、算术编码、差分编码、Huffman编码、彳丁程长度编码、可变长度对可变长度(“V2V”)编码、可变长度对固定长度(“V2F”)编码、Lempel-ZiV( “LZ”)编码、字典编码、概率区间划分熵编码(“PIPE”)和上述编码的组合。熵编码器可对不同种类的信息使用不同的编码技术,并可组合地应用多个技术(例如,通过应用Golomb-Rice编码,随后应用算术编码),并可从特定编码技术内的多个码表中进行选择。
[0065]自适应去块滤波器可以被包括在编码器(340)中的运动补偿循环内以平滑经解码的帧中的块边界行和/或列上的间断。可替换地或另外地应用其它滤波(诸如去振铃滤波、自适应环路滤波(uAir)或SAO滤波)作为内环路滤波操作。
[0066]由编码器(340)产生的经编码的数据包括针对各层位流句法的句法元素。对于根据H.265/HEVC的标准的句法,例如,图片参数集(“PPS”)是包含了与图片相关联的句法元素的句法结构。PPS可被用于单个图片,或者PPS可被重用于序列中的多个图片。PPS典型地与图片的经编码的数据分开地发送信号(例如PPS的一个NAL单元和用于图片的经编码的数据的一个或多个其它NAL单元)。在图片的经编码数据内,句法元素指示要为该图片使用哪个PPS。类似地,对于根据H.265/HEVC的标准的句法,序列参数集(“SPS”)是包含了与图片的序列相关联的句法元素的句法结构。位流可包括单个SPS或多个SPSt3SPS通常被信号化成与序列的其它数据分开,并且其它数据中的句法元素指示要使用哪个SPS。
[0067]经编码的帧(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)作为解码处理的一部分。
[0068]经解码帧临时存储器存储区域(360)包括多个帧缓冲存储区域(361,362,...,36η)。以与MMC0/RPS信息(342)相一致的方式,解码处理仿真器(350)管理存储区域(360)中的内容,以便标识出具有编码器(340)不再需要将其用作参考帧的帧的任何帧缓冲区(361、362等)。在对解码处理进行建模之后,解码处理仿真器(350)在帧缓冲区(361、362等)中存储已经以此方式标识出的新解码的帧(351)。
[0069]经编码的帧(341)和丽⑶/RPS信息(342)被缓冲在临时的经编码数据区域(370)中。被聚集在经编码数据区域(370)中的经编码数据包含一个或多个图片的经编码数据作为基本经编码视频位流的句法的一部分。在经编码数据区域(370)中被聚集的经编码数据还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一个或多个参数)。
[0070]来自临时的经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处理。信道编码器(380)可以分组化和/或复用经聚集的数据以供作为媒体流传输或存储(例如根据媒体程序流或传输流格式,例如ITU-T H.222.0| IS0/IEC 13818-1或因特网实时传输协议格式(例如IETF RFC 3550)),在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以组织经聚集的数据以供存储成文件(例如根据媒体容器格式,诸如IS0/IEC 14496-12),在这种情况中信道编码器(380)可添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。信道编码器(380)或信道(390)还可以包括例如用于前向纠错(“FEC")编码和模拟信号调制的其它元素(未示出)。
[0071]IV.示例视频编码器。
[0072]图4a和4b是可结合其实现所描述的一些实施例的通用视频编码器(400)的框图。编码器(400)接收包括当前图片的视频图片序列作为输入视频信号(405)并在经编码视频位流(495)中产生经编码数据作为输出。
[0073]编码器(400)是基于块的并使用取决于实现的块格式。块还可在不同的阶段上被进一步细分,例如在预测、频率变换和/或熵编码阶段。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块以用于编码和解码。在针对H.265/HEVC标准的编码的实现中,编码器将图片分割成CTU(CTB)、CU(CB)、HJ(PB)和TU(TB)。
[0074]编码器(400)使用图片内编码和/或图片间编码来压缩图片。编码器(400)的许多组件被用于图片内编码和图片间编码两者。由这些组件执行的确切操作可取决于所压缩的信息的类型而变化。
[0075]小块化模块(410)可选地将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(410)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。在H.265/HEVC实现中,编码器(400)将图片分割成一个或多个片,其中每个片包括一个或多个片段。
[0076]通用编码控件(420)接收输入视频信号(405)的图片以及来自编码器(400)的各个模块的反馈(未示出)。整体上,通用编码控件(420)将控制信号(未示出)提供给其它模块(例如小块化模块(410)、变换器/缩放器/量化器(430)、缩放器/逆变换器(435)、图片内估计器(440)、运动估计器(450)、滤波控件(460)以及帧内/帧间切换)以设置和改变编码期间的编码参数。例如,在编码期间,通用编码控件(420)可管理关于散列表创建、MV精度、以及要将哪些参考图片保留在RPS中的判定。通用编码控件(420)还可以估计编码期间的中间结果,例如执行速率-失真分析来评估。通用编码控件(420)产生指示在编码期间所做出的决定的通用控制数据(422),使得对应的解码器可以作出一致的决定。通用控制数据(422)被提供给头部格式化器/熵编码器(490)。
[0077]如果使用图片间预测来预测当前的图片,运动估计器(450)相对于一个或多个参考图片估计输入视频信号(405)的当前图片的采样值的块的运动。经解码的图片缓冲器(470)缓冲一个或多个经重构的先前编码的图片以供用作参考图片。当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。
[0078]与通用编码控件(420)和块散列字典(451)—起工作,运动估计器(450)可使用本文中描述的方法来选择MV精度(例如,整数样本MV精度、I/2样本MV精度或1/4样本MV精度),随后在运动估计期间使用所选的MV精度。对于运动估计期间的基于散列的块匹配,运动估计器(450)可使用块散列字典(451)来寻找当前块的MV值。块散列字典(451)是为基于散列的块匹配组织候选块的数据结构。块散列字典(451)是散列表的示例。在图4b中,块散列字典(451)是基于输入样本值来构建的。替换地,块散列字典可基于重构的样本值来构建并在编码器期间被更新,以存储关于新的候选块(如变得可用于供在基于散列的块匹配时使用的那些候选块)的信息。
[0079]运动估计器(450)产生诸如MV数据、合并模式索引值和参考图片选择数据之类的辅助信息运动数据(452)以及所选的MV精度。这些被提供给头部格式化器/熵编码器(490)以及运动补偿器(455)。
[0080]运动补偿器(455)将MV应用于来自DPB(470)的(诸)经重构的参考图片。运动补偿器(455)产生针对当前图片的经运动补偿的预测。
[0081]在编码器(400)内的分开的路径中,图片内估计器(440)确定如何执行对输入视频信号(405)的当前图片的样本值块的图片内预测。当前图片可全部或部分使用图片内编码来编码。对于空间内预测,使用当前图片的重构(438)的值,图片内估计器(440)确定如何从当前图片的邻近的、先前重构的样本值中空间地预测当前图片的当前块的样本值。图片内估计器(440)可确定要对当前块使用的空间预测的方向。
[0082]或者,对于使用BV/MV值的帧内BC预测,图片内估计器(440)或运动估计器(450)估计当前块的样本值相对于作为参考图片的当前图片内的不同候选参考区域的位移。对于基于散列的块匹配,图片内估计器(440)或运动估计器(450)可使用块散列字典(未示出)来寻找当前块的BV/MV值。或者,对于图片内字典编码模式,块中的像素是使用存储在字典或其他位置的先前的样本值来编码的,其中一像素是各共置样本值的集合(例如,RGB三元组或YUV三元组)。
[0083]图片内估计器(440)产生诸如模式信息、(针对帧内空间预测的)预测模式方向和(针对字典模式的)偏移和长度等作为辅助信息帧内预测数据(442)。图片内预测数据(442)被提供给头部格式化器/熵编码器(490)以及图片内预测器(445)。
[0084]根据图片内预测数据(442),图片内预测器(445)从当前图片的邻近的先前重构的采样值中在空间上预测当前图片的当前块的采样值。或者,对于帧内BC预测,图片内预测器(445)或运动补偿器(455)使用图片内预测参考区域的先前重构的样本值来预测当前块的样本值,图片内预测参考区域由针对当前块的BV/MC值指示。或者,对于图片内字典模式,图片内预测器(445)使用偏移和长度重构各像素。
[0085]帧内/帧间切换选择对给定块的预测(458)将是经运动补偿的预测还是图片内预测。
[0086]对于非跳跃模式块,预测(458)的块和输入视频信号(405)的原始当前图片的对应部分之间的差异(如果有的话)提供残留值(418)的值。在当前图片的重构期间,对于非跳跃模式块,经重构的残留值与预测(458)组合来从视频信号(405)中产生对原始内容的近似或精确的重构(438)。(在有损压缩中,一些信息从视频信号(405)中丢失。)
[0087]在变换器/缩放器/量化器(430)中,频率变换器将空间域视频信息转换为频域(SP频谱、变换)数据。对于基于块的视频编码,频率变换器将离散余弦变换(“DCT”)、其整数近似、或其它类型的前向块变换(例如离散正弦变换或其整数近似)应用于预测残留数据的块(如果预测(458)为空则应用于采样值数据),产生频率变换系数的块。变换器/缩放器/量化器(430)可以应用具有可变块尺寸的变换。在一些情况下,编码器(400)还可跳过变换步骤。
[0088]缩放器/量化器对变换系数进行缩放和量化。例如,量化器将以逐图片基础、逐小块基础、逐片基础、逐块基础、频率专用基础或其它基础来变化的量化步进尺寸将死区标量量化应用于频域数据。经量化的变换系数数据(432)被提供给头部格式化器/熵编码器(490) ο
[0089]在缩放器/逆变换器(435)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。当变换阶段没有被跳过时,逆频率变换器执行逆频率变换,生成经重构的预测残留值或采样值的块。对于非跳跃模式块,编码器(400)将经重构的残留值与预测(458)的值(例如,经运动补偿的预测值、图片内预测值)组合以形成重构(438)。对于跳跃模式块或字典模式块,编码器(400)使用预测(458)的值作为重构(438)。
[0090]对于空间图片内预测,重构(438)的值可以被馈送回图片内估计器(440)和图片内预测器(445)。对于帧内BC预测,重构(438)的值可被类似地馈送回以提供经重构的样本值。同样,重构(438)的值可以被用于对后续图片的经运动补偿的预测。
[0091]重构(438)的值可被进一步滤波。对于视频信号(405)的给定图片,滤波控件(460)确定如何对重构(4 3 8)的值执行去块滤波和S A O滤波。滤波控件(4 6 O)生成滤波控制数据(462),它被提供给头部格式化器/熵编码器(490)和合并器/(诸)滤波器(465)。
[0092]在合并器/(诸)滤波器(465)中,编码器(400)将来自不同小块的内容合并到图片的经重构版本中。编码器(400)根据滤波器控制数据(462)选择性地执行去块滤波。替换地或另外地,可应用其它滤波(例如去振铃滤波或ALF)。取决于编码器(400)的设置,小块边界可以被选择性地滤波或根本不被滤波,并且编码器(400)可以在经编码的位流内提供指示是否应用这样的滤波的句法。
[0093]DPB(470)缓冲经重构的当前图片以供在后续的经运动补偿的预测中使用。具体地,RPS中的参考图片可被缓冲在DPB(470)中。然而,Dro(470)具有有限的存储器空间。如果将经重构的当前图片保留在DPB(470)中以供用作参考图片,则可将另一图片从DPB(470)中移除(并将其从RPS中丢弃)。通用编码控件(420)决定要将哪些图片保留在RPS中并缓冲在DPB(470)中。使用块散列字典(451),通用编码控件(420)可作出关于要将哪些参考图片保留在RPS中的决定,如以下所解释的。
[0094]头部格式化器/熵编码器(490)对通用控制数据(422)、经量化的变换系数数据(432)、图片内预测数据(442)、运动数据(452)以及滤波器控制数据(462)进行格式化和/或熵编码。对于运动数据(452),头部格式化器/熵编码器(490)可以选择并熵编码合并模式索引值,或可使用默认的MV预测器。在一些情况中,头部格式化器/熵编码器(490)还确定针对MV值(相对于MV预测值)的MV差分,随后例如使用上下文自适应二进制算术编码对MV差分进行熵编码。
[0095]头部格式化器/熵编码器(490)在经编码的视频位流(495)中提供经编码数据。经编码的视频比特流的格式(495)可以是H.265/HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG_2或MPEG-4)、Η.26x格式(例如,H.261、Η.262、Η.263或
H.264)或其它格式的变型或扩展。
[0096]取决于期望的实现和压缩类型,编码器(400)的模块可被添加、省略、分成多个模块、与其它模块组合、和/或用相似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的编码器执行一个或多个所描述的技术。编码器的具体实施例通常使用编码器(400)的变型或补充版本。所示的编码器(400)内的各模块之间的关系指示了信息在编码器中的一般流动;为简明起见,未示出其它关系。
[0097]V.视频的类型。
[0098]本文中描述的用于创建散列表、选择MV精度和确定场景改变的方法可在编码任何类型的视频时应用。然而,具体地,这些方法可在对某个人工创建的视频内容(诸如屏幕捕捉内容)进行编码时改善性能。
[0099]—般来说,屏幕捕捉视频表示计算机屏幕或其他显示器的输出。图5示出具有可为屏幕捕捉提供输入的内容的计算机桌面环境(510)。例如,屏幕捕捉内容的视频可表示整个计算机桌面(511)的一系列图像。或者,屏幕捕捉内容的视频可表示针对计算机桌面环境的窗口之一的一系列图像,窗口为诸如包括游戏内容的应用窗口(513)、具有网页内容的浏览器窗口(512)或具有文字处理器内容的窗口(514)。
[0100]作为计算机生成的、人工创建的视频内容,屏幕捕捉内容往往具有与使用摄像机捕捉的自然视频内容相比相对较少的离散样本值。例如,屏幕捕捉内容的区域通常包括单个均匀色彩,而自然视频内容中的区域更可能包括逐渐变化的色彩。同样,屏幕捕捉内容通常包括不同的结构(例如,图形、文本字符),这些不同的结构精确地逐帧重复,即使该内容可能在空间上被移位(例如,由于滚动)。屏幕捕捉内容通常是用具有高色度采样分辨率的格式(例如YUV4:4:4或RGB 4:4:4)来编码的,但是它也可以用具有较低色度采样分辨率的格式(例如YUV 4:2:0,YUV 4:2:2)来编码。
[0101 ]图6示出包括自然视频内容(621)和人工创建的视频内容的复合视频(620)。人工创建的视频内容包括自然视频内容(621)旁边的图形(622)以及在自然视频内容(621)下面运行的贴标(623)。与图5中示出的屏幕捕捉内容类似,图6中示出的人工创建的视频内容往往具有相对较少的离散样本值。它往往还具有精确地逐帧重复或逐帧逐渐偏移(例如,由于滚动)的不同的结构(例如,图形、文本字符)。
[0102]V1.基于散列的块匹配的示例。
[0103]在本文中描述的各创新中,视频编码器当在编码期间作出关于参数的决定时使用基于散列的块匹配的结果。本章节描述基于散列的块匹配的各示例。
[0104]基于散列的块匹配。
[0105]在编码器使用基于散列的块匹配时,该编码器为一个或多个参考图片的多个候选块中的每一者确定散列值。散列表存储这些候选块的散列值。编码器还通过相同散列方法来确定当前块的散列值,并接着搜索散列表寻找匹配散列值。如果两个块相同,它们的散列值相同。使用散列值,编码器可快速且高效地标识具有与当前块相同的散列值的候选块,并过滤出具有不同散列值的候选块。取决于实现和基于散列的块匹配的目标,编码器可随后进一步评估与当前块具有相同散列值的那些候选块。(不同块可具有相同的散列值。因此,编码器可进一步在具有相同散列值的各候选块之中标识出匹配当前块的候选块。)
[0106]在一些示例实现中,针对候选块的散列值是从针对包括候选块的图片(参考图片)的输入样本值中确定的。在基于散列的块匹配期间,编码器使用输入的样本值为当前块确定块散列值。编码器将其(或以其他方式使用散列值)与从候选块的输入的样本值中确定的散列值进行比较。即便如此,来自匹配块的经重构的样本值被用于代表当前块。因此,预测操作仍使用经重构的样本值。
[0107]替换地,在基于散列的块匹配中考虑的候选块包括经重构的样本值。即,候选块是图片中先前编码接着重构内容的部分。候选块的散列值从重构的样本值中确定。在基于散列的块匹配期间,编码器使用输入的样本值为当前块确定块散列值。编码器将其(或以其他方式使用散列值)与从候选块的重构的样本值中确定的散列值进行比较。
[0108]图7示出了在基于散列的块匹配中用于候选块B(x,y)的散列值(700),其中X和y分别指示给定候选块的左上位置的水平和垂直坐标。候选块具有使用散列函数h()确定的散列值。对于参考图片中的候选块B(x,y),编码器从针对参考图片的输入样本值中确定针对该候选块的散列值h(B)。编码器可为参考图片中的所有候选块确定散列值。或者,编码器可筛选出一些候选块。
[0109]一般而言,散列函数h()得到η个可能散列值,指定为ho到hy。对于给定散列值,具有那个散列值的候选块聚成组。例如,在图7中,候选块8(1266,263)、8(1357,365)、8(1429,401),B(502,464)…具有散列值ho。各组可包括不同数量的候选块。例如,在图7中,散列值h4的组包括单个候选块,而散列值ho的组包括4个以上候选块。
[0110]以此方式,可能的候选块被分发到η个分类。例如,如果散列函数h()产生12比特散列值,则候选块被拆分成212 = 4,096个类别。每散列值的候选块数可通过消除具有那个散列值的冗余的、相同的块或者通过筛选出具有某些样本值图案的候选块被进一步降低。同样,编码器可使用不同的散列函数迭代地过滤减少候选块的数量。
[0111]用于基于散列的块匹配的散列函数取决于实现。散列函数可产生具有8比特、12比特、16比特、24比特、32比特或其它数量的比特的散列值。如果散列值具有更少比特,则数据结构包括更少类别,但是每个类别可包括更多候选块。换言之,使用具有更多比特的散列值有助于增加组织候选块的数据结构的尺寸。如果散列值具有更多比特,则数据结构包括更多类别,但是每个类别可包括更少候选块。散列函数h()可以是密码散列函数、密码散列函数的一部分、循环冗余校验(“CRC”)函数、CRC的一部分、或另一散列函数(例如,使用求平均和XOR操作来确定候选块或当前块的签名)。某些类型的散列函数(例如,CRC函数)将类似块映射到不同散列值,其在搜索精确对应于当前块的匹配块时可能是高效的。其他类型的散列函数(例如,位置敏感的散列函数)将相似的块映射到相同的散列值。
[0112]在基于散列的块匹配期间,使用散列函数h(),编码器为当前块B当前确定散列值。在图7中,散列值h(B当前)是h3。使用当前块的散列值,编码器可标识具有相同散列值的候选块(图7中的轮廓框所示),并过滤出其它候选块。当散列函数将类似块映射到不同散列值时,被标识的候选块(与当前块相同的散列值)包括可能与当前块相同的块。当散列函数将类似块映射到相同散列值时,被标识的候选块(与当前块相同的散列值)包括可能与当前块相同的或可能非常接近当前块的块。不管怎样,从这些标识出的候选块中,编码器还可(例如,使用逐样本的块匹配操作、使用第二散列函数)标识出当前块的匹配块。
[0113]总体地,由于散列值比较与逐样本的块匹配相比要简单得多,因此基于散列的块匹配可使得评估(诸)参考图片中的候选块的过程变得高效得多。同样,在编码期间,候选块的散列值可在针对图片内的不同块的基于散列的块匹配中重新使用。在该情况下,计算针对这些候选块的散列值的成本可跨针对整个图片、针对使用相同的参考图片的其他图片以及针对使用这些散列值的其他编码器侧决定的基于散列的块匹配操作被分摊。
[0114]B.用于基于散列的块匹配的数据结构。
[0115]在某些示例实现中,编码器使用根据它们的散列值组织候选块的数据结构。数据结构可帮助使得基于散列的块匹配更加计算高效。数据结构实现,例如,如在此描述的块散列字典或散列表。
[0116]图8a示出为基于散列的块匹配组织候选块的示例数据结构(800)。对于散列函数h(),11个可能散列值为ho到hn-1。具有相同散列值的候选块在同一候选块列表中分类。给定候选块列表可包括零个或更多条目。例如,散列值112的候选块列表没有条目,散列值h6的列表具有两个条目,以及散列值hi的列表具有四个以上的条目。
[0117]条目(hhk)包括具有散列值In的第k个候选块的信息。如图Sb所示,候选块列表中的条目可包括块B(x,y)的地址(例如,该块的左上角位置的水平和垂直坐标)。或者,如图Sc中所示,候选块列表中的条目可包括块B(x,y)的地址以及来自第二散列函数的散列值,其可用于进行迭代的基于散列的块匹配。
[0118]在针对当前块的基于散列的块匹配期间,编码器确定当前块的散列值h(B当前)。编码器保留具有相同散列值的候选块列表并排除其它η-1个列表。为选择匹配块,编码器可将当前块与保留的候选块列表中的候选块(如果有)进行比较。因此,通过使用散列值h(Bi*)的简单的查找操作,编码器可消除候选块的(n-l)/n(平均),并聚焦于保留的列表中余下的I/η候选块(平均),显著减少了样本级块匹配操作的数量。
[0119]不同的数据结构可被用于不同的参考图片。替换地,数据结构中针对候选块的条目存储指示包括该候选块的参考图片的信息,该信息可在基于散列的块匹配中被使用。
[0120]同样,不同的数据结构可被用于不同尺寸的块。例如,一个数据结构包括8X8个候选块的散列值、第二数据结构包括16 X 16个候选块的散列值、第三数据结构包括32 X 32个候选块的散列值,以此类推。在基于散列的块匹配期间使用的数据结构取决于当前块的尺寸。可替换地,单个、统一的数据结构可被用于不同尺寸的块。散列函数可产生一个η比特散列值,其中η比特散列值的m比特根据一个m比特散列函数指示给定块尺寸的可能的块中的散列值,而余下的η比特散列值的n-m比特指示给定块尺寸。例如,14比特散列函数的前两个比特可指示块尺寸,而余下的12比特根据12比特的散列函数指示散列值。或者,散列函数可产生m比特散列值而不考虑块尺寸,且数据结构中的候选块的条目存储指示候选块的块尺寸的信息,其可被用于基于散列的块匹配中。
[0121]对于高分辨率图片,数据结构可存储代表很大数量的候选块的信息。为了减少用于数据结构的存储器的量,编码器可去除冗余值。例如,编码器可跳过将相同的块添加到该数据结构。一般而言,通过去除相同块来减少数据结构的尺寸可伤及编码效率。因此,通过决定是否去除相同块,编码器可折衷数据结构的存储器尺寸和编码效率。编码器还可取决于这些块的内容来筛选出候选块。
[0122]C.迭代的基于散列的块匹配。
[0123]当编码器使用具有η个可能散列值的单个散列函数时,该编码器可基于当前块的散列值来排除候选块的η-1个列表,但编码器可能还需要针对余下的候选块(如果有)执行样本级块匹配操作以查找具有匹配散列值的列表。同样,当更新组织候选块的数据结构时,编码器可能需要执行样本级块匹配操作来标识相同的块。总体而言,这些样本级块匹配操作可以是计算密集的。
[0124]因此,在某些示例实现中,编码器使用迭代的基于散列的块匹配。迭代的基于散列的块匹配可加速块匹配过程,并且还可以加速更新组织候选块的数据结构的过程。
[0125]迭代的基于散列的块匹配使用以不同散列函数确定的多个散列值。对于块B(当前块或候选块),除了散列值h(B),编码器使用不同散列函数h’O确定另一个散列值h’(B)。使用当前块的第一散列值h(B3ti),编码器为第一散列函数hO标识具有相同散列值的候选块。为进一步排除这些被标识的候选块的一些,编码器使用当前块的使用不同散列函数确定的第二散列值h’(B当前)。编码器将第二散列值h’(B当前)与先前标识的候选块的第二散列值(其具有相同第一散列值)进行比较,以过滤出更多候选块。散列表根据不同散列函数跟踪候选块的散列值。
[0126]在图8a的示例中,如果h(B当前)=h3,那么编码器选择具有条目(3,0)、条目(3,1)、条目(3,2)、条目(3,3),…的候选块用于进一步细化。如图Sc中所示,对于候选块B,条目包括块地址和来自散列函数h’O的第二散列值h’(B)。编码器将当前块的第二散列值h’(Bgti)与具有条目(3,0)、条目(3,1)、条目(3,2)、条目(3,3)^_的各候选块的第二散列值1!’(8)进行比较。基于第二散列值比较的结果,编码器可排除更多候选块,留下具有分别匹配h(B3ti)和h’(B当前)的第一和第二散列值的候选块(如果有)。编码器可在任何余下的候选块上执行样本级块匹配以选择匹配块。
[0127]图9a_9c示出使用不同数据结构的迭代的基于散列的块匹配的另一示例。图9a中的数据结构(900)依据来自第一散列函数h()(其具有nl个可能散列值)的第一散列值来组织候选块。数据结构(900)包括从ho…hnl-j^散列值的列表。在该示例中,编码器为当前块确定第一散列值h(Bgit)=h2,并从结构(900)选择h2的列表。
[0128]如图9b所示,h2的列表(910)包括进一步依据来自第二散列函数h’()(其可能具有n2个可能散列值)的第二散列值来组织余下的候选块的多个列表。列表(910)包括从h’0...h ’ n2-l的散列值的列表,每个列表包括具有块地址的条目(例如,各候选块的左上角位置的水平和垂直坐标),如图9c中的条目(920)所示。在该示例中,编码器为当前块确定第二散列值h’(Bgti) =h’Q,并从列表(910)选择h’o的列表。对于h’o的列表中的候选块,编码器可执行样本级块匹配以选择匹配块。在此示例中,第二散列值的列表对于第一散列值的给定列表是专用的。替换地,有针对第二散列值的一组列表,且编码器标识(I)在第一散列值的匹配列表中的且还(2)在第二散列值的匹配列表中的任何候选块。
[0129]除了基于散列的块匹配之外,第二散列函数h’()可被用于简化更新组织候选块的数据结构的过程。例如,当编码器检查新候选块是否与已经表示在数据结构中的候选块相同时,编码器可使用具有不同散列函数的多个散列值来过滤出不相同的块。对于余下的候选块,编码器可执行样本级块匹配以标识任何相同块。
[0130]在前面的示例中,迭代基于散列的块匹配以及更新使用两个不同散列函数。替换地,编码器使用三个、四个或更多个散列函数以进一步加速基于散列的块匹配或过滤出不相同的块,并且因此减少样本级块匹配操作的数量。同样,对于低复杂度的编码器或对于较快的决定作出过程,在散列值匹配时,编码器可跳过逐样本的块匹配操作。对于具有大量可能散列值的散列函数,如果两个块的散列值匹配,则存在很高的可能性这两个块是相同的。具体地,在以下描述的编码器侧决定的一些示例实现中,编码器将散列值是否匹配作为基于散列的块匹配的结果来考虑,但不执行任何逐样本的块匹配操作。
[0131]VI1.管理散列表尺寸
[0132]本章节呈现在基于散列的块匹配时使用的管理散列表的尺寸的各种方法。在一些解决方案中,散列表的尺寸通过筛选出(忽略)具有某些模式的样本值的候选块(例如,通过筛选出均质(homogeneous)块)来降低。在特定实现中,对于多个候选块中(例如,在参考图片中)的每一候选块,编码器评估候选块是否满足复杂度准则。如果是,那么编码器确定候选块的块散列值并向散列表添加该块散列值。可使用初始样本值或经重构的样本值来计算块散列值。如果候选块不满足复杂度准则,那么编码器不为候选块确定块散列值。例如,如果(a)给定候选块的至少一行具有非均匀样本值和/或(b)给定候选块的至少一列具有非均匀样本值,则该给定候选块可满足复杂度准则。对于该准则,编码器可筛选出均匀块(均质块)、具有均匀样本值行的块(水平均质块)和具有均匀样本值列的块(垂直均质块)。更一般地,在评估给定候选块是否满足复杂度准则时,编码器可为该候选块计算复杂度度量并将该复杂度度量与阈值比较。
[0133]图1Oa-1Oc示出编码器可在散列表构造期间在候选块的块散列值被添加到散列表之前可筛选出的候选块图案。图1Oa示出了具有均匀样本值的块(1000)。图1Ob示出其行各自具有均匀样本值的块(水平均质块)(1010),但是这些值可从行到行不一样。图10c示出了其列各自具有均匀样本值的块(垂直均质块)(1020),但是这些值可从列到列不一样。例如,为了标识出这些候选块图案,编码器可检查候选块的每行或每列是否都具有均匀样本值。
[0134]然而,将均质块(例如,所有均质块)排除作为散列表中的候选在某些情况下可负面地影响基于散列的匹配的益处。例如,一些编码算法在准确匹配被发现时更高效地操作(例如,通过一旦散列匹配被发现就终止匹配过程)。此外,将均质块排除作为候选可降低准确匹配的可能性。因此,编码效率的改善可通过保留散列表中的至少一些均质块来实现。
[0135]在本章节中呈现的方法中,散列表尺寸被管理使得一些均质块被包括在散列表中(例如,作为结果,这可改善找到散列匹配和/或准确匹配的机会,并改善编码效率),同时其他均质块仍被排除。例如,仅包括一些均质块(例如,仅给定图片中相对较小比例的均质块)仍可提供改善的编码效率的益处,同时还保留较小散列表的益处。
[0136]在一些实现中,仅满足均质选择准则的均质块被包括在散列表中。均质选择准则可包括检查给定均质块的坐标是否与图片的特定划分对准。例如,参考图片可被划分成具有特定水平和垂直间隔的网格(例如,16乘16像素网格、16乘8像素网格等)。如果均质块与该网格对准(例如,如果块的起始像素坐标被水平和/或垂直对准),则该均质块可被选择为匹配该准则。换言之,考虑从坐标(x,y)开始的具有宽乘高(W X H)的维度的块。均质选择准则可被定义为:
[0137]x%M= =0&&y % N= =0
[0138]其中M和N是预先定义的数字(例如,相同的数字或不同的数字)。陈述选择准则的另一方式为:
[0139]χ&(Μ-1) = =0&&Υ&(Ν-1) = =0
[0140]其中,M和N两者都是2的幂。在一些实现中,M和N两者都为16。例如,如果均质块在坐标32,32处,则在使用M= 16且N= 16值时该均质块会被选择(在O,O和32,O和64,O和O,32和0,64等处的块也会被选择),而在坐标35,32处的均质块不会被选择。在一些实现中,M被设为块的宽度(W),并且N被设为块的高度(H)。
[0141]图11是用于在散列表构造期间选择特定均质块的技术(1100)。图像编码器或视频编码器(诸如参考图3或图4a-4b描述的编码器)可执行技术(1100)。
[0142]编码器得到(1110)下一个候选块并评估(1120)候选块是否满足复杂度准则。例如,在一些示例实现中,如果(a)给定候选块的至少一行具有非均匀样本值和/或(b)给定候选块的至少一列具有非均匀样本值,则复杂度准则被满足,并且如果(a)块具有均匀样本值行(水平均质块)和/或块具有均匀样本值列(垂直均质块),则复杂度准则不被满足。或者,更一般地,编码器可计算候选块的复杂度度量,接着将复杂度度量与阈值进行比较。例如,复杂度度量是在频率变换之后(例如,DCT)候选块在非零水平位置和/或非零垂直位置的非零AC系数的计数,且阈值为零。如果在候选块的AC系数的顶行和AC系数的左列之外存在任何非零AC系数,则复杂度准则被满足。替换地,编码器考虑另一复杂度度量。复杂度准则可至少部分通过比较候选块的各部分(例如行、列、子块)的散列值来被评估。
[0143]如果候选块满足复杂度准则,则编码器确定(1130)候选块的块散列值并向散列表添加(1140)该块散列值。可使用任何散列方法确定块散列值。
[0144]如果候选块不满足复杂度准则(例如,如果该候选块是水平均质和/或垂直均质的),则该候选块被检查以确定(1160)其是否满足均质选择准则。如果候选块满足均质选择准则,则编码器确定(1130)候选块的块散列值并向散列表添加(1140)该块散列值。可使用任何散列方法确定块散列值。否则(如果候选块不满足均质选择准则),则不向散列表添加候选块的块散列值。
[0145]在一些实现中,在候选块的X和y起始坐标中的至少一者(例如,左上像素坐标)可被预定值整除时,该候选块满足均质选择准则。例如,如果预定值为16,则为O、16、32、48等的X坐标值将满足该准则。针对X和y坐标的预定值可不同。在一些实现中,针对X坐标的预定值被设为候选块的宽度,并且针对y坐标的预定值被设为候选块的高度。
[0146]编码器确定(1150)是否继续下一候选块。如果是,编码器通过得到(1110)下一个候选块并评估(1120)该下一个候选块是否满足复杂度准则来继续。通过这种方式,编码器可选择性地确定多个候选块(例如,诸如参考图片之类的图片的候选块)的块散列值,这取决于相应的候选块是否满足复杂度准则和均质选择准则。
[0147]VII 1.MV分辨率的确定。
[0148]本章节呈现取决于基于散列的块匹配的结果(例如,匹配散列值)来在编码期间自适应确定运动矢量(“MT )分辨率的各方法。通过在编码期间为MV分辨率选择合适的MV精度值,这些方法可促成在编码和解码的速率一失真性能和/或计算效率方面有效的压缩。MV精度可针对图片、块、片等确定。
[0149]不同的MV精度。
[0150]在对人工创建的视频内容进行编码时,MV值通常表示整数样本空间位移(整数MV精度),并且非常少的MV值表示分数样本空间位移(分数MV精度)。这为(例如,同时为整个图片或为图片的一部分)高效地确定MV精度以改善总体性能提供了机会。
[0151]图12a示出利用具有整数样本空间位移的MV(1220)的运动补偿。MV(1220)指示相对于参考图片中当前块的共置位置(1210)向左四个样本并向上一个样本的空间位移。例如,对于在当前图片中的位置(64、96)处的4x4当前块,MV(1220)指示其位置为参考图片中的(60,95)的4x4预测区域(1230)。预测区域(1230)包括在参考图片中的整数样本位置处的经重构的样本值。编码器或解码器不需要执行插值来确定预测区域(1230)的值。
[0152]图12b示出利用具有分数样本空间位移的MV(1221)的运动补偿。MV(1221)指示相对于参考图片中当前块的共置位置(1210)向左3.75个样本且向上0.5个样本的空间位移。例如,对于在当前图片中的位置(64、96)处的4x4当前块,MV(1221)指示其位置为参考图片中的(60.25,95.5)的4x4预测区域(1231)。预测区域(1231)包括在参考图片中的分数样本位置处的经插值的样本值。编码器或解码器执行插值来确定预测区域(1231)的样本值。当分数样本空间位移被允许时,存在可匹配当前块的更多的候选预测区域,并且由此至少对于一些类型的视频内容(例如,自然视频内容)来说运动补偿的预测的质量通常改善了。
[0153]B.MV值的表示。
[0154]MV值通常是使用其含义取决于MV精度的整数值来表示的。对于整数样本MV精度,例如,整数值I指示I个样本的空间位移,整数值2指示2个样本的空间位移并以此类推。对于1/4样本MV精度,整数值I指示0.25个样本的空间位移。整数值2、3、4和5分别指示0.5、0.75、1.0和1.25个样本的空间位移。不管MV精度为何,整数值均可指示空间位移的幅度,并且分开的标志值可指示该位移是负的还是正的。给定MV值的水平MV分量和垂直MV分量可使用两个整数值来表示。由此,表示MV值的两个整数值的含义取决于MV精度。例如,对于具有2样本水平位移和没有垂直位移的MV值,如果MV精度为1/4样本MV精度,则MV值被表示为(8,O)。然而,如果MV精度为整数样本MV精度,则该MV值被表示为(2,O)。
[0155]经编码的视频数据的比特流中的MV值通常(例如,在逐MV分量的基础上)被熵编码JV值还可(例如,在逐MV分量的基础上)相对于预测的MV值被差分编码。在许多情况下,MV值等于预测的MV值,使得差分MV值为零,其可被非常高效地编码。可使用指数-Golomb编码、上下文自适应二进制算法编码或另一形式的熵编码来对差分MV值(或者在MV预测没有被使用的情况下,为MV值)进行熵编码。虽然MV值(或差分MV值)和经编码的比特之间的确切关系取决于所使用的熵编码的形式,但一般来说,较小的值被较高效地编码(即,使用较少的比特),因为它们较常见,而较大的值被较不高效地编码(即,使用较多的比特),因为它们较不常见。
[0156]C.自适应MV精度一介绍。
[0157]为了概述前面的两个章节,使用具有整数样本MV精度的MV值往往会降低与信号化MV值相关联的比特率,并降低进行编码和解码的计算复杂度(通过避免对在参考图片中的分数样本位置处的样本值进行插值),但至少对于一些类型的视频内容而言可降低运动补偿的预测的质量。另一方面,使用具有分数样本MV精度的MV值往往会增加与信号化MV值相关联的比特率,并增加进行编码和解码的计算复杂度(通过包括对在参考图片中的分数样本位置处的样本值进行插值),但至少对于一些类型的视频内容而言可改善运动补偿的预测的质量。一般来说,计算复杂度、用于信号化MV值的比特率以及运动补偿的预测的质量随着MV精度的增加(例如,从整数样本到1/2样本、或者从1/2样本到1/4样本)而增加,直到收益递减。
[0158]在对人工创建的视频内容进行编码时,分数样本MV精度(在比特率和计算复杂度方面)的增加的成本可能被证明是不正确的。例如,如果大多数MV值表示整数样本空间位移,且非常少的MV值表示分数样本空间位移,则分数样本MV精度的增加的成本是不值得的。编码器可在运动估计期间跳过在分数样本位置处进行搜索(以及用于确定这些位置处的样本值的插值操作)。对于这样的内容,可通过使用具有整数样本MV精度的MV值来降低比特率和计算复杂性,而没有对运动补偿的预测的质量的显著惩罚。
[0159]由于分数样本MV精度仍可对其他类型的视频内容(例如,通过相机捕捉的自然视频)有用,因此编码器和解码器可被适配成在各MV精度之间进行切换。例如,编码器和解码器可将整数样本MV精度用于人工创建的视频内容,但将分数样本MV精度(诸如,1/4样本MV精度)用于自然视频内容。在下一章节中描述了编码器在选择MV精度时可遵循的方法。编码器可使用比特流中的一个或多个句法元素来向解码器信号化所选的MV精度。
[0160]在用于信号化MV精度的一个方法中,在对MV精度的自适应选择被启用时,编码器在逐片的基础上选择MV精度。序列参数集合(“SPS”)、图片参数集合(“PPS”)或其他句法结构中的标志值指示对MV精度的自适应选择是否被启用。如果如此,则给定片的片头部中的一个或多个句法元素指示为那个片中的各块所选择的MV精度。例如,标志值O指示1/4样本MV精度,且标志值I指示整数样本MV精度。
[0161]在用于信号化MV精度的另一方法中,编码器在逐图片的基础上或在逐片的基础上选择MV精度。PPS中的句法元素指示以下三个MV精度模式之一:(O)针对与PPS相关联的图片的(诸)片的MV值的I /4样本MV精度,⑴针对与PPS相关联的图片的(诸)片的MV值的整数样本MV精度,或(2)取决于每个片头部被信号化的标志值的片自适应MV精度,其中该片头部中的标志值可为该片的MV值指示1/4样本MV精度或整数样本MV精度。
[0162]在用于信号化MV精度的又一方法中,在对MV精度的自适应选择被启用时,编码器在逐CU的基础上选择MV精度。给定CU的结构中的一个或多个句法元素指示为那个CU中的各块所选择的MV精度。例如,CU的CU句法结构中的标志值指示与该CU相关联的所有PU的MV值具有整数样本MV精度还是I /4样本MV精度。
[0163]在这些方法中的任一者中,编码器和解码器可针对水平和垂直MV分量使用不同的MV精度。在对已被水平地或垂直地缩放的人工创建的视频内容进行编码时,这可能是有用的(例如在未经缩放的维度中使用整数样本MV精度,并且在经缩放的维度中使用分数样本MV精度)。在一些示例实现中,如果比特率控制无法单独通过调整QP值来实现,则编码器可在水平上或垂直上重设视频的尺寸,以降低比特率,并随后对经重设尺寸的视频进行编码。在解码器侧,在进行解码之后将该视频缩放回到其原始大小。编码器可向解码器信号化各水平MV分量的MV精度并还信号化各垂直MV分量的MV精度。
[0164]更一般地,当对MV精度的自适应选择被启用时,编码器选择MV精度并按某种方式信号化所选的MV精度。例如,SPS、PPS或其他句法结构中的标志值可指示对MV精度的自适应选择是否被启用。当自适应MV精度被启用时,在序列层句法、GOP层句法、图片层句法、片层句法、小块层句法、块层句法或另一句法结构中的一个或多个句法元素可指示为MV值的水平和垂直分量选择的MV精度。或者,在序列层句法、GOP层句法、图片层句法、片头部层句法、片数据层句法、小块层句法、块层句法或另一句法结构中的一个或多个句法元素可指示针对不同MV分量的MV精度。当存在两个可用MV精度时,标志值可指示在这两个MV精度之间的选择。在存在更多可用MV精度的情况下,整数值可指示在这些MV精度之间的选择。
[0165]除了对信号化/解析指示(诸)所选的MV精度的句法元素的修改外,解码可被修改为取决于所选的MV精度而改变如何解释经信号化的MV值。MV值如何被编码和重构的细节可取决于MV精度而改变。例如,当MV精度为整数样本精度时,预测的MV值可被四舍五入到最接近的整数,并且差分MV值可指示整数样本偏移。或者,当MV精度为1/4样本精度时,预测的MV值可被四舍五入到最接近的1/4样本偏移,并且差分MV值可指示1/4样本偏移。或者,可按某一其他方式来信号化MV值。当MV值具有整数样本MV精度,且视频使用4: 2: 2或4: 2:0色度采样时,色度MV值可通过可导致针对色度的1/2样本移位的缩放等推导出。或者,色度MV值可被四舍五入成整数值。
[0166]替换地,编码器不改变如何预测MV值或者如何将MV差异信号化在比特流中,并且解码器也不改变如何预测MV值或者如何重构MV差异,但对经重构的MV值的解释却取决于所选的MV精度而改变。如果所选的MV精度是整数样本精度,则重构的MV值在(以四分之一样本精度操作的)运动补偿过程中被使用之前被缩放四分之一。如果所选的MV精度为四分之一样本精度,则重构的MV值在运动补偿过程中被使用之前不被缩放。
[0167]D.使用类别确定MV分辨率。
[0168]当MV分辨率在视频编码期间可被适配时,编码器选择针对视频单元的MV精度(例如,针对该单元的各MV值的一个或两个分量的MV精度)。编码器可取决于将块分类成多个类别的结果来选择要使用的MV精度,分类可包括一个或多个分类操作中的基于散列的块匹配(例如,匹配散列值)。对MV精度的选择还可取决于其他因素,诸如块作为均匀块(例如,水平和/或垂直均质块)的块的分类。这些方法可提供计算高效的方式来选择合适的MV精度。
[0169]用于选择MV精度的示例技术。
[0170]图13示出用于取决于基于块分类的结果来选择MV精度的通用技术(1300)。该技术(1300)可由编码器(诸如参考图3或图4a和4b描述的编码器)或由另一编码器来执行。
[0171]编码器对视频进行编码以产生经编码的数据,并随后在比特流中输出该经编码的数据。作为该编码的一部分,编码器将该视频的单元分割(1310)成多个块(例如,分割视频的图片、片或另一单元)。随后,对于每一个块,编码器将该块分类(1320)成多个类别之一。类别可包括使用均质分类准则的均质类别和/或使用基于散列的匹配分类准则的散列匹配类别。基于这些分类(例如,多个类别中的一者或多者中的块计数),编码器确定(1330)视频的单元的MV精度。例如,编码器可确定使用整数MV精度还是分数MV精度(例如,1/4样本MV精度)。
[0172]图14示出用于执行在选择MV精度时使用的块分类的技术(1400)。该技术(1400)可由编码器(诸如参考图3或图4a和4b描述的编码器)或由另一编码器来执行。技术(1400)可用于实现以上结合13讨论的块分类(1320)。
[0173]为了对块进行分类,技术(1400)首先将该块分配给所有块类别(1410)。将该块分配给所有块类别可通过使与所有块类别相关联的块计数递增I来执行。
[0174]技术(1400)接着确定该块是否匹配(1420)参考图片中的共置块(例如,匹配该块所使用的一个或多个参考图片中的至少一个参考图片中的块),以及如果如此,则将该块分配给共置匹配类别(1430)。将该块分配给共置匹配类别可通过使与共置匹配类别相关联的块计数递增I来执行。
[0175]如果该块不匹配参考图片中的共置块,则技术(1400)继续检查(1440)该块是否是均质块(例如,该块是否满足均质分类准则,如果该块为水平均质和/或垂直均质,则均质分类准则可被满足),并且如果如此,则将该块分配给均质类别(1450)。将该块分配给均质类别可通过使与均质类别相关联的块计数递增I来执行。
[0176]如果该块不是均质块,则技术(1400)继续检查(1460)该块是否满足基于散列的匹配分类准则(例如,该块的散列值是否在从一个或多个参考图片的候选块中生成的散列表中被发现),并且如果如此,则将该块分配给散列匹配类别(1470)。将该块分配给散列匹配类别可通过使与散列匹配类别相关联的块计数递增I来执行。
[0177]一旦该块已被分类,技术(1400)继续分类下一块(1480)(如果有任何剩余块的话)(例如,以便对视频的单元的所有块进行分类)。
[0178]技术(1400)可被执行以通过以下来将视频单元的多个块分类成多个类别:在块被分配给每一类别时,递增与该类别相关联的计数器。
[0179]在一些实现中,当前图片的块被分类。当前图片可被分割成各非重叠的宽度(W)乘高度(H)块。在一个实现中,W=H = 8。编码器可为当前图片中的所有块执行基于散列的块匹配。搜索范围可以是当前图片的一个(或多个)参考图片。在一个实现中,参考图片列表O中的第一参考图片被用于执行散列匹配。
[0180]在一些实现中,块是使用以下四个类别来分类的:第一类别称为“T”(例如,所有块类别)。所有块都被分配给“T”类别。
[0181]第二类别称为“C"(例如,共置匹配类别)。匹配参考图片中的共置块的块被分配给“C”类别。如果一个以上参考图片被使用,则在该块匹配这些参考图片中的至少一个参考图片中的共置块的情况下,该块被分配。
[0182]第三类别称为“S”(例如,均质或“平滑”类别)。尚未被分配给“C”类别并且为均质(例如,水平均质和/或垂直均质)的块被分配给“S”类别。
[0183]第四类别称为“M”(例如,散列匹配类别)。尚未被分配给“C”类别或“S”类别但具有在从一个或多个参考图片的候选块生成的散列表中发现的散列值的块被分配给“M”类别。
[0184]在使用“T”、“C”、“S”和“M”类别的各实现中,CSM率(例如,比率值)可被计算出,其为:
[0185]CSM率=(C+S+M)/T
[0186]CSM率指示图片(或其他视频单元)中“C”、“S”和“M”块的百分比。还可计算平均CSM率,该平均CSM率为当前图片的CSM率和数量“Ncsm”个先前编码图片的CSM率的平均值。还可计算为M率,其为MRate =M/T( “Μ”块的百分比)。平均M率是当前图片的M率和数量“Nm”个先前编码图片的M率的平均值。
[0187]使用以上描述的类别以及从“T”、“C”、“S”和“M”类别中计算出的值,以下规则中的一者或多者可被(单独地或组合地)应用来确定MV精度(例如,以决定使用整数MV精度还是分数MV精度,诸如I/4图素(peI)精度)。
[0188]规则I:如果CMS率大于阈值,则使用整数MV精度。否则,使用1/4图素精度。(如果当前图片的匹配率太慢,则使用分数精度MV ο)
[0189 ]规则2:如果平均CMS率大于阈值,则使用整数MV精度。否则,使用I /4图素精度。(如果滑动窗口中的图片的匹配率太慢,则使用分数精度MV。)
[0190]规则3:如果M率大于阈值,则使用整数MV精度。否则,使用1/4图素精度。(如果非共置、非平滑块的匹配率高于阈值,则使用整数精度MV。)
[0191]规则4:如果平均M率大于阈值,则使用整数MV精度。否则,使用1/4图素精度。(如果滑动窗口中的图片的非共置、非平滑块的平均匹配率高于阈值,则使用整数精度MV。)
[0192]规则5:如果c= = τ,则使用整数MV精度。否则,使用I /4图素精度。(如果当前图片中的所有块与参考图片中的共置块匹配(两个图片相同),则使用整数精度MV。在一些实现中,这对编码效率可能不具有显著的影响,但可有助于节省编码时间,因为在编码过程中使用整数精度MV可跳过一些对分数像素的操作,诸如对分数像素的运动估计。)
[0193]规则6:如果MXT-C-S)/比率I,则使用整数MV精度。否则,使用1/4图素精度。(如果匹配块在所有非共置、非平滑块中的百分比高于阈值,则使用整数精度MV。)
[0194]规则7:如果CSM率〉阈值I并且M率〉阈值2,则使用整数MV精度。否则,使用I/4图素精度。(如果CSM块的百分比大于阈值(在一些实现中,该阈值接近I以保证大多数块适合于使用整数精度MV)并且M块1的百分比大于阈值(例如,以保证还可找到对非共置、非平滑块的一些匹配),则使用整数精度MV。)
[0195]规则8:如果平均CSM率+平均M率〉阈值3,则使用整数MV精度。否则,使用1/4图素精度。(条件与以上类似,但考虑滑动窗口中的图片。)
[0196]在示例实现中,以下设置被应用。块尺寸为8x8。散列匹配仅对参考图片列表O中的第一参考图片执行。Ncsm和Nm两者都被设为31(包括当前图片,总共有32个图片)。在示例实现中,运动向量精度按以下次序决定(被满足的第一“如果(if)”条件设置MV精度,并且如果没有一个“如果”条件被满足,则“否则(otherwise)”条件将设置1/4图素精度):
[0197]如果CSM率〈0.8,则使用1/4图素精度。
[0198]如果T==C,则使用整数精度。
[0199]如果平均CSM率〈0.95,则使用1/4图素精度。
[0200]如果MXT-C-S)/3,则使用整数精度。
[0201 ] 如果CSM率>0.99&&M率>0.01,则使用整数精度。
[0202]如果平均CSM率+平均M率>1.01,,则使用整数精度。
[0203]否则,使用1/4图素精度。
[0204]在本章节中描述的技术中,编码器可在使用1/4样本MV精度和整数样本MV精度之间进行选择。更一般地,编码器在多个可用MV精度之间进行选择,多个可用MV精度可包括整数样本MV精度、1/2样本MV精度、1/4样本MV精度和/或另一 MV精度。所选的MV精度可适用于该视频单兀的各MV值的水平分量和/或垂直分量。
[0205]在本章节中描述的技术中,基于散列的块匹配使用从该单元的各输入样本值以及(对于候选块)针对一个或多个参考图片的输入样本值中确定的散列值。替换地,对于表示在散列表中的各候选块,基于散列的块匹配可使用从重构的样本值确定的散列值。
[0206]在本章节中描述的技术中,在确定针对视频单元的MV精度时,编码器还可考虑其他因素,诸如非匹配块是否包含大量的自然视频内容(相机捕捉的视频),如在下一章节中描述的。
[0207]替换和变型
[0208]当编码器逐图片地使用相同的小块模式时,编码器可逐图片地重复每小块的MV精度。逐图片位于共同位置的小块使用相同的MV精度。类似地,逐图片位于共同位置的片可使用相同的MV精度。例如,假设视频描绘计算机桌面,并且该桌面的一部分具有显示自然视频内容的窗口。可在桌面的该区域内逐图片地使用分数样本MV精度,而不管示出文本或其他渲染内容的区域是否是使用整数样本MV精度来编码的。
[0209]编码器可至少部分地基于整数样本MV精度为合适的置信程度来调整距离或相对该整数样本MV精度的偏移量。编码器还可至少部分地基于编码和/或解码的目标计算复杂度(支持整数样本MV精度以降低计算复杂度)来调整距离或相对该整数样本MV精度的偏移量。例如,编码器可调整比较操作中使用的阈值以使得整数样本MV精度更可能或更不可能被选择。
[0210]所选的MV精度可针对在视频的单元内的各块的MV值的水平MV分量和/或垂直MV分量,其中这些水平MV分量和垂直MV分量被准许具有不同的MV精度。或者,所选的MV精度可针对在视频的单元内的各块的MV值的水平MV分量和垂直MV分量两者,其中这些水平MV分量和垂直MV分量具有相同的MV精度。
[0211 ]在MV精度选择的大多数前述示例中,比特流中经编码的视频包括指示针对该单元的所选MV精度的一个或多个句法元素。解码器解析指示所选的MV精度的(诸)句法元素,并根据所选的MV精度来解释MV值。替换地,比特流中经编码的视频可缺少指示所选的MV精度的任何句法元素。例如,即使比特流支持对具有分数样本MV精度的MV值的信号化,编码器仍可包含对视频的单元的运动估计,以仅使用具有为零的分数部分的MV值,并且仅指示整数样本偏移的MV值被用在运动补偿中。解码器以分数样本MV精度重构并应用MV值(其中MV值指示整数样本偏移)。这可通过避免插值操作来降低编码的计算复杂度。
[0212]IX.使用散列匹配检测场景改变
[0213]本章节呈现用于基于散列匹配来检测场景改变的各方法。场景改变可在视频编码期间被检测到。例如,被标识为场景改变图片的图片可被用来改善编码效率(例如,参考图片可至少部分地基于给定图片是否是场景改变图片来被确定)。
[0214]检测场景改变图片。
[0215]场景改变至少部分地使用指示有多少当前图片的块在与先前图片有关的散列表中具有散列匹配的信息(一般被称为“匹配率”、“匹配比率”或“R”)来检测。在一些实现中,匹配率被计算为:R=(C+S+M)/T。替换地,匹配率可被计算为:R=(C+M)/T或被计算为R=M/T。对于当前图片,匹配率被标记为“Rcurr”。此外,平均匹配率可从(在当前图片之前的)先前图片计算。例如,所有先前编码的图片的平均可被维持,或者(例如,使用滑动窗口的)多个先前图片的平均可被维持。平均匹配率被标记为“Ravg”。
[0216]在一些实现中,如果Rcurr小于(例如,显著小于)Ravg,则当前图片可被标识为场景改变图片。在一些实现中,如果Rcurr〈a*Ravg,则当前图片被检测为场景改变图片。在特定实现中,“a”的值(权重值)被设为0.5。
[0217]B.长期参考图片选择。
[0218]在视频编码中,来自参考图片的运动补偿被用于移除时间冗余。因此,参考图片可能对编码效率而言非常重要。在一些实现中,短期参考图片和长期参考图片两者都被使用。短期参考图片通常为距当前编码图片不太远的多个图片。长期参考图片可被存储在经解码的图片缓冲器(“DPB”)中达相对较长的时间。长期参考图片有助于改善一些屏幕内容的编码效率,其中稍后在视频序列中可发生重复的场景或者可发生重复的窗口。在一些实现中,场景改变之前的(例如,紧接在场景改变之前的)图片被保留作为长期参考图片,而场景改变期间的图片不被保留。
[0219]为了解说长期参考图片选择的各示例,以下示例图片序列被使用。
[0220]f0(s0),fl(s0),f2(s0),f3(s0),f4(s0),f5(s0),f6(s0),f7(s0->l),f8(s0->l),
[0221]f9(s0->l),fl0(s0->l),fll(sl)fl2(sl)
[0222]在该示例序列中,存在13个图片(被标记为“f0”到“Π2”)以及两个场景(被标记为“S0”和“Si” )。第一场景和第二场景之间的转变被标记为“s0->l”。如在示例序列中描绘的,图片fo到f6属于第一场景sO,图片f7到HO是从第一场景SO到第二场景Si的转变图片,并且图片fll和Π2属于第二场景Si。如果该示例图片序列包含屏幕内容,则f0、fl、f2、f3、f4、f5和f6的匹配率可能相对较高,f7、f8、f9、fl0和fll的匹配率可能相对较低,并且Π2的匹配率可能相对较高。
[0223]基于各编码情况的结果,保留先前场景的最后一个图片可有助于改善编码效率。因此,对于以上的示例序列,f6将被保留作为长期参考图片。在一些实现中,是否保留给定图片作为长期参考图片的判定是在对当前图片进行编码时作出的。例如,是否保留fn-Ι作为长期参考图片的判定是在对fn(当前图片)进行编码时作出的。在特定实现中,如果满足以下两个条件,则fn-Ι被保留作为长期参考图片:
[0224]1.匹配率Rn(当前图片fn的Rcurr)低于阈值(指示fn被检测到为场景改变图片)。
[0225]2.所有先前的X个图片的匹配率(Rn-l、Rn-2、‘"Rn-X)都高于阈值(指示稳定场景,这可将场景改变期间的图片(诸如f 7、f 8、f 9)修剪出)。
[0226]使用以上两个条件,可检测到场景改变的开始紧接在X个图片的稳定场景之后发生。使用以上示例序列,如果在对当前图片f7进行编码时应用了这两个条件,则f7的匹配率可被发现低于阈值(指示f7是场景改变图片),而先前的X个图片(例如,f6、f5、f4等)可被发现高于阈值。结果,如果这两个条件被满足,则f6可被保留作为长期参考图片。
[0227]C.图片质量调整。
[0228]在以上示例序列中,如果在第二场景Si中存在许多图片(这些图片之间具有非常小的改变),则用较好的质量对Si中的头几个图片进行编码可有助于改善编码效率。在一些实现中,使用QPI和IambdaI对帧内图片和其他QP值进行编码,并且使用Iambda(A)值对P和B图片进行编码(例如,lambda值通常大于QPI和IambdaI,并且对于不同的P和B图片也可能是不同的)。
[0229]在一些实现中,如果通过基于散列的块匹配检测到当前图片在新场景的开始(或接近新场景的开始),则用较好的质量来对该当前图片进行编码(例如,使用QPI和IambdaI对该当前图片进行编码)。例如,通过用较好的质量对在稳定场景的开始处或附近的图片进行编码,可改善同一稳定场景中的后续图片的编码效率和/或质量。
[0230]如果预分析被允许,则检测当前图片是否在新稳定场景的开始处可以是直接任务。例如,当前图片之后接着的X个图片可被检查。如果当前图片具有相对较低的匹配率,而接着的X个图片具有相对较高的匹配率,则编码器可用相对较高的质量对当前图片进行编码。例如,使用以上的示例序列,编码器可发现Π1的匹配率相对较低,而Π2、Π3和Π4的匹配率相对较高。在该情况下,Π1可被确定为在新稳定场景的开始处,并因此用较好的质量来编码。在特定实现中,如果满足下面的两个条件,则用较好的质量来对当前图片fn进行编码(例如,用QPI和IambdaI对当前图片fn进行编码)。
[0231 ] 1.匹配率Rn低于阈值(指示fn被检测到为新场景的开始)。
[0232]2.所有将来的乂个图片的匹配率(1?11+1,^1+2,"_1?11+乂)都高于阈值(指示稳定场景)O
[0233]如果预分析不被允许,则编码器可能不能够在新稳定场景的开始处作出判定,并可改为在新稳定场景可被确认之前必须等待几个图片。例如,编码器可等待多个图片X以确认新稳定图片已经到达,并随后用改善的质量来对当前图片进行编码。例如,参考以上的示例序列,如果fl2、fl3、fl4和fl5(其中X = 4)具有相对高的匹配率(例如,并且fll具有相对低的匹配率),则Π5可用经改善的质量来编码。在具体实现中,如果满足以下两个条件,则用更好的质量来对当前图片fn进行编码(例如,用QPI和IambdaI对当前图片进行编码):
[0234]1.当前图片和先前的X个图片的匹配率(Rn,Rn-1,Rn-2,…Rn-X)高于阈值。
[0235]2.图片n-X-1的匹配率(Rn-X-1)低于阈值。
[0236]D.示例实现
[0237]可提供用于使用基于散列的块匹配来检测场景改变的各种方法。此外,可在编码期间出于其他目的(诸如长期参考图片选择和图片质量设置)使用场景改变信息的结果。
[0238]图15示出用于至少部分地使用基于散列的块匹配的结果来在视频编码期间检测场景改变的一般技术(1500)。该技术(1500)可由编码器(诸如参考图3或图4a和4b描述的编码器)或由另一编码器来执行。
[0239]编码器对视频进行编码以产生经编码的数据,编码器将该经编码的数据作为比特流的一部分输出。在编码期间,编码器计算(1510)当前图片的匹配率。匹配率至少部分地使用当前图片(相对于一个或多个参考图片)的基于散列的块匹配来计算。在一些实现中,匹配率通过将当前图片的块分类成多个类别来计算。在一些实现中,匹配率被计算为R= (C+S+M) /T或被计算为R = (C+M) /T或被计算为R=M/T。
[0240]编码器随后计算(1520)多个先前图片的平均匹配率。平均匹配率可通过计算每一个先前图片的个体匹配率并对各个体匹配率求平均来计算。在一些实现中,匹配率通过将给定的先前图片的块分类成多个类别来计算。在一些实现中,匹配率被计算为R=(C+S+M)/T或被计算为R= (C+M)/T或被计算为R=M/T。
[0241]编码器随后计算(1530)经加权的平均匹配率。例如,编码器可将平均匹配率乘以权重值,该权重值小于1.0。在特定实现中,使用为0.5的权重值。
[0242]编码器随后基于当前图片的匹配率以及经加权的平均匹配率确定(1540)当前图片是否是场景改变图片。例如,如果当前图片的匹配率小于经加权的平均匹配率,则当前图片可被确定为是场景改变图片。
[0243]在当前图片被检测为是场景改变图片时,可作出各判定。例如,紧接在当前图片之前的图片可被选为长期参考图片。此外,当在编码期间确定图片质量参数时,可使用关于场景改变中何时涉及一个(或多个)图片的信息。
[0244]鉴于可应用所公开的本发明的原理的许多可能的实施例,应当认识到,所示实施例仅是本发明的优选示例,并且不应认为是限制本发明的范围。相反,本发明的范围由后续的权利要求来界定。我们要求作为我们的发明保护落入这些权利要求范围和精神内的所有内容。
【主权项】
1.一种在计算设备中的方法,包括: 对于多个候选块中的每一个: 评估所述候选块是否满足复杂度准则; 如果所述候选块不满足所述复杂度准则: 评估所述候选块是否满足均质选择准则; 如果所述候选块满足所述均质选择准则; 确定所述候选块的块散列值;以及 将所述块散列值添加到散列表。2.如权利要求1所述的方法,其特征在于,进一步包括: 如果所述候选块满足所述复杂度准则: 确定所述候选块的块散列值;以及 将所述块散列值添加到所述散列表。3.如权利要求1所述的方法,其特征在于,进一步包括: 如果所述候选块不满足所述均质选择准则: 将所述候选块从所述散列表中省略。4.如权利要求1所述的方法,其特征在于,当所述候选块是水平均质和垂直均质中的一者或多者时,所述候选块不满足所述复杂度准则。5.如权利要求1所述的方法,其特征在于,所述均质选择准则基于所述候选块的开始坐标。6.如权利要求1所述的方法,其特征在于,在所述候选块的X和y起始坐标中的至少一者能被预定值整除时,所述候选块满足所述均质选择准则。7.如权利要求1所述的方法,其特征在于,在所述候选块的X起始坐标能被第一预定值整除且所述候选块的y起始坐标能被第二预定值整除时,所述候选块满足所述均质选择准则。8.如权利要求7所述的方法,其特征在于,所述第一预定值是所述候选块的宽度并且所述第二预定值是所述候选块的高度。9.如权利要求7所述的方法,其特征在于,所述第一预定值为16且所述第二预定值为16。10.—种在计算设备中的用于对视频进行编码以产生经编码的数据的方法,对视频进行编码包括确定所述视频的单元的运动向量(“MV”)精度,所述方法包括: 将所述视频的所述单元拆分成多个块; 对于所述单元的所述多个块中的每一块: 将所述块分类成多个类别之一,其中所述多个类别中的至少一个类别是使用均质分类准则的均质类别,并且所述多个类别中的至少一个其他类别是使用基于散列的匹配分类准则的散列匹配类别; 基于对所述多个块的分类,确定所述视频的所述单元的MV精度;以及 在比特流中输出经编码的数据。11.如权利要求10所述的方法,其特征在于,使用所述均质分类准则来对所述块进行分类包括: 在所述块是水平均质和垂直均质中的一者或两者时,将所述块分配给均质类别。12.如权利要求10所述的方法,其特征在于,使用基于散列的匹配分类准则来对所述块进行分类包括: 当在散列表中找到所述块的散列值的匹配时,将所述块分配给所述散列匹配类别,其中所述散列表包括一个或多个参考图片的候选块。13.如权利要求10所述的方法,其特征在于,将所述块分类成多个类别之一包括: 将所述块分配给所有块类别; 如果所述块匹配参考图片中的共置块,则将所述块分配给共置匹配类别,并且否则: 如果所述块满足所述均质分类准则,则将所述块分配给所述均质类别,并且否则: 如果所述块满足基于散列的匹配分类准则,则将所述块分配给所述散列匹配类别。14.如权利要求13所述的方法,其特征在于,进一步包括: 计算所有块类别、共置匹配类别、均质类别和散列匹配类别中的每一者中的块数;其中所述视频的所述单元的MV精度是至少部分地使用所述多个类别中的每一者中的块数来确定的。15.如权利要求14所述的方法,其特征在于,进一步包括: 通过将所述共置匹配类别、均质类别和散列匹配类别中的块数求和并随后除以所述所有块类别中的块数来计算比率值; 其中当所述比率值小于阈值时,所述单元的MV精度是分数MV精度。16.如权利要求15所述的方法,其特征在于,进一步包括: 其中所述阈值为0.8。17.如权利要求10所述的方法,其特征在于,确定所述视频的所述单元的MV精度包括在整数MV精度和分数MV精度之间进行选择。18.一种在计算设备中的用于在视频编码期间检测场景改变的方法,所述方法包括: 计算当前图片的匹配率,其中计算所述匹配率包括执行针对所述当前图片的基于散列的块匹配; 计算多个先前图片的平均匹配率,其中计算所述平均匹配率包括执行针对所述多个先前图片的基于散列的块匹配; 计算经加权的平均匹配率;以及 在所述当前图片的匹配率小于所述经加权的平均匹配率时,确定所述当前图片是场景改变图片。19.如权利要求18所述的方法,其特征在于,进一步包括: 当所述当前图片被标识为场景改变图片时: 将所述当前图片的紧接在前的图片标识为长期参考图片。20.如权利要求18所述的方法,其特征在于,计算当前图片的匹配率包括: 对于所述当前图片的每一块: 将该块分类成多个类别之一,其中所述多个类别中的至少一个类别是使用基于散列的匹配分类准则的散列匹配类别;以及 计算所述多个类别中的每一者中的块数。21.如权利要求18所述的方法,其特征在于,计算经加权的平均匹配率包括: 将所述平均匹配率乘以权重值,所述权重值小于1.0。22.如权利要求21所述的方法,其特征在于,所述权重值为0.5。23.—种在计算设备中的用于在视频编码期间的图片质量调整的方法,所述方法包括: 如果预分析被允许: 则至少部分地使用基于散列的块匹配来确定当前图片是否在新稳定场景的开始处;如果所述当前图片在新稳定场景的开始处,则用改善的图片质量来对所述当前图片进行编码; 否则,如果预分析不被允许: 则至少部分地使用基于散列的块匹配来确定当前图片是否在新稳定场景的多个先前图片之内; 如果所述当前图片在新稳定场景的多个先前图片之内,则用改善的质量来对所述当前图片进行编码;24.一种计算设备,所述计算设备包括处理单元和存储器,所述计算设备适配于执行如权利要求1-23中任一项所述的方法。25.—个或多个存储计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用于使得计算设备因此被编程为执行如权利要求1-23中的任一项所述的方法。
【文档编号】H04N19/00GK105981382SQ201480071892
【公开日】2016年9月28日
【申请日】2014年9月30日
【发明人】B·李, J-Z·徐
【申请人】微软技术许可有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1