视频和图像编码中的基于散列的块匹配的制作方法

文档序号:9916961阅读:308来源:国知局
视频和图像编码中的基于散列的块匹配的制作方法
【专利说明】视频和图像编码中的基于散列的块匹配
[0001 ] 背景
[0002] 工程师使用压缩(也叫做源编码或源译码)来降低数字视频的比特率。压缩通过将 视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。解压(也被称为解码) 从压缩的形式中重构一种版本的原始信息。"编解码器"是编码器/解码器系统。
[0003] 在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-T H.261、H.262 (MPEG-2或IS0/IEC 13818-2)、Η· 263和H.264(MPEG-4AVC或IS0/IEC 14496-10)标准、MPEG-1(IS0/IEC 11172-2)和MPEG-4可视(IS0/IEC 14496-2)标准以及SMPTE 421M标准。最近, HEVC标准(ITU-T Η.265或IS0/IEC 23008-2)已被批准。当前,正在开发(例如,针对可缩放 视频编码/解码、针对在样本比特深度或色度采样率方面具有较高保真度的视频的编码/解 码、或针对多视图编码/解码的)HEVC标准的扩展。视频编解码器标准通常定义针对经编码 的视频比特流的句法的选项,从而详述当在编码和解码时使用特定特征时该比特流中的参 数。在许多情况下,视频编解码器标准还提供关于解码器应当执行以在解码时取得一致的 结果的解码操作的细节。除了编解码器标准外,各种专用编解码器格式定义针对经编码的 视频比特流的句法的其他选项以及相应的解码操作。
[0004] 帧内块复制("BC")是HEVC扩展的处于考虑中的预测模式。对于帧内BC预测模式, 图片的当前块的样本值是使用同一图片中的先前重构的样本值来预测的。块向量("BV")指 示从当前块到图片的包括用于预测的先前重构的样本值的区域的位移。BV被信号化在比特 流中。帧内BC预测是一种形式的图片内预测一针对图片的块的帧内BC预测不使用除了同一 图片中的样本值以外的任何样本值。
[0005] 如当前在HEVC标准中规定并在针对HEVC标准的某一参考软件中实现的,帧内BC预 测模式具有若干问题。例如,有关在帧内BC预测中使用哪些BV值的编码器侧决策没有被有 效作出。
[0006] 概述
[0007] 概括而言,本详细描述呈现了基于散列的块匹配中的创新。例如,创新中的一些涉 及在块向量估计期间使用基于散列的块匹配以用于帧内块复制("BO预测,其中编码器在 搜索与被编码的当前块相匹配的块时使用各块的散列值。基于散列的块匹配可以使用组织 可提供匹配块的各候选块的动态数据结构。基于散列的块匹配可以使用单个散列函数,或 者它可以迭代地使用多个散列函数来提供分层的基于散列的块匹配。编码器可以使用先前 编码随后重构的样本值执行基于散列的块匹配,或者编码器可以使用输入样本值来执行基 于散列的块匹配。
[0008] 针对基于散列的块匹配的创新可以被实现为方法的一部分、被适配成执行该方法 的计算系统的一部分或存储用于使计算系统执行该方法的计算机可执行指令的有形计算 机可读介质的一部分。各创新可以结合地或分开地使用。
[0009] 参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
[0010] 附图简述
[0011] 图1是其中可实现所描述的一些实施例的示例计算系统的示图。
[0012] 图2a和2b是其中可实现所描述的一些实施例的示例网络环境的示图。
[0013] 图3是结合其可实现所描述的一些实施例的示例编码器系统的示图。
[0014]图4是不例解码器系统的不图。
[0015] 图5a和5b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。
[0016] 图6是示出了示例视频解码器的示图。
[0017]图7是示出针对图片的块的帧内BC预测的示图。
[0018] 图8是示出帧的块的块匹配中的候选块的示图。
[0019] 图9是示出针对示例帧的块的块匹配中的多个候选块的示图。
[0020] 图10是示出在基于散列的块匹配中的候选块的散列值的表。
[0021] 图11a和lib是解说用于在BV估计期间使用基于散列的块匹配来编码图片的技术 的流程图。
[0022]图12a_12c是示出为基于散列的块匹配组织候选块的示例数据结构的表。
[0023] 图13a和13b是解说用于使用为基于散列的块匹配组织各候选块的数据结构进行 编码的技术的流程图。
[0024] 图14a_14c是示出为分层的基于散列的块匹配组织候选块的示例数据结构的表。
[0025] 图15a和15b是解说包括分层的基于散列的块匹配的编码技术的流程图。
[0026] 图16a和16b是解说根据输入样本值确定散列值的示例视频编码器的示图。
[0027] 图17a和17b是解说用于使用散列值来编码各块的技术的流程图。
[0028] 图18a和18b是解说使用用信号通知的散列值来确定重构块的编码技术的流程图。
[0029] 详细描述
[0030] 本详细描述呈现了基于散列的块匹配的使用中的创新。具体而言,本详细描述呈 现了编码的创新,该编码在块向量("BV")估计期间将基于散列的块匹配用于为基于散列的 块匹配以及为分层的基于散列的块匹配组织各候选块的数据结构。
[0031] 虽然本文中描述的操作是被适当描述为由视频编码器来执行,但在许多情况中, 这些操作可由另一类型的媒体处理工具(例如图像编码器)来执行。
[0032]本文中描述的一些创新是参考专用于HEVC标准的句法元素和操作来示出的。例 如,对HEVC标准的草稿版本JCTVC-N1005--即2013年7月的"高效视频编码(HEVC)范围扩 展文本规范:第4稿" JCTVC-N1005作出参考。本文中描述的各创新还可以被实现为用于其它 标准或格式。
[0033]更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方 法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所 公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一 个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技 术/工具并不解决所有这些问题。
[0034] I.示例计算系统
[0035]图1示出了其中可实现几个所描述的创新的合适计算系统(100)的概括示例。计算 系统(1〇〇)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专 用计算系统中实现。
[0036] 参考图1,计算系统(100)包括一个或多个处理单元(110、115)和存储器(120、 125)。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元 ("CPU")、专用集成电路("ASIC")中的处理器或任何其它类型的处理器。在多处理系统中, 多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110) 以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是(诸)处理单元可访问 的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存 等)或这两者的某一组合。存储器(120,125)存储实现针对基于散列的块匹配和/或基于散 列的块重构的一个或多个创新的软件(180),该软件是适用于由(诸)处理单元执行的计算 机可执行指令的形式。
[0037]计算系统可具有附加的特征。例如,计算系统(100)包括存储(140)、一个或多个输 入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制 器或网络之类的互连机制(未示出)将计算系统(100)的各组件互连。通常,操作系统软件 (未示出)为在计算系统(100)中执行的其它软件提供操作环境,并协调计算系统(100)的各 组件的活动。
[0038] 有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、⑶-R0M、 DVD或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储(140)存储针对 实现用于基于散列的块匹配和/或基于散列的块重构的一个或多个创新的软件(180)的指 令。
[0039](诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输 入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(诸)输入设备(150) 可以是相机、视频卡、TV调谐卡、或接受模拟或数字形式的视频输入的类似设备、或将视频 样本读到计算系统(100)中的⑶-ROM或⑶-RW。(诸)输出设备(160)可以是显示器、打印机、 扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。
[0040] (诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如 计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。 已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作 为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。
[0041] 各创新可以在计算机可读介质的一般上下文中描述。计算机可读介质是可在计算 环境内访问的任何可用有形介质。作为示例而非局限,对于计算系统(1〇〇),计算机可读介 质包括存储器(120、125 )、存储(140 )、和以上任意的组合。
[0042]各创新可在计算机可执行指令(诸如包括在程序模块中的在目标现实或虚拟处理 器上在计算系统中执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模 块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构 等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆 分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。
[0043]术语"系统"和"设备"在此被互换地使用。除非上下文明确指示,否则,术语并不暗 示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地 的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬 件的任意组合。
[0044]所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件 来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的 集成电路(例如,诸如ASIC数字信号处理单元("DSP")之类的ASIC、图像处理单元("GPU")、 或诸如场可编程门阵列("FPGA")之类的可编程逻辑器件("PLD"))来实现。
[0045] 为了呈现起见,本详细描述使用了如"确定"和"使用"等术语来描述计算系统中的 计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作 混淆。对应于这些术语的实际的计算机操作取决于实现而不同。
[0046] II.示例网络环境
[0047]图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201, 202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可 包括因特网或另一计算机网络。
[0048] 在图2a所示的网络环境(201)中,每个实时通信("RTC")工具(210)都包括用于双 向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符合HEVC标准、 SMPTE 421M标准、IS0/IEC 14496-10标准(也称为H.264或AVC)、另一标准、或专用格式的变 型或扩展的输出,使得相应的解码器(270)接受来自编码器(220)的经编码数据。双向通信 可以是视频会议、视频电话呼叫或其它双方通信场景的部分。虽然,图2a中的网络环境 (201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或 更多个实时通信工具(210)。
[0049] 实时通信工具(210)管理编码器(220)做出的编码。图3示出可以被包括在实时通 信工具(210)中的示例编码器系统(300)。替换地,实时通信工具(210)使用另一编码器系 统。实时通信工具(210)还管理解码器(270)做出的解码。图4示出可以被包括在实时通信工 具(210)中的示例解码器系统(400)。替换地,实时通信工具(210)使用另一解码器系统。
[0050] 在图2b中示出的网络环境(202)中,编码工具(212)包括编码供递送给多个回放工 具(214)的视频的编码器(220),此多个回放工具(214)包括解码器(270)。单向通信可被提 供用于视频监视系统、web相机监视系统、远程桌面会议演示或在其中编码视频并将视频从 一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两 个回放工具(214),但该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说, 回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具 (214)接收该流、缓冲所接收的经编码数据达合适的时间段并开始解码和回放。
[0051] 图3示出可以被包括在编码工具(212)中的示例编码器系统(300)。替换地,编码工 具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具 (214)的连接的服务器侧控制器逻辑。图4示出可以被包括在回放工具(214)中的示例解码 器系统(400)。替换地,回放工具(214)使用另一解码器系统。回放工具(214)还可以包括用 于管理与一个或多个编码工具(212)的连接的客户机侧控制器逻辑。
[0052] III.示例编码器系统。
[0053]图3是结合其可实现所描述的一些实施例的示例编码器系统(300)的框图。编码器 系统(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码 模式、转码模式和针对来自文件或流的媒体回放的常规编码模式)操作的通用编码工具,或 它可以是适用于一种这样的编码模式的专用编码工具。编码器系统(300)可以被实现为操 作系统模块、应用库的部分、独立的应用。总体上,编码器系统(300)从视频源(310)接收源 视频帧序列(311)并产生经编码数据作为到信道(390)的输出。输出到信道的经编码数据可 包括使用基于散列的块匹配来编码的内容。
[0054] 视频源(310)可以是相机、调谐器卡、存储介质、或其它数字视频源。视频源(310) 以例如每秒30帧的帧速率产生视频帧序列。如本文中所使用的,术语"帧"一般指代源、经编 码的或经重构的图像数据。对于逐行扫描视频,帧是逐行扫描视频帧。对于隔行视频,在各 示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个示例性隔行视频场被编 码成经隔行的视频帧或分开的场。除了指示逐行视频帧之外,术语"帧"或"图片"可以指示 单个非成对的视频场、互补的成对视频场、表示在给定时间的视频对象的视频对象平面、或 较大图像中的感兴趣区域。视频对象平面或区域可以是包括场景的多个对象或区域的较大 图像的一部分。
[0055] 抵达的源帧(311)被存储在包括多个帧缓冲区存储区域(321、
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1