解码方法、编码方法、装置及设备

文档序号:53010 发布日期:2021-09-28 浏览:32次 >En<

阅读说明:本技术 解码方法、编码方法、装置及设备 (Decoding method, encoding method, device and equipment ) 是由 方树清 于 2020-03-26 设计创作,主要内容包括:本申请提供一种解码方法、编码方法、装置及设备,该解码方法包括:获取当前块的码流,并从当前块的码流中解析增强型时域运动矢量预测模式的索引信息,基于当前块的第一周围块,确定当前块的匹配块;基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第二时域候选模式列表;基于索引信息,从第二时域候选模式列表中确定增强型时域运动矢量预测模式;基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿。该方法可以提高解码性能。(The application provides a decoding method, an encoding method, a device and equipment, wherein the decoding method comprises the following steps: acquiring a code stream of a current block, analyzing index information of an enhanced time domain motion vector prediction mode from the code stream of the current block, and determining a matching block of the current block based on a first peripheral block of the current block; determining a candidate enhanced temporal motion vector prediction mode based on the matching block and a new matching block obtained by shifting the matching block, and constructing a second temporal candidate mode list based on the candidate enhanced temporal motion vector prediction mode; determining an enhanced temporal motion vector prediction mode from the second temporal candidate mode list based on the index information; and determining the motion information of each subblock in the current block based on the enhanced time domain motion vector prediction mode, and performing motion compensation on each subblock in the current block based on the motion information of each subblock in the current block. The method can improve decoding performance.)

解码方法、编码方法、装置及设备

技术领域

本申请涉及视频编解码技术,尤其涉及一种解码方法、编码方法、装置及设备。

背景技术

完整的视频编码一般包括预测、变换、量化、熵编码、滤波等操作。预测可以分为帧内预测和帧间预测,帧内预测是利用周围已编码块作为参考对当前未编码块进行预测,有效去除空域上的冗余。帧间预测是使用邻近已编码图像对当前图像进行预测,有效去除时域上的冗余。

通用视频编码(Versatile Video Coding,简称VVC)标准里采纳的可选时域运动矢量预测(Alternative Temporal Motion Vector Prediction,简称ATMVP)技术是利用时域子块的运动信息,为当前编码单元内的每个子块提供不同的运动信息,其原理是通过当前编码块的相邻块的运动信息,在Co-located(共同位置)帧中找到与当前编码块的相邻块所对应的编码块,然后将与当前编码块在Co-located帧中对应位置的编码块内部的每个子块的运动信息提供给当前编码块内的每个子块使用。

然而实践发现,传统的ATMVP技术中,在co-located帧中寻找与当前编码块对应位置的编码块是需要依赖于当前编码块的周围块的运动信息的,如果周围块的运动信息不准,会导致寻找的对应位置的编码块的运动信息也不可靠,从而影响编码性能。

发明内容

有鉴于此,本申请提供一种解码方法、编码方法、装置及设备。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种解码方法,包括:

获取当前块的码流,并从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息,所述索引信息用于标识所述增强型时域运动矢量预测模式在编码端设备构建的第一时域候选模式列表中的位置;

基于所述当前块的第一周围块,确定所述当前块的匹配块;

基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第二时域候选模式列表;

基于所述索引信息,从所述第二该时域候选模式列表中确定增强型时域运动矢量预测模式;

基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿。

在一些实施例中,所述基于所述当前块的第一周围块,确定所述当前块的匹配块,包括:

基于所述第一周围块,确定第一阶段的运动信息;

基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一些实施例中,所述基于所述第一周围块,确定第一阶段的运动信息,包括:

基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息不指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息不指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息不指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息不指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述基于所述第一周围块,确定第一阶段的运动信息,包括:

确定所述第一阶段的运动矢量为0,参考帧索引为为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一阶段的运动信息,确定所述当前块的匹配块,包括:

基于所述当前块的位置、所述第一阶段的水平运动矢量、垂直运动矢量以及运动矢量的精度,确定所述当前块的匹配块。

在一些实施例中,所述基于所述第一阶段的运动信息,确定所述当前块的匹配块,包括:

基于所述当前块的位置、所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

将第一子块和第二子块修剪到当前编码树单元CTU的范围内,并比较修剪后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块修剪到所述当前CTU的范围内,并比较修剪后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块修剪到所述当前CTU的范围内,并比较修剪后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块修剪到所述当前CTU的范围内,并比较修剪后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块修剪到所述当前CTU的范围内,并比较修剪后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块修剪到所述当前CTU的范围内,并比较修剪后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块修剪到所述当前CTU的范围内,并比较修剪后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块修剪到所述当前CTU的范围内,并比较修剪后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一些实施例中,所述确定所述当前块的匹配块之后,还包括:

将所述匹配块修剪到当前CTU的范围内。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

当修剪后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述修剪后的匹配块的左上角的子块,第十四子块为所述修剪后的匹配块正右侧最上方的相邻子块,第十五子块为所述修剪后的匹配块的左下角的子块,第十六子块为所述修剪后的匹配块正右侧最下方的相邻子块,第十七子块为所述修剪后的匹配块的右上角的子块,第十八子块为所述修剪后的匹配块正左侧最上方的相邻子块,第十九子块为所述修剪后的匹配块的右下角的子块,第二十子块为所述修剪后的匹配块正左侧最下方的相邻子块,第二十一子块为所述修剪后的匹配块正下方最左侧的相邻子块,第二十二子块为所述修剪后的匹配块正下方最右侧的相邻子块,第二十三子块为所述修剪后的匹配块正上方最左侧的相邻子块,第二十四子块为所述修剪后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,包括:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一些实施例中,所述基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,包括:

对于目标匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标匹配块为与所述增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,还包括:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,包括:

对于所述目标匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,还包括:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息,包括:

当确定所述当前块启用增强的时域运动矢量预测技术时,从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息。

在一些实施例中,利用序列参数集级语法或片级语法表示所述当前块是否开启增强的时域运动矢量预测技术。

在一些实施例中,当利用序列参数集级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块所属图像序列启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属图像序列未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,当利用片级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块所属片启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属片未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块的尺寸小于等于预设最大编码块的尺寸,且大于等于预设最小编码块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大编码块的尺寸,或,小于预设最小编码块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,所述预设最大编码块的尺寸利用序列参数集级语法或利用片级语法表示;

或/和,

所述预设最小编码块的尺寸利用序列参数集级语法或利用片级语法表示。

根据本申请实施例的第二方面,提供一种编码方法,包括:

基于当前块的第一周围块,确定所述当前块的匹配块;

基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表;

遍历所述第一时域候选模式列表中各候选增强型时域运动矢量预测模式,对于任一候选增强型时域运动矢量预测模式,基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿;

基于各候选增强型时域运动矢量预测模式对应的率失真代价,将率失真代价最小的候选增强型时域运动矢量预测模式,确定为所述当前块的增强型时域运动矢量预测模式;

将所述当前块的增强型时域运动矢量预测模式的索引信息携带在所述当前块的码流中,所述索引信息用于标识所述增强型时域运动矢量预测模式在所述第一时域候选模式列表中的位置。

在一些实施例中,所述基于当前块的第一周围块,确定所述当前块的匹配块,包括:

基于所述第一周围块,确定第一阶段的运动信息;

基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一些实施例中,所述基于所述第一周围块,确定第一阶段的运动信息,包括:

基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息不指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息不指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息不指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息,包括:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息不指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述基于所述第一周围块,确定第一阶段的运动信息,包括:

确定所述第一阶段的运动矢量为0,参考帧索引为为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述基于所述第一阶段的运动信息,确定所述当前块的匹配块,包括:

基于所述当前块的位置、所述第一阶段的水平运动矢量、垂直运动矢量以及运动矢量的精度,确定所述当前块的匹配块。

在一些实施例中,所述基于所述第一阶段的运动信息,确定所述当前块的匹配块,包括:

基于所述当前块的位置、所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

将第一子块和第二子块修剪到当前编码树单元CTU的范围内,并比较修剪后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块修剪到所述当前CTU的范围内,并比较修剪后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块修剪到所述当前CTU的范围内,并比较修剪后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块修剪到所述当前CTU的范围内,并比较修剪后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块修剪到所述当前CTU的范围内,并比较修剪后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块修剪到所述当前CTU的范围内,并比较修剪后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块修剪到所述当前CTU的范围内,并比较修剪后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块修剪到所述当前CTU的范围内,并比较修剪后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一些实施例中,所述确定所述当前块的匹配块之后,还包括:

将所述匹配块修剪到当前CTU的范围内。

在一些实施例中,对所述匹配块进行偏移得到的新的匹配块,通过以下方式确定:

当修剪后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当修剪后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述修剪后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述修剪后的匹配块的左上角的子块,第十四子块为所述修剪后的匹配块正右侧最上方的相邻子块,第十五子块为所述修剪后的匹配块的左下角的子块,第十六子块为所述修剪后的匹配块正右侧最下方的相邻子块,第十七子块为所述修剪后的匹配块的右上角的子块,第十八子块为所述修剪后的匹配块正左侧最上方的相邻子块,第十九子块为所述修剪后的匹配块的右下角的子块,第二十子块为所述修剪后的匹配块正左侧最下方的相邻子块,第二十一子块为所述修剪后的匹配块正下方最左侧的相邻子块,第二十二子块为所述修剪后的匹配块正下方最右侧的相邻子块,第二十三子块为所述修剪后的匹配块正上方最左侧的相邻子块,第二十四子块为所述修剪后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,包括:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一些实施例中,所述基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,包括:

对于目标候选匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标候选匹配块为与所述候选增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,还包括:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标候选匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,包括:

对于所述目标候选匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,还包括:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表,包括:

当所述当前块启用增强的时域运动矢量预测技术时,基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表。

在一些实施例中,利用序列参数集级语法或片级语法表示所述当前块是否开启增强的时域运动矢量预测技术。

在一些实施例中,当利用序列参数集级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块所属图像序列启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属图像序列未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,当利用片级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块所属片启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属片未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,当前块是否启用增强的时域运动矢量预测技术,通过以下方式确定:

当所述当前块的尺寸小于等于预设最大编码块的尺寸,且大于等于预设最小编码块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大编码块的尺寸,或,小于预设最小编码块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,所述预设最大编码块的尺寸利用序列参数集级语法或利用片级语法表示;

或/和,

所述预设最小编码块的尺寸利用序列参数集级语法或利用片级语法表示。

根据本申请实施例的第三方面,提供一种解码装置,包括:

获取单元,用于获取当前块的码流;

解码单元,用于从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息,所述索引信息用于标识所述增强型时域运动矢量预测模式在编码端设备构建的第一时域候选模式列表中的位置;

第一确定单元,用于基于所述当前块的第一周围块,确定所述当前块的匹配块;

构建单元,用于基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第二时域候选模式列表;

第二确定单元,基于所述增强型时域运动矢量预测模式的索引信息,从该所述第二时域候选模式列表中确定增强型时域运动矢量预测模式;

预测单元,用于基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿。

在一些实施例中,所述第一确定单元,具体用于基于所述第一周围块,确定第一阶段的运动信息;基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一些实施例中,所述第一确定单元,具体用于基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向列表List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向列表List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述第一确定单元,具体用于:

确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述第一确定单元,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量以及、运动矢量的精度以及所述当前块的位置,确定所述当前块的匹配块。

在一些实施例中,所述第一确定单元,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一些实施例中,所述构建单元,具体用于:

将第一子块和第二子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述构建单元,具体用于分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一些实施例中,所述构建单元,具体用于将所述匹配块Clip到当前CTU的范围内。

在一些实施例中,所述构建单元,具体用于:

当Clip后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述Clip后的匹配块的左上角的子块,第十四子块为所述Clip后的匹配块正右侧最上方的相邻子块,第十五子块为所述Clip后的匹配块的左下角的子块,第十六子块为所述Clip后的匹配块正右侧最下方的相邻子块,第十七子块为所述Clip后的匹配块的右上角的子块,第十八子块为所述Clip后的匹配块正左侧最上方的相邻子块,第十九子块为所述Clip后的匹配块的右下角的子块,第二十子块为所述Clip后的匹配块正左侧最下方的相邻子块,第二十一子块为所述Clip后的匹配块正下方最左侧的相邻子块,第二十二子块为所述Clip后的匹配块正下方最右侧的相邻子块,第二十三子块为所述Clip后的匹配块正上方最左侧的相邻子块,第二十四子块为所述Clip后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述构建单元,具体用于:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及对偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一些实施例中,所述预测单元,具体用于对于目标匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标匹配块为与所述增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,还用于:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,具体用于对于所述目标匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,还用于:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述解码单元,具体用于当确定所述当前块启用增强的时域运动矢量预测技术时,从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息。

在一些实施例中,利用序列参数集级语法或片Slice级语法表示所述当前块是否启动增强的时域运动矢量预测技术。

在一些实施例中,当利用序列参数集级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述解码单元,具体用于:

当所述当前块所属图像序列启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属图像序列未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,当利用Slice级级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述解码单元,具体用于:

