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

文档序号:9916961阅读:来源:国知局
他特征涉及组织各候选块以用于基于散列的 块匹配的数据结构。又一些特征涉及分层的基于散列的块匹配。这些特征可促进在速率-失 真性能(通过选择与其他办法相比更好的BV值)和/或计算效率(通过与其他办法相比更高 效地选择BV值)方面更有效的帧内块复制("BC")预测。
[0110] 具体地,基于散列的块匹配可在编码诸如屏幕捕捉内容之类的某种"人工"创建的 视频内容时改善速率-失真性能。屏幕捕捉内容典型地包括重复的结构(例如图形、文本字 符),其为基于散列的块匹配提供了改善性能的机会。屏幕捕捉内容通常用具有高色度采样 分辨率的格式(例如YUV 4:4:4或RGB 4:4:4)来编码,但是它也可以用具有较低的色度采样 分辨率(例如YUV 4:2:0)的格式来编码。编码/解码屏幕捕捉内容的常见场景包括远程桌面 会议和对自然视频或其它"经混合的内容"视频的图形覆盖的编码/解码。
[0111] A.帧内BC预测模式和BV值--介绍。
[0112] 对于帧内BC预测,图片的当前块的样本值是使用同一图片中的样本值来预测的。 BV值指示从当前块到图片的包括用于预测的样本值的区域的位移。用于预测的样本值是先 前重构的样本值。BV值在比特流中被信号化,并且解码器可以使用BV值来确定图片的区域 以用于预测,其也在解码器处被重构。帧内BC预测是一种形式的图片内预测一一针对图片 的块的帧内BC预测不使用除了同一图片中的样本值以外的任何样本值。
[0113]图7示出针对当前帧(710)的当前块(730)的帧内BC预测。当前块可以是编码单元 ("CU")的编码块("CB")、预测单元("HJ")的预测块("PB")、变换单元("TU")的变换块 ("TB")或其它块。当前块的尺寸可以是64 X 64、32 X 32、16 X 16、8 X 8或某个其它尺寸。更一 般地,当前块的尺寸为mXn,其中m和η中的每一者都是整数,并且其中m和η可彼此相等或可 具有不同的值。替换地,当前块可具有某一其他形状(例如,经编码视频对象的具有非矩形 形状的区域)。
[0114] BV(740)指示当前块(730)到图片的包括用于预测的样本值的区域(750)的位移 (或偏移)。由BV(740)指示的帧内预测区域(750)有时被称为当前块(730)的"匹配块"。匹配 块可与当前块(730)相同,或它可以是当前块(730)的近似。假设当前块的左上位置是在当 前帧的位置(XQ,y Q)处,并假设帧内预测区域的左上位置在当前帧的位置(X1,yi)处。BV指示 位移(xmyi-yo)。例如,如果当前块的左上位置在位置(320,256)处,并且帧内预测区域 的左上位置在位置(295,270)处,则BV值为(-25,14)。在本示例中,负水平位移指示在当前 块的左边的位置,而负垂直位移指示在当前块之上的位置。
[0115] 帧内BC预测可以通过利用使用块复制操作的冗余性(例如帧内部的重复模式)来 改善编码效率。然而,考虑到编码器可能估计的候选块的数量,为当前块查找匹配块可以在 计算上是复杂的并且耗时的。将当前块的样本值与单个候选块的样本值在样本级块匹配中 进行比较可涉及数千操作。例如,比较64 X 64当前块和64 X 64候选块的样本值可包括64 X 64 = 4096个比较操作(例如,减法操作)以及记录比较操作的结果的操作。
[0116] 图8示出在块匹配操作中当前帧(810)的当前块(830)的某些候选块。四个BV(841, 842,843,844)指示了四个候选块的位移。候选块可在帧(810)的经重构内容内的任何地方。 (从左向右随后从上到下编码各块。)候选块可以与其它候选块重叠,如由BV(843,844)指示 的候选块所示。BV估计的计算复杂度在BV值的搜索范围涵盖所有先前重构的帧区域时尤其 成问题。
[0117] 图9示出了用于具有1920样本值宽和1080样本值高的示例帧(910)的块(930)的块 匹配的候选块的数量。当前块(930)是在帧(910)中的位置(896,576)处的64X64的块,且候 选块也是64X64的块。候选块的搜索区域在图9中用阴影线区示出。搜索区域内的任何 64x64块可被认为是候选块。帧(910)内的候选块的数量给出如下:(y位置块一高度块+1) X (宽度Φ贞一宽度块+1) + (X位置块一宽度块+1 ),其中X位置块和y位置块指不帧(910)中的当前块 (930)的位置,宽度侦是帧(910)的宽度,而宽度块和高度块是当前块(930)的尺寸。对于图9所 示的值,在当前块(930)的搜索区域中有(576 - 64+1) X (1920 - 64+1) + (896 - 64+1) =953, 474个候选块。执行当前块(930)和甚至一小组可能的候选块之间的样本级块匹配操作将在 计算上是非常密集的。如果搜索范围包括另一先前重构的帧,则操作的数量甚至更高。
[0118] B.基于散列的块匹配。
[0119] 当编码器使用基于块的匹配时,该编码器为多个候选块中的每一块确定散列值。 编码器还确定当前块的散列值。如果两个块相同,它们的散列值相同。使用散列值,编码器 可快速且高效地标识具有与当前块相同的散列值的候选块,并过滤出具有不同散列值的候 选块。编码器可接着进一步评估具有与前块相同的散列值的候选块。基于散列的块匹配加 速寻找当前块的匹配块的过程。
[0120] 图10示出了在基于散列的块匹配中用于候选块B(x,y)的散列值(1000),其中X和y 分别指示给定候选块的左上位置的水平和垂直坐标。候选块具有使用散列函数h()确定的 散列值。对于搜索范围中的每一候选块B(x,y),编码器确定该候选块的散列值h(B)。一般而 言,散列函数M)得到η个可能散列值,指定为ho到hw。对于给定散列值,具有那个散列值的 候选块聚成组。例如,在图 10中,候选块B(1266,263)、B(1357,365)、B(1429,401),B(502, 464)…具有散列值ho。各组可包括不同数量的候选块。例如,在图10中,散列值h4的组包括单 个候选块,而散列值ho的组包括4个以上候选块。
[0121]以此方式,可能的候选块被分发到η个分类。例如,如果散列函数h()产生12位散列 值,则图9中的953,474个候选块分成212 = 4096个类别,每个类别包括平均233个候选块,假 定候选块平均分布到各散列值类别。在一些实现中(参见C小节),每散列值的候选块的数量 可通过消除具有该散列值的冗余的等同块来被进一步减少。同样,在某些实现中(参见D小 节),编码器可使用不同的散列函数迭代地减少候选块的数量。
[0122] 散列函数h()可以是循环冗余校验("CRC")函数或其它散列函数。一些类型的散列 函数(例如,CRC函数)将相似的块映射到不同的散列值,这在寻找与当前块精确对应的匹配 块是可能是高效的。其他类型的散列函数(例如,位置敏感散列函数)将相似的块映射到相 同的散列值,这在匹配块近似于当前块时可能是合适的。下文描述了各示例散列函数。
[0123] 通过散列函数h(),编码器确定当前块B当前的散列值。在图10中,散列值h(B当前)是 h3。使用当前块的散列值,编码器可标识具有相同散列值的候选块(图10中的轮廓框所示), 并过滤出其它候选块。当散列函数将类似块映射到不同散列值时,被标识的候选块(与当前 块相同的散列值)包括可能与当前块相同的块。当散列函数将类似块映射到相同散列值时, 被标识的候选块(与当前块相同的散列值)包括可能与当前块相同的或可能非常接近当前 块的块。不管怎样,从这些标识出的候选块中,编码器可(例如,使用逐样本的块匹配操作) 标识出当前块的匹配块。
[0124] 总体地,因为散列值比较比逐样本的块匹配简单得多,基于散列的块匹配可使得 在大搜索范围中评估候选块的过程高效得多。同样,候选块的散列值可以被重用于图片内 的不同块的基于散列的块匹配,所以计算各候选块的散列值的成本可跨整个图片的各基于 散列的块匹配操作来分摊。
[0125] 图11a示出用于在BV估计期间使用基于散列的块匹配来编码图片的一般化技术 (1100)。编码器(诸如参考图3或图5a-5b描述的编码器)可执行该技术(1100)。
[0126] 编码器使用具有基于散列的块匹配的BC预测来编码(1110)图片的数据。BC预测可 以是图片内BC预测(如果候选块与当前块处于同一图片中),或者BC预测可以参考另一图片 (在同一视频序列中,在另一视频序列中,或者活动(sprite)或所生成的参考图片)中的候 选块。候选块是搜索范围的一部分,这可包括在具有当前块的图片(或另一图片)中所有先 前重构的内容,或可包括先前重构的内容的子集(例如,当前CTU中以及具有当前块的图片 中的一个或多个其他CTU中经重构的内容,或与当前块相同的小块中的经重构的内容,或与 当前块相同的片中的经重构的内容)。在它编码(1110)图片的数据时,编码器可以执行图 lib中所示的技术(1111)。或者,编码器可以例如使用分层的基于散列的块匹配以某一其他 方式来执行图片的数据的编码(1110)。
[0127] 根据图lib的技术(1111),编码器获得(1120)要编码的下一块并确定(1130)该块 (作为当前块)的散列值。散列函数可以是CRC函数,位置敏感的散列函数,或其他散列函数。
[0128] 编码器至少部分地基于当前块的散列值来标识(1140)多个候选块中的匹配块。例 如,对于候选块中的一者或多者,编码器将当前块的散列值与候选块的散列值相比较。或 者,在数据结构根据散列值来组织各候选块时,编码器使用当前块的散列值来选择候选块 列表,随后确定所选择的列表中的任何候选块中的匹配块(例如,在当前块与给定候选块的 样本值之间执行块匹配操作)。
[0129] 如果BV估计成功,则编码器标识(1150)匹配块的BV值以用于当前块。例如,BV值指 示当前块的左上位置与匹配块的左上位置之间的位移。编码器可以编码BV值,例如使用 CABAC或另一形式的熵编码。否则,如果BV估计失败,则编码器可以使用空间图片内预测或 另一形式的图片内预测来编码当前块。
[0130] 在数据结构根据散列值来组织各候选块时,编码器可以更新数据结构来将与刚编 码的块交叠的新候选块纳入考虑。编码器检查(1160)是否继续图片中的下一块。如果是,则 编码器获得(1120)下一块并确定(1130)它的散列值。
[0131] 返回图11a,编码器输出(1190)经编码数据,它包括BV值。编码器可以针对下一图 片重复该技术(1100)。
[0132] C.用于基于散列的块匹配的数据结构。
[0133] 在某些示例实现中,编码器使用根据它们的散列值组织候选块的数据结构。数据 结构可帮助使得基于散列的块匹配更加计算高效。
[0134] 图12a示出为基于散列的块匹配组织候选块的示例数据结构(1200)。对于散列函 数h( ),η个可能散列值为ho到hn-i。具有相同散列值的候选块在同一候选块列表中分类。给 定候选块列表可包括零个或更多条目。例如,针对散列值h 2的候选块列表不具有条目,针对 散列值h6的列表具有两个条目,并且针对散列值hi的列表具有四个以上的条目。
[0135] 条目(1η,Χ)包括具有散列值lu的第X个候选块的信息。如图12b中所示,候选块列表 中的条目可包括块B (X,y)的地址(例如,块的左上位置的水平和垂直坐标)。或者,如图12c 中所示,候选块列表中的条目可包括块B(x,y)的地址以及来自第二散列函数的散列值,其 可用于进行分层的基于散列的块匹配(参见D小节)。
[0136] 在针对当前块的基于散列的块匹配期间,编码器确定当前块的散列值h(B当前)。编 码器保持具有相同散列值的候选块列表,并排除其他n-1个列表。为选择匹配块,编码器可 将当前块与保留的候选块列表中的候选块进行比较。因此,通过使用散列值h(B当前)的简单 的查找操作,编码器可消除候选块的(n-l)/n(平均),并聚焦于保留的列表中余下的1/n候 选块(平均),显著减少了样本级块匹配操作的数量。
[0137] 数据结构可被认为是其中每个条目代表一个候选块的动态字典。随着更多候选块 被添加到图片的经重构的内容中,并且因此使得能够用于图片的后面的块的基于散列的块 匹配中,该数据结构可在编码期间增长。具体而言,在当前块被编码后,覆盖刚编码的当前 块的新候选块可用于基于散列的块匹配中。例如,在一8 X 8的块被编码后,该8 X 8的块可用 作候选块。位于当前块左边一样本位置的增量偏移处的七个8X8的块也可用作候选块。并 且,对于位于自当前块的一样本位置的增量偏移的七个行的每一个,八个8X8的块可用作 候选块。因此,在当前的8X8的块被编码后,8X8 = 64个新候选块的条目可被添加到数据结 构。类似地,在当前的64 X 64的块被编码后,4096个候选块的条目可被添加到数据结构。
[0138] 不同数据结构可被用于不同尺寸的块。例如,一个数据结构包括8X8个候选块的 散列值、第二数据结构包括16X16个候选块的散列值、第三数据结构包括32X32个候选块 的散列值,以此类推。在基于散列的块匹配期间使用的数据结构取决于当前块的尺寸。在任 何大小的当前块被编码后,全部数据结构可被更新,其中新候选块已对基于散列的块匹配 可用。
[0139] 对于高分辨率图片,数据结构可存储代表很大数量的候选块的信息。为了减少用 于数据结构的存储器的量,编码器可去除冗余值。例如,编码器可通过使用以下方法避免向 数据结构添加相同的块。在向数据结构添加新候选块Bif之前,编码器检查是否已经有表示 在数据结构中的与Bii相同的候选块。针对此检查,编码器可为新候选块确定散列值,接着进 一步评估表示在数据结构中的具备相同散列值的那些候选块。(具有不同散列值的候选块 必然不同于新候选块Bif。)如果数据结构已经包括与Bif相同的候选块,那么%被添加以替代 先前相同的候选块,或简单地先前相同的候选块被保留。如果数据结构不包括与B新相同的 候选块,那么Bii被添加到数据结构。
[0140] -般而言,通过去除相同块来减少数据结构的尺寸可伤及编码效率。当多个相同 候选块潜在可用时,它们可导致当前块的不同BV值,其中一个BV值可用比其它更少的比特 来编码。如果多个等同的候选块中仅有一个被保留在数据结构中,则编码器可能没有学习 到对当前块而言将被更高效地编码的BV值。因此,通过决定是否去除相同块,编码器可折衷 数据结构的存储器尺寸和编码效率。
[0141] 图13a示出用于使用组织基于散列的块匹配的各候选块的数据结构进行编码的一 般化技术(1300)。编码器(诸如参考图3或图5a-5b描述的编码器)可执行该技术(1300)。
[0142] 编码器创建(1310)根据散列值组织多个候选块的数据结构。例如,编码器创建如 参考图12a和12b说明的数据结构,具有一个或多个可能的散列值中的每一者的块地址的列 表。或者,编码器创建参考图12a和12c说明的数据结构。或者,编码器创建根据散列值组织 多个候选块的另一数据结构。
[0143] 编码器编码(1320)图片的数据,包括将该数据结构用于基于散列的块匹配。基于 散列的块匹配可以是图片内BC预测(如果候选块与当前块处于同一图片中),或者基于散列 的块匹配可以参考另一图片(在同一视频序列中,在另一视频序列中,或者活动(sprite)或 所生成的参考图片)中的候选块。在它编码(1320)图片的
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1