[0001](本申请是申请日为2019年9月19日、申请号为2019800759959、发明名称为“用于视频编码的运动矢量预测子索引编码”的申请的分案申请。)
[0002]技术领域
[0003]本发明涉及视频编码和解码。
[0004]背景技术
[0005]近来,联合视频专家组(JVET)(由MPEG和ITU-T第16研究组VCEG组成的合作团队)开始研究一种称为多功能视频编码(VVC)的新视频编码标准。VVC的目标是在现有HEVC标准上提供压缩性能的显著改进(即,通常是以前的两倍)并在2020年完成。主要目标应用和服务包括但不限于360度和高动态范围(HDR)视频。总之,JVET使用独立测试实验室进行的正式主观测试评价了来自32个组织的反馈。一些建议表明,当与使用HEVC相比时,压缩效率通常提高40%或更多。在超高清(UHD)视频测试材料上显示了特定的效果。因此,针对最终标准,我们可以预期压缩效率的提高将远远超过作为目标的50%。
[0006]JVET探索模型(JEM)使用所有HEVC工具。HEVC中不存在的另一工具是在应用运动补偿时使用“仿射运动模式”。HEVC中的运动补偿仅限于平移,但实际上存在许多种运动,例如放大/缩小、旋转、透视运动和其它不规则运动。当使用仿射运动模式时,将更复杂的变换应用于块以尝试更准确地预测这些形式的运动。
[0007]HEVC中不存在的另一工具使用替代性时间运动矢量预测(ATMVP)。替代性时间运动矢量预测(ATMVP)是特定运动补偿。代替仅考虑来自时间参考帧的当前块的一个运动信息,而是考虑各并置块的各运动信息。因此,该时间运动矢量预测利用各子块的相关运动信息对当前块进行分割。在当前的VTM参考软件中,作为插入合并(merge)候选列表中的合并候选来用信号通知ATMVP。在SPS级别处启用ATMVP时,合并候选的最大数量增加一。因此,考虑6个候选而不是禁用此模式时的5个。
[0008]这些以及稍后描述的其它工具带来了与编码效率和用于用信号通知从合并候选列表中选择哪个合并候选的合并索引的编码的复杂性有关的问题。
[0009]发明内容
[0010]因此,期望针对上述问题中的至少一个问题的解决方案。
[0011]根据本发明的第一方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0012]生成包括ATMVP候选的运动矢量预测子候选的列表;
[0013]选择所述列表中的运动矢量预测子候选之一;以及
[0014]使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引(合并索引),所述运动矢量预测子索引的一个或多个位被旁路CABAC编码。
[0015]在一个实施例中,运动矢量预测子索引的除了第一位之外的所有位被旁路CABAC编码。
[0016]根据本发明的第二方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0017]生成包括ATMVP候选的运动矢量预测子候选的列表;
[0018]使用CABAC解码来解码所述运动矢量预测子索引,所述运动矢量预测子索引的一个或多个位被旁路CABAC解码;以及
[0019]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0020]在一个实施例中,运动矢量预测子索引的除了第一位之外的所有位被旁路CABAC解码。
[0021]根据本发明的第三方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0022]用于生成包括ATMVP候选的运动矢量预测子候选的列表的部件;
[0023]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0024]用于使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引(合并索引)的部件,所述运动矢量预测子索引的一个或多个位被旁路CABAC编码。
[0025]根据本发明的第四方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0026]用于生成包括ATMVP候选的运动矢量预测子候选的列表的部件;
[0027]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,所述运动矢量预测子索引的一个或多个位被旁路CABAC解码;以及
[0028]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0029]根据本发明的第五方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0030]生成运动矢量预测子候选的列表;
[0031]选择所述列表中的运动矢量预测子候选之一;以及
[0032]使用CABAC编码来生成针对所选择的定运动矢量预测子候选的运动矢量预测子索引,所述运动矢量预测子索引的两个或更多个位共享相同上下文。
[0033]在一个实施例中,运动矢量预测子索引的所有位共享相同上下文。
[0034]根据本发明的第六方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0035]生成运动矢量预测子候选的列表;
[0036]使用CABAC解码来解码所述运动矢量预测子索引,所述运动矢量预测子索引的两个或更多个位共享相同上下文;以及
[0037]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0038]在一个实施例中,运动矢量预测子索引的所有位共享相同上下文。
[0039]根据本发明的第七方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0040]用于生成运动矢量预测子候选的列表的部件;
[0041]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0042]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,所述运动矢量预测子索引的两个或更多个位共享相同上下文。
[0043]根据本发明的第八方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0044]用于生成运动矢量预测子候选的列表的部件;
[0045]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,所述运动矢量预测子索引的两个或更多个位共享相同上下文;以及
[0046]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0047]根据本发明的第九方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0048]生成运动矢量预测子候选的列表;
[0049]选择所述列表中的运动矢量预测子候选之一;以及
[0050]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的至少一个相邻块的运动矢量预测子索引。
[0051]在一个实施例中,运动矢量预测子索引的至少一个位的上下文变量取决于至少两个相邻块的相应运动矢量预测子索引。
[0052]在另一实施例中,运动矢量预测子索引的至少一个位的上下文变量取决于在当前块的左侧的左侧相邻块的运动矢量预测子索引和在当前块上方的上方相邻块的运动矢量预测子索引。
[0053]在另一实施例中,左侧相邻块是A2并且上方相邻块是B3。
[0054]在另一实施例中,左侧相邻块是A1并且上方相邻块是B1。
[0055]在另一实施例中,上下文变量具有3个不同的可能值。
[0056]另一实施例包括:将至少一个相邻块的运动矢量预测子索引与当前块的运动矢量预测子索引的索引值进行比较,并且根据比较结果来设置所述上下文变量。
[0057]另一实施例包括:将至少一个相邻块的运动矢量预测子索引与表示当前块的运动矢量预测子索引中的位或一个所述位的位位置的参数进行比较;并且根据比较结果来设置所述上下文变量。
[0058]又一实施例包括:进行第一比较,将第一相邻块的运动矢量预测子索引与表示当前块的运动矢量预测子索引中的位或一个所述位的位位置的参数进行比较;进行第二比较,将第二相邻块的运动矢量预测子索引与所述参数进行比较;并且根据第一比较和第二比较的结果来设置所述上下文变量。
[0059]根据本发明的第十方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0060]生成运动矢量预测子候选的列表;
[0061]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的至少一个相邻块的运动矢量预测子索引;以及
[0062]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0063]在一个实施例中,运动矢量预测子索引的至少一个位的上下文变量取决于至少两个相邻块的相应运动矢量预测子索引。
[0064]在另一实施例中,运动矢量预测子索引的至少一个位的上下文变量取决于在当前块的左侧的左侧相邻块的运动矢量预测子索引和在当前块的上方的上方相邻块的运动矢量预测子索引。
[0065]在另一实施例中,左侧相邻块是A2并且上方相邻块是B3。
[0066]在另一实施例中,左侧相邻块是A1并且上方相邻块是B1。
[0067]在另一实施例中,上下文变量具有3个不同的可能值。
[0068]另一实施例包括:将至少一个相邻块的运动矢量预测子索引与当前块的运动矢量预测子索引的索引值进行比较,并且根据比较结果来设置所述上下文变量。
[0069]另一实施例包括:将至少一个相邻块的运动矢量预测子索引与表示当前块的运动矢量预测子索引中的位或一个所述位的位位置的参数进行比较;并且根据比较结果来设置所述上下文变量。
[0070]又一实施例包括:进行第一比较,将第一相邻块的运动矢量预测子索引与表示当前块的运动矢量预测子索引中的位或一个所述位的位位置的参数进行比较;进行第二比较,将第二相邻块的运动矢量预测子索引与所述参数进行比较;并且根据第一比较和第二比较的结果来设置所述上下文变量。
[0071]根据本发明的第十一方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0072]用于生成运动矢量预测子候选的列表的部件;
[0073]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0074]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的至少一个相邻块的运动矢量预测子索引。
[0075]根据本发明的第十二方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0076]用于生成运动矢量预测子候选的列表的部件;
[0077]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的至少一个相邻块的运动矢量预测子索引;以及
[0078]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0079]根据本发明的第十三方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0080]生成运动矢量预测子候选的列表;
[0081]选择所述列表中的运动矢量预测子候选之一;以及
[0082]使用CABAC编码来生成所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的跳过标志。
[0083]根据本发明的第十四方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0084]生成运动矢量预测子候选的列表;
[0085]选择所述列表中的运动矢量预测子候选之一;以及
[0086]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于在解码所述运动矢量预测子索引之前可用的所述当前块的另一参数或句法元素。
[0087]根据本发明的第十五方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0088]生成运动矢量预测子候选的列表;
[0089]选择所述列表中的运动矢量预测子候选之一;以及
[0090]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于作为所述当前块中的运动复杂性的指标的所述当前块的另一参数或句法元素。
[0091]根据本发明的第十六方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0092]生成运动矢量预测子候选的列表;
[0093]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的跳过标志;以及
[0094]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0095]根据本发明的第十七方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0096]生成运动矢量预测子候选的列表;
[0097]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于在解码所述运动矢量预测子索引之前可用的所述当前块的另一参数或句法元素;以及
[0098]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0099]根据本发明的第十八方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0100]生成运动矢量预测子候选的列表;
[0101]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于作为当前块中的运动复杂性的指标的所述当前块的另一参数或句法元素;以及
[0102]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0103]根据本发明的第十九方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0104]用于生成运动矢量预测子候选的列表的部件;
[0105]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0106]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的跳过标志。
[0107]根据本发明的第二十方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0108]用于生成运动矢量预测子候选的列表的部件;
[0109]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0110]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于在对所述运动矢量预测子索引进行解码之前可用的所述当前块的另一参数或句法元素。
[0111]根据本发明的第二十一方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0112]用于生成运动矢量预测子候选的列表的部件;
[0113]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0114]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于作为当前块中的运动复杂性的指标的所述当前块的另一个参数或句法元素。
[0115]根据本发明的第二十二方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0116]用于生成运动矢量预测子候选的列表的部件;
[0117]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块的跳过标志;以及
[0118]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0119]根据本发明的第二十三方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0120]用于生成运动矢量预测子候选的列表的部件;
[0121]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于在解码所述运动矢量预测子索引之前可用的所述当前块的另一参数或句法元素;以及
[0122]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0123]根据本发明的第二十四方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0124]用于生成运动矢量预测子候选的列表的部件;
[0125]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于作为当前块中的运动复杂性的指标的所述当前块的另一参数或句法元素;以及
[0126]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0127]根据本发明的第二十五方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0128]生成运动矢量预测子候选的列表;
[0129]选择所述列表中的运动矢量预测子候选之一;以及
[0130]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述列表中的仿射运动矢量预测子候选(如果存在)。
[0131]在一个实施例中,上下文变量取决于第一仿射运动矢量预测子候选在所述列表中的位置。
[0132]根据本发明的第二十六方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0133]生成运动矢量预测子候选的列表;
[0134]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述列表中的仿射运动矢量预测子候选(如果存在);以及
[0135]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0136]在一个实施例中,上下文变量取决于第一仿射运动矢量预测子候选在所述列表中的位置。
[0137]根据本发明的第二十七方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0138]用于生成运动矢量预测子候选的列表的部件;
[0139]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0140]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述列表中的仿射运动矢量预测子候选(如果存在)。
[0141]根据本发明的第二十八方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0142]用于生成运动矢量预测子候选的列表的部件;
[0143]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述列表中的仿射运动矢量预测子候选(如果存在);以及
[0144]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0145]根据本发明的第二十九方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0146]生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表;
[0147]选择所述列表中的运动矢量预测子候选之一;以及
[0148]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块和/或所述当前块的至少一个相邻块的仿射标志。
[0149]根据本发明的第三十方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0150]生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表;
[0151]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块和/或所述当前块的至少一个相邻块的仿射标志;以及
[0152]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0153]根据本发明的第三十一方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0154]用于生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表的部件;
[0155]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0156]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块和/或所述当前块的至少一个相邻块的仿射标志。
[0157]根据本发明的第三十二方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0158]用于生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表的部件;
[0159]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量取决于所述当前块和/或所述当前块的至少一个相邻块的仿射标志;以及
[0160]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0161]根据本发明的第三十三方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0162]生成运动矢量预测子候选的列表;
[0163]选择所述列表中的运动矢量预测子候选之一;以及
[0164]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量是从所述当前块的跳过标志和仿射标志其中至少之一的上下文变量导出的。
[0165]根据本发明的第三十四方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0166]生成运动矢量预测子候选的列表;
[0167]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量是从所述当前块的跳过标志和仿射标志其中至少之一的上下文变量导出的;以及
[0168]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0169]根据本发明的第三十五方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0170]用于生成运动矢量预测子候选的列表的部件;
[0171]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0172]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量是从所述当前块的跳过标志和仿射标志其中至少之一的上下文变量导出的。
[0173]根据本发明的第三十六方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0174]用于生成运动矢量预测子候选的列表的部件;
[0175]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量是从所述当前块的跳过标志和仿射标志其中至少之一的上下文变量导出的;以及
[0176]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0177]根据本发明的第三十七方面,提供一种对运动矢量预测子索引进行编码的方法,所述方法包括:
[0178]生成运动矢量预测子候选的列表;
[0179]选择所述列表中的运动矢量预测子候选之一;以及
[0180]使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量仅具有两个不同的可能值。
[0181]根据本发明的第三十八方面,提供一种对运动矢量预测子索引进行解码的方法,所述方法包括:
[0182]生成运动矢量预测子候选的列表;
[0183]使用CABAC解码来解码所述运动矢量预测子索引,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量仅具有两个不同的可能值;以及
[0184]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0185]根据本发明的第三十九方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0186]用于生成运动矢量预测子候选的列表的部件;
[0187]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0188]用于使用CABAC编码来生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量仅具有两个不同的可能值。
[0189]根据本发明的第四十方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0190]用于生成运动矢量预测子候选的列表的部件;
[0191]用于使用CABAC解码来解码所述运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引的至少一个位的上下文变量仅具有两个不同的可能值;以及
[0192]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0193]根据本发明的第四十一方面,提供一种用于对运动矢量预测子索引进行编码的方法,所述方法包括:
[0194]生成运动矢量预测子候选的列表;
[0195]选择所述列表中的运动矢量预测子候选中之一;以及
[0196]使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引取决于所述列表中的仿射运动矢量预测子候选(如果存在)。
[0197]在一个实施例中,运动矢量预测子索引是合并索引。
[0198]根据本发明的第四十二方面,提供一种用于对运动矢量预测子索引进行解码的方法,所述方法包括:
[0199]生成运动矢量预测子候选的列表;
[0200]使用CABAC解码对所述运动矢量预测子索引进行解码,其中,当前块的运动矢量预测子索引取决于所述列表中的仿射运动矢量预测子候选(如果存在);以及
[0201]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0202]在一个实施例中,运动矢量预测子索引是合并索引。
[0203]根据本发明的第四十三方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0204]用于生成运动矢量预测子候选的列表的部件;
[0205]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0206]用于使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引取决于所述列表中的仿射运动矢量预测子候选(如果存在)。
[0207]根据本发明的第四十四方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0208]用于生成运动矢量预测子候选的列表的部件;
[0209]用于使用CABAC解码对所述运动矢量预测子索引进行解码的部件,其中,当前块的运动矢量预测子索引取决于所述列表中的仿射运动矢量预测子候选(如果存在);以及
[0210]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0211]根据本发明的第四十五方面,提供一种用于对运动矢量预测子索引进行编码的方法,所述方法包括:
[0212]生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表;
[0213]选择所述列表中的运动矢量预测子候选之一;以及
[0214]使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引,其中,当前块的运动矢量预测子索引取决于所述当前块和/或与所述当前块相邻的至少一个块的仿射标志。
[0215]在一个实施例中,运动矢量预测子索引是合并索引。
[0216]根据本发明的第四十六方面,提供一种用于对运动矢量预测子索引进行解码的方法,所述方法包括:
[0217]生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表;
[0218]使用CABAC解码对所述运动矢量预测子索引进行解码,其中,当前块的运动矢量预测子索引取决于所述当前块和/或与所述当前块相邻的至少一个块的仿射标志;以及
[0219]使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一。
[0220]在一个实施例中,运动矢量预测子索引是合并索引。
[0221]根据本发明的第四十七方面,提供一种用于对运动矢量预测子索引进行编码的装置,所述装置包括:
[0222]用于生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表的部件;
[0223]用于选择所述列表中的运动矢量预测子候选之一的部件;以及
[0224]用于使用CABAC编码生成针对所选择的运动矢量预测子候选的运动矢量预测子索引的部件,其中,当前块的运动矢量预测子索引取决于所述当前块和/或与所述当前块相邻的至少一个块的仿射标志。
[0225]根据本发明的第四十八方面,提供一种用于对运动矢量预测子索引进行解码的装置,所述装置包括:
[0226]用于生成包括仿射运动矢量预测子候选的运动矢量预测子候选的列表的部件;
[0227]用于使用CABAC解码对所述运动矢量预测子索引进行解码的部件,其中,当前块的运动矢量预测子索引取决于所述当前块和/或与所述当前块相邻的至少一个块的仿射标志;以及
[0228]用于使用解码后的运动矢量预测子索引来识别所述列表中的运动矢量预测子候选之一的部件。
[0229]本发明的又一方面涉及程序,这些程序在由计算机或处理器执行时使该计算机或处理器执行前述方面的任何方法。程序可以单独提供,或者可以在载体介质上、由载体介质或在载体介质中承载。载体介质可以是非暂时性的,例如,存储介质,具体为计算机可读存储介质。载体介质也可以是暂时性的,例如信号或其它传输介质。信号可以经由任何合适的网络(包括互联网)来传送。
[0230]本发明的又一方面涉及包括根据前述装置方面中的任一个的照相机。在一个实施例中,照相机还包括变焦部件。
[0231]在一个实施例中,照相机适于指示所述变焦部件何时可操作并且根据变焦部件可操作的所述指示来用信号通知仿射模式。
[0232]在另一实施例中,照相机还包括平摇部件。
[0233]在另一实施例中,照相机适于指示所述平摇部件何时可操作并且根据平摇部件可操作的所述指示来用信号通知仿射模式。
[0234]根据本发明的又一方面,提供一种包括体现上述照相机方面中的任一个的照相机的移动装置。
[0235]在一个实施例中,移动装置还包括适于感测移动装置的定向变化的至少一个位置传感器。
[0236]在一个实施例中,移动装置适于根据所述感测移动装置的定向变化来用信号通知仿射模式。
[0237]本发明的其它特征由其它独立和从属权利要求表征。
[0238]本发明的一个方面中的任何特征可以以任何适当的组合应用于本发明的其它方面。特别地,方法方面可以应用于设备方面,反之亦然。
[0239]此外,以硬件实现的特征可以以软件实现,反之亦然。这里对软件和硬件特征的任何引用都应相应地进行解释。
[0240]如这里所述的任何设备特征也可以被提供为方法特征,反之亦然。如这里所使用的,装置加功能特征就其相应结构方面可以被替代地表达,诸如适当编程的处理器和相关联的存储器等。
[0241]还应当理解,可以独立地实现、提供和/或使用在本发明的任何方面中描述和定义的各种特征的特定组合。
[0242]附图说明
[0243]现在将通过示例的方式参考附图,其中:
[0244]图1是用于说明HEVC中使用的编码结构的图;
[0245]图2是示意性例示可以实现本发明的一个或多个实施例的数据通信系统的框图;
[0246]图3是例示可以实现本发明的一个或多个实施例的处理装置的组件的框图;
[0247]图4是例示根据本发明实施例的编码方法的步骤的流程图;
[0248]图5是例示根据本发明实施例的解码方法的步骤的流程图;
[0249]图6a和6b例示可用于生成运动矢量预测子的空间和时间块;
[0250]图7示出AMVP预测子集合导出处理的简化步骤;
[0251]图8是合并模式的运动矢量导出处理的示意图;
[0252]图9例示当前块的分割和时间运动矢量预测;
[0253]图10(a)例示用于HEVC的合并索引的编码,或者未在SPS级别启用ATMVP时的编码;
[0254]图10(b)例示在SPS级别启用ATMVP时的合并索引的编码;
[0255]图11(a)例示简单的仿射运动场;
[0256]图11(b)例示更复杂的仿射运动场;
[0257]图12是与编码模式有关的一些句法元素的部分解码处理的流程图;
[0258]图13是例示合并候选导出的流程图;
[0259]图14是例示本发明的第一实施例的流程图;
[0260]图15是本发明的第十二实施例中与编码模式有关的一些句法元素的部分解码处理的流程图;
[0261]图16是例示本发明的第十二实施例中生成合并候选列表的流程图;
[0262]图17是用于说明适合于在本发明的实施例中使用的CABAC编码器的框图;
[0263]图18是用于实现本发明的一个或多个实施例的计算装置的示意性框图;
[0264]图19是计算装置的示意性框图;
[0265]图20是例示网络照相机机系统的图;以及
[0266]图21是例示智能电话的图。
[0267]具体实施方式
[0268]以下描述的本发明的实施例涉及改善使用CABAC对索引的编码和解码。在描述实施例之前,将描述视频编码和解码技术以及相关的编码器和解码器。
[0269]图1涉及在高效率视频编码(HEVC)视频标准中使用的编码结构。视频序列1由一系列数字图像i组成。各个这样的数字图像由一个或多个矩阵表示。矩阵系数表示像素。
[0270]序列的图像2可以被分割成片(slice)3。在一些情况下,一片可以构成图像整体。这些片被分割成非重叠编码树单元(CTU)。编码树单元(CTU)是高效率视频编码(HEVC)视频标准的基本处理单元,并且概念性地在结构上与若干先前视频标准中使用的宏块单元相对应。CTU有时也被称为最大编码单元(LCU)。CTU具有亮度和色度分量部分,各个分量部分被称为编码树块(CTB)。这些不同的颜色分量未在图1中示出。
[0271]对于HEVC,CTU通常大小为64像素×64像素,但对于VVC,该大小可以为128像素×128像素。可以使用四叉树分解进而将各CTU迭代地分割成较小的可变大小编码单元(CU)5。
[0272]编码单元是基本编码元素,并且由被称为预测单元(PU)和变换单元(TU)的两种子单元构成。PU或TU的最大大小等于CU大小。预测单元与CU的用于像素值的预测的分区相对应。将CU分区成PU的各种不同分区是可能的,如606所示,包括分成4个正方形PU的分区、以及分成2个矩形PU的两个不同分区。变换单元是使用DCT进行空间变换的基本单元。CU可以基于四叉树表示607分区成TU。
[0273]各片嵌入一个网络抽象层(NAL)单元中。另外,视频序列的编码参数存储在称为参数集的专用NAL单元中。在HEVC和H.264/AVC中,采用两种参数集NAL单元:第一,序列参数集(SPS)NAL单元,其收集在整个视频序列期间不变的所有参数。通常,它处理编码配置文件、视频帧的大小和其它参数。第二,图片参数集(PPS)NAL单元,其包括可以从序列的一个图像(或帧)改变为其它图像(或帧)的参数。HEVC还包括视频参数集(VPS)NAL单元,其包含描述位流的总体结构的参数。VPS是HEVC中定义的新类型的参数集,并且应用于位流的所有层。层可以包含多个时间子层,并且所有版本1的位流限定于单个层。HEVC具有用于可缩放性和多视图的某些分层扩展,并且这些扩展将允许具有向后兼容的版本1的基础层的多个层。
[0274]图2例示可以实现本发明的一个或多个实施例的数据通信系统。数据通信系统包括传输装置(在这种情况下为服务器201),其可操作以经由数据通信网络200将数据流的数据包传输至接收装置(在这种情况下为客户端终端202)。数据通信网络200可以是广域网(WAN)或局域网(LAN)。这种网络可以是例如无线网络(Wifi/802.11a或b或g)、以太网网络、互联网网络或由若干不同网络组成的混合网络。在本发明的特定实施例中,数据通信系统可以是数字电视广播系统,其中服务器201将相同的数据内容发送到多个客户端。
[0275]由服务器201提供的数据流204可以由表示视频和音频数据的多媒体数据组成。在本发明的一些实施例中,音频和视频数据流可以分别由服务器201使用麦克风和照相机来捕获。在一些实施例中,数据流可以存储在服务器201上或由服务器201从其它数据提供商接收,或在服务器201处生成。服务器201设置有用于对视频和音频流进行编码的编码器,特别是用以提供用于传输的压缩位流,该压缩位流是作为编码器的输入所呈现的数据的更紧凑表示。
[0276]为了获得更好的传输数据的质量与传输数据的量的比率,可以例如根据HEVC格式或H.264/AVC格式来压缩视频数据。
[0277]客户端202接收所传输的位流并且解码重建的位流,以在显示装置上再现视频图像和利用扬声器再现音频数据。
[0278]尽管在图2的示例中考虑了流式传输场景,但将认识到,在本发明的一些实施例中,可以使用例如介质存储装置(诸如光盘等)来进行编码器与解码器之间的数据通信。
[0279]在本发明的一个或多个实施例中,视频图像与表示要应用到图像的重建像素的补偿偏移的数据一同传输,以在最终图像中提供经滤波的像素。
[0280]图3示意性地例示被配置为实现本发明的至少一个实施例的处理装置300。处理装置300可以是诸如微计算机、工作站或轻型便携式装置等的装置。装置300包括通信总线313,其连接到:
[0281]-表示为CPU的中央处理单元311,诸如微处理器等;
[0282]-表示为ROM的只读存储器307,其用于存储实现本发明的计算机程序;
[0283]-用于存储本发明实施例的方法的可执行代码的表示为RAM的随机存取存储器312,以及适于记录变量和参数的寄存器,该变量和参数是根据本发明实施例实现对数字图像序列进行编码的方法和/或对位流进行解码的方法所需的;以及
[0284]-连接至通信网络303的通信接口302,通过该通信接口传输或接收要处理的数字数据。
[0285]可选地,设备300还可以包括以下组件:
[0286]-诸如硬盘等的数据存储部件304,其用于存储实现本发明的一个或多个实施例的方法的计算机程序以及在实现本发明的一个或多个实施例期间所使用或产生的数据;
[0287]-用于盘306的盘驱动器305,该盘驱动器适于从盘306读取数据或将数据写入所述盘;
[0288]-屏幕309,其用于借助于键盘310或任何其它指示装置来显示数据和/或用作与用户交互的图形界面。
[0289]设备300可以连接到诸如数字照相机320或麦克风308等的各种外围设备,其各自连接到输入/输出卡(未示出)以向设备300提供多媒体数据。
[0290]通信总线提供设备300中所包括的或连接到设备300的各种元素之间的通信和互操作性。总线的表示不是限制性的,并且特别地,中央处理单元可操作地将指令直接或者借助于设备300的其它元素通信到设备300的任何元素。
[0291]盘306可以由诸如可重写或不可重写的致密盘(CD-ROM)、ZIP盘或存储卡等的任何信息介质代替,并且一般而言,由微计算机或微处理器可以进行读取的信息存储部件代替,该盘306集成到或不集成到设备中、可能可移动并且适于存储其执行使得能够实现根据本发明的对数字图像序列进行编码的方法和/或对位流进行解码的方法的一个或多个程序。
[0292]可执行代码可以存储在只读存储器307中、硬盘304上或可移动数字介质(诸如,例如如前述的盘306等)上。根据一变型,程序的可执行代码可以经由接口302借助于通信网络303来接收,以在执行之前存储在设备300的存储部件之一(诸如硬盘304等)中。
[0293]中央处理单元311适于控制和指导执行根据本发明的一个或多个程序的指令或软件代码的部分、存储在上述存储部件之一中的指令的执行。在通电时,存储在非易失性存储器中(例如,在硬盘304上或在只读存储器307中)的一个或多个程序被传递到随机存取存储器312中(其然后包含一个或多个程序的可执行代码)以及用于存储实现本发明所必需的变量和参数的寄存器。
[0294]在该实施例中,设备是使用软件来实现本发明的可编程设备。然而,可替代地,本发明可以以硬件(例如,以专用集成电路或ASIC的形式)来实现。
[0295]图4例示根据本发明的至少一个实施例的编码器的框图。编码器由所连接的模块表示,各模块适于例如以由装置300的CPU 311执行的编程指令的形式来实现根据本发明的一个或多个实施例的、用于实现对图像序列中的图像进行编码的至少一个实施例的方法的至少一个相应步骤。
[0296]编码器400接收数字图像i0至in的原始序列401作为输入。各数字图像由样本(已知为像素)集表示。
[0297]编码器400在实现编码处理之后输出位流410。位流410包括多个编码单元或片,各片包括用于对片编码所用的编码参数的编码值进行传输的片头部、以及包括编码视频数据的片主体。
[0298]模块402将输入数字图像i0至in 401分割成像素块。块与图像部分相对应并且可以具有可变大小(例如,4×4、8×8、16×16、32×32、64×64、128×128像素、并且还可以考虑若干矩形块大小)。针对各输入块选择编码模式。提供了两个编码模式族:基于空间预测编码(帧内预测)的编码模式和基于时间预测的编码模式(帧间编码、合并、跳过)。测试了可能的编码模式。
[0299]模块403实现帧内预测处理,其中,通过根据要编码的给定块的相邻像素计算出的预测子来预测所述要编码的块。如果选择了帧内编码,则对所选择的帧内预测子以及给定块与其预测子之间的差的指示进行编码以提供残差。
[0300]时间预测由运动估计模块404和运动补偿模块405实现。首先,选择来自参考图像集416的参考图像,并且由运动估计模块404选择参考图像的一部分(也被称为参考区域或图像部分),该部分是与要编码的给定块最接近的区域。然后运动补偿模块405使用所选择的区域来预测要编码的块。由运动补偿模块405计算所选择的参考区域与给定块(也称为残差块)之间的差。所选择的参考区域由运动矢量指示。
[0301]由此,在这两种情况下(空间和时间预测),通过从原始块减去预测来计算残差。
[0302]在由模块403实现的帧内预测中,对预测方向进行编码。在时间预测中,对至少一个运动矢量进行编码。
[0303]如果选择帧间预测,则对与运动矢量和残差块有关的信息进行编码。为了进一步降低位率,假设运动是同质的,通过相对于运动矢量预测子的差对运动矢量进行编码。由运动矢量预测和编码模块417从运动矢量场418获得运动信息预测子的集合的运动矢量预测子。
[0304]编码器400还包括选择模块406,该选择模块用于通过应用编码成本标准(诸如,率-失真标准等)来选择编码模式。为了进一步减少冗余,由变换模块407将变换(诸如DCT等)应用于残差块,然后,所获得的变换数据由量化模块408量化并且由熵编码模块409进行熵编码。最终,正被编码的当前块的编码后的残差块被插入位流410中。
[0305]编码器400还进行编码图像的解码,以产生用于后续图像的运动估计的参考图像。这使得接收位流的编码器和解码器能够具有相同的参考帧。逆量化模块411进行量化数据的逆量化,之后是逆变换模块412的逆变换。逆帧内预测模块413使用预测信息来确定对于给定块使用哪个预测子,并且逆运动补偿模块414实际上将由模块412获得的残差添加到从参考图像集416获得的参考区域。
[0306]然后,由模块415应用后滤波以对所重建的像素帧进行滤波。在本发明的实施例中,使用SAO环路滤波器,其中补偿偏移被添加到所重建图像的所重建像素的像素值。
[0307]图5示出根据本发明实施例的解码器60的框图,解码器60可以用于从编码器接收数据。解码器由所连接的模块表示,各模块适于例如以要由装置300的CPU 311执行的编程指令的形式实现由解码器60实现的方法的相应步骤。
[0308]解码器60接收包括编码单元的位流61,各编码单元由包含与经编码的参数有关的信息的头部和包含经编码的视频数据的主体组成。如关于图4所说明的,针对给定块,在预定数量的位上,对经编码的视频数据进行熵编码,并且对运动矢量预测子的索引进行编码。所接收的经编码的视频数据由模块62进行熵解码。然后残差数据由模块63去量化,之后由模块64应用逆变换以获得像素值。
[0309]用于指示编码模式的模式数据也被熵解码,并且基于该模式,对图像数据的编码块进行帧内类型解码或帧间类型解码。
[0310]在帧内模式的情况下,帧内逆预测模块65基于在位流中指定的帧内预测模式来确定帧内预测子。
[0311]如果模式是帧间,则从位流提取运动预测信息以找到由编码器使用的参考区域。运动预测信息由参考帧索引和运动矢量残差构成。运动矢量预测子由运动矢量解码模块70添加到运动矢量残差以获得运动矢量。
[0312]运动矢量解码模块70对通过运动预测编码的各当前块应用运动矢量解码。一旦已获得针对当前块的运动矢量预测子的索引,可以对与当前块相关联的运动矢量的实际值进行解码,并且该实际值用以通过模块66应用逆运动补偿。从参考图像68提取由经解码的运动矢量指示的参考图像部分以应用逆运动补偿66。利用经解码的运动矢量更新运动矢量场数据71,以用于后续解码运动矢量的逆预测。
[0313]最终,获得经解码的块。后滤波由后滤波模块67应用。解码器60最终提供经解码的视频信号69。
[0314]CABAC
[0315]HEVC使用若干类型的熵编码,如基于上下文的自适应二进制算术编码(CABAC)、哥伦布-莱斯码(Golomb-rice Code)或称为固定长度编码的简单二进制表示。大多数时候,进行二进制编码处理以表示不同句法元素。该二进制编码处理也非常特定并且取决于不同句法元素。算术编码根据句法元素的当前概率表示句法元素。CABAC是算术编码的扩展,其根据由上下文变量定义的“上下文”来分离句法元素的概率。这对应于条件概率。上下文变量可以从已解码的顶部左侧块(如图6b中的A2,如下文更详细描述的)和上方左侧块(图6b中的B3)的当前句法的值导出。
[0316]已经采用CABAC作为H.264/AVC和H.265/HEVC标准的规范部分。在H.264/AVC中,它是熵编码的两个替代方法之一。在H.264/AVC中指定的另一方法是基于可变长度编码的上下文自适应切换集合的使用的低复杂性熵编码技术,所谓的上下文自适应可变长度编码(CAVLC)。与CABAC相比,CAVLC以较低压缩效率为代价提供减少的实现成本。对于标准或高清晰度分辨率的TV信号,CABAC通常在相同的客观视频质量下相对于CAVLC提供10%-20%的位率节省。在HEVC中,CABAC是唯一的熵编码方法。
[0317]图17示出CABAC编码器的主要块。
[0318]非二进制值的输入句法元素由二值化器1701二值化。CABAC的编码策略是基于以下发现:基于混合块的视频编码器中的句法元素值(如运动矢量差或变换系数级别值的分量)的非常高效的编码可以通过采用二值化方案作为用于上下文建模和二进制算术编码的后续阶段的一种预处理单元来实现。一般来说,二值化方案定义句法元素值到二进制决策序列(所谓的二进制位(bin))的唯一映射,二进制决策序列也可以在二进制编码树方面进行解释。CABAC中的二值化方案的设计基于几个基本原型,这些原型的结构使得能够进行简单的在线计算,并且这些原型适于一些合适的模型概率分布。
[0319]可以根据开关1702的设置以两种基本方式之一来处理各个bin。当开关处于“常规”设置时,bin被供应至上下文建模器1703和常规编码引擎1704。当开关处于“旁路”设置时,上下文建模器被旁路并且bin被供应至旁路编码引擎1705。另一开关1706具有类似于开关1702的“常规”和“旁路”设置,使得由编码引擎1704和1705中的可应用的编码引擎编码的bin可以形成位流作为CABAC编码器的输出。
[0320]通过将各个句法元素值分解成bin序列,CABAC中的各个bin值的进一步处理取决于相关联的编码模式决策,该编码模式决策可以被选择作为常规模式或旁路模式。针对与符号信息有关的bin或较低有效的bin(这些bin被假设为均匀分布并且因此针对这些bin使整个常规二进制算术编码处理被简单地旁路),选择后者。在常规编码模式中,通过使用常规二进制算术编码引擎来编码各个bin值,其中相关联的概率模型是在无需任何上下文建模的情况下通过固定选择来确定的,或者取决于相关上下文模型而自适应地选择的。作为重要的设计决策,后一情况通常仅应用于最频繁观察到的bin,而其它bin(通常较不频繁观察到的bin)将使用联合(通常为零阶概率模型)来处理。以这种方式,CABAC使得能够在子符号级别上进行选择性上下文建模,且因此提供用于以显著降低的总体建模或学习成本来利用符号间冗余的高效工具。对于上下文模型的特定选择,在CABAC中采用四个基本设计类型,其中仅将它们中的两个应用于变换系数级别的编码。这四个原型的设计是基于与要建模的源数据的典型特性有关的先验知识,并且反映了如下目的:找到避免不必要的建模成本开销与在很大程度上利用统计依赖性的冲突目标之间的良好折衷。
[0321]在CABAC中的处理的最低级别上,各个bin值在常规或旁路编码模式中进入二进制算术编码器。对于后者,使用复杂性显著降低的编码引擎的快速分支,而对于前一编码模式,给定bin值的编码取决于与bin值一起传递到M编码器的相关联自适应概率模型的实际状态(在CABAC中被选择用于基于表的二进制算术编码引擎的项)。
[0322]帧间编码
[0323]HEVC使用3种不同的帧间模式:帧间模式、合并模式和合并跳过模式。这些模式之间的主要差异是位流中用信号通知的数据。对于运动矢量编码,当前HEVC标准包括用于运动矢量预测的基于竞争性的方案,该方案不存在于该标准的较早版本中。这意味着若干候选正在编码器侧以率失真标准竞争以找到分别用于帧间或合并模式的最佳运动矢量预测子或最佳运动信息。将与运动信息的最佳预测子或最佳候选相对应的索引插入位流中。解码器可以根据经解码的索引导出同一组预测子或候选,并且使用最佳预测子或候选。在HEVC的画面内容扩展中,称为帧内块复制的新编码工具作为这三种帧间模式中的任一种而用信号通知,通过检查参考帧是否是当前帧来做出IBC与等效帧间模式之间的差别。这可以例如通过检查列表L0的参考索引来实现,并且如果为该列表中的最后帧,则推断为帧内块复制。其它做法是将当前帧和参考帧的图片顺序计数进行比较:如果相等,则为帧内块复制。
[0324]预测子和候选的导出的设计在实现最佳编码效率而不对复杂性带来不成比例的影响方面是重要的。在HEVC中,使用两个运动矢量导出:一个用于帧间模式(高级运动矢量预测(AMVP))且一个用于合并模式(合并导出处理)。下面描述这些处理。
[0325]图6a和6b例示可以用于在HEVC编码和解码系统的高级运动矢量预测(AMVP)和合并模式中生成运动矢量预测子的空间和时间块,并且图7示出AMVP预测子集合导出的处理的简化步骤。
[0326]如图6a中所表示的,在包括顶部角块(块B2)和左侧角块(块A0)的顶部块(由字母“B”指示)和左侧块(由字母“A”指示)中选择两个预测子(即,AMVP模式的两个空间运动矢量),并且在并置块(collocated block)的底部右侧块(H)和中央块(Center)中选择一个预测子。
[0327]下面的表1概述了当引用如图6a和6b中所示的相对于当前块的块时所使用的命名法。这种命名法被用作速记,但是应当理解,可以使用其它标记系统,特别是在标准的未来版本中。
[0328]块标记 相邻块的相对位置描述 A0 “左侧角”-当前块的对角线向下并在左侧 A1 “左侧”or“底部左侧”-当前块的底部的左侧 A2 “顶部左侧”-当前块的顶部的左侧 B0 “上方右侧”-当前块的对角线向上并在右侧 B1 “上方”-当前块的顶部右侧的上方 B2 “上方左侧”-当前块的对角线向上并在左侧 B3 “上”-当前块的顶部左侧的上方 H 参考帧中并置块的底部右侧 中央(Center) 参考帧中并置块内的块
[0329]表1
[0330]应注意,“当前块”可以是大小可变的,例如4×4、16×16、32×32、64×64、128×128或其间的任何大小。块的尺寸优选地是2的因子(即,2^n×2^m,其中,n和m是正整数),因为这得到在使用二进制编码时对位的更高效的使用。当前块不需要是正方形的,但是这通常是针对编码复杂性的优选实施例。
[0331]转到图7,第一步骤目的在于在底部左侧块A0和A1中(在图6中例示空间位置)选择第一空间预测子(Cand 1,706)。为此,以给定顺序一个接一个地选择这些块(700、702),并且对于各个所选择的块,以给定顺序评价以下条件(704),将满足条件的第一个块设置为预测子:
[0332]-来自相同参考列表和相同参考图像的运动矢量;
[0333]-来自其它参考列表和相同参考图像的运动矢量;
[0334]-来自相同参考列表和不同参考图像的经缩放的运动矢量;或者
[0335]-来自其它参考列表和不同参考图像的经缩放的运动矢量。
[0336]如果没有找到值,则认为左侧预测子是不可用的。在这种情况下,指示相关块进行了帧内编码或者这些块不存在。
[0337]以下步骤目的在于在上方右侧块B0、上方块B1和左侧上方块B2(在图6a中例示空间位置)中选择第二空间预测子(Cand 2,716)。为此,以给定顺序一个接一个地选择这些块(708、710、712),并且对于各个所选择的块,以给定顺序评价上述条件(714),将满足上述条件的第一个块设置为预测子。
[0338]同样,如果没有找到值,则认为顶部预测子是不可用的。在这种情况下,指示相关块进行了帧内编码或者这些块不存在。
[0339]在下一步骤(718)中,如果两个预测子均是可用的,则将这两个预测子彼此进行比较,以在两个预测子相等(即,相同运动矢量值、相同参考列表、相同参考索引和相同方向类型)的情况下去除这两个预测子中的一个。如果仅一个空间预测子是可用的,则算法在下一步骤中寻找时间预测子。
[0340]时间运动预测子(Cand 3,726)如下导出:在可用性检查模块722中首先考虑先前帧中并置块的底部右侧(H,720)位置。如果不存在或者如果运动矢量预测子是不可用的,则选择并置块的中央(Centre,724)以进行检查。这些时间位置(中央和H)在图6a中描绘。在任何情况下,对这些候选应用缩放723以匹配当前帧与参考列表中的第一帧之间的时间距离。
[0341]然后将运动预测子值添加到预测子的集合。接着,将预测子的数量(Nb_Cand)与预测子的最大数量(Max_Cand)进行比较(728)。如上文所提及,在HEVC标准的当前版本中,AMVP的导出处理需要生成的运动矢量预测子的预测子的最大数量(Max_Cand)为二。
[0342]如果达到该最大数量,则构建AMVP预测子的最终列表或集(732)。否则,将零预测子添加到列表(730)。零预测子是等于(0,0)的运动矢量。
[0343]如图7中所例示的,从空间运动预测子(700至712)的子集和从时间运动预测子(720、724)的子集构建AMVP预测子的最终列表或集(732)。
[0344]如上所提及,合并模式或合并跳过模式的运动预测子候选表示所有需要的运动信息:方向、列表、参考帧索引和运动矢量。若干候选的带有索引的列表通过合并导出处理来生成。在当前HEVC设计中,用于这两个合并模式的候选的最大数量等于五(4个空间候选和1个时间候选)。
[0345]图8是合并模式的运动矢量导出处理的示意图。在导出处理的第一步骤中,考虑五个块位置(800至808)。这些位置是在图3中用附图标记A1、B1、B0、A0和B2描绘的空间位置。在接下来的步骤中,检查空间运动矢量的可用性,并且选择至多五个运动矢量(810)。在预测子存在并且在块未被帧内编码的情况下,预测子被视为是可用的。因此,按照以下条件选择与五个块相对应的运动矢量作为候选:
[0346]如果“左侧”A1运动矢量(800)是可用的(810),即,如果其存在并且如果该块未进行帧内编码,则选择“左侧”块的运动矢量并且将其用作候选列表(814)中的第一候选;
[0347]如果“上方”B1运动矢量(802)是可用的(810),则将候选“上方”块运动矢量与“左侧”A1运动矢量(如果存在的话)进行比较(812)。如果B1运动矢量等于A1运动矢量,则不将B1添加到空间候选的列表(814)。相反,如果B1运动矢量不等于A1运动矢量,则将B1添加到空间候选的列表(814);
[0348]如果“上方右侧”B0运动矢量(804)是可用的(810),则将“上方右侧”的运动矢量与B1运动矢量进行比较(812)。如果B0运动矢量等于B1运动矢量,则不将B0运动矢量添加到空间候选的列表(814)。相反,如果B0运动矢量不等于B1运动矢量,则将B0运动矢量添加到空间候选的列表(814);
[0349]如果“下方左侧”A0运动矢量(806)是可用的(810),则将“下方左侧”的运动矢量与A1运动矢量进行比较(812)。如果A0运动矢量等于A1运动矢量,则不将A0运动矢量添加到空间候选的列表(814)。相反,如果A0运动矢量不等于A1运动矢量,则将A0运动矢量添加到空间候选的列表(814);以及
[0350]如果空间候选的列表不包含四个候选,则检查(810)“上方左侧”B2运动矢量(808)的可用性。如果可用,则将其与A1运动矢量以及B1运动矢量进行比较。如果B2运动矢量等于A1运动矢量或B1运动矢量,则不将B2运动矢量添加到空间候选的列表(814)。相反,如果B2运动矢量不等于A1运动矢量或B1运动矢量,则将B2运动矢量添加到空间候选的列表(814)。
[0351]在该阶段结束处,空间候选的列表包括多达四个候选。
[0352]对于时间候选,可以使用两个位置:并置块的底部右侧位置(816,在图6a中表示为H)和并置块的中央(818)。这些位置在图6a中描绘。
[0353]对于AMVP运动矢量导出处理,第一步骤目的在于检查H位置处的块的可用性(820)。接着,如果该块是不可用的,则检查中央位置处的块的可用性(820)。如果这些位置的至少一个运动矢量是可用的,则根据需要,对于列表L0和L1这两者,时间运动矢量可以相对于具有索引0的参考帧进行缩放(822),以创建被添加到合并运动矢量预测子候选的列表的时间候选(824)。该时间候选被置于列表中的空间候选之后。列表L0和L1是包含零个、一个或多个参考帧的2个参考帧列表。
[0354]如果候选的数量(Nb_Cand)严格小于候选的最大数量(Max_Cand,该值在位流片头部中用信号通知且在当前HEVC设计中等于五)(826),并且如果当前帧为B类型,则生成组合候选(828)。基于合并运动矢量预测子候选的列表的可用候选来生成组合候选。其主要在于将列表L0的一个候选的运动矢量与列表L1的一个候选的运动矢量进行组合。
[0355]如果候选的数量(Nb_Cand)保持严格小于候选的最大数量(Max_Cand)(830),则生成(832)零运动候选,直到合并运动矢量预测子候选列表的候选的数量达到候选的最大数量。
[0356]在该处理结束处,构建合并运动矢量预测子候选的列表或集合(834)。如图8中所例示的,合并运动矢量预测子候选的列表或集是从空间候选(800至808)的子集和从时间候选(816、818)的子集构建的(834)。
[0357]替代性时间运动矢量预测(ATMVP)
[0358]替代性时间运动矢量预测(ATMVP)是特定运动补偿。代替仅考虑来自时间参考帧的用于当前块的一个运动信息,考虑各个并置块的各个运动信息。因此,如图9中所描绘的,该时间运动矢量预测利用各个子块的相关运动信息给出当前块的分割。
[0359]在当前VTM参考软件中,将ATMVP作为插入到合并候选列表中的合并候选来用信号通知。当在SPS级别处启用ATMVP时,合并候选的最大数量增加一。因此,当禁用该模式时,考虑6个候选而不是5个候选。
[0360]另外,当在SPS级别处启用该预测时,通过CABAC对合并索引的所有bin进行上下文编码。当在HEVC中或者当未在SPS级别处启用ATMVP时,仅第一bin被上下文编码,并且剩余bin被上下文旁路编码。图10(a)例示用于HEVC或未在SPS级别处启用ATMVP时的合并索引的编码。这与一元最大码相对应。另外,第一位被CABAC编码,并且其它位被旁路CABAC编码。
[0361]图10(b)例示当在SPS级别处启用ATMVP时合并索引的编码。另外,所有位进行了CABAC编码(从第1至第5位)。应注意,各个索引具有其自己的上下文——换言之,它们的概率是分开的。
[0362]仿射模式
[0363]在HEVC中,仅平移运动模型被应用于运动补偿预测(MCP)。而在现实世界中,存在许多种类的运动,例如放大/缩小、旋转、透视运动和其它不规则运动。
[0364]在JEM中,应用简化的仿射变换运动补偿预测,并且下面基于在2017年7月13-21日在托里诺的JVET会议呈现的文档JVET-G1001的摘录来描述仿射模式的一般原理。该文档整体在其描述JEM中所使用的其它算法的范围内通过引用并入本文。
[0365]如图11(a)所示,块的仿射运动场通过两个控制点运动矢量描述。
[0366]块的运动矢量场(MVF)由以下等式描述:
[0367]其中(v 0x ,v 0y )是顶部左侧角的控制点的运动矢量,以及(v 1x ,v 1y )是顶部右侧角的控制点的运动矢量。
[0368]为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。如在等式2中那样导出子块大小M×N,其中MvPre是运动矢量分数精度(JEM中为1/16),(v 2x ,v 2y )是根据等式1计算出的底部左侧控制点的运动矢量。
[0369]在通过等式2导出之后,如果必要,M和N可被向下调整,以使其分别为w和h的除数。
[0370]为了导出各M×N子块的运动矢量,根据等式1计算如图6a中所示的各个子块的中央样本的运动矢量,并且将其四舍五入到1/16分数精度。然后应用运动补偿内插滤波器以生成具有导出的运动矢量的各个子块的预测。
[0371]仿射模式是作为帧间模式(AMVP、合并、合并跳过)的运动补偿模式。其原理是根据2个或3个相邻运动信息针对每个像素生成一个运动信息。在当前VTM参考软件中,如图11(a)中所描绘的,仿射模式导出用于各个4×4块的一个运动信息。得益于标志,该模式对于AMVP模式和两个合并模式可用。该标志进行了CABAC编码。在实施例中,上下文取决于左侧块(图6b的位置A2)和上方左侧块(图6b的位置B3)的仿射标志的总和。
[0372]因此,对于仿射标志,在JEM中可以由以下公式给出三个上下文变量(0、1或2):
[0373]Ctx=IsAffine(A2)+IsAffine(B3)
[0374]其中IsAffine(块)是在该块不是仿射块的情况下返回0而在该块是仿射的情况下返回1的函数。
[0375]仿射合并候选导出
[0376]在JEM中,仿射合并模式(合并或合并跳过)是从位置A1、B1、B0、A0、B2处的块中是仿射的第一相邻块导出的。这些位置在图6a和6b中描绘。然而,如何导出仿射参数没有完全被定义,并且本发明目的在于至少改进这个方面。
[0377]用信号通知仿射合并
[0378]图12是与编码模式相关的一些句法元素的部分解码处理的流程图。在该图中,可以解码跳过标志(1201)、预测模式(1211)、合并标志(1203)、合并索引(1208)和仿射标志(1206)。
[0379]对于帧间片中的所有CU,解码跳过标志(1201)。如果CU不是跳过(1202),则解码pred模式(预测模式)(1211)。该句法元素指示当前CU是帧间模式还是帧内模式。请注意,如果CU是跳过(1202),则其当前模式是帧间模式。如果CU不是跳过(1202:否),则CU是在AMVP或合并模式中编码。如果CU是帧间模式(1212),则解码合并标志(1203)。如果CU是合并(1204)或如果CU是跳过(1202),则验证(1205)仿射标志(1206)是否需要解码。如果当前CU是2N×2N CU,则解码该标志,这意味着在当前VVC中CU的高度和宽度应相等。此外,必须利用仿射模式(合并或AMVP)对至少一个相邻CU A1或B1或B0或A0或B2进行编码。最终,当前CU不应是4×4CU,但是在VTM参考软件中默认禁用CU 4×4。如果该条件(1205)为假,则确定的是当前CU是经典合并模式或合并跳过模式进行编码,并且对合并索引进行解码(1208)。如果仿射标志(1206)被设置为等于1(1207),则CU是合并仿射CU或合并跳过仿射CU,并且合并索引(1208)不需要被解码。否则,当前CU是经典(基本)合并或合并跳过CU,并且对合并索引候选进行解码(1208)。
[0380]在本说明书中,“用信号通知”可以指将表示启用或禁用模式或其它信息的一个或多个句法元素插入到位流中或从位流中提取。
[0381]合并候选导出
[0382]图13是例示合并候选导出的流程图。该导出是在图8中表示的HEVC的合并列表导出的基础上构建。与HEVC相比的主要改变是ATMVP候选(1319、1321、1323)的添加、候选的完全冗余检查(1320、1325)和候选的新顺序。将ATMVP预测设置为特定候选,因为其表示当前CU的若干运动信息。将第一子块(顶部左侧)的值与时间候选进行比较,并且如果它们相等,则不将时间候选添加在合并的列表中(1320)。ATMVP候选不与其它空间候选进行比较。相反,将时间候选与已经在列表中的各个空间候选进行比较(1325)并且如果其为冗余候选则不添加在合并候选列表中。
[0383]当将空间候选添加到列表中时,将其与列表中的其它空间候选进行比较(1310),这不是HEVC的最终版本中的情况。
[0384]在当前VTM版本中,合并候选的列表设置为以下顺序,因为它已被确定为在编码测试条件下提供最佳结果:
[0385]·A1
[0386]·B1
[0387]·B0
[0388]·A0
[0389]·ATMVP
[0390]·B2
[0391]·时间
[0392]·组合
[0393]·零_MV
[0394]重要的是注意,空间候选B2设置在ATMVP候选之后。
[0395]另外,当在片级别启用ATMVP时,候选列表中的最大数量为6而不是5。
[0396]现在将参考图14至17、19以及图20描述本发明的示例性实施例。应注意,除非另有明确说明,否则实施例可以组合;例如,实施例的某些组合可能在增加复杂性的情况下改进编码效率,但这在某些使用情况下可能是可接受的。
[0397]第一实施例
[0398]如上所述,在当前VTM参考软件中,ATMVP作为插入到合并候选的列表中的合并候选来用信号通知。可以针对整个序列(在SPS级别处)启用或禁用ATMVP。当禁用ATMVP时,合并候选的最大数量为5。当启用ATMVP时,合并候选的最大数量从5增加1,变为6。
[0399]在编码器中,使用图13的方法生成合并候选的列表。例如基于率失真准则从合并候选列表中选择一个合并候选。在位流中使用称为合并索引的句法元素将所选择的合并候选用信号通知到解码器。
[0400]在当前VTM参考软件中,取决于ATMVP是被启用还是被禁用,对合并索引进行编码的方式是不同的。
[0401]图10(a)例示当未在SPS级别处启用ATMVP时合并索引的编码。5个合并候选Cand0、Cand l、Cand 2、Cand 3和Cand 4分别被编码为0、10、110、1110和1111。这与一元最大编码相对应。另外,使用单个上下文通过CABAC对第一位进行编码,并且对其它位进行旁路编码。
[0402]图10(b)例示当启用ATMVP时合并索引的编码。6个合并候选Cand 0、Cand l、Cand2、Cand 3、Cand 4和Cand 5分别被编码为0、10、110、1110、11110和11111。在这种情况下,通过CABAC对合并索引的所有位(从第1至第5位)进行上下文编码。各个位具有其自己的上下文,并且存在用于不同位的单独概率模型。
[0403]在本发明的第一实施例中,如图14中所示,当ATMVP作为合并候选被包括在合并候选列表中时(例如,当在SPS级别处启用ATMVP时),修改合并索引的编码,使得使用单个上下文通过CABAC仅编码合并索引的第一位。当未在SPS级别处启用ATMVP时,以与在当前VTM参考软件中相同的方式设置上下文。其它位(从第2至第5位)被旁路编码。当ATMVP未作为合并候选被包括在合并候选列表中时(例如,当在SPS级别处禁用ATMVP时),存在5个合并候选。使用单个上下文通过CABAC仅编码合并索引的第一位。当未在SPS级别处启用ATMVP时,以与在当前VTM参考软件中相同的方式设置上下文。其它位(第2至第4位)被旁路解码。
[0404]解码器生成与编码器相同的合并候选列表。这可以通过使用图13的方法来完成。当ATMVP未作为合并候选被包括在合并候选列表中时(例如,当在SPS级别处禁用ATMVP时),存在5个合并候选。使用单个上下文通过CABAC仅对合并索引的第一位进行解码。其它位(从第2至第4位)被旁路解码。与当前参考软件相比,当ATMVP作为合并候选被包括在合并候选列表中时(例如,当在SPS级别处启用ATMVP时),在合并候选的解码中使用单个上下文通过CABAC仅解码合并索引的第一位。其它位(从第2至第5位)被旁路解码。经解码的合并索引用于识别由编码器从合并候选列表中选择的合并候选。
[0405]与VTM2.0参考软件相比,本实施例的优点是在不影响编码效率的情况下降低合并索引解码和解码器设计(以及编码器设计)的复杂性。实际上,利用该实施例,对于合并索引仅需要1个CABAC状态,来代替对于当前VTM合并索引编码/解码需要5个。此外,降低了最差情况的复杂性,因为其它位被CABAC旁路编码,这与利用CABAC编码所有位相比减少了操作的数量。
[0406]第二实施例
[0407]在第二实施例中,合并索引的所有位被CABAC编码,但它们全部共享相同上下文。可以如在第一实施例中那样存在单个上下文,在这种情况下该单个上下文在位之间共享。因此,当ATMVP作为合并候选被包括在合并候选列表中时(例如,当在SPS级别处启用ATMVP时),与VTM2.0参考软件中的5相比,仅使用一个上下文。与VTM2.0参考软件相比,该实施例的优点是在不影响编码效率的情况下降低合并索引解码和解码器设计(以及编码器设计)的复杂性。
[0408]可选地,如下面结合第三至第十五实施例所描述的,上下文变量可以在位之间共享,使得两个或更多个上下文可用,但是当前上下文由位共享。
[0409]当禁用ATMVP时,相同的上下文仍然用于所有位。
[0410]即使ATMVP不是可用模式或被禁用,也可以应用该实施例和所有后续实施例。
[0411]在第二实施例的变型中,合并索引的任何两个或更多个位被CABAC编码且共享相同上下文。合并索引的其它位被旁路编码。例如,合并索引的前N个位可以被CABAC编码,其中N为两个或更多个。
[0412]第三实施例
[0413]在第一实施例中,使用单个上下文对合并索引的第一位进行CABAC编码。
[0414]在第三实施例中,合并索引的位的上下文变量取决于相邻块的合并索引的值。这允许用于目标位的多于一个上下文,其中各个上下文与上下文变量的不同值相对应。
[0415]相邻块可以是已经解码的任何块,使得其合并索引在当前块被解码时对于解码器是可用的。例如,相邻块可以是图6b中示出的块A0、A1、A2、B0、B1、B2和B3中的任何一个。
[0416]在第一变型中,仅使用该上下文变量对第一位进行CABAC编码。
[0417]在第二变型中,合并索引的前N个位(其中N为两个或更多个)被CABAC编码,并且在这N个位之间共享上下文变量。
[0418]在第三变型中,合并索引的任何N个位(其中N为两个或两个以上)被CABAC编码,并且在这N个位之间共享上下文变量。
[0419]在第四变型中,合并索引的前N个位(其中N为两个或两个以上)被CABAC编码,并且针对这N个位使用N个上下文变量。假设上下文变量具有K个值,则使用K×N个CABAC状态。例如,在本实施例中,对于一个相邻块,上下文变量可以方便地具有2个值,例如,0和1。换言之,使用2N个CABAC状态。
[0420]在第五变型中,合并索引的任何N个位(其中N为两个或两个以上)被自适应PM编码,并且针对这N个位使用N个上下文变量。
[0421]相同的变型适用于在下文中描述的第四至第十六实施例。
[0422]第四实施例
[0423]在第四实施例中,用于合并索引的位的上下文变量取决于两个或更多个相邻块的合并索引的相应值。例如,第一相邻块可以是左侧块A0、A1或A2,并且第二相邻块可以是上方块B0、B1、B2或B3。组合两个或更多个合并索引值的方式不受特别限制。以下给出示例。
[0424]上下文变量可以方便地具有3个不同的值,例如0、1和2,在这种情况下,存在两个相邻块。如果结合第三实施例描述的第四变型被应用于具有3个不同值的该实施例,则K是3而不是2。换言之,使用3N个CABAC状态。
[0425]第五实施例
[0426]在第五实施例中,用于合并索引的位的上下文变量取决于相邻块A2和B3的合并索引的相应值。
[0427]第六实施例
[0428]在第六实施例中,用于合并索引的位的上下文变量取决于相邻块A1和B1的合并索引的相应值。该变型的优点是与合并候选导出对准。结果,在一些解码器和编码器实现中,可以实现存储器访问的减小。
[0429]第七实施例
[0430]在第七实施例中,根据以下公式获得用于当前块的合并索引中具有位位置idx_num的位的上下文变量:
[0431]ctxIdx=(Merge_index_left==idx_num)+(Merge_index_up==idx_num)
[0432]其中,Merge_index_left是左侧块的合并索引,Merge_index_up是上方块的合并索引,并且符号==是相等符号。
[0433]例如当存在6个合并候选时,0<=idx_num<=5。
[0434]左侧块可以是块A1,并且上方块可以是块B1(如在第六实施例中)。可替代地,左侧块可以是块A2,并且上方块可以是块B3(如在第五实施例中)。
[0435]如果左侧块的合并索引等于idx_num,则公式(Merge_index_left==idx_num)等于1。下表给出该公式(Merge_index_left==idx_num)的结果:
[0436]当然,公式(Merge_index_up==idx_num)的表是相同的。
[0437]下表给出各个合并索引值的一元最大码和各个位的相对位位置。该表与图10(b)相对应。
[0438]如果左侧块不是合并块或仿射合并块,则认为左侧块不可用。对于上方块应用相同的条件。
[0439]例如,当仅第一位被CABAC编码时,将上下文变量ctxIdx设置为:
[0440]如果没有左侧和上方块具有合并索引,或者如果左侧块合并索引不是第一索引(即,不是0)并且如果上方块合并索引不是第一索引(即,不是0),则等于0;
[0441]如果左侧块和上方块中的一个块具有等于第一索引的合并索引而另一个块不具有,则等于1;以及
[0442]如果对于左侧块和上方块各自,合并索引等于第一索引,则等于2。
[0443]更一般地,对于被CABAC编码的在位置idx_num处的目标位,将上下文变量ctxIdx设置为:
[0444]如果没有左侧块和上方块具有合并索引,或者如果左侧块合并索引不是第i索引(其中i=idx_num)并且如果上方块合并索引不是第i索引,则等于0;
[0445]如果左侧块和上方块中的一个块具有等于第i索引的合并索引而另一个块不具有,则等于1;以及
[0446]如果对于左侧块和上方块各自,合并索引等于第i索引,则等于2。这里,第i索引表示当i=0时的第一索引、当i=1时的第二索引,等等。
[0447]第八实施例
[0448]在第八实施例中,根据以下公式获得用于当前块的合并索引中具有位位置idx_num的位的上下文变量:
[0449]Ctx=(Merge_index_left>idx_num)+(Merge_index_up>idx_num),其中,Merge_index_left是左侧块的合并索引,Merge_index_up是上方块的合并索引,并且符号>意味着“大于”。
[0450]例如当存在6个合并候选时,0<=idx_num<=5。
[0451]左侧块可以是块A1,并且上方块可以是块B1(如在第五实施例中)。可替代地,左侧块可以是块A2,并且上方块可以是块B3(如在第六实施例中)。
[0452]如果左侧块的合并索引大于idx_num,则公式(Merge_index_left>idx_num)等于1。如果左侧块不是合并块或仿射合并块,则认为左侧块不可用。对于上方块适用相同的条件。
[0453]下表给出该公式(Merge_index_left>idx_num)的结果:
[0454]例如,当仅第一位被CABAC编码时,将上下文变量ctxIdx设置为:
[0455]如果没有左侧和上方块具有合并索引,或者如果左侧块合并索引小于或等于第一索引(即,不是0)并且如果上方块合并索引小于或等于第一索引(即,不是0),则等于0;
[0456]如果左侧块和上方块中的一个块具有大于第一索引的合并索引而另一个块不具有,则等于1;以及
[0457]如果对于左侧块和上方块各自,合并索引大于第一索引,则等于2。
[0458]更一般地,对于被CABAC编码的在位置idx_num处的目标位,将上下文变量ctxIdx设置为:
[0459]如果没有左侧和上方块具有合并索引,或者如果左侧块合并索引小于第i索引(其中i=idx_num)并且如果上方块合并索引小于或等于第i索引,则等于0;
[0460]如果左侧块和上方块中的一个块具有大于第i索引的合并索引而另一个块不具有,则等于1;以及
[0461]如果对于左侧块和上方块各自,合并索引大于第i索引,则等于2。
[0462]与第七实施例相比,第八实施例提供了进一步的编码效率增加。
[0463]第九实施例
[0464]在第四至第八实施例中,用于当前块的合并索引的位的上下文变量取决于两个或更多个相邻块的合并索引的相应值。
[0465]在第九实施例中,用于当前块的合并索引的位的上下文变量取决于两个或更多个相邻块的相应合并标志。例如,第一相邻块可以是左侧块A0、A1或A2,并且第二相邻块可以是上方块B0、B1、B2或B3。
[0466]当使用合并模式对块进行编码时,合并标志被设置为1,并且当使用诸如跳过模式或仿射合并模式等的其它模式时,合并标志被设置为0。注意,在VMT2.0中,仿射合并是与基本或“经典”合并模式不同的模式。可以使用专用仿射标志来用信号通知仿射合并模式。可替代地,合并候选的列表可以包括仿射合并候选,在这种情况下,仿射合并模式可以使用合并索引来选择和用信号通知。
[0467]然后将上下文变量设置为:
[0468]如果左侧相邻块和上方相邻块都没有将其合并标志设置为1,则为0;
[0469]如果左侧相邻块和上方相邻块中的一个块的合并标志被设置为1而另一个块不是,则为1;以及
[0470]如果左侧相邻块和上方相邻块各自都将其合并标志设置为1,则为2。
[0471]与VTM2.0相比,这种简单的措施实现了编码效率的改进。与第七和第八实施例相比,另一优点是较低的复杂性,这是因为仅需要检查相邻块的合并标志而不是合并索引。
[0472]在变型中,用于当前块的合并索引的位的上下文变量取决于单个相邻块的合并标志。
[0473]第十实施例
[0474]在第三至第九实施例中,用于当前块的合并索引的位的上下文变量取决于一个或者多个相邻块的合并索引值或合并标志。
[0475]在第十实施例中,用于当前块的合并索引的位的上下文变量取决于当前块(当前编码单元或者CU)的跳过标志的值。在当前块使用合并跳过模式时,跳过标志等于1,否则等于0。
[0476]跳过标志是针对当前块已被解码或解析的其它变量或句法元素的第一示例。该其它变量或句法元素优选为当前块中的运动信息的复杂性的指标。由于合并索引值的出现取决于运动信息的复杂性,因此诸如跳过标志等的变量或句法元素通常与合并索引值相关。
[0477]更具体地,通常针对静态场景或涉及恒定运动的场景而选择合并跳过模式。结果,合并索引值针对合并跳过模式通常比用于编码包含块残差的帧间预测的经典合并模式低。这通常对于更复杂的运动而发生。然而,这些模式之间的选择通常也与量化和/或RD准则相关。
[0478]与VTM2.0相比,该简单措施提供了编码效率的增加。实施起来也非常简单,因为其不涉及相邻块或检查合并索引值。
[0479]在第一变型中,用于当前块的合并索引的位的上下文变量被简单地设置为等于当前块的跳过标志。该位可以仅是第一位。其它位如第一实施例中那样被旁路编码。
[0480]在第二变型中,合并索引的所有位被CABAC编码,并且其各自具有取决于合并标志的其自己的上下文变量。当在合并索引中存在5个CABAC编码位(与6个合并候选相对应)时,这需要10个概率状态。
[0481]在第三变型中,为了限制状态的数量,仅对合并索引的N个位进行CABAC编码,其中N为两个或更多个,例如前N个位。这需要2N个状态。例如,当前2个位被CABAC编码时,需要4个状态。
[0482]通常,代替跳过标志,可以使用已经针对当前块被解码或解析的并且是当前块中的运动信息的复杂性的指标的任何其它变量或句法元素。
[0483]第十一实施例
[0484]第十一实施例涉及如先前参考图11(a)、11(b)和12描述的仿射合并信号通知。
[0485]在第十一实施例中,用于当前块(当前CU)的合并索引的CABAC编码位的上下文变量取决于合并候选列表中的仿射合并候选(如果有的话)。该位可以仅是合并索引的第一位,或者是前N个位,其中N为两个或更多个,或者是任何N个位。其它位被旁路编码。
[0486]仿射预测被设计用于补偿复杂运动。因此,对于复杂运动,与较不复杂的运动相比,合并索引通常具有更高的值。如果第一仿射合并候选位于列表中的较下方,或者如果根本不存在仿射合并候选,则当前CU的合并索引可能具有小值。
[0487]因此,有效地,上下文变量取决于列表中的至少一个仿射合并候选的存在和/或位置。
[0488]例如,上下文变量可以被设置为:
[0489]如果A1是仿射,则等于1
[0490]如果B1是仿射,则等于2
[0491]如果B0是仿射,则等于3
[0492]如果A0是仿射,则等于4
[0493]如果B2是仿射,则等于5
[0494]如果没有相邻块是仿射,则等于0。
[0495]当对当前块的合并索引进行解码或解析时,已经检查了这些位置处的合并候选的仿射标志。结果,不需要进一步的存储器访问来导出用于当前块的合并索引的上下文。
[0496]与VTM2.0相比,本实施例提供了编码效率的增加。不需要附加的存储器访问,因为步骤1205已经涉及检查相邻CU仿射模式。
[0497]在第一变型中,为了限制状态的数量,可以将上下文变量设置为:
[0498]如果没有相邻块是仿射,或者如果A1或B1是仿射,则等于0
[0499]如果B0、A0或B2是仿射,则等于1
[0500]在第二变型中,为了限制状态的数量,可以将上下文变量设置为:
[0501]如果没有相邻块是仿射,则等于0
[0502]如果A1或B1是仿射,则等于1
[0503]如果B0、A0或B2是仿射,则等于2
[0504]在第三变型中,可以将上下文变量设置为:
[0505]如果A1是仿射,则等于1
[0506]如果B1是仿射,则等于2
[0507]如果B0是仿射,则等于3
[0508]如果A0或B2是仿射,则等于4
[0509]如果没有相邻块是仿射,则等于0。
[0510]请注意,当对合并索引进行解码或解析时,已经检查了这些位置,因为仿射标志解码取决于这些位置。结果,不需要附加的存储器访问来导出在仿射标志之后编码的合并索引上下文。
[0511]第十二实施例
[0512]在第十二实施例中,用信号通知仿射模式包括插入仿射模式作为候选运动预测子。
[0513]在第十二实施例的一个示例中,仿射合并(和合并跳过)作为合并候选来用信号通知。在这种情况下,图12的模块1205、1206和1207被去除。另外,为了不影响合并模式的编码效率,递增合并候选的最大可能数量。例如,在当前VTM版本中,该值被设置为等于6,因此如果将该实施例应用于VTM的当前版本,则该值将是7。
[0514]优点是合并模式的句法元素的设计简化,这是因为需要解码较少的句法元素。在一些情况下,可以观察到编码效率。
[0515]现在将描述实现该示例的两种可能方式:
[0516]无论其它合并MV的值如何,仿射合并索引总是在列表内具有相同的位置。候选运动预测子的位置指示其被选择的可能性,并且因此,如果其被放置在列表的较高处(较低的索引值),则更可能选择该运动矢量预测子。
[0517]在第一示例中,仿射合并索引总是在合并候选列表内具有相同位置。这意味着它具有固定的“合并idx”值。例如,该值可以被设置为等于5,因为仿射合并模式应表示并非为最可能内容的复杂运动。该实施例的附加优点在于,当解析当前块(仅解码/读取句法元素而不解码数据本身)时,当前块可以被设置为仿射块。结果,该值可以用于确定用于AMVP的仿射标志的CABAC上下文。因此,应针对该仿射标志改进条件概率且编码效率应更好。
[0518]在第二示例中,仿射合并候选与其它合并候选一起导出。在该示例中,将新的仿射合并候选添加到合并候选列表中。图16例示该示例。与图13相比,仿射候选是第一仿射相邻块A1、B1、B0、A0、B2(1917)。如果与图12的1205相同的条件有效(1927),则生成利用仿射参数产生的运动矢量场,以获得仿射候选(1929)。根据ATMVP、时间和仿射候选的使用,初始候选的列表可以具有4、5、6或7个候选。
[0519]所有这些候选之间的顺序是重要的,这是因为应首先处理更可能的候选以确保其更可能晋级为运动矢量候选-优选排序如下:
[0520]A1
[0521]B1
[0522]B0
[0523]A0
[0524]仿射合并
[0525]ATMVP
[0526]B2
[0527]时间
[0528]组合
[0529]零_MV
[0530]重要的是注意,仿射合并在ATMVP模式之前但在四个主要相邻块之后。与将仿射合并设置在ATMVP和时间预测子之后相比,将仿射合并候选设置在ATMVP候选之前的优点是增加了编码效率。该编码效率的增加取决于GOP(图片组)结构和GOP中的各图片的量化参数(QP)设置。但是对于最常用的GOP和QP设置,该顺序给出了编码效率的增加。
[0531]该解决方案的另一优点是用于句法和导出这两者的合并和合并跳过的简洁设计。此外,仿射候选合并索引可以根据列表中的先前候选的可用性或值(冗余检查)而改变。因此,可以获得高效的信号通知。
[0532]在另一示例中,仿射合并索引可以根据一个或若干条件而变化。
[0533]例如,列表内与仿射候选相关联的合并索引或位置根据标准而改变。原理是,当仿射合并具有被选择的高概率时,针对与仿射合并相对应的合并索引设置低值(并且当存在要被选择的低概率时,设置更高的值)。
[0534]在第十二实施例中,仿射合并候选具有合并索引值。为了改进合并索引的编码效率,使用于合并索引的位的上下文变量取决于用于相邻块和/或用于当前块的仿射标志是高效的。
[0535]例如,上下文变量可以使用以下公式来确定:
[0536]ctxIdx=IsAffine(A1)+IsAffine(B1)+IsAffine(B0)+IsAffine(A0)+IsAffine(B2)
[0537]所得到的上下文值可以具有值0、1、2、3或4。
[0538]仿射标志增加了编码效率。
[0539]在第一变型中,为了涉及较少的相邻块,ctxIdx=IsAffine(A1)+IsAffine(B1)。所得到的上下文值可以具有值0、1或2。
[0540]在第二变型中,也涉及较少的相邻块,ctxIdx=IsAffine(A2)+IsAffine(B3)。再次,所得到的上下文值可以具有值0、1或2。
[0541]在第三变型中,不涉及相邻块,ctxIdx=IsAffine(当前块)。所得到的上下文值可以具有值0或1。
[0542]图16是与利用第三变型的编码模式有关的一些句法元素的部分解码处理的流程图。在该图中,可以解码跳过标志(1601)、预测模式(1611)、合并标志(1603)、合并索引(1608)和仿射标志(1606)。该流程图与前面描述的图12的流程图类似,因此省略详细描述。差别在于:存在针对仿射合并标志的合并索引,在VTM2.0中不是这种情况。在VTM2.0中,当前块的仿射标志不能用于获得合并索引的上下文,这是因为其总是具有相同的值“0”。
[0543]第十三实施例
[0544]在第十实施例中,当前块的合并索引的位的上下文变量取决于针对当前块(当前编码单元或CU)的跳过标志的值。
[0545]在第十三实施例中,代替直接使用跳过标志值来导出合并索引的目标位的上下文变量,而是从当前CU的跳过标志的上下文变量来导出目标位的上下文值。这是可能的,因为跳过标志本身被CABAC编码且因此具有上下文变量。
[0546]优选地,当前CU的合并索引的目标位的上下文变量被设置为等于当前CU的跳过标志的上下文变量。
[0547]目标位可以仅是第一位。其它位如第一实施例中那样被旁路编码。
[0548]用于当前CU的跳过标志的上下文变量是以VTM2.0中规定的方式导出的。与VTM2.0参考软件相比,该实施例的优点是在不影响编码效率的情况下降低了合并索引解码和解码器设计(以及编码器设计)的复杂性。实际上,利用该实施例,至少地,针对合并索引仅需要1个CABAC状态,而不是针对当前VTM合并索引编码/解码需要5个CABAC状态。此外,这降低了最差情况的复杂性,因为其它位被CABAC旁路编码,这与利用CABAC编码所有位相比减少了操作的数量。
[0549]第十四实施例
[0550]在第十三实施例中,从当前CU的跳过标志的上下文变量导出目标位的上下文值。
[0551]在第十四实施例中,从当前CU的仿射标志的上下文变量导出目标位的上下文值。
[0552]这是可能的,因为仿射标志本身被CABAC编码并且因此具有上下文变量。
[0553]优选地,当前CU的合并索引的目标位的上下文变量被设置为等于当前CU的仿射标志的上下文变量(当前CU的合并索引的目标位的上下文变量是从当前CU的仿射标志的上下文变量复制的)。
[0554]目标位可以仅是第一位。其它位如第一实施例中那样被旁路编码。
[0555]当前CU的仿射标志的上下文变量是以VTM2.0中规定的方式导出的。
[0556]与VTM2.0参考软件相比,该实施例的优点是在不影响编码效率的情况下降低了合并索引解码和解码器设计(以及编码器设计)的复杂性。实际上,利用本实施例,至少地,针对合并索引仅需要1个CABAC状态,而不是针对当前VTM合并索引编码/解码需要5个CABAC状态。此外,这降低了最差情况的复杂性,因为其它位被CABAC旁路编码,这与利用CABAC编码所有位相比减少了操作的数量。
[0557]第十五实施例
[0558]在若干前述实施例中,上下文变量具有多于2个值,例如三个值0、1和2。然而,为了降低复杂性并且减少要处理的状态的数量,可以将许可的上下文变量值的数量限制在2,例如0和1。这可以通过例如将具有值2的任何初始上下文变量改变为1来实现。实际上,这种简化对编码效率没有或仅有限的影响。
[0559]实施例的组合
[0560]可以组合前述实施例中的任意两个或更多个。
[0561]前面的描述集中于合并索引的编码和解码。例如,第一实施例涉及:生成包括ATMVP候选的合并候选列表;选择列表中的合并候选之一;以及使用CABAC编码生成用于所选择的合并候选的合并索引,合并索引的一个或多个位被旁路CABAC编码。原则上,本发明可以应用于除了合并模式之外的涉及以下内容的模式:生成运动矢量预测子(MVP)候选的列表;选择列表中的MVP候选之一;并且生成针对所选择的MVP候选的索引。由此,本发明不限于合并模式,并且要编码或解码的索引不限于合并索引。例如,在VVC的开发中,可想象,前述实施例的技术可应用于(或扩展到)除了合并模式之外的模式,诸如HEVC的AMVP模式或其在VVC中的等效模式等。应相应地解释所附权利要求书。
[0562]本发明的实施例的实现
[0563]图19是用于实现本发明的一个或多个实施例的计算装置1300的示意性框图。计算装置1300可以是诸如微计算机、工作站或轻型便携式装置等的装置。计算装置1300包括连接到以下各项的通信总线:-中央处理单元(CPU)2001,诸如微处理器等;-用于存储本发明的实施例的方法的可执行代码的随机存取存储器(RAM)2002以及适于记录实现根据本发明的实施例的用于对图像的至少一部分进行编码或解码的方法所需的变量和参数的寄存器,其存储容量例如可以通过连接到扩展端口的可选RAM进行扩展;-用于存储用于实现本发明的实施例的计算机程序的只读存储器(ROM)2003;-网络接口(NET)2004,其通常连接至通信网络,要处理的数字数据通过该通信网络被传输或接收,网络接口(NET)2004可以是单个网络接口,或者由一组不同的网络接口(例如,有线和无线接口,或不同种类的有线或无线接口)组成,在运行在CPU 2001中的软件应用的控制下,数据包被写入网络接口用于传输或者从网络接口读取以进行接收;-用户接口(UI)2005,其可以用于从用户接收输入或向用户显示信息;-硬盘(HD)2006,其可以被设置为大容量存储装置;-输入/输出模块(IO)2007,其可以用于从/向外部装置(诸如视频源或显示器等)接收/发送数据。可执行代码可以存储在ROM 2003中、HD 2006上或诸如盘等的可移动数字介质上。根据变型,程序的可执行代码可以经由NET 2004借助于通信网络来接收,以在被执行之前存储在通信装置2000的存储部件(诸如HD 2006等)之一中。CPU 2001适于控制和指导根据本发明的实施例的一个或多个程序的软件代码的指令或部分的执行,该指令被存储在前述存储部件之一中。例如,在通电之后,CPU 2001能够执行来自从程序ROM 2003或HD 2006加载了指令之后的主RAM存储器2002的、与软件应用有关的那些指令。这种软件应用在由CPU 2001执行时使得进行根据本发明的方法的步骤。
[0564]还应理解,根据本发明的其它实施例,在诸如计算机、移动电话(蜂窝电话)、平板或能够向用户提供/显示内容的任何其它类型的装置(例如,显示设备)等的用户终端中提供根据上述实施例的解码器。根据又一实施例,在图像捕获设备中提供根据上述实施例的编码器,该图像捕获设备还包括用于捕获和提供内容以供编码器进行编码的照相机、摄像机或网络照相机(例如,闭路电视或视频监视照相机)。以下参见图20和21提供两个这样的示例。
[0565]图20是例示包括网络照相机2102和客户端设备2104的网络照相机系统2100的图。
[0566]网络照相机2102包括摄像单元2106、编码单元2108、通信单元2110和控制单元2112。
[0567]网络照相机2102和客户端设备2104经由网络200相互连接以能够彼此通信。
[0568]摄像单元2106包括镜头和图像传感器(例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)),并捕获对象的图像并基于该图像生成图像数据。该图像可以是静止图像或视频图像。摄像单元还可以包括分别适于(光学地或数字地)变焦或平摇的变焦部件和/或平摇部件。
[0569]编码单元2108通过使用在第一实施例至第十五实施例中说明的所述编码方法来对图像数据进行编码。编码单元2108使用在第一实施例至第十五实施例中说明的编码方法中的至少之一。对于其它实例,编码单元2108可以使用在第一实施例至第十五实施例中说明的编码方法的组合。
[0570]网络照相机2102的通信单元2110将由编码单元2108编码的经编码的图像数据传输至客户端设备2104。
[0571]此外,通信单元2110接收来自客户端设备2104的命令。命令包括用于设置用于编码单元2108的编码的参数的命令。
[0572]控制单元2112根据通信单元2110接收到的命令来控制网络照相机2102中的其它单元。
[0573]客户端设备2104包括通信单元2118、解码单元2116和控制单元2118。
[0574]客户端设备2104的通信单元2114向网络照相机2102传输命令。
[0575]此外,客户端设备2104的通信单元2114从网络照相机2102接收经编码的图像数据。
[0576]解码单元2116通过使用在第一实施例至第十五实施例中的任一个中说明的所述解码方法来对经编码的图像数据进行解码。对于其它实例,解码单元2116可以使用在第一实施例至第十五实施例中说明的解码方法的组合。
[0577]客户端设备2104的控制单元2118根据由通信单元2114接收的用户操作或命令来控制客户端设备2104中的其它单元。
[0578]客户端设备2104的控制单元2118控制显示设备2120以显示由解码单元2116解码的图像。
[0579]客户端设备2104的控制单元2118还控制显示设备2120以显示用于指定网络照相机2102的参数(包括用于编码单元2108的编码的参数)的值的GUI(图形用户界面)。
[0580]客户端设备2104的控制单元2118还根据对显示设备2120所显示的GUI的用户操作输入来控制客户端设备2104中的其它单元。
[0581]客户端设备2104的控制单元2118根据对显示设备2120所显示的GUI的用户操作输入来控制客户端设备2104的通信单元2114,以将用于指定网络照相机2102的参数的值的命令传输至网络照相机2102。
[0582]网络照相机系统2100可以确定照相机2102是否在记录视频期间利用变焦或平摇,并且当对视频流进行编码时可使用这样的信息,因为在拍摄期间变焦或平摇可以受益于仿射模式的使用,该仿射模式非常适合于对诸如变焦、旋转和/或拉伸(这可能是平摇的副作用,特别是在镜头是“鱼眼”镜头的情况下)等的复杂运动进行编码。
[0583]图21是例示智能电话2200的图。
[0584]智能电话2200包括通信单元2202、解码/编码单元2204、控制单元2206和显示单元2208。
[0585]通信单元2202经由网络接收经编码的图像数据。
[0586]解码单元2204对通信单元2202接收到的经编码的图像数据进行解码。
[0587]解码单元2204通过使用在第一实施例至第十五实施例中说明的所述解码方法来对经编码的图像数据进行解码。解码单元2204可以使用在第一实施例至第十五实施例中说明的解码方法中的至少之一。对于其它实例,编码单元2204可以使用在第一实施例至第十五实施例中说明的解码方法的组合。
[0588]控制单元2206根据通信单元2202接收到的用户操作或命令控制智能电话2200中的其它单元。
[0589]例如,控制单元2206控制显示设备2208以显示由解码单元2204解码的图像。
[0590]智能电话还可以包括用于记录图像或视频的图像记录装置2210(例如,数字照相机和相关联的电路)。这样的所记录图像或视频可以在控制单元2206的指令下由解码/编码单元2204进行编码。
[0591]智能电话还可以包括适于感测移动装置的定向的传感器2212。这样的传感器可以包括加速度计、陀螺仪、罗盘、全球定位(GPS)单元或类似的位置传感器。这样的传感器2212可以确定智能电话是否改变定向,并且在编码视频流时可以使用这样的信息,因为拍摄期间的定向的改变可以受益于仿射模式的使用,该仿射模式非常适合于对诸如旋转等的复杂运动进行编码。
[0592]替代和修改
[0593]应理解,本发明的目的是确保以最有效率的方式利用仿射模式,并且上面讨论的某些示例涉及根据所感知到的仿射模式有用的可能性来用信号通知使用仿射模式。当已知正对复杂运动(此时仿射变换可能特别有效)进行编码时,本发明的进一步示例可以应用于编码器。这样的情况的示例包括:
[0594]a)照相机放大/缩小
[0595]b)便携式照相机(例如,移动电话)在拍摄期间改变定向(即,旋转移动)。
[0596]c)“鱼眼”镜头照相机平摇(例如,图像的一部分的拉伸/失真)
[0597]如此,可以在记录处理期间提出复杂运动的指示,使得可以给予仿射模式用于片、帧序列或者实际上视频流整体的更高可能性。
[0598]在进一步的示例中,根据用于记录视频的装置的特征或功能,可以给予仿射模式被使用的更高可能性。例如,移动装置可能比(例如)固定的安全照相机(security camera)更可能改变定向,因此仿射模式可能更适合于对来自前者的视频进行编码。特征或功能的示例包括:变焦部件的存在/使用、位置传感器的存在/使用、平摇部件的存在/使用、装置是否是便携式的、或者装置上的用户选择。
[0599]虽然已经参考实施例描述了本发明,但是应当理解,本发明不限于所公开的实施例。本领域技术人员将理解,在不脱离所附权利要求限定的本发明的范围的情况下,可以进行各种改变和修改。本说明书(包括任何所附权利要求、摘要和附图)中公开的所有特征、和/或所公开的任何方法或处理的所有步骤,可以以任何组合进行组合,除了这样的特征和/或步骤中的至少一些相互排斥的组合之外。除非另外明确说明,否则本说明书(包括任何所附权利要求、摘要和附图)中所公开的各个特征可以由用于相同、等同或相似目的的替代特征代替。因此,除非另有明确说明,否则所公开的各个特征仅为通用系列等效或类似特征的一个示例。
[0600]还应理解,上述比较、确定、评估、选择、执行、进行或考虑的任何结果(例如,在编码或滤波处理期间作出的选择)可以在位流中的数据(例如,指示结果的标志或数据)中指示或可从位流中的数据确定/推断,使得所指示或确定/推断的结果可以用于处理而不是实际上例如在解码处理期间进行比较、确定、评估、选择、执行、进行或考虑。
[0601]在权利要求中,词语“包括”不排除其它元素或步骤,并且不定冠词“a”或“an”不排除多个。仅仅在相互不同的从属权利要求中记载不同特征的事实并不指示这些特征的组合不能被有利地使用。
[0602]权利要求中出现的附图标记仅作为说明,并且不应对权利要求的范围产生限定作用。
[0603]在前述实施例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质而发送,并且可以由基于硬件的处理单元执行。
[0604]计算机可读介质可以包括计算机可读存储介质,其与诸如数据存储介质等的有形介质或者包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质的通信介质相对应。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质或者(2)诸如信号或载波等的通信介质。数据存储介质可以是可由一个或多个计算机或者一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0605]作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储装置、闪速存储器或可以用于以指令或数据结构的形式存储期望程序代码并可以由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线(DSL)或无线技术(诸如红外、无线电和微波等)从网站、服务器或其它远程源发送指令,则同轴线缆、光纤线缆、双绞线、DSL或无线技术(诸如红外、无线电和微波等)包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬态介质,而是针对非瞬态的有形存储介质。这里使用的盘(disk)和碟(disc)包括致密盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘和蓝光盘,其中盘通常以磁性方式复制数据,而碟则通过激光以光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0606]指令可以由诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路等的一个或多个处理器执行。因此,如这里使用的术语“处理器”可以指任何前述结构或适合于实现这里所述技术的任何其它结构。另外,在一些方面,这里描述的功能可以在被配置为编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。此外,该技术可以在一个或多个电路或逻辑元件中完全实现。