当所述当前块所属Slice启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属Slice未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,所述解码单元,具体用于:

当所述当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,所述预设最大块的尺寸利用序列参数集级语法或利用片Slice级语法表示;

或/和,

所述预设最小块的尺寸利用序列参数集级语法或利用片Slice级语法表示。

根据本申请实施例的第四方面,提供一种解码装置,包括:

第一确定单元,用于基于当前块的第一周围块,确定所述当前块的匹配块;

构建单元,用于基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表;

预测单元,用于遍历所述第一时域候选模式列表中各候选增强型时域运动矢量预测模式,对于任一候选增强型时域运动矢量预测模式,基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿;

第二确定单元,用于基于各候选增强型时域运动矢量预测模式对应的率失真代价,将率失真代价最小的候选增强型时域运动矢量预测模式,确定为所述当前块的增强型时域运动矢量预测模式;

编码单元,用于将所述当前块的增强型时域运动矢量预测模式的索引信息携带在所述当前块的码流中,所述索引信息用于标识所述增强型时域运动矢量预测模式在所述第一时域候选模式列表中的位置。

在一些实施例中,所述第一确定单元,具体用于基于所述第一周围块,确定第一阶段的运动信息;基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一些实施例中,所述第一确定单元,具体用于基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述第一确定单元,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一些实施例中,所述第一确定单元,具体用于:

确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一些实施例中,所述构建单元,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量以及、运动矢量的精度以及所述当前块的位置,确定所述当前块的匹配块。

在一些实施例中,所述构建单元,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一些实施例中,所述构建单元,具体用于:

将第一子块和第二子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述构建单元,具体用于分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一些实施例中,所述构建单元,具体用于将所述匹配块Clip到当前CTU的范围内。

在一些实施例中,所述构建单元,具体用于:

当Clip后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述Clip后的匹配块的左上角的子块,第十四子块为所述Clip后的匹配块正右侧最上方的相邻子块,第十五子块为所述Clip后的匹配块的左下角的子块,第十六子块为所述Clip后的匹配块正右侧最下方的相邻子块,第十七子块为所述Clip后的匹配块的右上角的子块,第十八子块为所述Clip后的匹配块正左侧最上方的相邻子块,第十九子块为所述Clip后的匹配块的右下角的子块,第二十子块为所述Clip后的匹配块正左侧最下方的相邻子块,第二十一子块为所述Clip后的匹配块正下方最左侧的相邻子块,第二十二子块为所述Clip后的匹配块正下方最右侧的相邻子块,第二十三子块为所述Clip后的匹配块正上方最左侧的相邻子块,第二十四子块为所述Clip后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一些实施例中,所述构建单元,具体用于:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一些实施例中,所述预测单元,具体用于对于目标候选匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标候选匹配块为与该候选增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,还用于:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标候选匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,具体用于对于所述目标候选匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一些实施例中,所述预测单元,还用于:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一种可选的实施例中,所述构建单元,具体用于当所述当前块启用增强的时域运动矢量预测技术时,基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表。

在一些实施例中,利用序列参数集级语法或Slice级语法表示所述当前块是否启用增强的时域运动矢量预测技术。

在一些实施例中,所述构建单元,具体用于当所述当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一些实施例中,所述预设最大块的尺寸利用序列参数集级语法或利用Slice级语法表示;

或/和,

所述预设最小块的尺寸利用序列参数集级语法或利用片Slice级语法表示。

根据本申请实施例的第五方面,提供一种解码端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现如权利要求上述解码方法。

根据本申请实施例的第六方面,提供一种编码端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现如权利要求上述编码方法。

本申请实施例的解码方法,通过获取当前块的码流,并从当前块的码流中解析增强型时域运动矢量预测模式的索引信息,基于当前块的第一周围块,确定当前块的匹配块;基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第二时域候选模式列表;基于索引信息,从第二时域候选模式列表中确定增强型时域运动矢量预测模式;基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿,降低了由于周围块的运动信息不准导致的匹配块的运动信息不准的概率,提高了解码性能。

附图说明

图1A~1B是本申请示例性实施例示出的块划分的示意图;

图2是本申请一示例性实施例示出的一种编解码方法的示意图;

图3是本申请一示例性实施例示出的一种Clip操作的示意图;

图4是本申请一示例性实施例示出的一种解码方法的流程示意图;

图5是本申请一示例性实施例示出的一种当前块的周围块的示意图;

图6是本申请一示例性实施例示出的一种基于当前块的第一周围块确定当前块的匹配块的流程示意图;

图7是本申请一示例性实施例示出的对匹配块进行偏移时的参考块的示意图;

图8A~8E是本申请一示例性实施例示出的对匹配块进行偏移的示意图;

图9是本申请一示例性实施例示出的一种解码装置的结构示意图;

图10是本申请一示例性实施例示出的一种解码端设备的硬件结构示意图;

图11是本申请一示例性实施例示出的一种编码端设备的结构示意图;

图12是本申请一示例性实施例示出的一种编码端设备的硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例涉及的部分技术术语以及现有视频编解码的主要流程进行简单说明。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对先对本申请实施例涉及的部分技术术语进行简单说明。

技术术语:

1、预测像素(Prediction Signal):指从已经编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。

示例性的,帧间的预测像素指的是当前图像块从参考帧(重建像素帧)导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。

2、运动矢量(Motion Vector,简称MV):在帧间编码中,用MV表示当前编码块与其参考图像中的最佳匹配块之间的相对位移。每个划分的块(可以称为子块)都有相应的运动矢量需要传送到解码端。若对每个子块的MV进行独立编码和传输,特别是划分成小尺寸的子块,需要消耗相当多的比特。为了降低用于编码MV的比特数,视频编码中会利用相邻图像块之间的空间相关性,根据相邻已编码块的MV对当前待编码块的MV进行预测,然后对预测差进行编码。这样可以有效地降低表示MV的比特数。基于此,在对当前图像块的MV编码过程中,一般首先使用相邻已编码块的MV预测当前图像块的MV,然后对MV的预测值(MotionVector Prediction,简称MVP)与运动矢量的真正估值之间的差值,即运动矢量残差(MotionVector Difference,简称MVD)进行编码,从而有效降低MV的编码比特数。

3、运动信息(Motion Information):由于MV表示当前图像块与某个参考图像中的最佳匹配块之间的相对位移,为了准确获取指向图像块的信息,除了MV信息,还需要通过参考图像的索引信息来表示使用了哪个参考图像。视频编码技术中,对于当前图像,通常会基于一定的原则,建立一个参考图像列表,参考图像索引信息则表示当前图像块采用了参考图像列表中的第几个参考图像。此外,很多编码技术还支持多个参考图像列表,因此还需要一个索引值表示使用了哪一个参考图像列表,该索引值可以称为参考方向。视频编码中,MV、参考帧索引、参考方向等与运动相关的编码信息统称为运动信息。

4、率失真原则(Rate-Distortion Optimized,简称RDO):评价编码效率的指标包括:码率和峰值信噪比(Peak Signal to Noise Ratio,简称PSNR)。码率越小,则压缩率越大;PSNR越大,重建图像质量越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。

模式对应的代价:J(mode)=D+λ*R。其中,D表示失真(Distortion),通常使用SSE(差值均方和)指标来衡量,SSE是指重建块与源图像块的差值均方和;λ是拉格朗日乘子;R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。

在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。

下面再对现有视频编码标准中块划分技术以及现有视频编解码的主要流程进行简单说明。

现有视频编码标准中块划分技术:

在HEVC中,一个编码树单元(Coding Tree Unit,简称CTU)使用四叉树递归划分成CU。在叶子节点CU级确定是否使用帧内编码或者帧间编码。CU可以进一步划分成两个或者四个预测单元(Prediction Unit,简称PU),同一个PU内使用相同的预测信息。在预测完成后得到残差信息后,一个CU可进一步四叉划分成多个变换单元(Transform Units,简称TU)。例如,本申请中的当前块即为一个PU。

但是在最新提出的通用视频编码中的块划分技术有了较大变化。一种混合了二叉树/三叉树/四叉树的划分结构取代了原先的划分模式,取消了原先CU,PU,TU的概念的区分,支持了CU的更灵活的划分方式。其中,CU可以是正方形也可以是矩形划分。CTU首先进行四叉树的划分,然后四叉树划分的叶子节点可以进一步进行二叉树和三叉树的划分。图1A所示,CU共有五种划分类型,分别为四叉树划分,水平二叉树划分,垂直二叉树划分,水平三叉树划分和垂直三叉树划分,如图1B所示,一种CTU内的CU划分可以是上述五种划分类型的任意组合由上可知不同的划分方式,使得各个PU的形状有所不同,如不同尺寸的矩形,正方形。

现有视频编解码的主要流程:

请参考图2中的(a),以视频编码为例,视频编码一般包括预测、变换、量化、熵编码等过程,进一步地,编码过程还可以按照图2中的(b)的框架来实现。

其中,预测可以分为帧内预测和帧间预测,帧内预测是利用周围已编码块作为参考对当前未编码块进行预测,有效去除空域上的冗余。帧间预测是使用邻近已编码图像对当前图像进行预测,有效去除时域上的冗余。

变换是指将图像从空间域转换至变换域,利用变换系数对图像加以表示。绝大多数图像都含有较多平坦区域和缓慢变化的区域,适当的变换可以使图像由在空间域的分散分布转换为在变换域的相对集中分布,去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。

熵编码是一种无损编码方式,可以把一系列元素符号转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数、运动矢量信息、预测模式信息,变换量化相关语法等。熵编码可以有效地去除视频元素符号的冗余。

上述是以编码为例进行介绍,视频解码与视频编码的过程是相对的,即视频解码通常包括熵解码、预测、反量化、反变换、滤波等过程,各个过程的实现原理与熵编码相同或相似。

下面再对现有ATMVP技术的实现进行简单说明。

现有ATMVP技术的实现主要包括以下流程:

1)、确定时域运动矢量预测(Temporal Motion Vector Prediction,简称TMVP):判断当前编码块的A0位置的运动信息是否满足如下条件:

a)A0位置存在,且与当前编码单元处于同一个片(Slice)和单元(Tile);

b)A0位置的预测模式为帧间模式;

c)A0位置的参考帧索引与当前帧的co-located帧的参考帧索引一致(先判断L0方向,再判断L1方向)。

其中,A0位置即(xCb-1,yCb+CbHeight-1)的位置;(xCb,yCb)为当前块的左上角的坐标,CbHeight为当前块的高度。

2)、计算中心参考块的位置:步骤1)中获取到的TMVP的精度为1/16,需要右移4位转化为整像素。同时,需要将参考块的位置修剪(Clip)到当前CTU的范围内,即当参考块的位置未处于当前CTU范围内时,将参考块水平平移或/和垂直平移到刚好处于当前CTU范围内,其示意图如图3所示。

中心参考块的位置的计算方式如下所示:

xColCb=Clip3(xCtb,Min(PicWidth-1,xCtb+(1<<CtbLog2Size)+3),xColCtrCb+(tempMv[0]>>4))

yColCb=Clip3(yCtb,Min(PicHeight-1,yCtb+(1<<CtbLog2Size)-1),yColCtrCb+(tempMv[1]>>4))

其中,(xColCb,yColCb)为中心参考块的左上角的坐标,(xCtb,yCtb)为当前CTU的左上角的坐标,PicWidth和PicHeight分别为当前帧的宽和高,CtbLog2Size为以2为底,对当前CTU的尺寸取对数,(xColCtrCb,yColCtrCb)为当前块的中心位置的坐标,tempMv[0]和tempMv[1]分别为A0位置的水平运动矢量和垂直运动矢量。

3)、判断中心参考块的预测模式,若预测模式为非帧间预测模式,则ctrPredFlagL0和ctrPredFlagL1均为0;否则,即预测模式为帧间预测模式,转至步骤4)。

4)、调整参考位置:因为子块大小为8*8,运动信息是以8*8为单位。因此,需要将中心参考块的左上角的坐标调整到8倍坐标位置。调整公式如下所示:

xColCb=((xColCb>>3)<<3)

yColCb=((yColCb>>3)<<3)

5)、获取调整后的中心参考块的运动信息:若调整后的中心参考块的预测模式为帧内预测或者帧内块复制(Intra Block Copy,简称IBC)模式,则FlagLXCol=0;否则,分别判断调整后的中心参考块的L0和L1方向的运动信息是否存在,若存在,则FlagLXCol=1,获取调整后的中心参考块的L0和L1方向的运动信息。

示例性的,LX=L0或LX=L1,当调整后的中心参考块的预测模式为帧内预测或帧内块复制模式时,FlagL0Col=0,且FlagL1Col=0。

当调整后的中心参考块的预测模式不是帧内预测,也不是帧内块复制模式时,则当调整后的中心参考块的L0方向的运动信息存在时,FlagL0Col=1,当调整后的中心参考块的L0方向的运动信息不存在时,FlagL0Col=0;当调整后的中心参考块的L1方向的运动信息存在时,FlagL1Col=1,当调整后的中心参考块的L1方向的运动信息不存在时,FlagL1Col=0。

