帧内块复制与可选时域运动矢量预测的交互的制作方法

文档序号:32445397发布日期:2022-12-06 23:52阅读:57来源:国知局
帧内块复制与可选时域运动矢量预测的交互的制作方法
帧内块复制与可选时域运动矢量预测的交互
1.本技术是2019年6月5日递交的中国专利申请第201910488488.x号的分案申请。
技术领域
2.一般来说,本专利文件涉及视频编码技术。


背景技术:

3.运动补偿是视频处理中的一种技术,其通过考虑相机和/或视频中的对象的运动,给定先前帧和/或将来帧来预测视频中的帧。运动补偿可以用于视频数据的编码和解码中以实现视频压缩。


技术实现要素:

4.描述了与用于运动补偿的帧内块复制相关的设备、系统和方法。
5.在一个典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频编码方法。该方法包括:确定是否使用运动补偿算法对当前图片的当前块进行编码;以及基于该确定,通过将帧内块复制选择性地应用到当前块对当前块进行编码。
6.在另一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频编码的另一种方法。该方法包括:确定是否使用帧内块复制对当前图片的当前块进行编码;以及基于该确定,通过将运动补偿算法选择性地应用到当前块对当前块进行编码。
7.在又一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频解码方法。该方法包括:确定是否使用运动补偿算法对当前图片的当前块进行解码;以及基于该确定,通过将帧内块复制选择性地应用到当前块对当前块进行解码。
8.在又一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频解码的另一种方法。该方法包括:确定是否使用帧内块复制对当前图片的当前块进行解码;以及基于该确定,通过将运动补偿算法选择性地应用到当前块对当前块进行解码。
9.在又一典型的方面,公开了一种解码视觉信息的方法。该方法包括:从编码表示确定表示视觉信息的一部分的被解码的块是使用可选时域运动矢量预测(atmvp)编码技术编码的;确定被解码的块的空间相邻块是使用帧内块复制(ibc)编码技术编码的;判定空间相邻块不能提供运动矢量来为被解码的块导出时域矢量;以及通过使用与atmvp编码技术相对应的atmvp解码技术以及通过避免使用空间相邻块来为被解码的块提供运动矢量以导出时域矢量。
10.在又一典型的方面,公开了另一种解码视觉信息的方法。该方法包括:从编码表示确定表示视觉信息的一部分的被解码的块是使用可选时域运动矢量预测(atmvp)编码技术编码的;确定参考图片中的并置块是使用帧内块复制(ibc)编码技术编码的;判定参考图片中的并置块不能被用来为被解码的块的子块导出运动矢量;以及通过使用与atmvp编码技术相对应的atmvp解码技术以及通过避免使用参考图片中的并置块来为被解码的块的子块提供时域运动矢量候选。
11.在又一典型的方面,公开了另一种视觉信息处理方法。该方法包括:将视觉信息编码成多个编码图片和多个指示符,多个指示符指示应用的一种或多种编码技术,多个指示符包括帧内块复制(ibc)技术指示符和atmvp技术指示符,其中,与视觉信息相关联的第一图片的第一块使用ibc技术编码,并且与视觉信息相关联的第二图片的第二块使用atmvp技术编码,其中ibc技术使用第一图片的不同块来编码第一图片的第一块,并且atmvp技术使用与视觉信息相关联的第三图片来编码第二图片。在又一典型的方面,上述方法以处理器可执行代码的形式实施,并且存储在计算机可读的程序介质中。
12.在又一典型的方面,公开了一种设备,其被配置为或可操作以执行上述方法。该设备可以包括被编程以实现该方法的处理器。
13.在又一典型的方面,可以实现如本文中所述方法的视频解码器装置。
14.在附图、说明书和权利要求书中更详细地描述了所公开技术的上述方面、以及其他方面和特征。
附图说明
15.图1示出了帧内块复制技术的示例。
16.图2示出了对编码单元(cu)使用可选时域运动矢量预测(atmvp)算法的运动预测的示例。
17.图3示出了根据所公开的技术使用帧内块复制进行视频编码的示例方法的流程图。
18.图4示出了根据所公开的技术使用帧内块复制进行视频编码的另一示例方法的流程图。
19.图5示出了根据所公开的技术使用帧内块复制进行视频解码的示例方法的流程图。
20.图6示出了根据所公开的技术使用帧内块复制进行视频解码的另一示例方法的流程图。
21.图7是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备的结构示例的框图。
22.图8示出了可用于实现本公开技术的各个部分的移动设备的示例实施例的框图。
23.图9是视觉信息处理的示例方法的流程图。
24.图10是视觉信息处理的示例方法的流程图。
具体实施方式
25.为了便于理解,本文中使用了章节标题,并且不将各章节中讨论的技术和实施例的范围仅局限于该章节。
26.由于对诸如视频、图片、三维场景等高分辨率视觉信息的需求日益增加,视频编码方法和技术在现代技术中无所不在。本技术所述的技术可以应用于各种视觉信息,包括视频、图片、三维场景等。视觉信息的图片可以是视频中的帧、图片的一部分、三维场景中的对象、三维场景的一部分等。块可以是视觉信息图片的一部分,诸如编码单元(cu)、最大编码单元(lcu)、样本、预测单元(pu)等,如本技术中所述。视觉信息的子块可以是pu,诸如子cu、
样本等。pu可以是视觉信息的像素、体素或最小分辨量子。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断地被改进以提供更高的编码效率。视频编解码器将未压缩的视频转换为压缩格式,或反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂度、对数据丢失和错误的敏感度、易于编辑、随机访问和端到端延迟(延迟)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg-h第2部分)、待最终确定的通用视频编码标准或其他当前和/或未来的视频编码标准。
27.所公开技术的实施例可以应用于现有的视频编码标准(例如,hevc、h.265)和未来的标准,以提高运行时间性能。在本文件中,使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)仅限于各自的章节。
28.1.参考图片和参考图片列表的示例
29.在hevc中,存在短期和长期两种参考图片。当参考图片不再需要用于预测参考时,可以将其标记为“不用于参考”。hevc引入了一种全新的参考图片管理方法,被称为参考图片集(rps)或缓冲描述。
30.使用rps概念完成将图片标记为“用于短期参考”、“用于长期参考”或“不用于参考”的处理。rps是一组图片指示器,其在每个条带(slice)报头中发出信号,并且由一组短期图片和一组长期图片组成。在对图片的第一个条带报头进行解码后,dpb中的图片将按rps的指定进行标记。在dpb中被rps的短期图片部分指示的图片被保持为短期图片。在dpb中被rps的长期图片部分指示的短期或长期图片被转换为或保持为长期图片。最后,dpb中在rps中没有指示器的图片被标记为不用于参考。因此,所有可能被用作任何后续图片解码顺序预测的参考的已解码的图片必须包含在rps中。
31.rps由一组用于识别dpb中图片的图片顺序计数(poc)值组成。除了对poc信息发信号外,rps还为每个图片发送一个标志。每个标志指示当前图片是否有对应图片是否可用或不可用于参考。应当注意的是,即使参考图片被发信号为对当前图片不可用,它仍被保留在dpb中,并且可能稍后可用于参考,并用于解码未来图片。
32.从poc信息和可用性标志,可以创建表1所示的五个参考图片列表。列表refpicsetstcurrbefore由可供当前图片参考且poc值低于当前图片的poc值的短期图片组成。refpicsetstcurrafter由poc值高于当前图片的poc值的可用短期图片组成。refpicsetstfoll是包含当前图片不可用、但可以用作按解码顺序解码后续图片的参考图片的所有短期图片的列表。最后,列表refpicsetltcurr和refpicsetltfoll分别包含可供当前图片参考和不可供当前图片参考的长期图片。
33.表1参考图片列表的清单
34.35.1.1短期和长期参考图片示例
36.通用序列参数集的语法如下示出:
[0037][0038]
通用条带段(slice segment)报头的语法如下示出:
[0039][0040]
上述语法表中使用的语义定义如下:
[0041]
num_short_term_ref_pic_sets指定sps中包含的st_ref_pic_set()语法结构的
数目。num_short_term_ref_pic_sets的值应在0到64之间(包括0和64)。
[0042]
在一些实施例中,解码器可以为num_short_term_ref_pic_sets+1st_ref_pic_set()语法结构的总数目分配存储器,因为在当前图片的条带报头中可能直接发出一个st_ref_pic_set()语法结构的信号。直接在当前图片的条带报头中发出信号的st_-ref_-pic_set()语法结构具有等于num_-short_-term_-ref_-pic_set的索引。
[0043]
long_term_ref_pics_present_flag等于0指定cvs中的任何编码图片的帧间预测不使用长期参考图片。long_term_ref_pics_present_flag等于1指定cvs中的一个或多个编码图片的帧间预测可以使用长期参考图片。
[0044]
num_long_term_ref_pics_sps指定在sps中指定的候选长期参考图片的数量。num_long_term_ref_pics_sps的值应在0到32之间(包括0和32)。
[0045]
lt_ref_pic_poc_lsb_sps[i]指定sps中的第i个候选长期参考图片的图片顺序计数模块maxpicordercntlsb。用于表示lt_ref_pic_poc_lsb_sps[i]的位数等于log2_max_pic_order_cnt_lsb_minus4+4。
[0046]
used_by_curr_pic_lt_sps_flag[i]等于0指定在sps中指定的第i个候选长期参考图片不被其长期参考图片集(rps)中包含在sps中指定的其第i个候选长期参考图片的图片用于参考。
[0047]
short_term_ref_pic_set_sps_flag等于1指定当前图片的短期rps是基于活动sps中的一个st_ref_pic_set()语法结构导出的,该活动sps由条带报头中的语法元素short_term_ref_pic_set_idx标识。short_term_ref_pic_set_sps_flag等于0指定当前图片的短期rps是基于直接包含在当前图片条带报头中的st_ref_pic_set()语法结构导出的。当num_short_term_ref_pic_sets等于0时,short_term_ref_pic_set_sps_flag的值应等于0。
[0048]
short_term_ref_pic_set_idx将用于导出当前图片的短期rps的语法结构st_ref_pic_set()的索引指定给活动sps中包含的语法结构st_ref_pic_set()的列表。语法元素short_term_ref_pic_set_idx由ceil(log2(num_short_term_ref_pic_set))位表示。当不存在时,short_term_ref_pic_set_idx的值被推断为等于0。short_term_ref_pic_set_idx的值应在0至num_short_term_ref_pic_sets

