用于视频编解码的双向模板运动向量微调的方法及装置与流程

文档序号:18457572发布日期:2019-08-17 01:44阅读:260来源:国知局
用于视频编解码的双向模板运动向量微调的方法及装置与流程

本发明要求以下申请的优先权:在2016年12月27日提出的申请号为62/439,203的美国临时专利申请、在2016年12月27日提出的申请号为62/439,207的美国临时专利申请、在2017年01月13日提出的申请号为62/445,831的美国临时专利申请、在2017年02月07日提出的申请号为62/455,625的美国临时专利申请、在2017年02月21日提出的申请号为62/461,300的美国临时专利申请、在2017年03月09日提出的申请号为62/469,048的美国临时专利申请。上述美国临时专利申请整体以引用方式并入本文中。

【技术领域】

本发明涉及使用双向模板运动向量微调(bilateraltemplatemvrefinement,btmvr)的运动补偿,以微调双向预测块的运动。具体地,本发明涉及与双向模板运动向量微调流程相关的不同技术以降低带宽、降低计算复杂度、提高性能或者其组合。



背景技术:

运动估计/运动补偿是很强大的编解码工具,其已在不同编解码标准中被使用,例如mpeg-2、h.264和新兴的高效视频编码(highefficiencyvideocoding,hevc)标准。在编码器侧处推导出的运动信息必须被发送至解码器侧,其可能消耗可观的带宽。为了提高运动信息的编解码效率,预测编解码当前运动向量(motionvector,mv)的运动向量预测(motionvectorprediction,mvp)已被开发。

合并模式和高级运动向量预测(advancedmotionvectorprediction,amvp)模式

对于每个帧间预测单元(predictionunit,pu),使用运动估计,以确定一个或两个mv。为了提高hevc中的mv编解码的编解码效率,hevcmvp预测性编码mv。具体地,hevc支援跳过模式和合并模式以用于mvp编解码。对于跳过模式和合并模式,基于空间相邻块(空间候选)或者时间同位块(co-locatedblock)(时间候选)的运动信息,候选集被推导出。当使用跳过模式或者合并模式编解码pu时,没有运动信息被发信。相反,仅所选择的候选的索引被编解码。对于跳过模式,残差信号被设置为0或者不被编解码。换言之,没有信息被发信以用于残差。每个合并pu重新使用所选择的候选的mv、预测方向和参考图像索引。

对于hevc中的合并模式,如图1所示,多达四个空间mv候选自相邻块a0、相邻块a1、相邻块b0和相邻块b1被推导出,一个时间mv候选自右下块tbr或者中心块tct推导出。对于时间候选,tbr被先使用。如果tbr不可用,则tct被使用。注意的是,如果四个空间mv候选中的任何一个不可用,则块b2用于推导出mv候选,作为替换。在四个空间mv候选和一个时间mv候选的推导流程之后,移除冗余(裁剪)被应用以移除任何冗余mv候选。如果在移除冗余(裁剪)之后,可用mv候选的数量小于5,则三种类型的额外候选被推导出,并被添加到候选集(候选列表)中。编码器基于率失真优化(rate-distortionoptimization,rdo)决策,在用于跳过模式或者合并模式的候选集内选择一个最终候选,并发送索引至解码器。

由于跳过候选和合并候选的推导相似,为方便起见,下文所指的“合并”模式可以对应于“合并”模式以及“跳过”模式。

mvp技术也被应用以预测地编解码运动向量,其称为高级运动向量预测(advancedmotionvectorprediction,amvp)。当以帧间amvp模式编解码pu时,用可以与运动向量预测子(motionvectorpredictor,mvp)一起使用以用于推导出mv的发送的运动向量差(motionvectordifference,mvd),执行运动补偿预测。为了确定帧间amvp模式的mvp,amvp方案被使用,以在包括两个空间mvp和一个时间mvp的amvp候选集中选择运动向量预测子。因此,mvp的amvp索引及相应的mvd需要被编码并发送以用于amvp编解码块。此外,指定了与每个列表的参考信息帧索引相关的双向预测和单预测(即列表0(l0)和/或列表1(l1)))中的预测方向的帧间预测方向也应被编码并发送。

当以跳过模式或者合并模式编解码pu时,除了所选择的候选的合并索引之外没有运动信息被发送,是因为跳过模式和合并模式采用运动推理方法(即mv=mvp+mvd,其中mvd为0)以自所选择的合并候选/跳过候选获得运动信息。

在amvp中,左mvp基于来自于a0和a1的第一可用mvp被选择,顶mvp是来自于b0、b1和b2的第一可用mvp,时间mvp是来自于tbr或者tct的第一可用mvp(如果tbr先被使用,如果tbr不可用,则tct被使用)。如果左mvp不可用且顶mvp不是已缩放mvp,则如果在b0、b1和b2中存在已缩放mvp,则第二顶(top)mvp可以被推导出。在hevc中,amvp的mvp的列表尺寸是2。因此,在两个空间mvp和一个时间mvp的推导流程之后,仅前两个mvp可用被包括在mvp列表中。如果在移除冗余之后,可用mvp的数量小于2,则0个向量候选被添加到候选列表中。

双向模板mv微调

在一些文献中,双向模板mv微调(bilateraltemplatemvrefinement,btmvr)也称为解码器侧mv微调(decoder-sidemvrefinement,dmvr)。例如,在jvet-d0029(xuchen,etal.,“decoder-sidemotionvectorrefinementbasedonbilateraltemplatematching”,jointvideoexplorationteam(jvet)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,4thmeeting:chengdu,cn,15–21october2016,document:jvet-d0029)中,公开了基于双向模板匹配的dmvr。btmvr的流程如图2所示,其中块210是当前块。用于当前块210的原始运动向量mv0220a和原始运动向量mv1220b被确定。例如,原始运动向量可以自合并候选推导出。btmvr流程被应用到双向预测块。换句话说,mv0指向l0参考图像270a,mv1指向l1参考图像270b。l0参考图像270a中的l0参考块230a可以自l0参考图像270a中的当前块的相应位置210a和mv0220a定位出。同样地,l1参考图像270b中的l1参考块230b可以自l1参考图像270b中的当前块的相应位置210b和mv1220b定位出。如图2所示,模板240透过使用来自于分别由mv0220a和mv1220b所指向的两个参考块(即230a和230b)的双向预测而被生成。如图2所示,使用此模板作为新的当前块,并执行运动估计以分别在l0参考图像260a和l1参考图像260b中查找更好的匹配块(即微调参考块250a和微调参考块250b)。如图2所示,微调mv称为mv0’260a和mv1’260b。随后,微调mv(即mv0’和mv1’)均用于生成当前块的最终双向预测预测块。

在btmvr(即dmvr)中,其使用两阶段搜索以微调当前块的mv。对于当前块,当前mv候选的成本先被评估。在第一阶段搜索中,在当前像素位置周围处,整数像素搜索被执行。八个候选被评估。两个相邻圆圈之间或者方形符号和相邻圆圈之间的水平距离和垂直距离中的至少一个是一个像素。在第一阶段中,具有最低成本的最佳候选被选择为最佳mv候选。在第二阶段中,在第一阶段中的最佳mv候选周围处,二分之一像素方形搜索被执行。具有最低成本的最佳候选被选择为最终运动补偿的最终mv。