当FlagLXCol=1时,若当前帧的长期参考帧和co-located帧的长期参考帧不相等,则确定调整后的中心参考块的运动信息不可用,ctrPredFlagLX=0;否则,将该调整后的中心参考块的运动信息伸缩(scale)到指向ListX(X=0或1)的第一帧,作为当前中心参考块位置的运动信息,ctrPredFlagLX=1。6)、当ctrPredFlagLX=1时,计算每个子块的运动信息:遍历匹配块内的每个子块,对于任一子块,将该子块clip到当前CTU的范围内,若clip后的子块的运动信息可用,则将该clip后的子块的运动信息伸缩到指向ListX的第一帧,并将伸缩后的运动信息赋予当前块对应位置的子块;若clip后的子块的运动信息不可用,则使用调整后的中心参考块的中心位置的运动信息伸缩到指向ListX的第一帧,并将伸缩后的运动信息赋予当前块对应位置的子块。

为了使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。

请参见图4,为本申请实施例提供的一种解码方法的流程示意图,其中,该解码方法可以应用于解码端设备,如图4所示,该解码方法可以包括以下步骤:

步骤S400、获取当前块的码流,并从当前块的码流中解析增强型时域运动矢量预测模式的索引信息,该索引信息为增强型时域运动矢量预测模式在编码端设备构建的第一时域候选模式列表中的位置。

本申请实施例中,当前块可以为待处理图像中的任一个图像块。在实施中,可以将待处理图像划分为不同的图像块,然后可以按一定顺序依次对每个图像块进行处理。其中,每个图像块的大小和形状可以根据预设的划分规则进行设置。

对于解码端设备,当前块为待解码块。

该码流为编码端发送的,该码流可以为二进制码流,该码流中可以携带解码端设备解码需要获知的一些信息,譬如,该码流可以携带用于编码端设备采用的编码方式的信息、当前块的尺寸等信息。

为了提高匹配块的运动信息的可靠性,基于当前块的周围块确定匹配块的数量不再限于一个,而是可以为多个,编码端设备可以基于该多个匹配块各自对应的时域预测模式(本文中可以称为候选增强型时域运动矢量预测模式)构建时域候选模式列表(本文中称为第一时域候选模式列表),并将最终使用的匹配块对应的候选增强型时域运动矢量预测模式(本文中称为增强型时域运动矢量预测模式)的索引信息编码到当前块的码流中,该索引信息用于标识增强型时域运动矢量预测模式在编码端设备构建的第一时域候选模式列表中的位置。

当解码端设备获取到当前块的码流时,可以从当前块的码流中解析增强型时域运动矢量预测模式的索引信息。

步骤S410、基于当前块的第一周围块,确定当前块的匹配块。

本申请实施例中,当前块的第一周围块可以包括当前块的任一已解码的相邻块或非相邻块。

举例来说,请参见图5,当前块的第一周围块可以为A、B、C、D、F和G中的任一块。

解码端设备可以基于当前块的第一周围块确定当前块的匹配块。

作为一种可能的实施例,如图6所示,在步骤S410中,基于当前块的第一周围块,确定当前块的匹配块,可以通过以下步骤实现:

步骤S411、基于当前块的第一周围块,确定第一阶段的运动信息;

步骤S412、基于第一阶段的运动信息,确定当前块的匹配块。

示例性的,第一阶段可以指基于当前块的周围块确定当前块的匹配块的过程,第一阶段的运动信息可以指基于当前的第一周围块确定的,用于确定当前块的匹配块的运动信息。

示例性的,第一阶段的运动信息可以基于当前块的第一周围块的前向运动信息和/或后向运动信息确定,其具体实现方式可以包括但不限于以下几种实现方式:

方式一

若第一周围块的后向运动信息可用,且第一周围块的后向运动信息指向列表(List)1中的第一帧,则确定第一阶段的运动信息为第一周围块的后向运动信息;

若第一周围块的后向运动信息可用,但第一周围块的后向运动信息未指向List1中的第一帧,则将第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若第一周围块的后向运动信息不可用,但前向运动信息可用,则将第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若第一周围块的前向运动信息和后向运动信息均不可用,则确定第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

示例性的,List0和List1均用于记录双向预测模式下的参考帧的信息,例如,帧号等参考帧的标识信息,基于List0或List1中的帧的索引,可以确定参考帧信息,如确定参考帧的帧号,进而,可以基于该帧号获取对应的参考帧。

在方式一中,优先基于当前块的第一周围块的后向运动信息确定第一阶段运动信息。

示例性的,解码端设备可以先判断当前块的第一周围块的后向运动信息是否可用。当第一周围块的后向运动信息可用时,判断该第一周围块的后向运动信息是否指向List1中的第一帧。

当第一周围块的后向运动信息指向List1中的第一帧时,解码端设备可以将该第一周围块的后向运动信息确定为第一阶段的运动信息。

当第一周围块的后向运动信息未指向List1中的第一帧时,解码端设备可以对该第一周围块的后向运动信息进行伸缩,以使伸缩后的后向运动信息指向List1中的第一帧,并将伸缩后的后向运动信息中的运动矢量确定为第一阶段运动信息的运动矢量(可以称为第一阶段的运动矢量),将List1中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的后向运动信息不可用时,解码端设备可以判断该第一周围块的前向运动信息是否可用。

当该第一周围块的前向运动信息可用时,解码端设备可以对该第一周围块的前向运动信息进行伸缩,以使伸缩后的前向运动信息指向List1中的第一帧,并将伸缩后的前向运动信息中的运动矢量确定为第一阶段的运动矢量,将List1中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的前向运动信息也不可用,即该第一周围块的后向运动信息和前向运动信息均不可用时,解码端设备可以将零运动矢量确定为第一阶段的运动矢量,并将List1中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

示例性的,第一阶段的运动信息的参考方向为List1方向。

方式二

若当前块的第一周围块的前向运动信息可用,且该第一周围块的前向运动信息指向List0中的第一帧,则确定第一阶段的运动信息为该第一周围块的前向运动信息;

若该第一周围块的前向运动信息可用,但该第一周围块的前向运动信息未指向List0中的第一帧,则将该第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若该第一周围块的前向运动信息不可用,但后向运动信息可用,则将该第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若该第一周围块的前向运动信息和后向运动信息均不可用,则确定第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在方式二中,优先基于当前块的第一周围块的前向运动信息确定第一阶段运动信息。

示例性的,解码端设备可以先判断当前块的第一周围块的前向运动信息是否可用。当第一周围块的前向运动信息可用时,判断该第一周围块的前向运动信息是否指向列表List0中的第一帧。

当第一周围块的前向运动信息指向List0中的第一帧时,解码端设备可以将该第一周围块的前向运动信息确定为第一阶段的运动信息。

当第一周围块的前向运动信息未指向List0中的第一帧时,解码端设备可以对该第一周围块的前向运动信息进行伸缩,以使伸缩后的前向运动信息指向List0中的第一帧,并将伸缩后的前向运动信息中的运动矢量确定为第一阶段的运动矢量,将List0中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的前向运动信息不可用时,解码端设备可以判断该第一周围块的后向运动信息是否可用。

当该第一周围块的后向运动信息可用时,解码端设备可以对该第一周围块的后向运动信息进行伸缩,以使伸缩后的后向运动信息指向List0中的第一帧,并将伸缩后的后向运动信息中的运动矢量确定为第一阶段的运动矢量,将List0中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的后向运动信息也不可用,即该第一周围块的前向运动信息和后向运动信息均不可用时,解码端设备可以将零运动矢量确定为第一阶段的运动矢量,并将List0中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

示例性的,第一阶段的运动信息的参考方向为List0方向。

方式三

若当前块的第一周围块的后向运动信息可用,且该第一周围块的后向运动信息指向List1中的第一帧,则确定第一阶段的运动信息为该第一周围块的后向运动信息;

若该第一周围块的后向运动信息可用,但该第一周围块的后向运动信息未指向List1中的第一帧,则将该第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定该第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若该第一周围块的后向运动信息不可用,则确定第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在方式三中,基于当前块的第一周围块的后向运动信息确定第一阶段运动信息。

示例性的,解码端设备可以判断当前块的第一周围块的后向运动信息是否可用。当第一周围块的后向运动信息可用时,判断该第一周围块的后向运动信息是否指向列表List1中的第一帧。

当第一周围块的后向运动信息指向List1中的第一帧时,解码端设备可以将该第一周围块的后向运动信息确定为第一阶段的运动信息。

当第一周围块的后向运动信息未指向List1中的第一帧时,解码端设备可以对该第一周围块的后向运动信息进行伸缩,以使伸缩后的后向运动信息指向List1中的第一帧,并将伸缩后的后向运动信息中的运动矢量确定为第一阶段运动信息的运动矢量(可以称为第一阶段的运动矢量),将List1中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的后向运动信息不可用时,解码端设备可以将零运动矢量确定为第一阶段的运动矢量,并将List1中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

示例性的,第一阶段的运动信息的参考方向为List1方向。

方式四

若当前块的第一周围块的前向运动信息可用,且该第一周围块的前向运动信息指向列表List0中的第一帧,则确定第一阶段的运动信息为第一周围块的前向运动信息;

若该第一周围块的前向运动信息可用,但该第一周围块的前向运动信息未指向List0中的第一帧,则将该第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若该第一周围块的前向运动信息不可用,则确定第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在方式四中,基于当前块的第一周围块的前向运动信息确定第一阶段运动信息。

示例性的,解码端设备可以判断当前块的第一周围块的前向运动信息是否可用。当第一周围块的前向运动信息可用时,判断该第一周围块的前向运动信息是否指向列表List0中的第一帧。

当第一周围块的前向运动信息指向List0中的第一帧时,解码端设备可以将该第一周围块的前向运动信息确定为第一阶段的运动信息。

当第一周围块的前向运动信息未指向List0中的第一帧时,解码端设备可以对该第一周围块的前向运动信息进行伸缩,以使伸缩后的前向运动信息指向List0中的第一帧,并将伸缩后的前向运动信息中的运动矢量确定为第一阶段的运动矢量,将List0中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

当该第一周围块的前向运动信息不可用时,解码端设备可以将零运动矢量确定为第一阶段的运动矢量,并将List0中的第一帧的索引确定为第一阶段运动信息的参考帧索引。

示例性的,第一阶段的运动信息的参考方向为List0方向。

需要说明的是,在本申请实施例中,基于当前块的第一周围块,确定第一阶段的运动信息时,可以包括:

确定第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

作为一种可能的实施例,在步骤S420中,基于第一阶段的运动信息,确定当前块的匹配块,可以包括:

基于当前块的位置、第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及当前块的位置,确定当前块的匹配块。

示例性的,当确定了第一阶段的运动信息时,解码端设备可以基于第一阶段的水平运动矢量(即第一阶段的运动矢量的水平分量)、垂直运动矢量(即第一阶段的运动矢量的垂直分量)、运动矢量的精度以及当前块的位置,确定当前块的匹配块,即对第一阶段的运动信息对应的位置进行调整,调整。

示例性的,运动矢量的精度的取值可以包括但不限于4、2、1、1/2、1/4、1/8或1/16。

示例性的,当前块的位置可以通过当前块的左上角的坐标来表示。

解码端设备可以基于运动矢量的精度,分别对第一阶段的水平运动矢量和垂直运动矢量进行左移(精度大于1)或右移(精度小于1)若干位,将其转化为整像素,基于当前块的位置以及第一阶段的水平运动矢量和垂直运动矢量,确定参考位置,并基于预设值(可以根据实际场景设定,如3),对参考位置进行调整,进而,基于调整后的参考位置确定匹配块的位置,其具体实现可以参见下文中的具体实施例。

作为另一种可能的实施例,在步骤S420中,基于第一阶段的运动信息,确定当前块的匹配块,可以包括:

基于当前块的位置、第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定当前块的匹配块。

示例性的,当确定了第一阶段的运动信息时,解码端设备可以基于第一阶段的水平运动矢量(即第一阶段的运动矢量的水平分量)、垂直运动矢量(即第一阶段的运动矢量的垂直分量)、运动矢量的精度以及当前块的位置,确定当前块的匹配块,即对第一阶段的运动信息对应的位置进行调整,调整。

示例性的,运动矢量的精度的取值可以包括但不限于4、2、1、1/2、1/4、1/8或1/16。

当前块的位置可以通过当前块的左上角的坐标来表示。

解码端设备可以基于运动矢量的精度,分别对第一阶段的水平运动矢量和垂直运动矢量进行左移(精度大于1)或右移(精度小于1)若干位,将其转化为整像素,基于当前块的位置以及第一阶段的水平运动矢量和垂直运动矢量,确定参考位置,并基于子块大小,对参考位置进行调整(可以称为对齐调整),进而,基于调整后的参考位置确定匹配块的位置。

示例性的,假设子块大小为2N*2N,则可以先对参考位置右移N位,然后左移N位,N为正整数。