1的范围内(包含0和num_short_term_ref_pic_sets-1)。
[0049]
在一些实施例中,变量currrpsidx导出如下:
[0050]
‑‑
如果short_term_ref_pic_set_sps_flag等于1,则将currrpsidx设置为等于short_term_ref_pic_set_idx。
[0051]
‑‑
否则,将currrpsidx设置为等于num_short_term_ref_pic_sets。
[0052]
num_long_term_sps指定当前图片的长期rps中的条目的数量,该当前图片是基于活动sps中指定的候选长期参考图片导出的。num_long_term_sps的值应在0到num_long_term_ref_pics_sps的范围内(包括0和num_long_term_ref_pics_sps)。当不存在时,num_long_term_sps的值被推断为等于0。
[0053]
num_long_term_pics指定直接在条带报头发出信号的当前图片的长期rps中条目的数量。当不存在时,num_long_term_pics的值被推断为等于0。
[0054]
在一些实施例中,当nuh_layer_id等于0时,num_long_term_pics的值应小于或等
于sps_max_dec_pic_buffering_minus1[temporalid]-numnegativepics[currrpsidx]-numpositivepics[currrpsidx]-num_long_term_sps

twoversionsofcurrdecpicflag。
[0055]
lt_idx_sps[i]将当前图片的长期rps中第i个条目的索引指定给活动sps中指定的候选长期参考图片的列表。用于表示lt_idx_sps[i]的位数等于ceil(log2(num_long_term_ref_pics_sps))。当不存在时,lt_idx_sps[i]的值被推断为等于0。lt_idx_sps[i]的值应在0到num_long_term_ref_pics_sps-1的范围内(包括0和num_long_term_ref_pics_sps-1)。
[0056]
poc_lsb_lt[i]指定当前图片的长期rps中第i个条目的图片顺序计数模块maxpicordercntlsb的值。poc_lsb_lt[i]语法元素的长度为log2_max_pic_order_cnt_lsb_minus4+4位。
[0057]
used_by_curr_pic_lt_flag[i]等于0指定当前图片的长期rps中的第i个条目不被当前图片用于参考。
[0058]
在一些实施例中,变量poclsblt[i]和usedbycurrpiclt[i]导出如下:
[0059]
‑‑
如果i小于num_long_term_sps,则将poclsblt[i]设置为等于lt_ref_pic_poc_lsb_sps[lt_idx_sps[i]],并且将usedbycurrpiclt[i]设置为等于used_by_curr_pic_lt_sps_flag[lt_idx_sps[i]]。
[0060]
‑‑
否则,将poclsblt[i]设置为等于poc_lsb_lt[i],并且将usedbycurrpiclt[i]设置为等于used_by_curr_pic_lt_flag[i]。
[0061]
delta_poc_msb_present_flag[i]等于1指delta_poc_msb_cycle_lt[i]存在。delta_poc_msb_present_flag[i]等于0指定delta_poc_msb_cycle_lt[i]不存在。
[0062]
在一些实施例中,让prevtid0pic作为以解码顺序的前一图片,其具有temporalid等于0并且不是rasl、radl或slnr图片。让setofprevpocvals作为包含以下的集合:
[0063]
‑‑
prevtid0pic的picordercntval,
[0064]
‑‑
prevtid0pic的rps中每个图片的picordercntval,
[0065]
‑‑
以解码顺序在prevtid0pic之后且以解码顺序在当前图片之前的每个图片的picordercntval。
[0066]
在一些实施例中,当setofprevpocvals中有多于一个值时(其中值模块maxpicordercntlsb等于poclsblt[i]),delta_poc_msb_present_flag[i]应等于1。
[0067]
delta_poc_msb_cycle_lt[i]被用于确定当前图片长期rps中第i个条目的图片顺序计数值的最有效位的值。当delta_poc_msb_cycle_lt[i]不存在时,推断其等于0。
[0068]
在一些实施例中,变量deltapocmsbcyclelt[i]导出如下:
[0069]
如果(i==0||i==num_long_term_sps)
[0070]
deltapocmsbcyclelt[i]=delta_poc_msb_cycle_lt[i]
[0071]
否则deltapocmsbcyclelt[i]=delta_poc_msb_cycle_lt[i]+deltapocmsbcyclelt[i-1]
[0072]
1.2短期和长期参考图片之间的运动矢量预测(mvp)示例
[0073]
在一些实施例中,仅当目标参考图片类型和预测参考图片类型相同时,才允许进行运动矢量预测。换句话说,当类型不同时,不允许进行运动矢量预测。
[0074]
高级运动矢量预测(amvp)是包含现有实现的运动矢量预测的示例。现有amvp实施
的相关部分如下所述。
[0075]
运动矢量mvlxa和可用性标志availableflaglxa按以下顺序步骤导出:
[0076]
(1)样本位置(xnba0,ynba0)被设置为等于(xpb-1,ypb+npbh),样本位置(xnba1,ynba1)被设置为等于(xnba0,ynba0-1)。
[0077]
(7)当availableflaglxa等于0时,以下适用于(xnbak,ynbak),从(xnba0,ynba0)到(xnba1,ynba1)或直到availableflaglxa等于1:
[0078]
‑‑
当availableak等于true且availableflaglxa等于0时,以下内容适用:
[0079]
如果predflaglx[xnbak][ynbak]等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxlx[xnbak][ynbak],refpiclistx),则将availableflaglxa设置为1,并做出以下分配:
[0080]
mvlxa=mvlx[xnbak][ynbak]
[0081]
refidxa=refidxlx[xnbak][ynbak]
[0082]
refpiclista=refpiclistx
[0083]
否则,当predflagly[xnbak][ynbak](其中y=!x)等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxly[xnbak][ynbak],refpiclisty)时,将availableflaglxa设置为1。
[0084]
运动矢量mvlxb和可用性标志availableflaglxb按以下顺序步骤导出:
[0085]
(1)样本位置(xnbb0,ynbb0),(xnbb1,ynbb1)和(xnbb2,ynbb2)分别设置为(xpb+npbw,ypb-1),(xpb+npbw-1,ypb-1)和(xpb-1,ypb-1)。
[0086]
(5)当isscaledflaglx等于0时,availableflaglxb设置为0,并且以下适用于(xnbbk,ynbbk),从(xnbb0,ynbb0)到(xnbb2,ynbb2)或直到availableflaglxb等于1:
[0087]
‑‑
用亮度位置(xcb,ycb)、当前亮度编码块大小ncbs、亮度位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnby,ynby)设置等于(xnbbk,ynbbk)、以及分区索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,,并将输出分配给预测块可用性标志availablebk。
[0088]
‑‑
当availablebk等于true且availableflaglxb等于0时,以下内容适用:
[0089]
如果predflaglx[xnbbk][ynbbk]等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxlx[xnbbk][ynbbk],refpiclistx),则将availableflaglxb设为等于1,并做出以下分配:
[0090]
mvlxb=mvlx[xnbbk][ynbbk]
[0091]
refidxb=refidxlx[xnbbk][ynbbk]
[0092]
refpiclistb=refpiclistx
[0093]
否则,当predflagly[xnbbk][ynbbk](其中y=!x)等于1且longtermrefpic(currpic,currpbrefidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxly[xnbbk][ynbbk],refpiclisty),则将availableflaglxb设为等于1,并进行以下分配:
[0094]
mvlxb=mvly[xnbbk][ynbbk]。
[0095]
时间运动矢量预测(tmvp)是包含现有实现的运动矢量预测的另一个示例。现有tmvp实施的相关部分如下所述。
[0096]
变量mvlxcol和availableflaglxcol导出如下:
[0097]
如果longtermrefpic(currpic,currpb,refidxlx,lx)不等于longtermrefpic(colpic,colpb,refidxcol,listcol),则将mvlxcol的两个分量都设为等于0且将availableflaglxcol设为等于0.
[0098]
否则,将变量availableflaglxcol设置为1,refpiclistcol[refidxcol]设置为colpic指定的并置图片中包含预测块colpb的条带的参考图片列表listcol中的参考索引为refidxcol的图片。
[0099]
2.帧内块复制(ibc)的示例实施例
[0100]
帧内块复制(ibc)将运动补偿的概念从帧间编码扩展到帧内编码。如图1所示,当应用ibc时,通过同一图片中的参考块预测当前块。在对当前块进行编码或解码之前,必须已重建参考块中的样本。虽然ibc对于大多数相机捕获的序列不是这样有效,但它显示出了对屏幕内容的显著编码增益。原因是在屏幕内容图片中有许多重复的模式,诸如图标和文本字符。ibc可以有效地消除这些重叠模式之间的冗余。
[0101]
在hevc-scc中,如果选择当前图片作为参考图片,则可以使用内部编码编码单元(cu)。在这种情况下,mv被重命名为块矢量(bv),并且bv始终具有整数像素的精度。为了与主要规格hevc相兼容,当前图片在解码图片缓冲区(dpb)中被标记为“长期”参考图片。应注意的是,类似地,在多视图/3d视频编码标准中,视图间参考图片也被标记为“长期”参考图片。
[0102]
2.1启用ibc时图片标记的实施例
[0103]
pps中与ibc相关的语义。pps_curr_pic_ref_enabled_flag等于1指定引用pps的图片可能包含在图片本身条带的参考图片列表中。pps_curr_pic_ref_enabled_flag等于0指定引用pps的图片从不包含在图片条带的参考图片列表中。当不出现时,pps_curr_pic_ref_enabled_flag的值被推断为等于0。
[0104]
当sps_curr_pic_ref_enabled_flag等于0时pps_curr_pic_ref_enabled_flag的值应等于0是比特流一致性的要求。
[0105]
变量twoversionsofcurrdecpicflag推导如下:
[0106]
twoversionsofcurrdecpicflag=pps_curr_pic_ref_enabled_flag&&(sample_adaptive_offset_enabled_flag||!pps_deblocking_filter_disabled_flag||deblocking_filter_override_enabled_flag)
[0107]
当sps_max_dec_pic_buffering_minus1[temporalid]等于0时twoversionsofcurrdecpicflag的值应当等于0.
[0108]
解码过程。在调用循环过滤进程后,当前解码的图片被存储在dpb中的空图片存储缓冲区中,dpb的充满度增加1,此图片被标记为“用于短期参考”。
[0109]
当twoversionsofcurrdecpicflag等于1时,按照第f.8.7[1]条规定的循环内过滤进程调用前的当前解码图片被存储在dpb中的空图片存储缓冲区中,dpb的充满度增加1,此图片标记为“用于长期参考”。
[0110]
3.联合探索模型(jem)示例
[0111]
在一些实施例中,使用名为联合探索模型(jem)的参考软件来探索未来的视频编码技术。在jem中,基于子块的预测被用于多种编码工具中,诸如仿射预测、可选时域运动矢
量预测(atmvp)、空时运动矢量预测(stmvp)、双向光流(bio)、帧速率上转换(fruc)、局部自适应运动矢量分辨率(lamvr)、重叠块运动补偿(obmc)、局部照明补偿(lic)和译码器侧运动矢量优化(dmvr)。
[0112]
3.1可选时域运动矢量预测(atmvp)的示例
[0113]
在atmvp方法中,通过从小于当前cu的块中获取多组运动信息(包括运动矢量和参考指数)修改时域运动矢量预测(tmvp)方法。
[0114]
图2示出了cu 600的atmvp运动预测处理的示例。atmvp方法分两步预测cu 600内子cu 601的运动矢量。第一步是用时域矢量识别参考图片650中的对应块651。参考图片650也称为运动源图片。第二步是将当前的cu 600分割成子cu 601,并且从每个子cu对应的块中获取每个子cu的运动矢量和参考指数。
[0115]
在第一步中,参考图片650和对应块由当前cu 600的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前cu 600的merge候选列表中的第一merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和到运动源图片的索引。这样,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)始终位于相对于当前cu的右下角或中心位置。
[0116]
在第二步中,通过将时域矢量添加到当前cu的坐标中,通过运动源图片650中的时域矢量识别子cu 651的对应块。对于每个子cu,使用其对应块的运动信息(例如,覆盖中心样本的最小运动网格)来导出子cu的运动信息。在识别出对应n
×
n块的运动信息后,将其转换为当前子cu的运动矢量和参考指数,与hevc的tmvp方法相同,其中应用运动缩放和其他处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc都小于当前图片的poc),并可能使用运动矢量mvx(例如,与参考图片列表x对应的运动矢量)来为每个子cu预测运动矢量mvy(例如,x等于0或1且y等于1-x)。
[0117]
4.视频编码中ibc的示例方法
[0118]
图3示出使用帧内块复制进行视频编码的示例性方法的流程图。方法300包括在步骤310处,确定是否使用运动补偿算法对当前图片的当前块进行编码。方法300包括在步骤320处,基于该确定,通过选择性地将帧内块复制应用于当前块对当前块进行编码。更一般来说,是否将帧内块复制应用到当前块是基于是否使用特定的运动补偿算法对当前块进行编码。
[0119]
图4示出了使用帧内块复制进行视频编码的另一个示例方法的流程图。方法400包括在步骤410处,确定是否使用帧内块复制对当前图片的当前块进行编码。方法400包括在步骤420处,基于该确定,通过选择性地将运动补偿算法应用于当前块对当前块进行编码。更一般来说,是否使用运动补偿算法对当前块进行编码是基于是否使用帧内块复制对当前块进行编码。
[0120]
图5示出了使用帧内块复制进行视频解码的示例性方法的流程图。该方法500包括在步骤510处,确定是否使用运动补偿算法对当前图片的当前块进行解码。方法500包括在步骤520处,基于该确定,通过选择性地将帧内块复制应用于当前块来对当前块进行解码。更一般来说,是否将帧内块复制应用到当前块是基于是否使用特定的运动补偿算法对当前块进行解码。
[0121]
图6示出了使用帧内块复制进行视频解码的另一个示例性方法的流程图。方法600
包括在步骤610处,确定是否使用帧内块复制对当前图片的当前块进行解码。方法600包括在步骤620处,基于该确定,通过选择性地将运动补偿算法应用于当前块对当前块进行解码。更一般来说,是否使用运动补偿算法对当前块进行解码是基于是否使用帧内块复制对当前块进行解码。
[0122]
在图3至图6和图9至图10的上下文中所述的方法300、400、500、605、900和1000可以进一步包括确定运动补偿算法是否与帧内块复制兼容的步骤。在下面的示例中说明了对于不同的特定运动补偿算法,帧内块复制和运动补偿算法的兼容性。
[0123]
例1:提出了在atmvp的第一步中使用的时域矢量不能从用ibc编码的相邻块中得到。在一个示例中,当前图片作为其参考图片的相邻块在atmvp的第一步中被标记为“不可用”或内部编码。
[0124]
例2:提出了如果在atmvp的第二步中使用ibc对子cu的对应块进行编码,则将子cu的对应块标记为“不可用”或“内部编码”。
[0125]
例3:或者,提出了如果在atmvp的第二步中使用ibc对对应块进行编码,则将子cu对应块的运动信息复制到子cu,而不进行任何缩放。子cu以与对应块相同的mv应用ibc,但参考图片更改为当前图片。
[0126]
例4:可以添加一个以上的atmvp候选,其中一个可以使用上述方法从时域相邻块中导出,并且另一个可以从时域相邻块中导出(如果并置子cu以ibc编码,则至少一个子cu具有不同的导出子cu的运动信息的方法)。
[0127]
下面列出的是本技术中描述的技术的一些示例,以条款的形式列出。本技术中使用的块可以是像素、体素、子像素和/或子体素的连续或非连续集合。例如,块可以是直线围成的,例如4x 4正方形、6x 4矩形,或者由曲线围成的,例如椭圆。
[0128]
本技术中使用的视觉信息的一部分可以是视觉信息的子集。本技术中使用的编码表示可以是表示已使用本技术中描述的技术之一编码的可视信息的位流。本技术中使用的指示可以是编码表示中的标志或字段,也可以是多个单独的标志或字段。
[0129]
本技术中使用的解码技术可由解码器应用,并且可以在硬件或软件中实现。解码技术可以以相反的顺序撤消编码器所做的一切。当适当的解码技术应用到编码表示时,结果是可以获得视觉信息。本技术中所用的多个块中的初始块是出现在编码表示中第一块之前的块。并置参考图片可以是用于编码/解码正在被编码/解码的块的参考图片。
[0130]
1.一种解码视觉信息的方法(例如,图9中描绘的方法900),包括:
[0131]
从编码表示确定(902)表示所述视觉信息的一部分的被解码的块是使用可选时域运动矢量预测(atmvp)编码技术编码的;
[0132]
确定(904)所述被解码的块的空间相邻块是使用帧内块复制(ibc)编码技术编码的;
[0133]
判定(906)所述空间相邻块不能提供运动矢量来为所述被解码的块导出时域矢量;以及
[0134]
通过使用与所述atmvp编码技术相对应的atmvp解码技术、并且通过避免使用所述空间相邻块来为所述被解码的块提供所述运动矢量来导出所述时域矢量,解码(908)所述编码表示。
[0135]
2.一种解码视觉信息的方法(例如,图10中描绘的方法1000),包括:
[0136]
从编码表示确定(1002)表示所述视觉信息的一部分的被解码的块是使用可选时域运动矢量预测(atmvp)编码技术编码的;
[0137]
确定(1004)参考图片中的并置块是使用帧内块复制(ibc)编码技术编码的;
[0138]
判定(1006)参考图片中的所述并置块不能被用于为所述被解码的块的子块导出运动矢量;以及
[0139]
通过使用与所述atmvp编码技术相对应的atmvp解码技术、并且通过避免使用所述参考图片中的所述并置块来为所述被解码的块的所述子块提供时域运动矢量候选,解码(1008)所述编码表示。
[0140]
3.根据条款1至2中任一项所述的方法,包括:
[0141]
从所述编码的视觉信息中获取表示第一图片的编码的多个块;
[0142]
解码所述多个块中的初始块;以及
[0143]
在解码所述初始块时,基于所述解码的结果解码所述多个块的剩余中的第一块。
[0144]
4.根据条款1至3中任一项所述的方法,包括:
[0145]
从所述编码的视觉信息中获取表示第二图片的编码的多个块;
[0146]
使用所述atmvp解码技术、通过对所述多个块中表示所述第二图片的所述编码的被解码的块执行两步处理,解码与所述视觉信息相关联的所述第二图片的编码,所述两步处理包括:
[0147]
在所述两步处理的第一步中,获取所述编码的视觉信息的解码参考图片、所述参考图片中与所述被解码的块相对应的被解码的对应块、以及包含所述空间相邻块的运动矢量的时域矢量,其中所述空间相邻块是所述被解码的块的空间邻居;
[0148]
在所述两步处理的第二步中,获取表示所述被解码的块的多个子块,在所述视觉信息的所述参考图片中为所述多个子块中的每个子块识别对应子块,获取所述对应子块的运动矢量,并且基于所述对应子块的所述运动矢量为所述多个子块中的每个子块导出所述运动矢量;以及
[0149]
基于所述子块的运动矢量以及所述视觉信息的所述参考图片中的对应子块,解码所述多个子块。
[0150]
5.根据条款4所述的方法,包括:
[0151]
假设所述空间相邻块不是使用所述ibc编码技术编码的。
[0152]
6.根据条款4至5中任一项所述的方法,包括:
[0153]
解码指示符,所述指示符将所述空间相邻块标明为对atmvp解码技术的所述第一步中的使用为不可用或内部编码。
[0154]
7.根据条款4至6中任一项所述的方法,包括:
[0155]
解码指示符,所述指示符将所述对应子块标明为对atmvp解码技术的所述第二步中的使用为不可用或内部编码。
[0156]
8.根据条款4至5中任一项所述的方法,包括:
[0157]
解码指示符,所述指示符在atmvp解码技术的所述第一步中将所述空间相邻块标明为使用内部编码技术。
[0158]
9.根据条款4至5中任一项所述的方法,包括:
[0159]
解码指示符,所述指示符在atmvp解码技术的所述第二步中将所述对应子块标明
为使用内部编码技术。
[0160]
10.根据条款1至9中任一项所述的方法,包括:
[0161]
在所述被编码的块的所述对应块是使用所述ibc编码技术编码的情况下,将所述对应子块的运动矢量复制给所述被编码的块的子块,而不对所述对应子块的所述运动矢量进行缩放。
[0162]
11.根据条款4所述的方法,包括:
[0163]
解码与所述对应块相关联的指示符,所述指示符指示所述对应块是使用所述ibc编码技术编码的;以及将所述第二图片用作所述参考图片来解码所述被解码的块。
[0164]
12.根据条款4至11中任一项所述的方法,包括:
[0165]
解码与所述对应子块相关联的指示符,所述指示符指示所述对应子块是使用所述ibc编码技术编码的;以及用使用所述ibc编码技术编码的所述对应子块解码所述子块。
[0166]
13.根据条款4所述的方法,包括:
[0167]
在所述被解码的块的所述对应块是使用所述ibc编码技术编码的情况下,将所述对应子块的运动矢量复制给所述被解码的块的子块,而不对所述对应子块的所述运动矢量进行缩放。
[0168]
14.根据条款13所述的方法,包括:
[0169]
将所述参考图片更改为包含所述被解码的块的所述第二图片。
[0170]
15.根据条款4所述的方法,包括:
[0171]
基于至少一个使用所述ibc编码技术编码的对应子块的所述运动矢量,导出所述被解码的块的所述子块的所述运动矢量。
[0172]
第1条款至第15条款所述方法的其他方面和变型在先前章节中进行了描述。解码方法可由视频解码器实现,所述视频解码器可包括诸如关于图7和图8所述的硬件平台。
[0173]
16.一种编码视觉信息的方法,包括:
[0174]
将所述视觉信息编码成多个编码图片和指示所应用的一个或多个编码技术的多个指示符,所述多个指示符包括帧内块复制(ibc)技术指示符和可选时域运动矢量预测(atmvp)技术指示符,其中与所述视觉信息相关联的第一图片的第一块使用所述ibc技术编码,并且与所述视觉信息相关联的第二图片的第二块使用所述atmvp技术编码,其中所述ibc技术使用所述第一图片的不同块来编码所述第一图片的第一块,并且所述atmvp技术使用与所述视觉信息相关联的第三图片来编码所述第二图片。
[0175]
17.根据条款16所述的方法,包括:
[0176]
将所述第一图片划分成多个块;
[0177]
编码所述多个块中的初始块;以及
[0178]
在编码所述初始块时,基于所述初始块编码所述多个块中的第一块。
[0179]
18.根据条款16至17中任一项所述的方法,包括:
[0180]
使用所述atmvp技术、通过将所述第二图片划分成包括被编码的块的多个块并且执行两步处理,编码与所述视觉信息相关联的所述第二图片,所述两步处理包括:
[0181]
在所述两步处理的第一步中,识别所述视觉信息的参考图片、所述参考图片中与所述被编码的块相对应的对应块、以及包括空间相邻块的运动矢量的时域矢量,其中所述空间相邻块是所述被编码的块的空间邻居;
[0182]
在所述两步处理的第二步中,将被编码的块分成多个子块,在所述视觉信息的所述参考图片中为所述多个子块中的每个子块识别对应子块,获取所述对应子块的运动矢量,并且基于所述对应子块的所述运动矢量为所述多个子块中的每个子块导出运动矢量;以及
[0183]
基于所述子块的所述运动矢量、以及所述视觉信息的所述参考图片中的所述对应子块,编码所述多个子块中的所述子块。
[0184]
19.根据条款18所述的方法,包括:
[0185]
要求所述空间相邻块不是使用所述ibc技术编码的。
[0186]
20.根据条款18或19所述的方法,包括:
[0187]
在所述被编码的块的所述空间相邻块是使用ibc技术编码的情况下,编码指示符,所述指示符将所述空间相邻块标明为对atmvp技术的所述第一步中的使用为不可用或内部编码。
[0188]
21.根据条款18至20中任一项所述的方法,包括:
[0189]
在所述视觉信息的所述参考图片是使用ibc技术编码的情况下,编码指示符,所述指示符将所述对应子块标明为对atmvp技术的所述第二步中的使用为不可用或内部编码。
[0190]
22.根据条款18或19所述的方法,包括:
[0191]
在所述被编码的块的所述空间相邻块是使用ibc技术编码的情况下,编码指示符,所述指示符将所述空间相邻块标明为对atmvp技术的所述第一步中的使用为内部编码。
[0192]
23.根据条款18至20中任一项所述的方法,包括:
[0193]
在所述视觉信息的所述参考图片是使用ibc技术编码的情况下,编码指示符,所述指示符将所述对应子块标明为对atmvp技术的所述第二步中的使用为内部编码。
[0194]
24.根据条款18所述的方法,包括:
[0195]
在所述被编码的块的所述对应块是使用所述ibc技术编码的情况下,将所述对应子块的运动矢量复制给所述被编码的块的子块,而不对所述对应子块的所述运动矢量进行缩放。
[0196]
25.根据条款24所述的方法,包括:
[0197]
将所述参考图片更改为包含所述被编码的块的所述第二图片。
[0198]
26.根据条款18至25中任一项所述的方法,包括:
[0199]
基于至少一个使用所述ibc技术编码的对应子块的所述运动矢量,导出所述被编码的块的所述子块的所述运动矢量。
[0200]
第16条款至第26条款所述方法的其他方面和变型在先前章节中进行了描述。解码方法可由视频解码器实现,所述视频解码器可包括诸如关于图7和图8所述的硬件平台。
[0201]
27.一种视频处理装置,包括处理器,其被配置为实现条款1至26中一项或多项所述的方法。
[0202]
28.一种其上存储了处理器可执行代码的计算机可读介质,当执行所述代码时,使处理器实现条款1至26中一项或多项所述的方法。
[0203]
5.公开技术的示例实施例
[0204]
图7是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备700的结构示例的框图,包括(但不限于)方法300、400、500和600。在图7中,计算机系统700包括
通过互连725连接的一个或多个处理器705和存储器710。互连725可以表示由适当的桥、适配器或控制器连接的任何一条或多条单独的物理总线、点对点连接或两者。因此,互连725可以包括例如系统总线、外围组件互连(pci)总线、超传输或行业标准体系结构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)、iic(i2c)总线或电气与电子工程师协会(ieee)标准674总线(有时被称为“火线”)。
[0205]
处理器705可以包括中央处理单元(cpu),来控制例如主机的整体操作。在一些实施例中,处理器1005通过执行存储在存储器710中的软件或固件来实现这一点。处理器1005可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)等,或这些器件的组合。
[0206]
存储器710可以是或包括计算机系统的主存储器。存储器710代表任何适当形式的随机存取存储器(ram)、只读存储器(rom)、闪存等,或这些设备的组合。在使用中,存储器710除其他外可包含一组机器指令,当处理器705执行该指令时,使处理器705执行操作以实现本公开技术的实施例。
[0207]
通过互连725连接到处理器705的还有(可选的)网络适配器715。网络适配器715为计算机系统700提供与远程设备(诸如存储客户机和/或其他存储服务器)通信的能力,并且可以是例如以太网适配器或光纤通道适配器。
[0208]
图8示出了可以用于实施本公开技术的各个部分的移动设备800的示例实施例的框图,包括(但不限于)方法300、400、500和600。移动设备800可以是笔记本电脑、智能手机、平板电脑、相机或其他能够处理视频的设备。移动设备800包括处理器或控制器801来处理数据,以及与处理器801通信的存储器802来存储和/或缓冲数据。例如,处理器801可以包括中央处理单元(cpu)或微控制器单元(mcu)。在一些实现中,处理器801可以包括现场可编程门阵列(fpga)。在一些实现中,移动设备800包括或与图形处理单元(gpu)、视频处理单元(vpu)和/或无线通信单元通信,以实现智能手机设备的各种视觉和/或通信数据处理功能。例如,存储器802可以包括并存储处理器可执行代码,当处理器801执行该代码时,将移动设备800配置为执行各种操作,例如,接收信息、命令和/或数据、处理信息和数据,以及将处理过的信息/数据发送或提供给另一个设备,诸如执行器或外部显示器。
[0209]
为了支持移动设备800的各种功能,存储器802可以存储信息和数据,例如指令、软件、值、图片以及处理器801处理或引用的其他数据。例如,可以使用各种类型的随机存取存储器(ram)设备、只读存储器(rom)设备、闪存设备和其他合适的存储介质来实现存储器802的存储功能。在一些实施例中,移动设备800包括输入/输出(i/o)单元803,以将处理器801和/或存储器802与其他模块、单元或设备进行接口。例如,i/o单元803可以与处理器801和内存802进行接口,以利用与典型数据通信标准兼容的各种无线接口,例如,在云中的一台或多台计算机和用户设备之间。在一些实现中,移动设备800可以通过i/o单元803使用有线连接与其他设备进行接口。移动设备800还可以与其他外部接口(例如,数据存储器)和/或可视或音频显示设备804进行接口,以检索和传输可由处理器处理、存储在存储器中或显示在显示设备804或外部设备的输出单元上的数据和信息。例如,显示设备804可以显示包括块(cu,pu或tu)的视频帧,该块基于是否使用运动补偿算法并且根据所公开的技术应用帧内块复制。
[0210]
在一些实施例中,视频解码器装置可以实现视频解码方法,其中,如本文所述的帧
内块复制被用于视频解码。该方法可以类似于上述方法300、400、500和600。
[0211]
在一些实施例中,视频解码的解码器端方法可以使用帧内块复制,通过使用运动补偿算法确定当前图片的当前块是否要解码来提高视频质量,并且基于该确定,通过选择性地将帧内块复制应用于当前块来对当前块进行解码。
[0212]
在其他实施例中,视频解码的解码器端方法可以使用帧内块复制,通过确定是否使用帧内块复制对当前图片的当前块进行解码来提高视频质量,并且基于该确定,通过选择性地将运动补偿算法应用于当前块来对当前块进行解码。
[0213]
在一些实施例中,视频解码方法可以使用在硬件平台上实现的解码装置来实现,如图7和图8所述。
[0214]
下面是通过将ibc合并到vtm-1.0中所测量到的改进,vtm-1.0是名为通用视频编码(vvc)的视频编码标准的参考软件。vtm代表vvc测试模型。
[0215][0216]
在上表中,“y”、“u”、“v”代表yuv颜色编码系统中的颜色,yuv颜色编码系统在考虑人类感知的情况下对颜色图片或视频进行编码。enct和dect分别表示使用ibc的编码和解码时间与不使用ibc的编码和解码时间之比。具体来说,
[0217]
enct=测试编码时间(testencodingtime)/(锚编码时间)anchorencodingtime
[0218]
dect=测试编码时间(testdecodingtime)/(锚编码时间)anchordecodingtime
[0219]
各种类别(诸如a1、a2等)代表一组用于测试各种视频编码技术性能的标准视频序列。“y”、“u”、“v”列下的负百分比表示将ibc添加到vtm-1.0时的比特率节省。enct和dect列下的超过100%的百分比表示使用ibc进行编码/解码比不使用ibc进行编码/解码慢多少。例如,150%意味着使用ibc进行编码/解码比不使用ibc进行编码/解码慢50%。低于100%的百分比表示使用ibc进行编码/解码比不使用ibc进行编码/解码快多少。上表中显示的两个类(f类和scc类)表明比特率节省超过3%。
[0220]
从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了权利要求限定的之外,本发明公开的技术不受限制。
[0221]
本专利文件中描述的主题的实施和功能操作可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实施可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的和非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设
备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。
[0222]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0223]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0224]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0225]
本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“a”、“an”和“the”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。
[0226]
虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0227]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0228]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中所描述
和说明的做出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1