当底层视频数据对应于彩色视频时,btmvr流程也可以被应用到颜色分量。本领域所知的是,彩色视频可以是不同颜色格式,例如具有诸如4:4:4、4:2:2和4:2:0的不同颜色采样格式的yuv颜色分量或者ycrcb颜色分量。例如,当颜色视频处于ycrcb420格式时,cr色度分量和cb色度分量具有y亮度分量的二分之一垂直解析度和二分之一水平解析度。在运动向量用于色度分量之前,基于y分量推导出的运动向量需要被缩放。

当btmvr流程被应用到彩色视频时,在亮度(即y)像素域中完成双向模板生成。对于当前pu的色度编码/解码,其直接使用具有基于颜色采样的色度分量的色度缩放的亮度分量的微调l0mv和微调l1mv:

cb的mv=y的微调mv/c_scal_cb

cr的mv=y的微调mv/c_scal_cr

在上述方程序中,c_scal_cb和c_scal_cr分别对应于cr和cb的色度缩放因数。在4:2:0颜色子采样的情况中,c_scal_cb和c_scal_cr均等于2。

基于样式mv推导(pattern-basedmvderivation,pmvd)

图3示出了帧率向上转换(framerateupconversion,fruc)双向匹配模式的示例,其中基于两个参考图像,当前块310的运动信息被推导出。透过在两个不同参考图像(即ref0和ref1)中沿着当前块的运动轨迹340查找两个块(即320和330)之间的最佳匹配,当前块的运动信息被推导出。在连续运动轨迹的假设下,指向两个参考块的与ref0相关的运动向量mv0和与ref1相关的运动向量mv1将与当前图像(即curpic)和两个参考图像ref0和ref1之间的时间距离,即td0和td1成比例。

图4示出了模板匹配fruc模式的示例。当前图像(即curpic)中的当前块410的相邻区域(即420a和420b)用作模板,以与参考图像(即图4中的ref0)中的相应模板(即430a和430b)匹配。模板420a/420b与模板430a/430b之间的最佳匹配将确定解码器侧推导运动向量440。虽然图4中显示了ref0,但是ref1也可以用作参考图像。

根据vceg-az07,当merge_flag或者skip_flag为真时,fruc_mrg_flag被发信。如果fruc_mrg_flag为1,则fruc_merge_mode被发信以表示双向匹配合并模式或者模板匹配合并模式被选择。如果fruc_mrg_flag为0,则意味着在这种情况中常规合并模式被使用,并且合并索引被发信。在视频编解码中,为了提高编解码效率,使用运动向量预测,块的运动向量可以被预测,其中候选列表被生成。合并候选列表可以用于以合并模式编解码块。当合并模式用于编解码块时,此块的运动信息(例如,运动向量)可以由合并mv列表中的候选mv之一表示。因此,不是直接发送块的运动信息,而是合并索引被发送到解码器侧。解码器保持相同的合并列表,并使用合并索引以检测出由合并索引发信的合并候选。通常合并候选列表包括少数量的候选,并且发送合并候选比发送运动信息有效得多。当以合并模式编解码块时,透过发信合并索引而不是显性发送,运动信息与相邻块的运动信息“合并”。然而,预测残差仍被发送。在预测残差为0或者非常小的情况中,预测残差被“跳过”(即跳过模式),并且块由具有合并索引的跳过模式编解码,以识别出合并列表中的合并mv。

虽然术语fruc指的是帧率向上转换的运动向量推导,但底层技术用于解码器以推导出一个或多个合并mv候选,而无需显性发送运动信息。因此,在本发明中,fruc也称为解码器推导运动信息。由于模板匹配方法是基于样式mv推导技术,所以在本发明中,fruc的模板匹配方法也称为基于样式mv推导(pattern-basedmvderivation,pmvd)。

在解码器侧mv推导方法中,透过扫描所有参考图像中的所有mv,称为时间推导mvp的新时间mvp被推导出。为了推导出list_0时间推导mvp,对于list_0参考图像中的每个list_0mv,此mv被缩放以指向当前帧。当前帧中由此缩放mv指向的4x4块是目标当前块。此mv还被缩放以指向用于目标当前块的list_0中refidx等于0的参考图像。图5a和图5b示出了分别推导list_0和list_1的时间推导mvp。在图5a和图5b中,每个小正方形块对应于4x4块。时间推导mvp流程扫描所有参考图像中的所有4x4块中的所有mv,以生成当前帧的时间推导list_0mvp和时间推导list_1mvp。例如,在图5a中,块510、块512和块514分别对应于当前图像(即cur.pic)、具有索引等于0(即refidx=0)的list_0参考图像和具有索引等于1(即refidx=1)的list_0参考图像的4x4块。具有索引等于1的list_0参考图像中的两个块的运动向量520和运动向量530是已知的。随后,透过分别缩放运动向量520和运动向量530,时间推导mvp522和时间推导mvp532可以被推导出。随后,缩放mvp被分配到相应的块。同样地,在图5b中,块540、块542和块544分别对应于当前图像(即cur.pic)、具有索引等于0(即refidx=0)的list_1参考图像和具有索引等于1(即refidx=1)的list_1参考图像的4x4块。具有索引等于1的list_1参考图像中的两个块的运动向量550和运动向量560是已知的。随后,透过分别缩放运动向量550和运动向量560,时间推导mvp552和时间推导mvp562可以被推导出。

对于双向匹配合并模式和模板匹配合并模式,两阶段匹配被使用。第一阶段是pu层匹配,第二阶段是子pu层匹配。在pu层匹配中,list_0和list_1中的多个原始mv分别被选择。这些mv包括来自于合并候选(即常规合并候选,例如hevc标准中所指定的这些)的mv和来自于时间推导mvp的mv。两个不同起始mv集被生成以用于两个列表。对于一个列表中的每个mv,透过包括此mv及透过将此mv缩放到另一列表而推导出的镜像mv,一mv对被生成。对于每个mv对,透过使用此mv对,两个参考块被补偿。这两个块的绝对差之和(sumofabsolutelydifferences,sad)被计算。具有最小sad的mv对被选择为最佳mv对。

在最佳mv被推导以用于pu之后,菱形搜索(diamondsearch)被执行以微调mv对。微调精度为1/8像素。微调搜索范围被限制在±1像素之内。最终mv对是pu层推导mv对。菱形搜索是快速块匹配运动估计演算法,其在视频编解码的领域中是众所周知的。因此,菱形搜索的细节此处不再重复。

对于第二阶段的子pu层搜索,当前pu被分割成子pu。子pu的深度(例如,3)被发信在序列参数集(sequenceparameterset,sps)中。最小子pu尺寸是4x4块。对于每个子pu,list_0和list_1中的多个起始mv被选择,其包括pu层推导mv的mv、0mv、当前子pu和右下块的hevc同位tmvp、当前子pu的时间推导mvp以及左侧pu/子pu和上方pu/子pu。透过使用如pu层搜索相似的机制,子pu的最佳mv对被确定。菱形搜索被执行,以微调mv对。此子块的运动补偿被执行,以生成用于此子pu的预测子。