示例性的,考虑到基于子块边长对参考位置进行对齐调整时,参考位置的横纵坐标对子块的边长取余后的余数部分通常会直接被舍弃,但是当参考位置的横纵坐标对子块的边长取余后的余数大于边长的一半时,对取余后的余数进行进一处理的效果会比直接将余数舍弃的效果更好,所确定的匹配块通常会更优。

示例性的,在确定了第一阶段的运动信息之后,可以分别基于预设调整值对第一阶段的水平运动矢量和垂直运动矢量进行调整,并基于调整后的第一阶段的水平运动矢量和垂直运动矢量、运动矢量的精度以及当前块的位置,确定当前块的匹配块。

或者,可以基于第一阶段的水平运动矢量和垂直运动矢量以及运动矢量的精度,初步确定匹配块的左上角的横纵坐标,并分别基于预设调整值对初步确定的匹配块的左上角的横纵坐标进行调整,最后基于子块边长对调整后的横纵坐标进行对齐调整,其具体实现可以参见下文中的具体实施例。

例如,可以基于运动矢量的精度将第一阶段的水平运动矢量和垂直运动矢量转化为整像素后,分别在第一阶段的水平运动矢量和垂直运动矢量的基础上加上2N-1,或者分别在按照上述方式初步确定的匹配块的左上角的横纵坐标的基础上加上2N-1,2N为子块的边长。

示例性的,对第一阶段的水平运动矢量进行调整时的调整值与对第一阶段的垂直运动矢量进行调整时的调整值可以相同,也可以不同;

或,对初步确定的匹配块的左上角的横坐标进行调整的调整值与对初步确定的匹配块的左上角的纵坐标进行调整的调整值可以相同,也可以不同。

步骤S420、基于该匹配块以及对该匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所确定的候选增强型时域运动矢量预测模式构建第二时域候选模式列表。

本申请实施例中,当确定了步骤S410中的匹配块时,可以通过对该匹配块进行偏移的方式来得到新的匹配块。

示例性的,通过对匹配块进行偏移的方式得到的新的匹配块的数量可以为一个或多个。

解码端设备可以基于步骤S410中确定的匹配块以及步骤S420中得到的新的匹配块,将该匹配块对应的时域预测模式,以及新的匹配块对应的预测模式确定为候选增强型时域运动矢量预测模式,并基于所确定的候选增强型时域运动矢量预测模式构建时域候选模式列表(本文中称为第二时域候选模式列表)。

示例性的,候选增强型时域运动矢量预测模式的数量,以及各候选增强型时域运动矢量预测模式加入到时域候选模式列表的顺序均可以不做限定,但解码端设备和编码端设备需要保持一致。

需要说明的是,在具体实施场景中,可能会出现对匹配块进行偏移得到的新的匹配块的运动信息相同或相近的情况,在该情况下,可以不将新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式。

作为一种可能的实施例,对匹配块进行偏移得到新的匹配块,可以通过以下方式实现:

将第一子块和第二子块Clip到当前CTU的范围内,并比较Clip后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块Clip到当前CTU的范围内,并比较Clip后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块Clip到当前CTU的范围内,并比较Clip后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块Clip到当前CTU的范围内,并比较Clip后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块Clip到当前CTU的范围内,并比较Clip后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块Clip到当前CTU的范围内,并比较Clip后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块Clip到当前CTU的范围内,并比较Clip后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块Clip到当前CTU的范围内,并比较Clip后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对匹配块垂直向上偏移一个单位,得到一个新的匹配块。

示例性的,第一子块为匹配块的左上角的子块,第二子块为匹配块正左侧最上方的相邻子块,第三子块为匹配块的左下角的子块,第四子块为匹配块正左侧最下方的相邻子块,第五子块为匹配块的右上角的子块,第六子块为匹配块正右侧最上方的相邻子块,第七子块为匹配块的右下角的子块,第八子块为匹配块正右侧最下方的相邻子块,第九子块为匹配块正下方最左侧的相邻子块,第十子块为匹配块正下方最右侧的相邻子块,第十一子块为匹配块正上方最左侧的相邻子块,第十二子块为匹配块正上方最右侧的相邻子块。

示例性的,一个单位为子块的边长。

例如,对于8*8的子块,一个单位为8像素;对于4*4的子块,一个单位为4像素;对于16*16的子块,一个单位为16像素。

需要说明的是,在对匹配块进行偏移时,也并不限于按照上述实施例中描述的偏移一个单位,也可以是其他数值,例如,当子块为8*8子块时,对匹配块进行偏移时,也可以偏移8像素之外的其他值,其具体实现在此不做赘述。

以图7为例,第一子块为A1,第二子块为B2,第三子块为A3,第四子块为B4,第五子块A2,第六子块为B1,第7子块为A4,第八子块为B3,第九子块为C3,第十子块为C4,第十一子块为C1,第十二子块为C2。

以A1、B2、A3和B4为例,解码端设备可以分别将A1、B2、A3和B4Clip到当前CTU(即当前块所归属的CTU)的范围内,并比较Clip后的A1和B2的运动信息,以及Clip后的A3和B4的运动信息。考虑到若Clip后的A1和B2的运动信息相同,且Clip后的A3和B4的运动相同,则Clip后的A1和B2之间其他子块的运动信息大概率也会相同,Cllip后的A3和B4之间的其他子块的运动信息大概率也会相同,对该匹配块水平向右偏移一个单位,得到的新的匹配块的运动信息大概率会与原匹配块的运动信息相同,此次偏移可能无法得到新的运动信息。

而若Clip后的A1和B2的运动信息不同,或/和Clip后的A3和B4的运动信息不同,则可以通过对匹配块水平向右偏移一个单位,得到一个新的匹配块。

同理,可以按照上述逻辑确定是否可以通过对匹配块水平向左偏移一个单位、垂直向上偏移一个单位或垂直向下偏移一个单位,得到对应的新的匹配块。

需要说明的是,在该实施例中,当按照上述方式未得到新的匹配块时,可以确定原匹配块为最终的候选匹配块,或者,可以再次按照其他偏移策略再次对当前匹配块进行偏移,以得到新的匹配块。

作为另一种可能的实施例,对匹配块进行偏移得到的新的匹配块,可以通过以下方式确定:

分别基于一个或多个偏移量对,对匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

示例性的,解码端设备还可以通过分别对该匹配块在水平方向和垂直方向上偏移一个预设偏移量的方式,得到新的匹配块。

示例性的,对匹配块的水平方向进行偏移的一个偏移量和对匹配块的垂直方向进行偏移的一个偏移量构成一个偏移量对。

解码端设备可以分别基于一个或多个偏移量对,对匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

作为又一种可能的实施例,步骤S410中,确定当前块的匹配块之后,还可以包括:

将所确定的匹配块Clip到当前CTU的范围内。

示例性的,为了提高后续流程中确定当前块的各子块的运动信息的效率,当确定了步骤S410中的匹配块时,可以对所确定的匹配块进行Clip操作,将该匹配块Clip到当前CTU的范围内,以保证匹配块的各子块均在当前CTU的范围内。

在一个示例中,对匹配块进行偏移得到的新的匹配块,可以通过以下方式确定:

当Clip后的匹配块的右边界未处于当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对Clip后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的左边界未处于当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对Clip后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的下边界未处于当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对Clip后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的上边界未处于当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对Clip后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

示例性的,第十三子块为Clip后的匹配块的左上角的子块,第十四子块为Clip后的匹配块正右侧最上方的相邻子块,第十五子块为Clip后的匹配块的左下角的子块,第十六子块为Clip后的匹配块正右侧最下方的相邻子块,第十七子块为Clip后的匹配块的右上角的子块,第十八子块为Clip后的匹配块正左侧最上方的相邻子块,第十九子块为Clip后的匹配块的右下角的子块,第二十子块为Clip后的匹配块正左侧最下方的相邻子块,第二十一子块为Clip后的匹配块正下方最左侧的相邻子块,第二十二子块为Clip后的匹配块正下方最右侧的相邻子块,第二十三子块为Clip后的匹配块正上方最左侧的相邻子块,第二十四子块为Clip后的匹配块正上方最右侧的相邻子块。

示例性的,一个单位为子块的边长。

仍以图7为例,假设图7中的匹配块为Clip后的匹配块,则第十三子块为A1,第十四子块为B2,第十五子块为A3,第十六子块为B4,第十七子块A2,第十八子块为B1,第十九子块为A4,第二十子块为B3,第二十一子块为C3,第二十二子块为C4,第二十三子块为C1,第二十二子块为C2。

为了保证匹配块中各子块处于当前CTU的范围内,以提高确定当前块内各子块的运动信息的效率,当确定了步骤S410中的匹配块时,可以对该匹配块进行Clip操作,以使Clip后的匹配块处于当前CTU范围内。

考虑到匹配块的顶点坐标均是按照子块的边长的整数倍对齐的,即匹配块的顶点的坐标均为子块的边长的整数倍,因此,当Clip后的匹配块的边界到当前CTU的各边界位置的距离均为子块边长的整数倍。

为了保证偏移得到的匹配块中各子块处于当前CTU的范围内,在对Clip后的匹配块进行偏移时,需要保证Clip后的匹配块在偏移方向上的边界与对应的当前CTU边界位置的距离大于0,即Clip后的匹配块在偏移方向上的边界未处于对应的当前CTU边界位置上。

示例性的,当Clip后的匹配块的右边界处于当前CTU的右边界位置上时,可以不对Clip后的匹配块向右进行偏移;当Clip后的匹配块的左边界处于当前CTU的右边界位置上时,可以不对Clip后的匹配块向左进行偏移;当Clip后的匹配块的上边界处于当前CTU的上边界位置上时,可以不对Clip后的匹配块向上进行偏移;当Clip后的匹配块的下边界处于当前CTU的下边界位置上时,可以不对Clip后的匹配块向下进行偏移。

示例性的,当Clip后的匹配块的右边界未处于当前CTU的右边界位置上时,解码端设备可以基于A1和B2的运动信息的比较结果,以及A3和B4的运动信息的比较结果,确定是否需要对Clip后的匹配块进行水平向右的偏移。若该两个比较结果中至少一个比较结果为运动信息不同,则可以对Clip后的匹配块水平向右偏移一个单位。

同理,当Clip后的匹配块的左边界未处于当前CTU的左边界位置上时,解码端设备可以基于A2和B1的运动信息的比较结果,以及A4和B3的运动信息的比较结果,确定是否需要对Clip后的匹配块进行水平向左的偏移。若该两个比较结果中至少一个比较结果为运动信息不同,则可以对Clip后的匹配块水平向左偏移一个单位。

当Clip后的匹配块的下边界未处于当前CTU的下边界位置上时,解码端设备可以基于A1和C3的运动信息的比较结果,以及A2和C4的运动信息的比较结果,确定是否需要对Clip后的匹配块进行垂直向下的偏移。若该两个比较结果中至少一个比较结果为运动信息不同,则可以对Clip后的匹配块垂直向下偏移一个单位。

当Clip后的匹配块的上边界未处于当前CTU的上边界位置上时,解码端设备可以基于A3和C1的运动信息的比较结果,以及A4和C2的运动信息的比较结果,确定是否需要对Clip后的匹配块进行垂直向上的偏移。若该两个比较结果中至少一个比较结果为运动信息不同,则可以对Clip后的匹配块垂直向上偏移一个单位。在一个示例中,步骤S420中,基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,可以包括:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

示例性的,当在对匹配块进行偏移前,对匹配块进行了Clip操作时,偏移前的匹配块可以为Clip后的匹配块;当在对匹配块进行偏移前,未对匹配块进行Clip操作时,偏移前的匹配块即为原匹配块。

示例性的,当解码端设备按照上述实施例中描述的方式得到至少一个新的匹配块时,解码端设备可以将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强时域运动矢量预测模式;或,可以将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式,而不将偏移前的匹配块对应的预测模式确定为候选增强型时域运动矢量预测模式。

需要说明的是,当存在多个新的匹配块时,解码端设备可以将该多个新的匹配块对应的预测模式中的部分或全部预测模式确定为候选增强型时域运动矢量预测模式。

当解码端设备按照上述实施例中描述的方式未得到新的匹配块时,解码端设备可以将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

示例性的,第二时域候选模式列表中包含至少一个候选增强型时域运动矢量预测模式,各候选增强型时域运动矢量预测模式分别对应不同的匹配块。

步骤S430、基于增强型时域运动矢量预测模式的索引信息,从第二时域候选模式列表中确定增强型时域运动矢量预测模式。

本申请实施例中,考虑到当前采用本申请实施例提供的技术方案时,对于同一图像块,编码端设备和解码端设备在构建时域候选模式列表时,各候选增强型时域运动矢量预测模式在时域候选模式列表中的顺序是相同的,因此,增强型时域运动矢量预测模式在编码端设备构建的时域候选模式列表中的位置,与该增强型时域运动矢量预测模式在解码端设备构建的时域候选模式列表中构建的时域候选模式中的位置相同。

因而,解码端设备可以基于从当前块的码流中解析得到的增强型时域运动矢量预测模式的索引信息,从解码端设备所构建的第二时域候选模式列表中,确定增强型时域运动矢量预测模式。

