帧内块复制和双向光流的交互
1.相关申请的交叉引用
2.根据适用的专利法和/或《巴黎公约》的规定,本技术及时要求于2018年6月5日提交的国际专利申请号pct/cn2018/089920的优先权和利益。将国际专利申请号pct/cn2018/089920的全部公开以引用方式并入本文,作为本技术公开的一部分。
技术领域
3.一般来说,本专利文件针对视频编解码技术。
背景技术:4.运动补偿是视频处理中的一种技术,通过考虑摄像机和/或视频中的对象的运动,给定先前帧和/或将来帧来预测视频中的帧。运动补偿可以用于视频数据的编码和解码中以实现视频压缩。
技术实现要素:5.描述了与用于运动补偿的帧内块复制相关的设备、系统和方法。
6.在一个典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频编码方法。该方法包括:确定是否使用运动补偿算法对当前图片的当前块进行编码;以及基于该确定,通过将帧内块复制选择性地应用到当前块对当前块进行编码。
7.在另一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频编码的另一种方法。该方法包括:确定是否使用帧内块复制对当前图片的当前块进行编码;以及基于该确定,通过将运动补偿算法选择性地应用到当前块对当前块进行编码。
8.在又一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频解码方法。该方法包括:确定是否使用运动补偿算法对当前图片的当前块进行解码;以及基于该确定,通过将帧内块复制选择性地应用到当前块对当前块进行解码。
9.在又一典型的方面,可以使用所公开的技术来提供使用帧内块复制的视频解码的另一种方法。该方法包括:确定是否使用帧内块复制对当前图片的当前块进行解码;以及基于该确定,通过将运动补偿算法选择性地应用到当前块对当前块进行解码。
10.在另一示例方面,公开了一种对视觉信息的编码表示进行解码的方法。该方法包括确定表示视觉信息的一部分的被解码的第一编码块是使用第一编码技术进行编码的;通过使用与第一编码技术相对应的第一解码技术,并且通过不使用与第二编码技术相对应的第二解码技术,对编码表示进行解码;其中所述两种解码技术中的一种对应于使用同一视频图片作为参考图片对所述被解码的块进行编码的编码技术,并且所述两种解码技术中的另一种对应于双向光流(bio)技术,所述bio技术使用具有编码所述被解码的块的所述视觉信息的光流信息细化预测样本。
11.在另一示例方面,公开了一种生成视觉信息的编码表示的方法。该方法包括获得表示视觉信息的一部分的第一编码块;通过使用第一编码技术并且通过不使用第二编码技
术来对第一编码块进行编码;其中,两种编码技术中的一种为使用同一视频图片作为参考图片对要编码的块进行编码,并且另一种编码技术对应于双向光流(bio)技术,所述bio技术使用具有编码所述要编码的块的所述视觉信息的光流信息细化预测样本。
12.在又一典型的方面,上述方法以处理器可执行代码的形式实施,并且存储在计算机可读的程序介质中。
13.在又一典型的方面,公开了一种设备,其被配置为或可操作以执行上述方法。该设备可以包括被编程以实现该方法的处理器。
14.在又一典型的方面,可以实现如本文中所述方法的视频解码器装置。
15.在附图、说明书和权利要求书中更详细地描述了所公开技术的上述方面、以及其他方面和特征。
附图说明
16.图1示出了帧内块复制技术的示例。
17.图2示出了由双向光流(bio)算法使用的光流轨迹的示例。
18.图3a和图3b示出了使用无块扩展的双向光流(bio)算法的示例快照。
19.图4示出了根据所公开的技术使用帧内块复制进行视频编码的示例方法的流程图。
20.图5示出了根据所公开的技术使用帧内块复制进行视频编码的另一示例方法的流程图。
21.图6示出了根据所公开的技术使用帧内块复制进行视频解码的示例方法的流程图。
22.图7示出了根据所公开的技术使用帧内块复制进行视频解码的另一示例方法的流程图。
23.图8是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备的结构示例的框图。
24.图9示出了可用于实现本公开技术的各个部分的移动设备的示例实施例的框图。
25.图10是视频处理的示例方法的流程图。
26.图11是视频处理的示例方法的流程图。
具体实施方式
27.为了便于理解,本文中使用了章节标题,并且不将各章节中讨论的技术和实施例的范围仅局限于该章节。
28.由于对诸如视频、图片、三维场景等高分辨率视觉信息的需求日益增加,视频编码方法和技术在现代技术中无所不在。本技术所述的技术可以应用于各种视觉信息,包括视频、图片、三维场景等。视觉信息的图片可以是视频中的帧、图片的一部分、三维场景中的对象、三维场景的一部分等。块可以是视觉信息图片的一部分,诸如编码单元(cu)、最大编码单元(lcu)、样本、预测单元(pu)等,如本技术中所述。视觉信息的子块可以是pu,诸如子cu、样本等。pu可以是视觉信息的像素、体素或最小分辨量子。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断地被改进以提供更高的编码效率。视频编解码
器将未压缩的视频转换为压缩格式,或反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂度、对数据丢失和错误的敏感度、易于编辑、随机访问和端到端延迟(延迟)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg-h第2部分)、待最终确定的通用视频编码标准或其他当前和/或未来的视频编码标准。
29.所公开技术的实施例可以应用于现有的视频编码标准(例如,hevc、h.265)和未来的标准,以提高运行时间性能。在本文件中,使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)仅限于各自的章节。
30.1.参考图片和参考图片列表的示例
31.在hevc中,存在短期和长期两种参考图片。当参考图片不再需要用于预测参考时,可以将其标记为“不用于参考”。hevc引入了一种全新的参考图片管理方法,被称为参考图片集(rps)或缓冲描述。
32.使用rps概念完成将图片标记为“用于短期参考”、“用于长期参考”或“不用于参考”的处理。rps是一组图片指示器,其在每个条带报头中发出信号,并且由一组短期图片和一组长期图片组成。在对图片的第一个条带报头进行解码后,dpb中的图片将按rps的指定进行标记。在dpb中被rps的短期图片部分指示的图片被保持为短期图片。在dpb中被rps的长期图片部分指示的短期或长期图片被转换为或保持为长期图片。最后,dpb中在rps中没有指示器的图片被标记为不用于参考。因此,所有可能被用作任何后续图片解码顺序预测的参考的已解码的图片必须包含在rps中。
33.rps由一组用于识别dpb中图片的图片顺序计数(poc)值组成。除了对poc信息发信号外,rps还为每个图片发送一个标志。每个标志指示当前图片是否有对应图片是否可用或不可用于参考。应当注意的是,即使参考图片被发信号为对当前图片不可用,它仍被保留在dpb中,并且可能稍后可用于参考,并用于解码未来图片。
34.从poc信息和可用性标志,可以创建表1所示的五个参考图片列表。列表refpicsetstcurrbefore由可供当前图片参考且poc值低于当前图片的poc值的短期图片组成。refpicsetstcurrafter由poc值高于当前图片的poc值的可用短期图片组成。refpicsetstfoll是包含当前图片不可用、但可以用作按解码顺序解码后续图片的参考图片的所有短期图片的列表。最后,列表refpicsetltcurr和refpicsetltfoll分别包含可供当前图片参考和不可供当前图片参考的长期图片。
35.表1参考图片列表的清单
[0036][0037]
1.1短期和长期参考图片示例
[0038]
通用序列参数集的语法如下示出:
[0039][0040]
通用条带段报头的语法如下示出:
[0041][0042]
上述语法表中使用的语义定义如下:
[0043]
num_short_term_ref_pic_sets指定sps中包含的st_ref_pic_set()语法结构的
数目。num_short_term_ref_pic_sets的值应在0到64之间(包括0和64)。
[0044]
在一些实施例中,解码器可以为num_short_term_ref_pic_sets+1st_ref_pic_set()语法结构的总数目分配存储器,因为在当前图片的条带报头中可能直接发出一个st_ref_pic_set()语法结构的信号。直接在当前图片的条带报头中发出信号的st_-ref_-pic_set()语法结构具有等于num_-short_-term_-ref_-pic_set的索引。
[0045]
long_term_ref_pics_present_flag等于0指定cvs中的任何编码图片的帧间预测不使用长期参考图片。long_term_ref_pics_present_flag等于1指定cvs中的一个或多个编码图片的帧间预测可以使用长期参考图片。
[0046]
num_long_term_ref_pics_sps指定在sps中指定的候选长期参考图片的数量。num_long_term_ref_pics_sps的值应在0到32之间(包括0和32)。
[0047]
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。
[0048]
used_by_curr_pic_lt_sps_flag[i]等于0指定在sps中指定的第i个候选长期参考图片不被其长期参考图片集(rps)中包含在sps中指定的其第i个候选长期参考图片的图片用于参考。
[0049]
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。
[0050]
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)。
[0051]
在一些实施例中,变量currrpsidx导出如下:
[0052]
‑‑
如果short_term_ref_pic_set_sps_flag等于1,则将currrpsidx设置为等于short_term_ref_pic_set_idx。
[0053]
‑‑
否则,将currrpsidx设置为等于num_short_term_ref_pic_sets。
[0054]
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。
[0055]
num_long_term_pics指定直接在条带报头发出信号的当前图片的长期rps中条目的数量。当不存在时,num_long_term_pics的值被推断为等于0。
[0056]
在一些实施例中,当nuh_layer_id等于0时,num_long_term_pics的值应小于或等
于sps_max_dec_pic_buffering_minus1[temporalid]-numnegativepics[currrpsidx]-numpositivepics[currrpsidx]-num_long_term_sps
–
twoversionsofcurrdecpicflag。
[0057]
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)。
[0058]
poc_lsb_lt[i]指定当前图片的长期rps中第i个条目的图片顺序计数模块maxpicordercntlsb的值。poc_lsb_lt[i]语法元素的长度为log2_max_pic_order_cnt_lsb_minus4+4位。
[0059]
used_by_curr_pic_lt_flag[i]等于0指定当前图片的长期rps中的第i个条目不被当前图片用于参考。
[0060]
在一些实施例中,变量poclsblt[i]和usedbycurrpiclt[i]导出如下:
[0061]
‑‑
如果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]]。
[0062]
‑‑
否则,将poclsblt[i]设置为等于poc_lsb_lt[i],并且将usedbycurrpiclt[i]设置为等于used_by_curr_pic_lt_flag[i]。
[0063]
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]不存在。
[0064]
在一些实施例中,让prevtid0pic作为以解码顺序的前一图片,其具有temporalid等于0并且不是rasl、radl或slnr图片。让setofprevpocvals作为包含以下的集合:
[0065]
‑‑
prevtid0pic的picordercntval,
[0066]
‑‑
prevtid0pic的rps中每个图片的picordercntval,
[0067]
‑‑
以解码顺序在prevtid0pic之后且以解码顺序在当前图片之前的每个图片的picordercntval。
[0068]
在一些实施例中,当setofprevpocvals中有多于一个值时(其中值模块maxpicordercntlsb等于poclsblt[i]),delta_poc_msb_present_flag[i]应等于1。
[0069]
delta_poc_msb_cycle_lt[i]被用于确定当前图片长期rps中第i个条目的图片顺序计数值的最有效位的值。当delta_poc_msb_cycle_lt[i]不存在时,推断其等于0。
[0070]
在一些实施例中,变量deltapocmsbcyclelt[i]导出如下:
[0071]
如果(i==0||i==num_long_term_sps)
[0072]
deltapocmsbcyclelt[i]=delta_poc_msb_cycle_lt[i]
[0073]
否则deltapocmsbcyclelt[i]=delta_poc_msb_cycle_lt[i]+deltapocmsbcyclelt[i-1]
[0074]
1.2短期和长期参考图片之间的运动矢量预测(mvp)示例
[0075]
在一些实施例中,仅当目标参考图片类型和预测参考图片类型相同时,才允许进行运动矢量预测。换句话说,当类型不同时,不允许进行运动矢量预测。
[0076]
高级运动矢量预测(amvp)是包含现有实现的运动矢量预测的示例。现有amvp实施
的相关部分如下所述。
[0077]
运动矢量mvlxa和可用性标志availableflaglxa按以下顺序步骤导出:
[0078]
(1)样本位置(xnba0,ynba0)被设置为等于(xpb-1,ypb+npbh),样本位置(xnba1,ynba1)被设置为等于(xnba0,ynba0-1)。
[0079]
(7)当availableflaglxa等于0时,以下适用于(xnbak,ynbak),从(xnba0,ynba0)到(xnba1,ynba1)或直到availableflaglxa等于1:
[0080]
‑‑
当availableak等于true且availableflaglxa等于0时,以下内容适用:
[0081]
如果predflaglx[xnbak][ynbak]等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxlx[xnbak][ynbak],refpiclistx),则将availableflaglxa设置为1,并做出以下分配:
[0082]
mvlxa=mvlx[xnbak][ynbak]
[0083]
refidxa=refidxlx[xnbak][ynbak]
[0084]
refpiclista=refpiclistx
[0085]
否则,当predflagly[xnbak][ynbak](其中y=!x)等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxly[xnbak][ynbak],refpiclisty)时,将availableflaglxa设置为1。
[0086]
运动矢量mvlxb和可用性标志availableflaglxb按以下顺序步骤导出:
[0087]
(1)样本位置(xnbb0,ynbb0),(xnbb1,ynbb1)和(xnbb2,ynbb2)分别设置为(xpb+npbw,ypb-1),(xpb+npbw-1,ypb-1)和(xpb-1,ypb-1)。
[0088]
(5)当isscaledflaglx等于0时,availableflaglxb设置为0,并且以下适用于(xnbbk,ynbbk),从(xnbb0,ynbb0)到(xnbb2,ynbb2)或直到availableflaglxb等于1:
[0089]
‑‑
用亮度位置(xcb,ycb)、当前亮度编码块大小ncbs、亮度位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnby,ynby)设置等于(xnbbk,ynbbk)、以及分区索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,,并将输出分配给预测块可用性标志availablebk。
[0090]
‑‑
当availablebk等于true且availableflaglxb等于0时,以下内容适用:
[0091]
如果predflaglx[xnbbk][ynbbk]等于1且longtermrefpic(currpic,currpb,refidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxlx[xnbbk][ynbbk],refpiclistx),则将availableflaglxb设为等于1,并做出以下分配:
[0092]
mvlxb=mvlx[xnbbk][ynbbk]
[0093]
refidxb=refidxlx[xnbbk][ynbbk]
[0094]
refpiclistb=refpiclistx
[0095]
否则,当predflagly[xnbbk][ynbbk](其中y=!x)等于1且longtermrefpic(currpic,currpbrefidxlx,refpiclistx)等于longtermrefpic(currpic,currpb,refidxly[xnbbk][ynbbk],refpiclisty),则将availableflaglxb设为等于1,并进行以下分配:
[0096]
mvlxb=mvly[xnbbk][ynbbk]。
[0097]
时间运动矢量预测(tmvp)是包含现有实现的运动矢量预测的另一个示例。现有tmvp实施的相关部分如下所述。
[0098]
变量mvlxcol和availableflaglxcol导出如下:
[0099]
如果longtermrefpic(currpic,currpb,refidxlx,lx)不等于longtermrefpic(colpic,colpb,refidxcol,listcol),则将mvlxcol的两个分量都设为等于0且将availableflaglxcol设为等于0.
[0100]
否则,将变量availableflaglxcol设置为1,refpiclistcol[refidxcol]设置为colpic指定的并置图片中包含预测块colpb的条带的参考图片列表listcol中的参考索引为refidxcol的图片。
[0101]
2.帧内块复制(ibc)的示例实施例
[0102]
帧内块复制(ibc)将运动补偿的概念从帧间编码扩展到帧内编码。如图1所示,当应用ibc时,通过同一图片中的参考块预测当前块。在对当前块进行编码或解码之前,必须已重建参考块中的样本。虽然ibc对于大多数相机捕获的序列不是这样有效,但它显示出了对屏幕内容的显著编码增益。原因是在屏幕内容图片中有许多重复的模式,诸如图标和文本字符。ibc可以有效地消除这些重叠模式之间的冗余。
[0103]
在hevc-scc中,如果选择当前图片作为参考图片,则可以使用内部编码编码单元(cu)。在这种情况下,mv被重命名为块矢量(bv),并且bv始终具有整数像素的精度。为了与主要规格hevc相兼容,当前图片在解码图片缓冲区(dpb)中被标记为“长期”参考图片。应注意的是,类似地,在多视图/3d视频编码标准中,视图间参考图片也被标记为“长期”参考图片。
[0104]
2.1启用ibc时图片标记的实施例
[0105]
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。
[0106]
当sps_curr_pic_ref_enabled_flag等于0时pps_curr_pic_ref_enabled_flag的值应等于0是比特流一致性的要求。
[0107]
变量twoversionsofcurrdecpicflag推导如下:
[0108]
twoversionsofcurrdecpicflag=pps_curr_pic_ref_enabled_flag&&(sample_adaptive_offset_enabled_flag||!pps_deblocking_filter_disabled_flag||deblocking_filter_override_enabled_flag)
[0109]
当sps_max_dec_pic_buffering_minus1[temporalid]等于0时twoversionsofcurrdecpicflag的值应当等于0.
[0110]
解码过程。在调用循环过滤进程后,当前解码的图片被存储在dpb中的空图片存储缓冲区中,dpb的充满度增加1,此图片被标记为“用于短期参考”。
[0111]
当twoversionsofcurrdecpicflag等于1时,按照第f.8.7[1]条规定的循环内过滤进程调用前的当前解码图片被存储在dpb中的空图片存储缓冲区中,dpb的充满度增加1,此图片标记为“用于长期参考”。
[0112]
3.联合探索模型(jem)示例
[0113]
在一些实施例中,使用名为联合探索模型(jem)的参考软件来探索未来的视频编码技术。在jem中,基于子块的预测被用于多种编码工具中,诸如仿射预测、可选时域运动矢
量预测(atmvp)、空时运动矢量预测(stmvp)、双向光流(bio)、帧速率上转换(fruc)、局部自适应运动矢量分辨率(lamvr)、重叠块运动补偿(obmc)、局部照明补偿(lic)和译码器侧运动矢量优化(dmvr)。
[0114]
3.1双向光流(bio)的示例
[0115]
双向光流(bio)法是在分块运动补偿之上对双向预测进行的样本方向运动细化。在一些实现中,样本级的运动细化不使用发信号。
[0116]
设i
(k)
为块运动补偿后到参考k(k=0,1)的亮度值,并且分别为i
(k)
梯度的水平分量和垂直分量。假设光流是有效的,则运动矢量场(v
x
,vy)由下式给出:
[0117][0118]
将此光流等式与每个样品运动轨迹的埃尔米特插值相结合,得到一个唯一的三阶多项式,该多项式在末端同时匹配函数值i
(k)
和其导数该多项式在t=0时的值是bio预测:
[0119][0120]
图2示出了双向光流(bio)法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离。基于ref0和ref1的poc计算距离τ0和τ1:τ0=poc(current)-poc(ref0),τ1=poc(ref1)-poc(current)。如果两个预测都来自同一个时间方向(都来自过去或都来自未来),则符号是不同的(例如,τ0·
τ1<0)。在这种情况下,如果预测不是来自同一时间点(例如,τ0≠τ1),则应用bio。两个参考区域都具有非零运动(例如,mvx0,mvy0,mvx1,mvy1≠0),并且块运动矢量与时间距离成比例(例如,mvx0/mvx1=mvy0/mvy1=-τ0/τ1)。
[0121]
通过最小化a点和b点之间的值的差δ来确定运动矢量场(v
x
,vy)。图3a-3b示出了运动轨迹与参考帧平面相交的示例。对δ,模型仅使用局部泰勒展开的第一个线性项:
[0122][0123]
上述等式中的所有值取决于样本位置,表示为(i
′
,j
′
)。假设在局部周围区域的运动是一致的,那么δ可以在以当前预测点(i,j)为中心的(2m+1)x(2m+1)方形窗口ω内最小化,其中m等于2:
[0124]
对于这个优化问题,jem使用简化方法,首先在垂直方向上最小化,然后在水平方向最小化。结果如下:
[0125][0126][0127]
其中,
[0128][0129]
为了避免被零除或很小的值除,可在式(7)和式(8)中引入正则化参数r和m。
[0130]
r=500
·4d-8
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式(10)
[0131]
m=700
·4d-8
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式(11)
[0132]
这里,d是视频样本的位深度。
[0133]
为了使bio的内存访问与常规双向预测运动补偿同一,计算当前块内位置的所有预测和梯度值图3a示出了块900外部的访问位置示例。如图3a所示,在等式(9)中,以预测区块边界上当前预测点为中心的(2m+1)x(2m+1)的方形窗口ω需要访问区块外的位置。在jem中,块外的值设置为等于块内最近的可用值。例如,这可以实现为填充区域901,如图3b所示。
[0134]
使用bio,可以对每个样本的运动场进行细化。为了降低计算复杂度,在jem中采用了基于块的bio。运动细化可以基于4x4块计算。在基于块的bio中,可以对4x4块中所有样本的等式(9)中的sn值进行聚合,然后将sn的聚合值用于推导4x4块的bio运动矢量偏移。更具体地说,下面的等式可以用于基于块的bio推导:
[0135][0136]
这里,bk表示属于预测块的第k个4x4块的样本组。等式(7)和等式(8)中的sn替换为((s
n,bk
)》》4)以推导相关联的运动矢量偏移。
[0137]
在某些情况下,由于噪声或不规则运动,bio的mv团可能不可靠。因此,在bio中,mv团的大小被固定到一个阈值。该阈值是基于当前图片的参考图片是否全部来自一个方向确定的。例如,如果当前图片的所有参考图片都来自一个方向,该阈值的值被设置为12
×214-d
,否则其被设置为12
×213-d
。
[0138]
可以使用与hevc运动补偿处理一致的操作(例如,2d分离有限脉冲响应(fir))通过运动补偿插值同时计算bio的梯度。在一些实施例中,2d分离fir的输入是与运动补偿处理同一的参考帧,以及根据块运动矢量的分数部分的分数位置(fracx,fracy)。对于水平梯度首先使用biofilters对信号进行垂直内插,该biofilters对应于具有去缩放标度位移d-8的分数位置fracy。然后在水平方向上应用梯度滤波器biofilterg,该biofilterg对应于具有去缩放标度位移18-d的分数位置fracx。对于垂直梯度在垂直方向上使用biofilterg应用梯度滤波器,该biofilterg对应于具有d-8去缩放标度位移的分数位置fracy。然后,然后在水平方向上使用梯度滤波器biofilters执行信号替换,该
biofilters对应于具有去缩放标度位移18-d的分数位置fracx。用于梯度计算biofilterg和信号替换biofilters的插值滤波器的长度可以更短(例如,6-tap),以保持合理的复杂度。表1示出了可用在bio中于计算块运动矢量不同分数位置梯度的示例滤波器。表2示出了可用于在bio中预测信号生成的插值示例滤波器。
[0139]
表2 bio中用于梯度计算的示例滤波器
[0140]
分数像素位置梯度的插值滤波器(biofilterg)0{8,-39,-3,46,-17,5}1/16{8,-32,-13,50,-18,5}1/8{7,-27,-20,54,-19,5}3/16{6,-21,-29,57,-18,5}1/4{4,-17,-36,60,-15,4}5/16{3,-9,-44,61,-15,4}3/8{1,-4,-48,61,-13,3}7/16{0,1,-54,60,-9,2}1/2{-1,4,-57,57,-4,1}
[0141]
表3 bio中用于预测信号生成的示例插值滤波器
[0142]
分数像素位置用于预测信号的插值滤波器(biofilters)0{0,0,64,0,0,0}1/16{1,-3,64,4,-2,0}1/8{1,-6,62,9,-3,1}3/16{2,-8,60,14,-5,1}1/4{2,-9,57,19,-7,2}5/16{3,-10,53,24,-8,2}3/8{3,-11,50,29,-9,2}7/16{3,-11,44,35,-10,3}1/2{3,-10,35,44,-11,3}
[0143]
在jem中,当两个预测来自不同的参考图片时,bio可应用于所有的双向预测块。当为cu启用局部照明补偿(lic)时,可以禁用bio。
[0144]
在一些实施例中,在正常mc处理之后将obmc应用于块。为了降低计算复杂度,在obmc处理期间可能不应用bio。这意味着在obmc处理期间,当使用自己的mv时,将bio应用于块的mc处理,而当使用相邻块的mv时,bio不应用于块的mc处理。
[0145]
4.视频编码中ibc的示例方法
[0146]
图4示出使用帧内块复制进行视频编码的示例性方法的流程图。方法1600包括在步骤1610处,确定是否使用运动补偿算法对当前图片的当前块进行编码。方法1600包括在步骤1620处,基于该确定,通过选择性地将帧内块复制应用于当前块对当前块进行编码。更一般来说,是否将帧内块复制应用到当前块是基于是否使用特定的运动补偿算法对当前块进行编码。
[0147]
图5示出了使用帧内块复制进行视频编码的另一个示例方法的流程图。方法1700包括在步骤1710处,确定是否使用帧内块复制对当前图片的当前块进行编码。方法1700包
括在步骤1720处,基于该确定,通过选择性地将运动补偿算法应用于当前块对当前块进行编码。更一般来说,是否使用运动补偿算法对当前块进行编码是基于是否使用帧内块复制对当前块进行编码。
[0148]
图6示出了使用帧内块复制进行视频解码的示例性方法的流程图。该方法1800包括在步骤1810处,确定是否使用运动补偿算法对当前图片的当前块进行解码。方法1800包括在步骤1820处,基于该确定,通过选择性地将帧内块复制应用于当前块来对当前块进行解码。更一般来说,是否将帧内块复制应用到当前块是基于是否使用特定的运动补偿算法对当前块进行解码。
[0149]
图7示出了使用帧内块复制进行视频解码的另一个示例性方法的流程图。方法1900包括在步骤1910处,确定是否使用帧内块复制对当前图片的当前块进行解码。方法1900包括在步骤1920处,基于该确定,通过选择性地将运动补偿算法应用于当前块对当前块进行解码。更一般来说,是否使用运动补偿算法对当前块进行解码是基于是否使用帧内块复制对当前块进行解码。
[0150]
在图4至图7的上下文中所述的方法1600、1700、1800和1900可以进一步包括确定运动补偿算法是否与帧内块复制兼容的步骤。在下面的例子中说明了对于不同的特定运动补偿算法,帧内块复制和运动补偿算法的兼容性。
[0151]
示例1:提出了bio不能应用于ibc编码的块。在一个示例中,如果当前块的至少一个参考图片是当前图片,则当前块中不执行bio。
[0152]
下面列出的是本技术中所述技术的一些示例。本技术中使用的块可以是像素、体素、子像素和/或子体素的连续或非连续集合。例如,块可以是直线围成的,例如4x4正方形、6x4矩形,或者由曲线围成的,例如椭圆。本技术中使用的视觉信息的一部分可以是视觉信息的子集。本技术中使用的编码表示可以是表示已使用本技术中描述的技术之一编码的可视信息的位流。本技术中使用的指示可以是编码表示中的标志或字段,也可以是多个单独的标志或字段。
[0153]
本技术中使用的解码技术可由解码器应用,并且可以在硬件或软件中实现。解码技术可以以相反的顺序撤消编码器所做的一切。当适当的解码技术应用到编码表示时,结果是可以获得视觉信息。
[0154]
如本技术中所用,多个块中的初始块是在编码表示中第一个块之前出现的块。
[0155]
属性可以包括样本的亮度、亮度的x方向和/或y方向梯度、第二样本与第三和第四对应样本之间的距离。要最小化的值的差可以用等式(5)表示。
[0156]
获取的值可以包括亮度值、x方向的亮度梯度和/或y方向的亮度梯度。
[0157]
示例列表:
[0158]
1.一种视觉信息解码方法(例如,图10所示的方法1000),包括:确定(1002)表示所述视觉信息的一部分的第一被解码的编码块是使用第一编码技术编码的;通过使用与所述第一编码技术相对应的第一解码技术并且通过不使用与所述第二编码技术相对应的第二解码技术解码(1004)所述编码表示;其中,所述两种解码技术中的一种对应于使用同一视频图片作为参考图片对所述被解码的块进行编码的编码技术,并且所述两种解码技术中的另一种对应于双向光流(bio)技术,所述bio技术使用具有编码所述被解码的块的所述视觉信息的光流信息细化所述预测样本。
[0159]
2.根据示例1所述的方法,其中所述使用同一视频图片作为参考图片对所述被解码的块进行编码的编码技术包括帧内块复制(ibc),所述ibc使用同一视频图片的第二块编码所述被解码的块。
[0160]
3.根据示例1至2所述的方法,还包括:基于所述确定,决定所述被解码的块的编码表示不包含第二编码技术的使用的指示符;以及基于所述决定解析所述编码表示。
[0161]
4.根据示例1至2所述的方法,包括使用所述ibc解码技术对第一编码块进行解码,通过:获取表示第一图片的第一多个编码块;对所述第一多个编码块中的初始块进行解码;以及在解码所述初始块之后,基于所述初始块对所述第一多个编码块中的所述第一编码块进行解码。
[0162]
5.根据示例1至2所述的方法,包括使用所述bio解码技术对块进行解码,通过:获取包含被解码的块的第二多个块,并且所述第二多个块表示第二图片;获取与第三图片相关联的第三多个对应样本、以及与第四图片相关联的第四多个对应样本;基于所述第三多个对应样本的梯度和所述第四多个对应样本的梯度在所述被解码的块内导出样本的多个强度偏移;以及基于所述多个强度偏移获取表示所述被解码的块的多个样本。
[0163]
6.一种视觉信息编码方法(图11中的1100),包括:获取(1102)表示所述视觉信息的一部分的要编码的第一块;以及通过使用第一编码技术且通过不使用第二编码技术对所述要编码的第一块进行编码(1104);其中,两种编码技术中的一种为使用同一视频图片作为参考图片对要编码的块进行编码,并且另一种编码技术对应于双向光流(bio)技术,所述bio技术使用具有编码所述要编码的块的所述视觉信息的光流信息细化所述预测样本。
[0164]
7.根据示例6所述的方法,其中所述使用同一视频图片作为参考图片对所述被解码的块进行编码的编码技术包括帧内块复制(ibc),所述ibc使用同一视频图片的第二块编码所述要编码的块。
[0165]
8.根据示例6至7所述的方法,还包括:不对所述第二编码技术的使用指示符进行编码。
[0166]
9.根据示例6所述的方法,包括使用所述ibc技术对所述第一块进行编码,通过:将第一图片划分成第一多个块;对所述第一多个块中的初始块进行编码;以及在编码所述初始块之后,基于所述初始块对所述第一多个块中的第一块进行编码。
[0167]
10.根据示例6至9所述的方法,包括使用所述bio技术对第二图片中的块进行编码,通过:将第二图片划分成包含所述要编码的块的第二多个块;将第三图片划分成第三多个对应样本、并且将第四图片划分成第四多个对应样本;基于所述第三多个对应样本的梯度和所述第四多个对应样本的梯度在所述要编码的块内导出样本的多个强度偏移;以及基于所述多个强度偏移对表示所述要编码的块的多个样本进行编码。
[0168]
11.根据示例5至10所述的方法,其中所述第三图片和所述第四图片与所述第二图片不同。
[0169]
12.根据示例5至11所述的方法,其中所述视觉信息包括有序的图片序列,并且其中所述第三图片和所述第四图片都在所述第二图片之前、都在所述第二图片之后、或者所述第三图片在所述第二图片之后并且所述第四图片在所述第二图片之前。
[0170]
13.根据示例6至12所述的方法,包括当所述第一图片是使用所述ibc技术编码的时,避免使用所述bio技术来编码所述第一图片。
[0171]
14.根据示例5至13所述的方法,包括:在所述第三图片和所述第二图片同一、或者所述第四图片和所述第二图片同一的情况下,避免应用所述bio技术。
[0172]
15.一种视频编码装置,包括:处理器,其被配置为实现上述方法中的一个或多个。
[0173]
16.一种视频解码装置,包括:处理器,其被配置为实现上述方法中的一个或多个。
[0174]
17.一种计算机可读介质,其上存储有处理器可运行代码,所述代码在被运行时使处理器实现上述示例中引用的方法中的一个或多个。
[0175]
5.公开技术的示例实现平台
[0176]
图8是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备2000的结构示例的框图,包括(但不限于)方法1600、1700、1800和1900。在图8中,计算机系统2000包括通过互连2025连接的一个或多个处理器2005和存储器2010。互连2025可以表示由适当的桥、适配器或控制器连接的任何一条或多条单独的物理总线、点对点连接或两者。因此,互连2025可以包括例如系统总线、外围组件互连(pci)总线、超传输或行业标准体系结构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)、iic(i2c)总线或电气与电子工程师协会(ieee)标准674总线(有时被称为“火线”)。例如,处理器2005可以被配置为使用本文中描述的方法之一来执行视觉信息编码、代码转换或解码操作。
[0177]
处理器2005可以包括中央处理单元(cpu),来控制例如主机的整体操作。在一些实施例中,处理器2005通过执行存储在存储器2010中的软件或固件来实现这一点。处理器2005可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)等,或这些器件的组合。
[0178]
存储器2010可以是或包括计算机系统的主存储器。存储器2010代表任何适当形式的随机存取存储器(ram)、只读存储器(rom)、闪存等,或这些设备的组合。在使用中,存储器2010除其他外可包含一组机器指令,当处理器2005执行该指令时,使处理器2005执行操作以实现本公开技术的实施例。
[0179]
通过互连2025连接到处理器2005的还有(可选的)网络适配器2015。网络适配器2015为计算机系统2000提供与远程设备(诸如存储客户机和/或其他存储服务器)通信的能力,并且可以是例如以太网适配器或光纤通道适配器。
[0180]
图9示出了可以用于实施本公开技术的各个部分的移动设备2100的示例实施例的框图,包括(但不限于)方法1600、1700、1800和1900。移动设备2100可以是笔记本电脑、智能手机、平板电脑、摄像机或其他能够处理视频的设备。移动设备2100包括处理器或控制器2101来处理数据,以及与处理器2101通信的存储器2102来存储和/或缓冲数据。例如,处理器2101可以包括中央处理单元(cpu)或微控制器单元(mcu)。在一些实现中,处理器2101可以包括现场可编程门阵列(fpga)。在一些实现中,移动设备2100包括或与图形处理单元(gpu)、视频处理单元(vpu)和/或无线通信单元通信,以实现智能手机设备的各种视觉和/或通信数据处理功能。例如,存储器2102可以包括并存储处理器可执行代码,当处理器2101执行该代码时,将移动设备2100配置为执行各种操作,例如,接收信息、命令和/或数据、处理信息和数据,以及将处理过的信息/数据发送或提供给另一个设备,诸如执行器或外部显示器。
[0181]
为了支持移动设备2100的各种功能,存储器2102可以存储信息和数据,例如指令、软件、值、图片以及处理器2101处理或引用的其他数据。例如,可以使用各种类型的随机存
取存储器(ram)设备、只读存储器(rom)设备、闪存设备和其他合适的存储介质来实现存储器2102的存储功能。在一些实施例中,移动设备2100包括输入/输出(i/o)单元2103,以将处理器2101和/或存储器2102与其他模块、单元或设备进行接口。例如,i/o单元2103可以与处理器2101和内存2102进行接口,以利用与典型数据通信标准兼容的各种无线接口,例如,在云中的一台或多台计算机和用户设备之间。在一些实现中,移动设备2100可以通过i/o单元2103使用有线连接与其他设备进行接口。移动设备2100还可以与其他外部接口(例如,数据存储器)和/或可视或音频显示设备2104进行接口,以检索和传输可由处理器处理、存储在存储器中或显示在显示设备2104或外部设备的输出单元上的数据和信息。例如,显示设备2104可以显示包括块(cu,pu或tu)的视频帧,该块基于是否使用运动补偿算法并且根据所公开的技术应用帧内块复制。
[0182]
在一些实施例中,视频解码器装置可以实现视频解码方法,其中,如本文所述的帧内块复制被用于视频解码。该方法可以类似于上述方法600、700、800和900。
[0183]
在一些实施例中,视频解码的解码器端方法可以使用帧内块复制,通过使用运动补偿算法确定当前图片的当前块是否要解码来提高视频质量,并且基于该确定,通过选择性地将帧内块复制应用于当前块来对当前块进行解码。
[0184]
在其他实施例中,视频解码的解码器端方法可以使用帧内块复制,通过确定是否使用帧内块复制对当前图片的当前块进行解码来提高视频质量,并且基于该确定,通过选择性地将运动补偿算法应用于当前块来对当前块进行解码。
[0185]
在一些实施例中,视频解码方法可以使用在硬件平台上实现的解码装置来实现,如图7和图8所述。
[0186]
下面是通过将ibc合并到vtm-1.0中所测量到的改进,vtm-1.0是名为通用视频编码(vvc)的视频编码标准的参考软件。vtm代表vvc测试模型。
[0187][0188]
在上表中,“y”、“u”、“v”代表yuv颜色编码系统中的颜色,yuv颜色编码系统在考虑人类感知的情况下对颜色图片或视频进行编码。enct和dect分别表示使用ibc的编码和解码时间与不使用ibc的编码和解码时间之比。具体来说,
[0189]
enct=测试编码时间(testencodingtime)/(锚编码时间)anchorencodingtime
[0190]
dect=测试编码时间(testdecodingtime)/(锚解码时间)anchordecodingtime
[0191]
各种类别(诸如a1、a2等)代表一组用于测试各种视频编码技术性能的标准视频序列。“y”、“u”、“v”列下的负百分比表示将ibc添加到vtm-1.0时的比特率节省。enct和dect列下的超过100%的百分比表示使用ibc进行编码/解码比不使用ibc进行编码/解码慢多少。
例如,150%意味着使用ibc进行编码/解码比不使用ibc进行编码/解码慢50%。低于100%的百分比表示使用ibc进行编码/解码比不使用ibc进行编码/解码快多少。上表中显示的两个类(f类和scc类)表明比特率节省超过3%。
[0192]
从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了权利要求限定的之外,本发明公开的技术不受限制。
[0193]
本专利文件中描述的主题的实施和功能操作可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实施可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的和非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。
[0194]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0195]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0196]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0197]
本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“a”、“an”和“the”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。
[0198]
虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0199]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0200]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中所描述和说明的做出。