对于模板匹配,上方4行和左侧4列的重构像素用于形成模板。模板匹配被执行,以查找最佳匹配模板及其相应mv。两阶段匹配也用于模板匹配。在pu层匹配中,list_0和list_1中的多个原始mv分别被选择。这些mv包括来自于合并候选(即常规合并候选,例如hevc标准中所指定的这些)的mv和来自于时间推导mvp的mv。两个不同起始mv集被生成以用于两个列表。对于一个列表中的每个mv,具有此mv的模板的sad成本被计算。具有最小成本的mv是最佳mv。随后,菱形搜索被执行,以微调mv。微调精度为1/8像素。微调搜索范围被限制在±1像素之内。最终mv是pu层推导mv。list_0和list_1中的mv单独被生成。

对于第二阶段的子pu层搜索,当前pu被分割成子pu。子pu的深度(例如,3)被发信在序列参数集中。最小子pu尺寸是4x4块。对于位于左侧pu分界线或者顶部pu分界线处的每个pu,list_0和list_1中的多个起始mv被选择,其包括pu层推导mv的mv、0mv、当前子pu和右下块的hevc同位tmvp、当前子pu的时间推导mvp以及左侧pu/子pu和上方pu/子pu的mv。透过使用如pu层搜索相似的机制,子pu的最佳mv对被确定。菱形搜索被执行,以微调mv对。此子块的运动补偿被执行,以生成用于此子pu的预测子。对于不位于左侧pu分界线或者顶部pu分界线处的这些pu,第二阶段的子pu层搜索不被使用,并且相应mv被设置成等于第一阶段中的mv。

在此解码器mv推导方法中,模板匹配也用于生成帧间模式编解码的mvp。当参考图像被选择时,模板匹配被执行以在所选择的参考图像上查找最佳模板。其相应mv是推导mvp。此mvp被插入到amvp中的第一位置处。amvp表示高级mv预测,其中使用候选列表,当前mv被预测编解码。当前mv与候选列表中的所选择的mv候选之间的mv差被编解码。

相邻推导预测偏移(neighbouring-derivedpredictionoffset,npo)

npo是一种最近发展的新编解码工具,以提高运动补偿预测子加预测偏移。用此偏移,帧之间的不同照明条件(lightingcondition)可以被考虑。使用相邻重构像素(neighbouringreconstructedpixel,nrp)和拓展运动补偿预测子(extendedmotioncompensatedpredictor,emcp),此偏移被推导出。

图6显示了推导偏移的一个示例性实施方式。为nrp和emcp所选择的样式是分别位于当前pu610和参考块620的左侧的n列(即612和622)以及顶端的m行(即614和624),其中n和m均是预设值。虽然常规nrp和emcp在本示例中示出,但是只要nrp和emcp使用相同的尺寸和形状,样式可以是任何尺寸和形状的,并且可以根据诸如pu尺寸或者编码单元(codingunit,cu)尺寸的任何编码参数被确定。此偏移被计算为nrp的平均像素值减去emcp的平均像素值。此推导出的偏移将被应用到整个pu以及运动补偿预测子。

图7显示了推导偏移的另一示例性实施方式。首先,对于相邻位置(即当前块730的左侧分界线和顶端分界线上的左侧像素710和上方像素720)中的每个,单个偏移被计算为nrp中相应像素减去emcp中的像素。如图7所示,是上方相邻位置720的6、4、2和-2和左侧相邻位置710的6、6、6和6的示例性偏移值。

在相邻位置的偏移值被获得之后,如示意740所示,当前pu730中的每个位置的推导偏移将被推导为来自于左侧位置和上方位置的偏移的平均。例如,位于当前pu的左上角731的第一位置,6的偏移将被生成,透过平均来自于左侧和上方的偏移(即(6+6)/2=6)。对于右侧的下一位置732,偏移被推导为5(即(6+4)/2=5)。根据光栅扫描顺序,剩余位置的偏移值可以被处理并生成。由于相邻像素与边界像素高度相关,所以偏移也是。根据npo,偏移可以被适应于像素位置。推导偏移将在pu上适应,并分别与运动补偿预测子一起被应用到每个pu。

局部照明补偿(localilluminationcompensation,lic)

lic是一种使用当前块和参考块的相邻样本执行帧间预测的方法。其是基于使用缩放因数a和偏移b的线性样式。透过参考当前块和参考块的相邻样本,本方法推导出缩放因数a和偏移b。另外,lic流程可以被使能或者禁能以适应性地用于每个cu。