步骤S440、基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿。

本申请实施例中,当确定了增强型时域运动矢量预测模式时,可以基于该增强型时域运动矢量预测模式对应的匹配块(本文中可以将该匹配块称为目标匹配块),确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿。

示例性的,第二时域候选模式列表中各候选增强型时域运动矢量预测模式分别对应不同的匹配块。

作为一种可能的实施例,步骤S440中,基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,可以包括:

对于目标匹配块中的任一子块,将该子块Clip到当前CTU的范围内;

若Clip后的子块的前向运动信息和后向运动信息均可用,则将Clip后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;

若Clip后的子块的前向运动信息可用,但后向运动信息不可用,则将Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

若Clip后的子块的后向运动信息可用,但前向运动信息不可用,则将Clip后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

示例性的,为了提升所确定的当前块的各子块的运动信息的准确性,对于目标匹配块中的任一子块,解码端设备可以将该子块Clip到当前CTU的范围内,并判断Clip后的子块的前向运动信息以及后向运动信息是否可用。

当Clip后的子块的前向运动信息和后向运动信息均可用时,解码端设备可以分别对Clip后的子块的前向运动信息和后向运动信息进行伸缩,以将该Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将该Clip后的子块的后向运动信息伸缩到指向List1的第一帧,进而,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

当Clip后的子块的前向运动信息可用,但后向运动信息不可用时,将Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当Clip后的子块的后向运动信息可用,但前向运动信息不可用时,将Clip后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

需要说明的是,在该实施例中,对于Clip后的子块的前向运动信息可用,但后向运动信息不可用的情况,也可以将Clip后的子块的前向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的运动信息赋予当前块对应的子块(指向List0的第一帧的伸缩后的运动信息作为前向运动信息,指向List1的第一帧的伸缩后的运动信息作为后向运动信息)。

Clip后的子块的后向运动信息可用,但前向运动信息不可用的情况同理可得。

示例性的,对于目标匹配块中的任一子块,若将该子块Clip到当前CTU的范围内时,Clip后的子块的前向运动信息和后向运动信息均不可用,则至少可以通过以下方式中的一种来确定当前块内对应位置的子块的运动信息:

方式一

若Clip后的子块的前向运动信息和后向运动信息均不可用,则将目标匹配块的中心位置Clip到当前CTU的范围内,当Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息可用时,将Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;当Clip后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将Clip后的目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;当Clip后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将Clip后的目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

示例性的,当Clip后的子块的前向运动信息和后向运动信息均不可用时,解码端设备可以将目标匹配块的中心位置Clip到当前CUT的范围内,并判断Clip后的目标匹配块的中心位置的前向运动信息以及后向运动信息是否可用,若Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息均可用,则解码端设备可以将Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

若Clip后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用,则将Clip后的目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若Clip后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用,则将Clip后的目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若Clip后的目标匹配块的中心位置的前向运动信息和后向运动信息均不可用,则解码端设备可以将零运动信息赋予当前块对应位置的子块。

方式二

若Clip后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予当前块对应位置的子块。

示例性的,当Clip后的子块的前向运动信息和后向运动信息均不可用时,解码端设备可以将零运动信息赋予当前块对应位置的子块。

方式三

若Clip后的子块的前向运动信息和后向运动信息均不可用,则当当前块的第二周围块的前向运动信息和后向运动信息均可用时,将第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当第二周围块的前向运动信息可用,但后向运动信息不可用时,将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;当第二周围块的后向运动信息可用,但前向运动信息不可用时,将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

示例性的,当前块的第一周围块可以包括当前块的任一已解码的相邻块或非相邻块。

第二周围块与第一周围块可以相同,也可以不同。

示例性的,当Clip后的子块的前向运动信息和后向运动信息均不可用时,解码端设备可以判断当前块的第二周围块的前向运动信息以及后向运动信息是否可用,若该第二周围块的前向运动信息和后向运动信息均可用,则解码端设备可以将该第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

若第二周围块的前向运动信息可用,但后向运动信息不可用,则将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若第二周围块的后向运动信息可用,但前向运动信息不可用,则将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若第二周围块的前向运动信息和后向运动信息均不可用,则解码端设备可以将零运动信息赋予当前块对应位置的子块。

需要说明的是,在该实施例中,对于Clip后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用的情况,也可以将Clip后的目标匹配块的中心位置的前向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的运动信息赋予当前块对应的子块(指向List0的第一帧的伸缩后的运动信息作为前向运动信息,指向List1的第一帧的伸缩后的运动信息作为后向运动信息)。

Clip后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用以及第二周围块的前向运动信息中一个可用,但另一个不可用的情况均同理可得。

作为另一种可能的实施例,步骤S440中,基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,可以包括:

对于目标匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

示例性的,为了提升确定当前块的各子块的运动信息的效率,对于目标匹配块中的任一子块,解码端设备可以判断该子块的运动信息是否可用。

当该子块的前向运动信息和后向运动信息均可用时,解码端设备可以分别对该子块的前向运动信息和后向运动信息进行伸缩,以将该子块的前向运动信息伸缩到指向List0的第一帧,并将该子块的后向运动信息伸缩到指向List1的第一帧,进而,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

当该子块的前向运动信息可用,但后向运动信息不可用时,将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当该子块的后向运动信息可用,但前向运动信息不可用时,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

需要说明的是,在该实施例中,对于子块的前向运动信息可用,但后向运动信息不可用的情况,也可以将子块的前向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的运动信息赋予当前块对应的子块(指向List0的第一帧的伸缩后的运动信息作为前向运动信息,指向List1的第一帧的伸缩后的运动信息作为后向运动信息)。

子块的后向运动信息可用,但前向运动信息不可用的情况同理可得。

示例性的,对于目标匹配块中的任一子块,若该子块运动信息前向运动信息和后向运动信息均不可用,则至少可以通过以下方式中的一种来确定当前块内对应位置的子块的运动信息:

方式一

若该子块的前向运动信息和后向运动信息均不可用,则当目标匹配块的中心位置的运动信息可用时,将目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;当目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;当目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块;当目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

示例性的,当该子块的前向运动信息和后向运动信息均不可用时,解码端设备可以判断目标匹配块的中心位置的前向运动信息以及后向运动信息是否可用,若目标匹配块的中心位置的前向运动信息和后向运动信息均可用,则解码端设备可以将目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块。

若目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用,则将目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用,则将目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若目标匹配块的中心位置的前向运动信息和后向运动信息均不可用,则解码端设备可以将零运动信息赋予当前块对应位置的子块。

方式二

若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予当前块对应位置的子块。

示例性的,当该子块的前向运动信息和后向运动信息均不可用时,解码端设备可以将零运动信息赋予当前块对应位置的子块。

方式三

若该子块的前向运动信息和后向运动信息均不可用,则当第二周围块的前向运动信息和后向运动信息均可用时,将第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当第二周围块的前向运动信息可用,但后向运动信息不可用时,将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;当第二周围块的后向运动信息可用,但前向运动信息不可用时,将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

示例性的,当该子块的前向运动信息和后向运动信息均不可用时,解码端设备可以判断当前块的第二周围块的前向运动信息以及后向运动信息是否可用,若该第二周围块的前向运动信息和后向运动信息均可用,则解码端设备可以将该第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的前向运动信息和后向运动信息赋予当前块对应位置的子块。

若第二周围块的前向运动信息可用,但后向运动信息不可用,则将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若第二周围块的后向运动信息可用,但前向运动信息不可用,则将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若第二周围块的前向运动信息和后向运动信息均不可用,则解码端设备可以将零运动信息赋予当前块对应位置的子块。

需要说明的是,在该实施例中,对于目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用的情况,也可以将目标匹配块的中心位置的前向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,并将伸缩后的运动信息赋予当前块对应的子块(指向List0的第一帧的伸缩后的运动信息作为前向运动信息,指向List1的第一帧的伸缩后的运动信息作为后向运动信息)。

目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用以及第二周围块的前向运动信息中一个可用,但另一个不可用的情况均同理可得。

作为一种可能的实施例,步骤S400中,从当前块的码流中解析增强型时域运动矢量预测模式的索引信息,可以包括:

当确定当前块启用增强的时域运动矢量预测技术时,从当前块的码流中解析增强型时域运动矢量预测模式的索引信息。

示例性的,为了增强本申请实施例提供的技术(本文中称为增强的时域运动矢量预测(Enhanced Tmporal Motion Vector Prediction,简称为ETMVP)技术)的可控性和灵活性,并实现对传统ATMVP技术的兼容,可以根据实际场景控制增强的时域运动矢量预测技术启用。

当解码端设备接收到当前块的码流,且确定当前块启用增强的时域运动矢量预测技术时,解码端设备可以从当前块的码流中解析增强型时域运动矢量预测模式的索引信息,并按照上述实施例中描述的方式进行后续处理。

当解码端设备确定当前块未启用增强的时域运动矢量预测技术时,解码端设备可以按照传统ATMVP技术进行处理。

在一个示例中,利用序列参数集(Sequence Paramater Set,简称SPS)级语法表示当前块是否启用增强的时域运动矢量预测技术。

示例性的,为了减少增强的时域运动矢量预测技术的是否启用的控制的比特消耗,可以利用SPS级语法控制当前块是否启用增强的时域运动矢量预测技术。

对于一个图像序列,可以设置一个SPS级的标志位,通过该SPS级的标志位指示该图像序列是否启用增强的时域运动矢量预测技术。

例如,该SPS级的标志位可以为长度为1bit的标志位,当该标志位的值为第一值(如1)时,指示对应的图像序列启用增强的时域运动矢量预测技术;当该标志位的值为第二值(如0)时,指示对应的图像序列未启用增强的时域运动矢量预测技术。

对于任一块,解码端设备可以基于该块所属图像序列是否启用增强的时域运动矢量预测技术,确定当前块是否启用增强的时域运动矢量预测技术。

示例性的,当当前块所属图像序列启用增强的时域运动矢量预测技术时,确定当前块启用增强的时域运动矢量预测技术;

当当前块所属图像序列未启用增强的时域运动矢量预测技术时,确定当前块未启用增强的时域运动矢量预测技术。

在另一个示例中,利用Slice级语法表示当前块是否启用增强的时域运动矢量预测技术。

示例性的,提高细化增强的时域运动矢量预测技术是否启用的控制粒度,提高增强的时域运动矢量预测技术是否启用的控制的灵活性,可以利用Slice级语法控制当前块是否启用增强的时域运动矢量预测技术。

对于一个Slice,可以设置一个Slice级的标志位,通过该Slice级的标志位指示该Slice是否启用增强的时域运动矢量预测技术。

例如,该Slice级的标志位可以为长度为1bit的标志位,当该标志位的值为第一值(如1)时,指示对应的Slice启用增强的时域运动矢量预测技术;当该标志位的值为第二值(如0)时,指示对应的Slice未启用增强的时域运动矢量预测技术。

对于任一块,解码端设备可以基于该块所属Slice是否启用增强的时域运动矢量预测技术,确定当前块是否启用增强的时域运动矢量预测技术。

示例性的,当当前块所属Slice启用增强的时域运动矢量预测技术时,确定当前块启用增强的时域运动矢量预测技术;

当当前块所属Slice未启用增强的时域运动矢量预测技术时,确定当前块未启用增强的时域运动矢量预测技术。

在又一示例中,当前块是否启用增强的时域运动矢量预测技术,可以通过以下方式确定:

当当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定当前块启用增强的时域运动矢量预测技术;

当当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定当前块未启用增强的时域运动矢量预测技术。

示例性的,考虑到当图像块的尺寸过大或过小时,利用增强的时域运动矢量预测技术进行编解码的性能可能无法保证,因此,可以预先设定启用增强的时域运动矢量预测技术的图像块的最大尺寸和/或最小尺寸,并基于当前块的尺寸确定当前块是否启用增强的时域运动矢量预测技术。

当解码端设备获取到当前块的码流时,可以解析当前块的尺寸,并比较当前块的尺寸与预设最大块的尺寸和/或预设最小块的尺寸。

当当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定当前块启用增强的时域运动矢量预测技术;

当当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定当前块未启用增强的时域运动矢量预测技术。

示例性的,预设最大块的尺寸利用序列参数集级语法或利用片Slice级语法表示;

或/和,

预设最小块的尺寸利用序列参数集级语法或利用片Slice级语法表示。

在本申请实施例中,获取当前块的码流,并从当前块的码流中解析增强型时域运动矢量预测模式的索引信息;基于当前块的第一周围块,确定当前块的匹配块;基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第二时域候选模式列表;基于增强型时域运动矢量预测模式的索引信息,从第二时域候选模式列表中确定增强型时域运动矢量预测模式;基于增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿,通过对基于当前块的周围块确定的匹配块进行偏移得到新的匹配块,降低了由于周围块的运动信息不准导致的匹配块的运动信息不准的概率,提高了解码性能。

作为一种示例,本申请实施例还提供的一种编码方法,其中,该编码方法可以应用于编码端设备,该方法可以包括以下步骤:

步骤A1、基于当前块的第一周围块,确定当前块的匹配块。

其具体实现方式可以参见图4实施例中的步骤S410,本申请实施例在此不再赘述。

步骤A2、基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第一时域候选模式列表。

其具体实现方式可以参见图4实施例中的步骤S420,本申请实施例在此不再赘述。

步骤A3、遍历第一时域候选模式列表中各候选增强型时域运动矢量预测模式,对于任一候选增强型时域运动矢量预测模式,基于该候选增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿。

示例性的,当按照步骤A2中描述的方式构建了第一时域候选模式列表时,编码端设备可以遍历第一时域候选模式列表中各候选增强型时域运动矢量预测模式。

对于任一候选增强型时域运动矢量预测模式,编码端设备可以基于该候选增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿,其具体实现方式可以参见图4实施例中的步骤S440,本申请实施例在此不再赘述。

步骤A4、基于各候选增强型时域运动矢量预测模式对应的率失真代价,将率失真代价最小的候选增强型时域运动矢量预测模式,确定为当前块的增强型时域运动矢量预测模式。

示例性的,编码端设备按照步骤A3中描述的方式分别基于各候选增强型时域运动矢量预测模式对当前块内各子块进行了运动补偿时,编码端设备可以分别确定各候选增强型时域运动矢量预测模式对应的率失真代价,并将率失真代价最小的候选增强型时域运动矢量预测模式,确定为当前块的增强型时域运动矢量预测模式。

步骤A5、将当前块的增强型时域运动矢量预测模式的索引信息携带在当前块的码流中,该索引信息用于标识增强型时域运动矢量预测模式在该第一时域候选模式列表中的位置。

示例性的,编码端设备确定了当前块的增强型时域运动矢量预测模式时,可以将当前块的增强型时域运动矢量预测模式的索引信息携带在当前块的码流中,以便解码端设备可以基于码流中的索引信息确定当前块的增强型时域运动矢量预测模式。

在本申请实施例中,基于当前块的第一周围块,确定当前块的匹配块;基于匹配块以及对匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第一时域候选模式列表;遍历第一时域候选模式列表中各候选增强型时域运动矢量预测模式,对于任一候选增强型时域运动矢量预测模式,基于该候选增强型时域运动矢量预测模式,确定当前块内各子块的运动信息,并基于当前块内各子块的运动信息,对当前块内各子块进行运动补偿;基于各候选增强型时域运动矢量预测模式对应的率失真代价,将率失真代价最小的候选增强型时域运动矢量预测模式,确定为当前块的增强型时域运动矢量预测模式;将当前块的增强型时域运动矢量预测模式的索引信息携带在当前块的码流中,通过对基于当前块的周围块确定的匹配块进行偏移得到新的匹配块,降低了由于周围块的运动信息不准导致的匹配块的运动信息不准的概率,提高了编码性能。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。

实施例一

本申请实施例提供的编码方法可以包括以下步骤:

1、利用当前块的周围块(如上述第一周围块)的运动信息确定第一阶段的运动信息;

2、利用第一阶段的运动信息确定当前块的匹配块;

3、基于该匹配块以及对该匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第一时域候选模式列表;

4、按顺序遍历第一时域候选模式列表中的每一种候选增强型时域运动矢量预测模式,对于任一种候选增强型时域运动矢量预测模式,根据匹配块的运动信息来获取当前块中的所有子块的运动信息;

5、根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿;

6、确定该候选增强型的时域运动矢量预测模式对应的率失真代价,并将该率失真代价值与其他候选增强型的时域运动矢量预测模式的率失真代价进行比较,将率失真代价值最小的候选增强型的时域运动矢量预测模式作为当前块的增强型时域运动矢量预测模式,并将增强型时域运动矢量预测模式的索引信息携带在码流中,传送给解码端设备,该索引信息用于标识增强型时域运动矢量预测模式在该第一时域候选模式列表中的位置。

实施例二

本申请实施例提供的解码方法可以包括以下步骤:

1、获取当前块的码流,从当前块的码流中解析增强型的域运动矢量预测模式的索引信息,该索引信息用于标识增强型时域运动矢量预测模式在编码端设备构建的第一时域候选列表中的位置;

2、利用当前块的周围块(如上述第一周围块)的运动信息确定第一阶段的运动信息。

3、利用第一阶段的运动信息确定当前块的匹配块;

4、基于该匹配块以及对该匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建第二时域候选模式列表;

5、根据步骤1得到的索引信息,在第二时域候选模式列表中获取对应的增强型时域运动矢量预测模式,根据该增强型时域运动矢量预测模式对应的目标匹配块的运动信息来获取当前块中的所有子块的运动信息;

6、根据当前块内的各子块的运动信息,对当前块内各子块进行运动补偿。

下面对部分步骤的具体实现进行说明。

一、利用当前块的周围块的运动信息确定第一阶段的运动信息。

示例性的,当前块的空间相邻块的示意图可以如图5所示,以当前块的周围块为F块为例。

实施例三

若F块的后向运动信息可用,且该后向运动信息指向List1(当前帧的List1,下同)中的第一帧,则确定第一阶段的运动信息为F块的后向运动信息。

若F块的后向运动信息可用,且该后向运动信息不指向List1中的第一帧,则将F块的后向运动信息伸缩到指向List1的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引。

若F块的后向运动信息不可用,但前向运动信息可用,则将F块的前向运动信息伸缩到指向List1的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引。

若F块的前向运动信息和后向运动信息均不可用,则确定第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引。

第一阶段的运动信息的参考方向为List1方向。

需要说明的是,当前块的周围块并不限于F块,也可以为图5中的其他空间相邻块或其他非空间相邻块,其具体实现在此不做赘述。

实施例四

若F块的前向运动信息可用,且该前向运动信息指向List0(当前帧的List0,下同)中的第一帧,则确定第一阶段的运动信息为F块的前向运动信息。

若F块的前向运动信息可用,且该前向运动信息不指向List0中的第一帧,则将F块的前向运动信息伸缩到指向List0的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引。

若F块的前向运动信息不可用,但后向运动信息可用,则将F块的后向运动信息伸缩到指向List0的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引。

若F块的前向运动信息和后向运动信息均不可用,则确定第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引。

第一阶段的运动信息的参考方向为List0方向。

实施例五

若F块的后向运动信息可用,且该后向运动信息指向List1中的第一帧,则确定第一阶段的运动信息为F块的后向运动信息。

若F块的后向运动信息可用,且该后向运动信息不指向List1中的第一帧,则将F块的后向运动信息伸缩到指向List1的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引。

若F块的后向运动信息不可用,则确定第一阶段的运动矢量为0,参考帧索引为List1列表中的第一帧的索引。

第一阶段的运动信息的参考方向为List1方向。

实施例六

若F块的前向运动信息可用,且该前向运动信息指向List0中的第一帧,则确定第一阶段的运动信息为F块的前向运动信息。

若F块的前向运动信息可用,且该前向运动信息不指向List0中的第一帧,则将F块的前向运动信息伸缩到指向List0的第一帧,并确定第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引。

若F块的前向运动信息不可用,则确定第一阶段的运动矢量为0,参考帧索引为List0列表中的第一帧的索引。

第一阶段的运动信息的参考方向为List0方向。

实施例七

确定第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向。

实施例八

确定第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

二、利用第一阶段的运动信息确定当前块的匹配块

实施例九

假设第一阶段的水平运动矢量为MVx、垂直运动矢量为MVy,当前块在图像中的左上角的坐标为(Xpos,Ypos),运动矢量的精度为Precision。

示例性的,Precision的取值可以为4、2、1、1/2、1/4、1/8或1/16。

当Precision的取值为1、1/2、1/4、1/8或1/16时,与当前块对应的匹配块的左上角坐标为:

Mx0=((Xpos+(MVx>>shift)+4)>>3)<<3

My0=((Ypos+(MVy>>shift)+4)>>3)<<3

其中,shift的值与Precision一一对应,当Precision的取值分别为1、1/2、1/4、1/8和1/16时,shift的值分别为0、1、2、3和4。

当Precision的取值为4或2时,与当前块对应的匹配块的左上角坐标为:

Mx0=((Xpos+(MVx<<shift)+4)>>3)<<3

My0=((Ypos+(MVy<<shift)+4)>>3)<<3

其中,shift的值与Precision一一对应,当Precision的取值分别为4和2时,shift的值分别为2和1。

在该实施例中,分别使用调整值2N-1(N为子块的边长,该实施例中以8*8子块为例,即2N-1=4)对第一阶段的水平运动矢量(MVx>>shift)和垂直运动矢量(MVy>>shift)进行了调整,或者,分别使用调整值4对初步确定的匹配块的左上角的横坐标(Xpos+(MVx<<shift))和纵坐标(Ypos+(MVy<<shift))进行了调整;