关于lic的更多细节可以在jvet-c1001((xuchen,etal.,“algorithmdescriptionofjointexplorationtestmodel3”,jointvideoexplorationteam(jvet)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,3rdmeeting:geneva,ch,26may–1june2016,document:jvet-c1001)中找到。

高级运动向量解析度(advancedmotionvectorresolution,amvr)

为了提高编解码增益,amvr最近也已被引进。amvr可以适应性地切换mvd的解析度。当前mv与pu的mv预测子之间的mvd可以用四分之一像素解析度或者整数像素解析度进行编解码。切换被控制在编码单元层,整数mvd解析度标志(有条件地)被发信。

关于amvr的更多细节可以在jvet-c1001((xuchen,etal.,“algorithmdescriptionofjointexplorationtestmodel3”,jointvideoexplorationteam(jvet)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,3rdmeeting:geneva,ch,26may–1june2016,document:jvet-c1001)中被找到。

在下面发明中,公开了各种技术以提高编解码效率或者降低与双向模板mv微调相关的复杂度。



技术实现要素:

本发明公开了一种使用双向模板运动向量微调(即解码器侧运动向量微调)的方法及装置,以提高编解码效率或降低复杂度。根据一方法,如果与当前块相关的尺寸大于一阈值,则将双向模板运动向量微调应用到当前块。否则,不将双向模板运动向量微调应用到当前块。与当前块相关的尺寸可以对应于当前块的块尺寸。与当前块相关的尺寸可以对应于当前块的块宽度或块高度。

在另一方法中,基于参考块0和参考块1,推导出关于是否将双向模板运动向量微调应用到当前块的决策。在一个实施例中,决策基于参考块0与参考块1之间的差的测量被推导出。例如,参考块0与参考块1之间的差的测量被计算为参考块0与参考块1之间的绝对差之和。在这种情况中,若参考块0与参考块1之间的差的测量小于阈值,则决策表示将双向模板运动向量微调应用到当前块。阈值被允许自一个预测单元到另一预测单元、自一个片段到另一片段、或者自一个图像到另一图像改变。阈值可以对应于预定义固定值。在另一实施例中,阈值根据当前图像的比特深度被确定。在又一实施例中,当前块对应于一个预测单元,阈值根据预测单元尺寸被确定。阈值可以被发信在序列层、图像层、片段层或者预测单元层。

根据又一方法,在子块层处使用双向模板运动向量微调。使用相同的子块分割,当前块、参考块0、参考块1和当前模板均被分割成子块。指向列表0参考图像中的微调参考子块0的微调子块运动向量0和指向列表1参考图像中的微调子参考块1的微调子块运动向量1。微调子块运动向量0产生微调参考子块0与一个相应子模板之间的最小第一模板成本,以及微调子块运动向量1产生微调参考子块1与列表1参考图像中的一个相应子模板之间的最小第二模板成本。透过将微调参考子块0与微调参考子块1进行组合,生成最终子块预测子以用于当前子块。使用最终预测子,对当前块进行预测编码或者解码。一标志可以被发信在序列层、图像层、片段层或者预测单元层,以表示子块双向模板运动向量微调是否被使能。相同的子块分割将每个块分割成具有子块宽度和子块高度的多个子块,并且与子块宽度和子块高度相关的信息被发信在序列层、图像层、片段层或者预测单元层。

根据再一方法,对应于双向预测模式中的高级运动向量预测候选的运动向量用作双向模板运动向量微调的原始运动向量。高级运动向量预测候选被确定作为当前块的运动向量0和运动向量1,其中运动向量0指向列表0参考图像中的参考块0,运动向量1指向列表1参考图像中的参考块1。根据双向模板运动向量微调流程,运动向量0和运动向量1被微调成微调运动向量0和微调运动向量1。随后,使用与微调的微调运动向量0和微调的微调运动向量1相关的信息,对当前块进行处理。例如,可以透过将微调运动向量0所指向的微调参考块0和微调运动向量1所指向的微调参考块1进行组合,生成当前块的最终预测子。使用最终预测子,对当前块进行预测编码或者解码。一标志可以被发信在序列层、图像层、片段层或者预测单元层中,以表示是否将双向模板运动向量微调流程应用到来自于高级运动向量预测候选的运动向量,以微调运动向量。根据运动向量差解析度,可以确定是否使用双向模板运动向量微调流程。例如,如果运动向量差解析度对应于分数像素解析度,则双向模板运动向量微调流程被禁能。

根据再一方法,使用第二参考列表中的第二参考图像中的第二参考块作为模板,将指向第一列表的第一参考图像中的第一参考块的运动向量进行微调。同理,使用第一参考列表中的第一参考图像中的第一参考块或者第一微调参考块作为模板,将指向第二列表的第二参考图像中的第二参考块的运动向量进行微调。

根据再一方法,使用至少两个运动向量对,将双向模板运动向量微调应用到当前块,以推导出原始运动向量对或者最终运动向量对。若至少两个运动向量对用于推导出原始运动向量对,则自至少两个运动向量对确定指向列表0参考图像中的参考块0的原始运动向量0和指向列表1参考图像中的参考块1的原始运动向量1,其中来自于至少两个运动向量对且实现最低成本的一个运动向量对被选择为原始运动向量0和原始运动向量1。若至少两个运动向量对用于推导出最终运动向量对,则指向微调参考块的微调运动向量被推导出。参考块和微调参考块被组合以形成当前块的最终预测子。

【附图说明】

图1是根据hevc用于推导出合并候选的空间相邻块和时间相邻块。

图2是双向模板mv微调(即dmvr)流程的示例。

图3是fruc双向匹配模式的示例,其中当前块的运动信息基于两个参考图像被推导出。

图4是模板匹配fruc模式的示例。

图5a和图5b是分别推导出list_0和list_1的时间推导mvp的示例。

图6是推导用于npo的偏移的一示例性实施方式。

图7是推导偏移的另一示例性实施方式,其中上方像素和左侧像素被平均以形成当前像素的预测子。

图8是实施迭代双向模板mv微调流程的虚拟码示例。

图9是实施具有结束标准的迭代双向模板mv微调流程的虚拟码示例。

图10是基于子pu的双向模板mv微调的具体操作的示例。

图11是实施子pu的双向模板mv微调流程的示例性虚拟码。

图12是基于隐性切换的双向模板mv微调的具体操作的示例。

图13是实施基于隐性切换的双向模板mv微调流程的示例性虚拟码。

图14是使用amvp的双向模板mv微调的系统。

图15是实施用于lic或者npo的双向模板mv微调流程的示例性虚拟码。

图16是根据本发明实施例的使用基于块尺寸的双向模板mv微调的视频编解码系统的示例性流程图。

图17是根据本发明实施例的使用隐性切换的双向模板mv微调的视频编解码系统的示例性流程图。

图18是根据本发明实施例的使用基于子块的双向模板mv微调的视频编解码系统的示例性流程图。

图19是根据本发明实施例的使用用于amvp的双向模板mv微调的视频编解码系统的示例性流程图。

图20是根据本发明实施例的使用模板修改的双向模板mv微调的视频编解码系统的示例性流程图。

【具体实施方式】

以下描述为本发明的较佳实施例。以下实施例仅用来举例阐释本发明的技术特征,并非用以限定本发明。本发明的保护范围当视权利要求书所界定为准。

如前面所述,双向模板mv微调技术最近已被发展。在本发明中,公开了技术以提高编解码效率、降低系统带宽、降低计算复杂度或者其组合以用于双向模板mv微调。

具有固定数量迭代的迭代双向模板mv微调

根据本方法,公开了迭代双向模板mv微调技术以提高编解码效率。迭代双向模板mv微调的主要思想是进一步微调运动信息,从而提高编解码效率。在一个实施例中,双向模板mv微调可以被迭代n次。对于第i次迭代,其使用第(i-1)次迭代的微调mv作为第i次迭代的原始mv。

下面将具体描述本方法。本流程可以按照5个步骤进行实施。在步骤1中,对于当前块,确定原始mv_l0(即列表0mv)和原始mv_l1(即列表1mv),其中mv_l0和mv_l1是当前pu的当前mv。例如,原始mv_l0(即列表0mv)和原始mv_l1(即列表1mv)来自于当前合并候选。然而,根据本发明的原始mv的选择并不限于本示例。因此,当前块的mv_l0所指向的l0参考块和mv_l1所指向的l1参考块可以被定位出。在步骤2中,基于原始mv,执行双向模板mv微调流程。双向模板mv微调流程将生成微调mv,其称为refine_mv_l0和refine_mv_l1。在步骤3中,透过设置mv_l0=refine_mv_l0和mv_l1=refine_mv_l1,新的微调mv用作下一迭代的原始mv。在步骤4中,根据新mv_l0和新mv_l1,定位出新l0参考块和l1参考块。在步骤5中,如果迭代的当前数量(标记为i)是n,其中n是总迭代数量,则迭代双向模板mv微调流程。否则(即i<n),透过设置i=i+1,将索引i进行增加,并且本流程继续到步骤2以用于下一迭代。

在另一实施例中,迭代的数量是可调节的。例如,标志可以被发信以开启或关闭以用于迭代双向模板mv微调方法。单元的最小尺寸的发信可以被单独编解码在序列层、图像层、片段(slice)层或者pu层中。用于迭代双向模板mv微调方法的迭代的总数量也可以被发信。

如图8所示,是实施迭代双向模板mv微调流程的虚拟码的示例。在图8中,在括弧对810内,一轮(round)的双向模板mv微调流程被执行。语句820(即“for(i=1;i<=n;i++”)将使得双向模板mv微调流程将被执行n次。

具有结束标准的迭代双向模板mv微调(iterativebilateraltemplatemvrefinementwithaterminationcriterion)

为了提高编解码效率和计算效率,公开了使用隐性数量的迭代以用于迭代双向模板mv微调的方法。在先前的方法中,迭代的数量是固定的,或者被发信在比特流中。根据当前方法,公开了隐性确定迭代数量的方法。隐性流程可以是适应性的,且内容感知的流程。本方法背后的思想是,在用于迭代双向模板mv微调流程的每次迭代期间,“微调差”(例如,mv或者像素值)被计算。“微调差”可以被定义为原始值(例如,mv或者像素值)与微调值之间的差。如果微调差(例如,mv微调差或者像素值微调差)小于阈值,则迭代流程将被结束。为了具体描述本方法,变数target_context_value被定义为“微调差”的值,变数threshold被定义为此阈值以用于结束迭代。如图9所示,是用于实施本方法的虚拟码示例。在图9中,在括弧对910内,一轮双向模板mv微调流程被执行。语句920(即“if(target_context_value<threshold)”)对应于测试结束条件。如果测试条件是肯定的,则如语句930所示,其触发退出处理环。

本发明的一些实施例如下所示。在实施例1中,如果微调之后的运动向量差小于阈值,则迭代将被结束。在实施例2中,如果当前参考块与微调参考块之间的像素差小于一些阈值,则迭代将被结束。在实施例3中,如果运动向量差与像素差的一些组合小于阈值,则迭代将被结束。

实施例1

实施例1的主要概念是,如果微调之后的运动向量差小于阈值,则迭代将被结束。具体演算法的示例可以如图9所示,其中target_context_value=l0_mv_difference+l1_mv_difference。例如,l0_mv_difference可以是原始l0mv与微调mv之间的差。同样地,l1mv差可以被计算出。根据下面方程序,l0_mv_difference和l1_mv_difference可以被计算出:

l0_mv_difference=abs(“原始l0mvx部分”-“微调l0mvx部分”)+abs(“原始l0mvy部分”-“微调l0mvy部分”)

l1_mv_difference=abs(“原始l1mvx部分”-“微调l1mvx部分”)+abs(“原始l1mvy部分”-“微调l1mvy部分”)

在上述方程序中,abs()是绝对值。"x部分"是mv的水平部分。"y部分"是mv的垂直部分。

实施例2

实施例2的主要概念是,如果当前参考块与微调参考块之间的像素差小于一些阈值,则迭代将被结束。具体演算法可以如图9所示,其中target_context_value=l0_block_difference+l1_block_difference。例如,l0_block_difference可以被计算为原始l0参考块与l0微调块之间的差。同理,l1_block_difference可以被计算出。根据如下方程序,l0_block_difference和l1_block_difference可以被计算出:

l0_block_difference=l0参考块与l0微调块之间的sad

l0_block_difference=l0参考块与l0微调块之间的sad

在上述方程序中,sad对应于绝对差之和,l0参考块和l0微调块的定义如图9所示。

实施例3

实施例3背后的主要概念是,如果运动向量差与像素差的一些组合小于阈值,则迭代将被结束。实施本实施例的具体演算法的示例可以如图9所示,其中target_context_value=a*(l0_mv_difference+l1_mv_difference)+b*(l0_block_difference+l1_block_difference),其中a,b是加权因数。

基于子pu的双向模板mv微调

为了提高编解码效率,本发明公开了基于子pu的双向模板mv微调。本方法背后的主要思路是,将pu分割成子pu,随后在子pu层中执行双向模板mv微调。本方法的具体操作的示例可以如图10所示,其中仅与l0部分相关的操作被示出。相似地,与l1部分相关的操作可以被推导出。图10中的示例性流程包括4个步骤。在图10中,块1010是当前块。用于当前块1010的原始运动向量mv01020和原始运动向量mv1(未示出)被确定,其中mv0指向l0参考图像1070中的l0参考块,mv1指向l1参考图像中的l1参考块(未示出)。在步骤1中,l0参考块和l1参考块被组合以生成双向模板1040。在步骤2中,l0参考块和l1参考块被分割成子pu。同样,双向模板1040被分割成子pu。当前pu(尺寸为mxn)可以被分割成(m/s)*(n/t)个子pu,每个子pu的尺寸为sxt,其中m可被s整除,n可被t整除。在图10中,本示例被示出以用于每个块,其正被分割成2x2子块。当前块1010被分割成子块1015。当前块的左上子块1012和模板的左上子块1042被示出。当前块1010和子块1012在l0参考图像中的相应位置由虚线块1010a和子块1012a表示。同样地,l0参考块的左上参考子块1030被示出。在步骤3中,对于子puj(即j=1~(m/s)*(n/t)),子pu层的双向模板mv微调被执行,其中在子pu层处,双向模板mv微调被执行。在图10中,模板mv微调流程被示出以用于位于当前pu的左上角处的子pu1012。双向模板1045(即pu)被分割成子pu1045,其中双向模板1045(即pu)的左上角子pu1042(如粗线盒所示)用于生成微调子pu参考块1050。当前子pu1012的微调l0mv1060可以自当前子pu1012a和微调子pu1050的位置确定。同理,l1参考图像中的当前子pu的微调l1mv可以被推导出。在步骤4中,微调子pul0mv和微调子pul1mv均用作mv以用于后续阶段流程(例如,运动补偿或者双向光流(bidirectionalopticalflow,bio))。新的微调子pul0mv和微调子pul1mv可以用作新的预测子以用于后续阶段(例如,运动补偿或者bio)。

在上述流程的步骤3中,子流程需要子pu双向模板作为输入。假设其现在正在处理子puj。随后,其使用子pu双向模板以在l0参考图像中“子puj的l0参考子块”周围用搜索范围p2xq2执行运动估计搜索。l0的微调mv被推导为具有最小运动估计成本(例如,最小绝对差之和,sad)的mv。随后,子pu双向模板用于在l1参考图像中“子puj的l1参考子块”周围用p2xq2的搜索范围执行运动估计搜索。l1的微调mv被推导为具有最小运动估计成本(例如,最小绝对差之和,sad)的mv。最后,此子pu双向模板mv微调流程的输出是用于子puj的l0的微调mv和l1的微调mv。

实施子pu双向模板mv微调流程的示例性虚拟码如图11所示,其中如括弧对1110内的代码所示,子pu双向模板mv微调流程被执行以用于每个子pu。

此外,根据一本发明实施例,开启或者关闭子pu双向模板mv微调流程的标志可以被发信。例如,标志(例如"sub_pu_mv_refine_en")可以被发信以表示“子pu双向模板mv微调”是否被使能(值1:使能,值0禁能并返回到原始双向模板mv微调模式)。当不存在时,sub_pu_mv_refine_en的值被推导为0。标志sub_pu_mv_refine_en也可以被单独发信在序列层、图像层、片段层或者pu层中。另外,根据本发明一实施例,子pu尺寸是可调节的。本发明提出了发信一个或多个变数(例如,"sub_pu_mv_refine_width"和"sub_pu_mv_refine_height")以表示子pu宽度和高度以用于所提出的方法。一个或多个变数也可以被单独发信在序列层、图像层、片段层或者pu层中。

基于cu/pu尺寸的双向模板mv微调

双向模板mv微调要求额外的参考像素以执行mv微调,其将增加最差情况带宽。为了降低最差情况带宽,本发明提出了在cu/pu面积小于(或等于)阈值时禁能双向模板mv微调。例如,如果cu/pu尺寸小于并等于64,则双向模板mv微调被禁能。在另一实施例中,当cu/pu宽度小于(或等于)阈值m,和/或cu/pu高度小于(或等于)阈值n时,双向模板mv微调被禁能。例如,如果cu/pu宽度小于并等于8,且高度小于并等于8,则双向模板mv微调被禁能。

用于彩色视频的双向模板mv微调

为了提高编解码效率,根据本方法的用于彩色视频的双向模板mv微调使用亮度分量的原始mv(即微调之前),以用于色度分量的mv,而不是使用亮度分量的微调mv。当双向模板mv微调的流程被完成时,ymv和cbcrmv被推导为:

新yl0mv=微调yl0mv

新yl1mv=微调yl1mv

新cbcrl0mv=原始yl0mv/c_scal_cbcr

新cbcrl1mv=原始yl1mv/c_scal_cbcr

在上述方程序中,c_scal_cbcr是色度缩放因数。由于cr和cb总是使用相同的子采样格式,所以相同的色度缩放因数用于此两个色度分量。

用于彩色视频的双向模板mv微调–色度分量的单独mv微调

在另一方法中,不是使用亮度分量(即y)的微调mv,而是cb分量和cr分量推导出其本身的mv微调。因此,本发明公开了基于色度的双向模板mv微调流程,其从原始mv开始:

cbcr原始l0mv=y原始l0mv/c_scal_cbcr

cbcr原始l1mv=y原始l1mv/c_scal_cbcr

详细的基于色度的流程流与基于亮度的流程流相同,其如图2所示。在色度域中的双向模板mv微调期间,l0参考图像/l1参考图像(即270a/270b)、原始l0/l1mv(即220a/220b)、l0参考块/l1参考块(即210a/210b)、双向模板(即240)均被推导出,以用于色度域中的色度分量。换句话说,l0参考图像是色度l0参考图像,原始l0mv=y原始l0mv/c_scal_cbcr,l0参考块是色度原始l0mv所指向的色度参考块,双向模板由色度l0参考块和色度l1参考块生成。同理,用于l1部分的上述推导可以被执行。最后,在色度mv微调的处理之后,色度微调l0mv和色度微调l1mv被推导出。由l0的微调mv所指向的色度参考块(即250a)和由l1的微调mv所指向的色度参考块(即250b)均是最终色度参考块,以用于后续阶段(例如运动补偿)。

基于隐性切换的双向模板mv微调

为了提高编解码效率,本发明公开了基于隐性切换的双向模板mv微调。下面描述实施本方法的示例。在步骤1中,如图12所示,l0参考块和l1参考块被获得,其中,这些推导与图2中的推导相似。在步骤2中,l0参考块与l1参考块之间的差,其被标记为cur_diff1210被计算出。不同的测量可以用于l0参考块和l1参考块之间的差。例如,sad可以被使用。在步骤3中,阈值被确定以用于当前pu。此阈值可以自pu到pu、自片段到片段或者自图像到图像改变。在步骤7中,cur_diff与此阈值进行比较。如果cur_diff小于此阈值,则双向模板mv微调被执行。在此情况中,微调mv用作最终mv以用于pu。然而,如果cur_diff大于或等于此阈值,则双向模板mv微调被关闭以用于pu。在这种情况中,原始mv用作pu的最终mv。示出此基于切换的方法的示例性虚拟码如图13所示,其中在语句1310中,“if(difference<threshold)”被检测,且“difference”对应于上述的“cur_diff”。如果此条件是肯定的(即(difference<threshold)),则对应于由大括弧1320所示的双向模板mv微调流程的步骤被执行。否则(即(difference≥threshold)),由大括弧1330所示的对应于pu的原始mv的步骤被执行。

在一个实施例中,此阈值可以是常数,并被预定义在视频编解码系统中。在另一实施例中,用于所提出的基于隐性切换的方法的阈值可以逐个pu、逐个片段或者逐个图像改变。

在又一实施例中,此阈值依存于底层视频数据的比特深度。例如,底层视频数据可以具有8比特、10比特或者12比特深度,用于8比特深度数据的阈值是threshold_8bit,用于10比特深度的阈值可以被推导为threshold_8bit*4,用于12比特深度的阈值可以被推导为threshold_8bit*16。在又一实施例中,此阈值取决于pu尺寸。例如,一个阈值可以被选择以用于每个pu尺寸。因此,如果存在k个不同的pu尺寸,则存在k个阈值。

在再一实施例中,此阈值被发信在用于基于隐性切换方法的视频比特流中。此阈值可以被发信在序列层、图像层、片段层或者pu层中。

用于amvp的双向模板mv微调

为了提高编解码效率,本发明公开了基于amvp的双向模板mv微调。基本思想如图14所示。帧间amvp模式生成amvp预测子1410和mvd1420。amvp预测子和mvd被组合以形成最终mv,以用于后续阶段(例如,运动补偿(motioncompensation,mc))。根据本方法,双向模板mv微调流程1430被应用到帧间amvp模式的mv。微调mv被使用在后续阶段中(例如,mc)。根据本方法,图2中的原始l0mv和原始l1mv变成帧间amvp模式的mv,而用于传统方法的图2中的原始l0mv和原始l1mv对应于合并模式/跳过模式的mv。

在一个实施例中,标志可以被发信以开启或关闭基于amvp的双向模板mv微调。例如,标志(例如,"amvp_refine_en")可以被发信以表示本方法是否被使能(值1:使能,值0:禁能)。当不存在时,amvp_refine_en的值被推断为0。标志amvp_refine_en也可以被发信在序列层、图像层、片段层或者pu层。

此外,在基于amvp的双向模板mv微调中,基于mvd解析度,双向模板mv微调可以被选择性的开启或者关闭。在amvr模式中,基于amvr标志,mvd解析度可以是整数或者分数。根据一个实施例,如果mvd解析度是分数(例如,四分之一像素),则mv不由双向模板mv微调进行处理。如果mvd解析度是整数,则mv由双向模板mv微调进行进一步处理。

在另一实施例中,标志(例如,"amvr_refine_en")可以被发信以表示本方法是否被使能(值1:使能,值0:禁能)。当不存在时,amvr_refine_en的值被推断为1。标志amvr_refine_en也可以被发信在序列层、图像层、片段层或者pu层。

用于lic/npo的双向模板mv微调

为了提高编解码效率,本发明公开了基于lic/npo的双向模板mv微调。本方法背后的基本思想是,根据lic/npo演算法,修改双向模板mv微调流。本发明公开了两个实施例,其包括基于后npo(或者后lic)的方法和基于前npo(或者前lic)的方法。

实施例1:基于后npo(后lic)的方法

基于图2的图15可以用于示出本实施例。与传统的双向模板mv微调相似,l0参考块被生成,以为了执行npo处理或者lic处理。l0参考块被存储在暂时暂存器0中。同样地,l1参考块被生成并存储在暂时暂存器1中。来自于暂时暂存器0和暂时暂存器1的像素用于生成双向模板。不同的技术可以用于生成双向模板,例如平均来自于暂时暂存器0和暂时暂存器1的像素以形成双向模板。用于双向模板的域变换程序1510被需要以用于npo流程或者lic流程。随后,已变换模板1520用于推导出局部运动估计,并微调mv。域变换(即自npo/lic域到原始像素域)的目的在于,将双向模板(npo/lic处理域)变换到原始参考像素域。“npo/lic域到原始域的变换”是逆lic处理或者逆npo处理。对于npo的情况,逆npo直接自模板提取l0参考块的npo偏移,并将结果template_sub_off0存储在暂存器中。随后,如图15所示,template_sub_off0用于在l0参考图像中执行局部运动估计,并微调原始l0mv以推导出微调l0mv。对于l1,如图15所示,相似流程可以被执行以微调原始l1mv,以推导出微调l1mv。

实施例2:基于前npo(前lic)的方法

根据本实施例,传统的双向模板mv微调可以被执行,并且不涉及lic/npo流程。如图2所示,原始l0mv被微调成微调l0mv,原始l1mv被微调成微调l1mv。随后,npo/lic程序被执行以用于l0微调块和l1微调块,随后,npo/lic处理的l0块和npo/lic处理的l1块由后续阶段进行使用,例如运动补偿。

多个mv对候选

当双向预测mv对被发信(例如,表示所选择的双向预测合并候选的合并索引)时,预定义mv微调流程被执行以根据jvet-d0029中公开的传统的双向模板mv微调对list_0mv和list_1mv进行微调,以为了更好的编解码效率。为了进一步提高编解码性能,下面公开了不同的修改mv微调方法:

首先,透过使用来自于mv0和mv1的参考块的双向预测,双向预测块(即双向预测模板)被生成。使用双向预测块作为新的当前块(即模板),并执行运动估计以分别在参考图像0和参考图像1中查找更佳匹配块,其是相同的。微调mv称为mv0’和mv1’。随后,微调mv(即mv0’和mv1’)用于生成当前块的最终双向预测预测块。根据本方法,mv微调的原始mv可以被推导出,透过评估对应于当前块的双向预测模式的多个mv候选(例如多个合并候选)。具有最低成本的mv候选是mv微调的起始或者原始mv。

在一个实施例中,透过使用{mv0,mv1,mv0’,mv1’}中的mv,当前块的最终双向预测预测块被生成,其中mv0和mv1对应于原始mv对,mv0’和mv1’对应于微调mv对。

在另一个实施例中,在微调list_0(或者list_1)中的预测块之后,透过使用微调list_0(或者list_1)预测子和原始list_0(或者list_1)预测子,双向预测可以被重新生成。重新生成的双向预测用于微调list_0(或者list_1)预测子。

修改模板

来自于发信的mv对(例如,mv0和mv1),两个运动估计(motionestimation,me)流程被执行,以微调mv0和mv1。为了微调mv0,参考图像1中基于mv1的预测块用作新的当前块(即模板)预测块。透过使用新的当前块,mv0被微调成mv0’。同样地,透过将参考图像0中的预测块用作新的当前块(即模板),mv1被微调成mv1’。原始搜索mv是mv0和mv1,以用于这两个运动估计流程。透过使用mv对,即{mv0’,mv1’},当前块的最终双向预测预测块被生成。

在一个实施例中,在微调list_0(或者list_1)中的预测块之后,已更新的list_0(或者list_1)预测子用于微调list_1(或者list_0)预测子。

显性解码器侧mv微调模式

语法mv_refine_flag可以被发信以使能或者禁能所提出的mv微调方法。此标志可以被有条件地发信。例如,其仅被应用于合并模式或者amvp模式。

当mv_refine_flag为真时,mv候选列表被推导出。如果候选列表中的mv数量大于1,则mv_refine_flag被发信以表示解码器侧mv微调的原始搜索点。

合并候选列表生成流程可以用于mv后续列表生成流程。有效的相邻运动信息和时间同比特信息可以被放入到候选列表中。如果运动信息不是双向预测mv或者不是真实双向预测mv(即位于当前图像之前的一个参考图像和位于当前图像之后的另一参考图像),则运动信息将不被放入到候选列表中。候选列表中的mv数量可以是固定数字。如果候选列表不是完整的,则人工运动信息可以被插入。例如,候选的一个列表mv可以被选择。透过mv缩放,此所选择的mv在其他列表中的镜像mv可以被生成,所选择的mv和所缩放的mv可以是人工运动信息的一种。在另一实施例中,组合的mv对可以用作人工运动信息。例如,候选o的list_mmv和候选p的list_nmv可以是人工运动信息,其中m和n可以是(0,1)或者(1,0),并且o和p是不同的整数。

用于解码器侧mv微调的修改合并候选列表

当合并候选是双向预测候选或者真实双向预测候选(true-bi-predictioncandidate)时,dmvr可以被应用以微调预测子。当解码器侧mv微调被应用时,双向预测候选或者真实双向预测候选可能比单预测候选更好。然而,并不是合并候选列表中的每个候选是双向预测候选或者真实双向预测候选。因此,本发明提出了向前移动双向预测候选或者真实双向预测候选。在一个实施例中,所有双向预测候选或者真实双向预测候选被移动到其他候选的前面。在另一实施例中,双向预测候选或者真实双向预测候选被向前移动k个位置,其中k可以是1。另一实施例中,连续双向预测候选的第一双向预测候选或者第一真实双向预测候选被向前移动k个位置,其中k可以是1。例如,如果候选2、候选3、候选4和候选5均是真实双向预测候选。候选2与候选1进行交换。

图16示出了根据本发明实施例的使用基于块尺寸的双向模板mv微调的视频编解码系统的示例性流程图。本流程图以及本发明中的其他流程图中所示的步骤可以被实现为编码器侧和/或解码器侧的一个或多个处理器(例如一个或多个cpu)上可执行的程序代码。本流程图中所示的步骤也可以基于硬件被实现,例如用于执行该流程图中步骤的一个或者多个电子设备或者处理器。根据本方法,在步骤1610中,接收与当前图像中的当前块相关的输入数据,其中当前块使用双向预测编解码。在步骤1620中,确定指向列表0参考图像中的参考块0的原始运动向量0(motionvector0,mv0)和指向列表1参考图像中的参考块1的原始运动向量1(motionvector1,mv1),其中原始运动向量0和原始运动向量1对应于当前块的双向预测运动向量。在步骤1630中,检测与当前块相关的尺寸是否大于阈值。如果测试结果是“是”(即与当前块相关的尺寸大于阈值),则执行步骤1640-步骤1660。否则(即来自于步骤1630的“否”路径),则执行步骤1670。在步骤1640中,将参考块0和参考块1进行组合以形成当前块的当前模板。在步骤1650中,确定指向列表0参考图像中的微调参考块0的微调运动向量0(即mv0’)和指向列表1参考图像中的微调参考块1的微调运动向量1(即mv1’),其中mv0’产生当前块的当前模板与微调参考块0之间的最小第一模板成本,mv1’产生当前块的当前模板与微调参考块1之间的最小第二模板成本。在步骤1660中,透过将微调参考块0和微调参考块1进行组合,生成当前块的最终预测子。在步骤1670中,将参考块0和参考块1进行组合,以形成当前块的最终预测子。在步骤1680中,使用最终预测子,对当前块进行预测性编码或者解码。

图17示出了根据本发明实施例的使用隐性切换的双向模板mv微调的视频编解码系统的示例性流程图。根据本方法,在步骤1710中,接收与当前图像中的当前块相关的输入数据,其中当前块使用双向预测编解码。在步骤1720中,确定指向列表0参考图像中的参考块0的原始运动向量0和指向列表1参考图像中的参考块1的原始运动向量1,其中原始运动向量0和原始运动向量1对应于当前块的双向预测运动向量。在步骤1730中,基于参考块0和参考块1,确定关于是否将双向模板mv微调应用到当前块的决策。在步骤1740中,检测此决策是否表示将双向模板mv微调应用到当前块。如果测试结果是“是”(即将双向模板mv微调应用到当前块),则执行步骤1750-步骤1770。否则(即来自于步骤1740的“否”路径),则执行步骤1780。在步骤1750中,将参考块0和参考块1进行组合以形成当前块的当前模板。在步骤1760中,确定指向列表0参考图像中的微调参考块0的微调运动向量0(即mv0’)和指向列表1参考图像中的微调参考块1的微调运动向量1(即mv1’),其中mv0’产生当前块的当前模板与微调参考块0之间的最小第一模板成本,mv1’产生当前块的当前模板与微调参考块1之间的最小第二模板成本。在步骤1770中,透过将微调参考块0和微调参考块1进行组合,生成当前块的最终预测子。在步骤17870中,将参考块0和参考块1进行组合,以形成当前块的最终预测子。在步骤1790中,使用最终预测子,对当前块进行预测性编码或者解码。

图18示出了根据本发明实施例的使用基于子块的双向模板mv微调的视频编解码系统的示例性流程图。根据本方法,在步骤1810中,接收与当前图像中的当前块相关的输入数据,其中当前块使用双向预测编解码。在步骤1820中,确定指向列表0参考图像中的参考块0的原始运动向量0和指向列表1参考图像中的参考块1的原始运动向量1,其中原始运动向量0和原始运动向量1对应于当前块的双向预测运动向量。在步骤1830中,将参考块0和参考块1进行组合以形成当前块的当前模板。在步骤1840中,使用相同的子块分割,将当前块分割成当前子块,将参考块0分割成参考子块0,将参考块1分割成参考子块1,并将当前模板分割成当前子模板。在分割成子块之后,将步骤1850至步骤1870应用到每个子块。在步骤1850中,确定指向列表0参考图像中的微调参考子块0的微调子块运动向量0(即子mv0’)和指向列表1参考图像中的微调子参考块1的微调子块运动向量1(即子mv1’),其中子mv0’产生微调参考子块0与一个相应子模板之间的最小第一模板成本,子mv1’产生微调参考子块1与列表1参考图像中的一个相应子模板之间的最小第二模板成本。在步骤1860中,透过将微调参考子块0与微调参考子块1进行组合,生成当前块的最终子块预测子。在步骤1870中,使用最终子块预测子,对当前子块进行预测性编码或者解码。

图19示出了根据本发明实施例的使用用于amvp模式的双向模板mv微调的视频编解码系统的示例性流程图。根据本方法,在步骤1910中,接收与当前图像中的当前块相关的输入数据,其中当前块用双向预测编解码。在步骤1920中,确定amvp候选作为当前块的运动向量0(即mv0)和运动向量1(即mv1),其中mv0指向列表0参考图像中的参考块0,mv1指向列表1参考图像中的参考块1。在步骤1930中,将参考块0和参考块1进行组合以形成当前块的当前模板。在步骤1940中,确定指向列表0参考图像中的微调参考块0的微调运动向量0(即mv0’)和指向列表1参考图像中的微调参考块1的微调运动向量1(即mv1’),其中mv0’产生当前块的当前模板与微调参考块0之间的最小第一模板成本,mv1’产生当前块的当前模板与微调参考块1之间的最小第二模板成本。在步骤1950中,使用与微调的mv0’和微调的mv1’相关的信息,对当前块进行处理。

图20是根据本发明实施例的使用模板修改的双向模板mv微调的视频编解码系统的示例性流程图。根据本方法,在步骤2010中,接收与当前图像中的当前块相关的输入数据,其中当前块用双向预测编码。在步骤2020中,确定指向第一列表的第一参考图像中的第一参考块的第一原始mv以及指向另一列表的第二参考图像中的第二参考块的第二原始mv,其中第一原始mv和第二原始mv对应于当前块的双向预测运动向量。在步骤2030中,确定指向第一列表的第一参考图像中的第一微调参考块的第一微调mv,其中第一微调mv产生第二参考块与第一微调参考块之间的最小第一模板成本。在步骤2040中,确定指向另一列表的第二参考图像中的第二微调参考块的第二微调mv,其中第二微调mv产生第一参考块与第二微调参考块之间或者第一微调参考块与第二微调参考块之间的最小第二模板成本。在步骤2050中,透过将第一微调参考块和第二微调参考块进行组合,生成当前块的最终预测子。在步骤2060中,使用最终预测子,对当前块进行预测性编码或者解码。

所示的流程图用于示出根据本发明的视频编解码的示例。在不脱离本发明的精神的情况下,本领域技术人员可以修改每个步骤、重组这些步骤、将一个步骤进行分割或者组合这些步骤而实施本发明。在本发明中,具体的语法和语义已被使用以示出实现本发明实施例的示例。在不脱离本发明的精神的情况下,透过用等同的语法和语义来替换该语法和语义,本领域技术人员可以实施本发明。

上述说明,使得本领域技术人员能够在特定应用程序的内容及其需求中实施本发明。对本领域技术人员来说,所描述的实施例的各种变形将是显而易见的,并且本文定义的一般原则可以应用于其他实施例中。因此,本发明不限于所示和描述的特定实施例,而是将被赋予与本文所公开的原理和新颖特征相一致的最大范围。在上述详细说明中,说明了各种具体细节,以便透彻理解本发明。尽管如此,将被本领域技术人员理解的是,本发明能够被实践。

如上所述的本发明的实施例可以在各种硬件、软件代码或两者的结合中实现。例如,本发明的实施例可以是集成在视频压缩芯片内的电路,或者是集成到视频压缩软件中的程序代码,以执行本文所述的处理。本发明的一个实施例也可以是在数字讯号处理器(digitalsignalprocessor,dsp)上执行的程序代码,以执行本文所描述的处理。本发明还可以包括由电脑处理器、数字讯号处理器、微处理器或现场可程序设计门阵列(fieldprogrammablegatearray,fpga)所执行的若干函数。根据本发明,透过执行定义了本发明所实施的特定方法的机器可读软件代码或者固件代码,这些处理器可以被配置为执行特定任务。软件代码或固件代码可以由不同的程序设计语言和不同的格式或样式开发。软件代码也可以编译为不同的目标平台。然而,执行本发明的任务的不同的代码格式、软件代码的样式和语言以及其他形式的配置代码,不会背离本发明的精神和范围。

本发明可以以不脱离其精神或本质特征的其他具体形式来实施。所描述的例子在所有方面仅是说明性的,而非限制性的。因此,本发明的范围由后附的权利要求来表示,而不是前述的描述来表示。权利要求的含义以及相同范围内的所有变化都应纳入其范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1