在对参考位置(Xpos+(MVx>>shift))和(Ypos+(MVy>>shift)进行对齐调整时,使用调整值N(N为对子块的边长取以2为底的对数,该实施例中以8*8子块为例,即N=3)。

实施例十

假设第一阶段的水平运动矢量为MVx、垂直运动矢量为MVy,当前块在图像中的左上角的坐标为(Xpos,Ypos),运动矢量的精度为Precision。

示例性的,Precision的取值可以为4、2、1、1/2、1/4、1/8或1/16。

当Precision的取值为1、1/2、1/4、1/8或1/16时,与当前块对应的匹配块的左上角坐标为:

Mx0=((Xpos+(MVx>>shift))>>3)<<3

My0=((Ypos+(MVy>>shift))>>3)<<3

其中,shift的值与Precision一一对应,当Precision的取值分别为1、1/2、1/4、1/8和1/16时,shift的值分别为0、1、2、3和4。

当Precision的取值为4或2时,与当前块对应的匹配块的左上角坐标为:

Mx0=((Xpos+(MVx<<shift))>>3)<<3

My0=((Ypos+(MVy<<shift))>>3)<<3

其中,shift的值与Precision一一对应,当Precision的取值分别为4和2时,shift的值分别为2和1

在该实施例中,使用常量3对所确定的参考位置(Xpos+(MVx>>shift))和(Ypos+(MVy>>shift)进行对齐调整。

三、基于该匹配块以及对该匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于候选增强型时域运动矢量预测模式构建时域候选模式列表(对于编码端设备为第一时域候选模式列表,对于解码端设备为第二时域候选模式列表)

示例性的,以图7所示匹配块为例,假设子块大小为8*8。

实施例十一

将A1和B2Clip到当前CTU的范围内,获取Clip之后的A1和B2的运动信息,比较两者的运动信息,记为r1(r1包括运动信息相同或不同,下同);

将A3和B4Clip到当前CTU的范围内,获取Clip之后的A3和B4的运动信息,比较两者的运动信息,记为r2;

若r1和r2中至少有一个为运动信息不同,则对该匹配块水平向右偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A2和B1Clip到当前CTU的范围内,获取Clip之后的A2和B1的运动信息,比较两者的运动信息,记为r3;

将A4和B3Clip到当前CTU的范围内,获取Clip之后的A4和B3的运动信息,比较两者的运动信息,记为r4;

若r3和r4中至少有一个为运动信息不同,则对该匹配块水平向左偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A1和C3Clip到当前CTU的范围内,获取Clip之后的A1和C3的运动信息,比较两者的运动信息,记为r5;

将A2和C4Clip到当前CTU的范围内,获取Clip之后的A2和C4的运动信息,比较两者的运动信息,记为r6;

若r5和r6中至少有一个为运动信息不同,则对该匹配块垂直向下偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A3和C1Clip到当前CTU的范围内,获取Clip之后的A3和C1的运动信息,比较两者的运动信息,记为r7;

将A4和C2Clip到当前CTU的范围内,获取Clip之后的A4和C2的运动信息,比较两者的运动信息,记为r8;

若r7和r8中至少有一个为运动信息不同,则对该匹配块垂直向上偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将原匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,原匹配块对应的预测模式,以及新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

此外,当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当不存在新的匹配块时,将原匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

示例性的,基于当前块的周围块确定的匹配块的示意图可以如图8A所示;对匹配块水平向右偏移8个像素得到的新的匹配块的示意图可以如图8B所示,对匹配块水平向左偏移8个像素得到的新的匹配块的示意图可以如图8C所示;对匹配块垂直向上偏移8个像素得到的新的匹配块的示意图可以如图8D所示;对匹配块垂直向下偏移8个像素得到的新的匹配块的示意图可以如图8E所示。

实施例十二

将匹配块Clip到当前CTU的范围内。

假设图7所示匹配块为Clip后的匹配块。

当Clip后的匹配块的右边界未处于当前CTU的右边界位置上时,获取A1和B2的运动信息,比较两者的运动信息,记为r9(r9包括运动信息相同或不同,下同);

获取A3和B4的运动信息,比较两者的运动信息,记为r10;

若r9和r10中至少有一个为运动信息不同,则对该Clip后的匹配块水平向右偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的左边界未处于当前CTU的左边界位置上时,获取A2和B1的运动信息,比较两者的运动信息,记为r11;

获取A4和B3的运动信息,比较两者的运动信息,记为r12;

若r11和r12中至少有一个为运动信息不同,则对该Clip后的匹配块水平向左偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的下边界未处于当前CTU的下边界位置上时,获取A1和C3的运动信息,比较两者的运动信息,记为r13;

获取A2和C4的运动信息,比较两者的运动信息,记为r14;

若r13和r14中至少有一个为运动信息不同,则对该Clip后的匹配块垂直向下偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的上边界未处于当前CTU的上边界位置上时,获取A3和C1的运动信息,比较两者的运动信息,记为r15;

获取A4和C2的运动信息,比较两者的运动信息,记为r16;

若r15和r16中至少有一个为运动信息不同,则对该Clip后的匹配块垂直向上偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将偏移前的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,偏移前的匹配块对应的预测模式,以及新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

此外,当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

实施例十三

在原匹配块的基础上进行偏移,得到新的匹配块。

示例性的,偏移方式如下:

Mx1=Mx0+offset1

My1=My0+offset2

其中,Mx0和My0分别为原匹配块的左上角的横纵坐标,Mx1和My1分别为新的匹配块的左上角的横纵坐标,offset1和offset2为偏移量,其值为任意整数。

将新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将原匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,原匹配块对应的预测模式,以及新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

offset1和offset2可以取多组值,以得到多个新的匹配块,新的匹配块的数量不做限定。

当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

实施例十四

将A1和B2Clip到当前块范围内,获取Clip之后的A1和B2的运动信息,比较两者的运动信息,记为r1(r1包括相同或不相同,下同);

将A3和B4Clip到当前块范围内,获取Clip之后的A3和B4的运动信息,比较两者的运动信息,记为r2;

若r1和r2中至少有一个为不相同,则对该匹配块水平向右偏移8个像素,得到新的匹配块,将该匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A2和B1Clip到当前块范围内,获取Clip之后的A2和B1的运动信息,比较两者的运动信息,记为r3;

将A4和B3Clip到当前块范围内,获取Clip之后的A4和B3的运动信息,比较两者的运动信息,记为r4;

若r3和r4中至少有一个为不相同,则对该匹配块水平向左偏移8个像素,得到新的匹配块,将该匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A1和C3Clip到当前块范围内,获取Clip之后的A1和C3的运动信息,比较两者的运动信息,记为r5;

将A2和C4Clip到当前块范围内,获取Clip之后的A2和C4的运动信息,比较两者的运动信息,记为r6;

若r5和r6中至少有一个为不相同,则对该匹配块垂直向下偏移8个像素,得到新的匹配块,将该匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

将A3和C1Clip到当前块范围内,获取Clip之后的A3和C1的运动信息,比较两者的运动信息,记为r7;

将A4和C2Clip到当前块范围内,获取Clip之后的A4和C2的运动信息,比较两者的运动信息,记为r8;

若r7和r8中至少有一个为不相同,则对该匹配块垂直向上偏移8个像素,得到新的匹配块,将该匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,当存在多个新的匹配块时,各新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

此外,当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当不存在新的匹配块时,将原匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

实施例十五

将匹配块Clip到当前CTU的范围内。

假设图7所示匹配块为Clip后的匹配块。

当Clip后的匹配块的右边界未处于当前CTU的右边界位置上时,获取A1和B2的运动信息,比较两者的运动信息,记为r9(r9包括运动信息相同或不同,下同);

获取A3和B4的运动信息,比较两者的运动信息,记为r10;

若r9和r10中至少有一个为运动信息不同,则对该Clip后的匹配块水平向右偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的左边界未处于当前CTU的左边界位置上时,获取A2和B1的运动信息,比较两者的运动信息,记为r11;

获取A4和B3的运动信息,比较两者的运动信息,记为r12;

若r11和r12中至少有一个为运动信息不同,则对该Clip后的匹配块水平向左偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的下边界未处于当前CTU的下边界位置上时,获取A1和C3的运动信息,比较两者的运动信息,记为r13;

获取A2和C4的运动信息,比较两者的运动信息,记为r14;

若r13和r14中至少有一个为运动信息不同,则对该Clip后的匹配块垂直向下偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当Clip后的匹配块的上边界未处于当前CTU的上边界位置上时,获取A3和C1的运动信息,比较两者的运动信息,记为r15;

获取A4和C2的运动信息,比较两者的运动信息,记为r16;

若r15和r16中至少有一个为运动信息不同,则对该Clip后的匹配块垂直向上偏移8个像素,得到新的匹配块,将该新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,偏移前的匹配块对应的预测模式,以及新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

此外,当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

实施例十六

在原匹配块的基础上进行偏移,得到新的匹配块。

示例性的,偏移方式如下:

Mx1=Mx0+offset1

My1=My0+offset2

其中,Mx0和My0分别为原匹配块的左上角的横纵坐标,Mx1和My1分别为新的匹配块的左上角的横纵坐标,offset1和offset2为偏移量,其值为任意整数。

将新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

需要说明的是,offset1和offset2可以取多组值,以得到多个新的匹配块,新的匹配块的数量不做限定。

当存在多个新的匹配块时,新的匹配块对应的预测模式加入到时域候选模式列表中的顺序不做限定。

当存在多个新的匹配块时,也可以将部分新的匹配块对应的预测模式作为候选增强型时域运动矢量预测模式,加入到时域候选模式列表。

四、根据匹配块的运动信息来获取当前块中的所有子块的运动信息,并根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿

示例性的,对于编码端设备,该匹配块包括时域候选模式列表中任一候选增强型时域运动矢量预测模式对应的匹配块(本文中称为目标候选匹配块);

对于解码端设备,该匹配块包括增强型时域运动矢量预测模式对应的匹配块(即上述目标匹配块)。

实施例十七

对于匹配块中的任一子块,将该子块Clip到当前CTU的范围内;

若Clip后的子块的前向运动信息和后向运动信息均可用,则将Clip后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若Clip后的子块的前向运动信息可用,但后向运动信息不可用,则将Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若Clip后的子块的后向运动信息可用,但前向运动信息不可用,则将Clip后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若Clip后的子块的前向运动信息和后向运动信息均不可用,则将该匹配块的中心位置Clip到当前CTU的范围内,当Clip后的匹配块的中心位置的前向运动信息和后向运动信息均可用时,将Clip后的匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;

当Clip后的匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将Clip后的匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当Clip后的匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将Clip后的匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;

当Clip后的匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

实施例十八

对于匹配块中的任一子块,将该子块Clip到当前CTU的范围内;

若Clip后的子块的前向运动信息和后向运动信息均可用,则将Clip后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若Clip后的子块的前向运动信息可用,但后向运动信息不可用,则将Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

若Clip后的子块的后向运动信息可用,但前向运动信息不可用,则将Clip后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若Clip后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

实施例十九

对于匹配块中的任一子块,将该子块Clip到当前CTU的范围内;

若Clip后的子块的前向运动信息和后向运动信息均可用,则将Clip后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若Clip后的子块的前向运动信息可用,但后向运动信息不可用,则将Clip后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

若Clip后的子块的后向运动信息可用,但前向运动信息不可用,则将Clip后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若Clip后的子块的前向运动信息和后向运动信息均不可用,则当当前块的第二周围块的前向运动信息和后向运动信息均可用时,将第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;

当第二周围块的前向运动信息可用,但后向运动信息不可用时,将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当第二周围块的后向运动信息可用,但前向运动信息不可用时,将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块;

当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

实施例二十

对于匹配块中的任一子块,若该子块的前向运动信息和后向运动信息可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若该子块的前向运动信息和后向运动信息均不可用,则当匹配块的中心位置的前向运动信息和后向运动信息均可用时,将匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息赋予当前块对应位置的子块;

当匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;

当匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

实施例二十一

对于匹配块中的任一子块,若将子块的前向运动信息和后向运动信息均可用,则将将子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

实施例二十二

对于匹配块中的任一子块,若将子块的前向运动信息和后向运动信息可用,则将将子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块。

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块。

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块。

若将子块的前向运动信息和后向运动信息均不可用,则当当前块的第二周围块的前向运动信息和后向运动信息均可用时,将第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前块对应位置的子块;

当第二周围块的前向运动信息可用,但后向运动信息不可用时,将第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予当前块对应位置的子块;

当第二周围块的后向运动信息可用,但前向运动信息不可用时,将第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予当前块对应位置的子块;

当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前块对应位置的子块。

根据当前块内的各子块的运动信息,对当前块内的各子块进行运动补偿。

下面对增强的时域运动矢量预测技术是否启用的控制进行说明。

实施例二十三

可以增加SPS级的语法来控制是否启用ETMVP。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码,其中u(n)表示读进连续的n个bit,且解码后为无符号数,ue(n)表示无符号指数Golomb熵编码。当描述子中括号内的参数为n时,表示该语法元素是定长编码,参数为v时语法元素采用变长编码。不限定选用的编码方式。

在一个示例中,采用u(1)进行编码,通过一个bit实现ETMVP是否启用的控制。

实施例二十四

增加SPS级的语法来控制允许启用ETMVP技术的最大块的尺寸。例如,允许启用ETMVP技术的最大块的尺寸为32*32。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码。

在一个示例中,采用ue(v)进行编码,以提高最大块的尺寸的设置的灵活性,并避免比特浪费。

实施例二十五

增加SPS级的语法来控制允许启用ETMVP技术的最小块的尺寸。例如,允许启用ETMVP技术的最小块的尺寸为32*32。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码。

在一个示例中,采用ue(v)进行编码,以提高最小块的尺寸的设置的灵活性,并避免比特浪费。

实施例二十六

可以增加Slice级的语法来控制是否启用ETMVP。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码,其中u(n)表示读进连续的n个bit,且解码后为无符号数,ue(n)表示无符号指数Golomb熵编码。当描述子中括号内的参数为n时,表示该语法元素是定长编码,参数为v时语法元素采用变长编码。不限定选用的编码方式。

在一个示例中,采用u(1)进行编码,通过一个bit实现ETMVP是否启用的控制。

实施例二十七

增加Slice级的语法来控制允许启用ETMVP技术的最大块的尺寸。例如,允许启用ETMVP技术的最大块的尺寸为32*32。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码。

在一个示例中,采用ue(v)进行编码,以提高最大块的尺寸的设置的灵活性,并避免比特浪费。

实施例二十八

增加Slice级的语法来控制允许启用ETMVP技术的最小块的尺寸。例如,允许启用ETMVP技术的最小块的尺寸为32*32。

举例说明,可选用u(n),u(v)或者ue(n),ue(v)进行编码。

在一个示例中,采用ue(v)进行编码,以提高最小块的尺寸的设置的灵活性,并避免比特浪费。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

请参见图9,图9是本申请实施例提供的一种解码装置的结构示意图,该装置可以包括:

获取单元910,用于获取当前块的码流;

解码单元920,用于从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息,所述索引信息用于标识所述增强型时域运动矢量预测模式在编码端设备构建的第一时域候选模式列表中的位置;

第一确定单元930,用于基于所述当前块的第一周围块,确定所述当前块的匹配块;

构建单元940,用于基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第二时域候选模式列表;

第二确定单元950,基于所述索引信息,从所述第二时域候选模式列表中确定增强型时域运动矢量预测模式;

预测单元960,用于基于所述增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿。

在一种可能的实施例中,所述第一确定单元930,具体用于基于所述第一周围块,确定第一阶段的运动信息;基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一种可能的实施例中,所述第一确定单元930,具体用于基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一种可能的实施例中,所述第一确定单元930,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述第一确定单元930,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向列表List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一种可能的实施例中,所述第一确定单元930,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向列表List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述第一确定单元930,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向列表List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一种可能的实施例中,所述第一确定单元930,具体用于:

确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述第一确定单元930,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量以及、运动矢量的精度以及所述当前块的位置,确定所述当前块的匹配块。

在一种可能的实施例中,所述第一确定单元930,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一种可能的实施例中,所述构建单元940,具体用于:

将第一子块和第二子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一种可能的实施例中,所述构建单元940,具体用于分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一种可能的实施例中,所述构建单元940,具体用于将所述匹配块Clip到当前CTU的范围内。

在一种可能的实施例中,所述构建单元940,具体用于:

当Clip后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述Clip后的匹配块的左上角的子块,第十四子块为所述Clip后的匹配块正右侧最上方的相邻子块,第十五子块为所述Clip后的匹配块的左下角的子块,第十六子块为所述Clip后的匹配块正右侧最下方的相邻子块,第十七子块为所述Clip后的匹配块的右上角的子块,第十八子块为所述Clip后的匹配块正左侧最上方的相邻子块,第十九子块为所述Clip后的匹配块的右下角的子块,第二十子块为所述Clip后的匹配块正左侧最下方的相邻子块,第二十一子块为所述Clip后的匹配块正下方最左侧的相邻子块,第二十二子块为所述Clip后的匹配块正下方最右侧的相邻子块,第二十三子块为所述Clip后的匹配块正上方最左侧的相邻子块,第二十四子块为所述Clip后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一种可能的实施例中,所述构建单元940,具体用于:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及对偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一种可能的实施例中,所述预测单元960,具体用于对于目标匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标匹配块为与所述增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元960,还用于:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元960,具体用于对于所述目标匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元960,还用于:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述解码单元920,具体用于当确定所述当前块启用增强的时域运动矢量预测技术时,从所述当前块的码流中解析增强型时域运动矢量预测模式的索引信息。

在一种可能的实施例中,利用序列参数集级语法或片Slice级语法表示所述当前块是否启动增强的时域运动矢量预测技术。

在一种可能的实施例中,当利用序列参数集级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述解码单元920,具体用于:

当所述当前块所属图像序列启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属图像序列未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一种可能的实施例中,当利用Slice级级语法表示所述当前块是否启用增强的时域运动矢量预测技术时,所述解码单元920,具体用于:

当所述当前块所属Slice启用增强的时域运动矢量预测技术时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块所属Slice未启用增强的时域运动矢量预测技术时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一种可能的实施例中,所述解码单元920,具体用于:

当所述当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一种可能的实施例中,所述预设最大块的尺寸利用序列参数集级语法或利用片Slice级语法表示;

或/和,

所述预设最小块的尺寸利用序列参数集级语法或利用片Slice级语法表示。

在一种可能的实施例中,上述解码装置可以包括视频解码器。

请参见图10,为本申请实施例提供的一种解码端设备的硬件结构示意图。该解码端设备可包括处理器1001、存储有机器可执行指令的机器可读存储介质1002。处理器1001与机器可读存储介质1002可经由系统总线1003通信。并且,通过读取并执行机器可读存储介质1002中与解码控制逻辑对应的机器可执行指令,处理器1001可执行上文描述的解码方法。

本文中提到的机器可读存储介质1002可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的解码方法。例如,所述机器可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

请参见图11,图11是本申请实施例提供的一种编码装置的结构示意图,该装置可以包括:

第一确定单元1110,用于基于当前块的第一周围块,确定所述当前块的匹配块;

构建单元1120,用于基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表;

预测单元1130,用于遍历所述第一时域候选模式列表中各候选增强型时域运动矢量预测模式,对于任一候选增强型时域运动矢量预测模式,基于该候选增强型时域运动矢量预测模式,确定所述当前块内各子块的运动信息,并基于所述当前块内各子块的运动信息,对所述当前块内各子块进行运动补偿;

第二确定单元1140,用于基于各候选增强型时域运动矢量预测模式对应的率失真代价,将率失真代价最小的候选增强型时域运动矢量预测模式,确定为所述当前块的增强型时域运动矢量预测模式;

编码单元1150,用于将所述当前块的增强型时域运动矢量预测模式的索引信息携带在所述当前块的码流中,所述索引信息用于标识所述增强型时域运动矢量预测模式在所述第一时域候选模式列表中的位置。

在一种可能的实施例中,所述第一确定单元1110,具体用于基于所述第一周围块,确定第一阶段的运动信息;基于所述第一阶段的运动信息,确定所述当前块的匹配块。

在一种可能的实施例中,所述第一确定单元1110,具体用于基于所述第一周围块的前向运动信息和/或后向运动信息,确定第一阶段的运动信息。

在一种可能的实施例中,所述第一确定单元1110,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,但前向运动信息可用,则将所述第一周围块的前向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述第一确定单元1110,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为列表List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,但后向运动信息可用,则将所述第一周围块的后向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息和后向运动信息均不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一种可能的实施例中,所述第一确定单元1110,具体用于:

若所述第一周围块的后向运动信息可用,且所述第一周围块的后向运动信息指向List1中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的后向运动信息;

若所述第一周围块的后向运动信息可用,但所述第一周围块的后向运动信息未指向List1中的第一帧,则将所述第一周围块的后向运动信息伸缩到指向List1中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List1中的第一帧的索引;

若所述第一周围块的后向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述第一确定单元1110,具体用于:

若所述第一周围块的前向运动信息可用,且所述第一周围块的前向运动信息指向List0中的第一帧,则确定所述第一阶段的运动信息为所述第一周围块的前向运动信息;

若所述第一周围块的前向运动信息可用,但所述第一周围块的前向运动信息未指向List0中的第一帧,则将所述第一周围块的前向运动信息伸缩到指向List0中的第一帧,并确定所述第一阶段的运动矢量为伸缩后的运动矢量,参考帧索引为List0中的第一帧的索引;

若所述第一周围块的前向运动信息不可用,则确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引;

其中,第一阶段的运动信息的参考方向为List0方向。

在一种可能的实施例中,所述第一确定单元1110,具体用于:

确定所述第一阶段的运动矢量为0,参考帧索引为List0中的第一帧的索引,第一阶段的运动信息的参考方向为List0方向;

或,

确定所述第一阶段的运动矢量为0,参考帧索引为List1中的第一帧的索引,第一阶段的运动信息的参考方向为List1方向。

在一种可能的实施例中,所述构建单元1120,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量以及、运动矢量的精度以及所述当前块的位置,确定所述当前块的匹配块。

在一种可能的实施例中,所述构建单元1120,具体用于基于所述第一阶段的水平运动矢量、垂直运动矢量、运动矢量的精度以及子块大小,确定所述当前块的匹配块。

在一种可能的实施例中,所述构建单元1120,具体用于:

将第一子块和第二子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第二子块的运动信息;以及,将第三子块和第四子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向右偏移一个单位,得到一个新的匹配块;

将第五子块和第六子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第六子块的运动信息;以及,将第七子块和第八子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第八子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块水平向左偏移一个单位,得到一个新的匹配块;

将第一子块和第九子块Clip到所述当前CTU的范围内,并比较Clip后的第一子块和第九子块的运动信息;以及,将第五子块和第十子块Clip到所述当前CTU的范围内,并比较Clip后的第五子块和第十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向下偏移一个单位,得到一个新的匹配块;

将第三子块和第十一子块Clip到所述当前CTU的范围内,并比较Clip后的第三子块和第十一子块的运动信息;以及,将第七子块和第十二子块Clip到所述当前CTU的范围内,并比较Clip后的第七子块和第十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第一子块为所述匹配块的左上角的子块,第二子块为所述匹配块正右侧最上方的相邻子块,第三子块为所述匹配块的左下角的子块,第四子块为所述匹配块正右侧最下方的相邻子块,第五子块为所述匹配块的右上角的子块,第六子块为所述匹配块正左侧最上方的相邻子块,第七子块为所述匹配块的右下角的子块,第八子块为所述匹配块正左侧最下方的相邻子块,第九子块为所述匹配块正下方最左侧的相邻子块,第十子块为所述匹配块正下方最右侧的相邻子块,第十一子块为所述匹配块正上方最左侧的相邻子块,第十二子块为所述匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一种可能的实施例中,所述构建单元1120,具体用于分别基于一个或多个偏移量对,对所述匹配块进行水平方向和垂直方向的偏移,得到一个或多个新的匹配块。

在一种可能的实施例中,所述构建单元1120,具体用于将所述匹配块Clip到当前CTU的范围内。

在一种可能的实施例中,所述构建单元1120,具体用于:

当Clip后的匹配块的右边界未处于所述当前CTU的右边界位置上时,比较第十三子块和第十四子块的运动信息,并比较第十五子块和第十六子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向右偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的左边界未处于所述当前CTU的左边界位置上时,比较第十七子块和第十八子块的运动信息,并比较第十九子块和第二十子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块水平向左偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的下边界未处于所述当前CTU的下边界位置上时,比较第十三子块和第二十一子块的运动信息,并比较第十七子块和第二十二子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向下偏移一个单位,得到一个新的匹配块;

当Clip后的匹配块的上边界未处于所述当前CTU的上边界位置上时,比较第十五子块和第二十三子块的运动信息,并比较第十九子块和第二十四子块的运动信息,若两个比较结果中的至少一个比较结果为运动信息不同,则对所述Clip后的匹配块垂直向上偏移一个单位,得到一个新的匹配块;

其中,第十三子块为所述Clip后的匹配块的左上角的子块,第十四子块为所述Clip后的匹配块正右侧最上方的相邻子块,第十五子块为所述Clip后的匹配块的左下角的子块,第十六子块为所述Clip后的匹配块正右侧最下方的相邻子块,第十七子块为所述Clip后的匹配块的右上角的子块,第十八子块为所述Clip后的匹配块正左侧最上方的相邻子块,第十九子块为所述Clip后的匹配块的右下角的子块,第二十子块为所述Clip后的匹配块正左侧最下方的相邻子块,第二十一子块为所述Clip后的匹配块正下方最左侧的相邻子块,第二十二子块为所述Clip后的匹配块正下方最右侧的相邻子块,第二十三子块为所述Clip后的匹配块正上方最左侧的相邻子块,第二十四子块为所述Clip后的匹配块正上方最右侧的相邻子块;一个单位为子块的边长。

在一种可能的实施例中,所述构建单元1120,具体用于:

当存在至少一个新的匹配块时,将偏移前的匹配块对应的预测模式,以及偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当存在至少一个新的匹配块时,将偏移得到的新的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式;

或,

当不存在新的匹配块时,将偏移前的匹配块对应的预测模式,确定为候选增强型时域运动矢量预测模式。

在一种可能的实施例中,所述预测单元1130,具体用于对于目标候选匹配块中的任一子块,将该子块修剪到所述当前CTU的范围内;所述目标候选匹配块为与所述增强型时域运动矢量预测模式对应的匹配块;

若修剪后的子块的前向运动信息和后向运动信息均可用,则将修剪后的子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若修剪后的子块的前向运动信息可用,但后向运动信息不可用,则将修剪后的子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若修剪后的子块的后向运动信息可用,但前向运动信息不可用,则将修剪后的子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元1130,还用于:

若修剪后的子块的前向运动信息和后向运动信息均不可用,则将所述目标候选匹配块的中心位置修剪到所述当前CTU的范围内,当修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述修剪后的目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述修剪后的目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若修剪后的子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元1130,具体用于对于所述目标候选匹配块中的任一子块,若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;

若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;

若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块。

在一种可能的实施例中,所述预测单元1130,还用于:

若该子块的前向运动信息和后向运动信息均不可用,则当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均可用时,将所述目标候选匹配块的中心位置的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息可用,但后向运动信息不可用时,将所述目标候选匹配块的中心位置的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的后向运动信息可用,但前向运动信息不可用时,将所述目标候选匹配块的中心位置的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当所述目标候选匹配块的中心位置的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则将零运动信息赋予所述当前块对应位置的子块;

或,若该子块的前向运动信息和后向运动信息均不可用,则当所述当前块的第二周围块的前向运动信息和后向运动信息均可用时,将所述第二周围块的前向运动信息和后向运动信息分别伸缩到指向List0的第一帧和List1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前块对应位置的子块;当所述第二周围块的前向运动信息可用,但后向运动信息不可用时,将所述第二周围块的前向运动信息伸缩到指向List0的第一帧,并将伸缩后的前向运动信息赋予所述当前块对应位置的子块;当所述第二周围块的后向运动信息可用,但前向运动信息不可用时,将所述第二周围块的后向运动信息伸缩到指向List1的第一帧,并将伸缩后的后向运动信息赋予所述当前块对应位置的子块;当第二周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予所述当前块对应位置的子块。

在一种可选的实施例中,所述构建单元1120,具体用于当所述当前块启用增强的时域运动矢量预测技术时,基于所述匹配块以及对所述匹配块进行偏移得到的新的匹配块,确定候选增强型时域运动矢量预测模式,并基于所述候选增强型时域运动矢量预测模式构建第一时域候选模式列表。

在一种可能的实施例中,利用序列参数集级语法或Slice级语法控制所述当前块是否启用增强的时域运动矢量预测技术。

在一种可能的实施例中,所述构建单元1120,具体用于当所述当前块的尺寸小于等于预设最大块的尺寸,且大于等于预设最小块的尺寸时,确定所述当前块启用增强的时域运动矢量预测技术;

当所述当前块的尺寸大于预设最大块的尺寸,或,小于预设最小块的尺寸时,确定所述当前块未启用增强的时域运动矢量预测技术。

在一种可能的实施例中,所述预设最大块的尺寸利用序列参数集级语法或利用Slice级语法表示;

或/和,

所述预设最小块的尺寸利用序列参数集级语法或利用片Slice级语法表示。

在一种可能的实施例中,上述编码装置可以包括视频编码器。

请参见图12,为本申请实施例提供的一种编码端设备的硬件结构示意图。该编码端设备可包括处理器1201、存储有机器可执行指令的机器可读存储介质1202。处理器1201与机器可读存储介质1202可经由系统总线1203通信。并且,通过读取并执行机器可读存储介质1202中与编码控制逻辑对应的机器可执行指令,处理器1201可执行上文描述的编码方法。

本文中提到的机器可读存储介质1202可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的编码方法。例如,所述机器可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

在一些实施例中,还提供了一种摄像机设备,包括上述任一实施例中的编码装置和上述任一实施例中的解码装置。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

91页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种图片封装方法、设备以及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类