视频编码、解码方法及装置与流程

文档序号:20062007发布日期:2020-03-06 08:04阅读:165来源:国知局
视频编码、解码方法及装置与流程

本公开属于视频编解码技术领域,涉及一种视频编码、解码方法及装置。



背景技术:

由于在自然视频中,图像与图像之间存在很高的相似性。因此在视频压缩时,为了去除图像与图像之间的信息冗余,需要进行帧间预测。所谓的帧间预测就是利用上一帧已编码过的图像对当前要编码的图像进行预测,然后将预测的误差传递给解码器。比起直接传输当前图像的内容,预测误差的信息量要小得多,这样就达到了压缩的目的。在实际编码中,编码器在编码当前图像块时,需要在已编码图像中确定一个图像块(称为参考块),然后将两者之间的差值传输给解码器,解码器在接收到预测误差后,再加上同一个参考块就恢复出了当前图像块的像素值了,因此编码器和解码器需要使用同一个参考块。参考块与当前块之间的位置差用运动矢量来表示,编码器需要把运动矢量传输给解码器,这样才能解码器才能找到正确的参考块。

随着预测技术的不断进步,图像预测残差不断减小,运动矢量等运动信息在码流中所占比例不断上升。为了减少传输运动信息的开销,跳过模式、直接模式、合并模式等模式被提了出来。在这些模式中,运动信息不在码流中传输,编码器和解码器根据之前编过码的图像块的运动信息按照一定规则直接导出当前图像块的运动矢量等运动信息。这些模式可以省去传输运动信息,但是由于运动信息的导出规则是固定的,并且需要根据之前编过码的图像块的运动信息来导出。当当前图像块的运动情况和之前图像块的运动情况差别较大时,所导出的运动信息就不太合适当前块了。

为了解决这一问题,一种新的运动矢量偏移技术被提了出来。这种技术在导出运动矢量后对所导出的运动矢量进行偏移,使得其更合适于当前的图像块,偏移信息由编码器决定并且在码流中传输。在这一技术中,为了减少用于表达偏移信息的比特数,偏移只能在水平方向和竖直方向进行,并且偏移的幅度也被进行了限制,只能在若干个候选幅度值中选择。由于偏移的这些限制,使得编码器能够使用较少比特数来对导出的运动矢量进行较好的修正,这大大提高了编码性能。同时,这一技术还会对帧间预测的预测方向进行修改,提供多种不同的候选预测方向。例如,偏移后运动矢量指向前向参考图像,那么该技术会按照线性模型导出指向后向参考图像的运动矢量,由编码器决定使用前向预测、后向预测还是双向预测,这些预测方向信息也会在在码流中指示。这就相当于给编码器提供了更多的候选运动矢量使得编码器可以找到一个更适合当前块的参考块,因此编码效率进一步提高。

在avs2视频编码标准中,跳过模式和直接模式本身就提供了多个不同预测方向候选运动矢量,包括前向预测、后向预测、双向预测和对称预测。因此当运动矢量偏移技术应用到avs2视频编码标准中的直接和跳过模式时,由于直接模式和跳过模式导出的运动矢量已经覆盖了不同的预测方向,所以对偏移后的运动矢量进行预测方向的修改就有些冗余。例如,根据偏移后的前向运动矢量导出的后向运动矢量与由直接模式或跳过模式中的后向候选运动矢量进行偏移后的后向运动矢量相似度较高,没有必要同时提供这两种情况的候选运动矢量备选,因为这样会增加在码流中传输相关信息的开销,反而降低编码性能。另外,运动矢量偏移技术会对跳过模式和直接模式导出的各个候选运动矢量进行偏移,但如果各个候选运动矢量之间的距离较近,那么经过偏移后的值就有可能会相同,这又造成了冗余。因此,有必要对运动矢量偏移技术进行改进,以减少冗余和码流指示开销,从而提高编码性能。



技术实现要素:

(一)要解决的技术问题

本公开提供了一种视频编码、解码方法及装置,以至少部分解决以上所提出的技术问题。

(二)技术方案

根据本公开的一个方面,提供了一种视频编码方法,包括:对当前编码块,导出多个运动矢量;选取导出的多个运动矢量中的部分运动矢量进行偏移操作,得到第一运动矢量,未进行偏移操作的运动矢量为第二运动矢量;选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,得到第三运动矢量;从第一运动矢量、第二运动矢量和第三运动矢量中确定当前编码块使用的运动矢量,并在码流中写入关于该确定使用的运动矢量的信息;以及根据当前编码块使用的运动矢量进行后续编码。

在本公开的一些实施例中,在选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量的过程中,只导出不同预测方向中的部分预测方向上的运动矢量。

在本公开的一些实施例中,偏移操作只对运动矢量在水平和竖直方向进行偏移,包括水平向左、水平向右、竖直向上和竖直向下,和/或偏移操作中对运动矢量进行偏移的偏移幅度为二的幂次方个像素。

在本公开的一些实施例中,运动矢量导出规则包括:直接模式、跳过模式、以及合并模式。

在本公开的一些实施例中,写入的运动矢量的信息包括:关于当前编码块是否对导出的运动矢量进行偏移操作的信息、关于当前编码块是对哪个导出的运动矢量进行偏移的信息、关于当前编码块对导出的运动矢量如何进行偏移操作的信息、以及关于当前编码块运动矢量的预测方向的信息。

在本公开的一些实施例中,导出的多个运动矢量包括:根据参考图像上位置对应块的运动矢量导出的运动矢量、根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量。

在本公开的一些实施例中,进行偏移操作的多个运动矢量中的部分运动矢量为:根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者根据相邻块导出的双向预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者根据相邻块导出的前向预测的运动矢量和根据相邻块导出的后向预测的运动矢量;或者根据相邻块导出的双向预测的运动矢量和根据相邻块导出的对称预测的运动矢量;或者根据相邻块导出的双向预测的运动矢量。

在本公开的一些实施例中,第一运动矢量中的部分运动矢量为:根据相邻块导出的双向预测的运动矢量、根据相邻块导出的前向预测的运动矢量、根据相邻块导出的后向预测的运动矢量,或者根据相邻块导出的前向预测的运动矢量、根据相邻块导出的后向预测的运动矢量,或者根据相邻块导出的双向预测的运动矢量和根据相邻块导出的对称预测的运动矢量;或者根据相邻块导出的双向预测的运动矢量。

在本公开的一些实施例中,选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量的过程中,只导出不同预测方向中的部分预测方向上的运动矢量,该不同预测方向中的部分预测方向上的运动矢量包括:前向预测运动矢量和后向预测运动矢量,或者双向预测运动矢量和对称预测运动矢量,或者双向预测运动矢量,或者前向预测运动矢量,或者后向预测运动矢量。

根据本公开的另一个方面,提供了一种视频编码装置,包括:运动矢量导出单元,用于导出多个运动矢量;运动矢量偏移单元,用于对导出的多个运动矢量中的部分运动矢量进行偏移操作,得到第一运动矢量,未进行偏移操作的运动矢量为第二运动矢量;不同预测方向运动矢量导出单元,用于选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,得到第三运动矢量;运动矢量确定和码流写入单元,用于从第一运动矢量、第二运动矢量和第三运动矢量中确定当前编码块使用的运动矢量,并在码流中写入关于该确定使用的运动矢量的信息;以及后续编码单元,用于根据编码块使用的运动矢量进行后续编码。

在本公开的一些实施例中,不同预测方向运动矢量导出单元在导出不同预测方向上的运动矢量的过程中,只导出不同预测方向中的部分预测方向上的运动矢量。

根据本公开的又一个方面,提供了一种视频解码方法,包括:从码流中解析关于是否进行运动矢量偏移的信息,并根据解析结果从码流中解析运动矢量索引值;当要进行运动矢量偏移时,从码流中解析关于运动矢量偏移的信息;根据所述索引值从码流中解析关于预测方向的信息;根据索引值、运动矢量偏移的信息和预测方向的信息,确定当前解码块的运动矢量;以及根据确定的运动矢量,对当前解码块进行解码。

在本公开的一些实施例中,从码流中解析关于是否进行运动矢量偏移的信息,并根据解析结果从码流中解析运动矢量索引值的步骤包括:如果从码流中解析的信息指示不对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值一,如果从码流中解析的信息指示对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值二,其中,索引值二可能的取值个数小于索引值一可能的取值个数。

在本公开的一些实施例中,索引值一索引的运动矢量包括:参考图像上位置对应块的运动矢量导出的运动矢量、和/或根据相邻块导出的双向预测的运动矢量、和/或根据相邻块导出的对称预测的运动矢量、和/或根据相邻块导出的前向预测的运动矢量、和/或根据相邻块导出的后向预测的运动矢量;索引值二索引的运动矢量包括:根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的前向预测的运动矢量和根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量和根据相邻块导出的对称预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量。

在本公开的一些实施例中,根据索引值从码流中解析关于预测方向的信息,包括以下至少之一:当索引值二指示导出前向运动矢量或后向运动矢量时,从码流中解析关于预测方向的信息,该信息的可能取值有三种,可能指示当前解码块使用前向预测、或后向预测、或双向预测;当索引值二指示导出双向运动矢量或对称运动矢量时,不从码流中解析关于预测方向的信息,当前解码块直接使用双向预测或对称预测。

在本公开的一些实施例中,关于预测方向的信息指示的预测方向包括前向预测、后向预测、双向预测、对称预测中的全部或一部分;或者如果进行偏移的导出的运动矢量为前向预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测和后向预测;如果进行偏移的导出的运动矢量为后预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测和后向预测;或者如果进行偏移的导出的运动矢量为前向预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测、后向预测、以及双向预测;如果进行偏移的导出的运动矢量为后预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测、后向预测、以及双向预测。

在本公开的一些实施例中,关于运动矢量偏移的信息包括进行偏移操作的方向和偏移幅度;偏移操作只对运动矢量在水平和竖直方向进行偏移,包括水平向左、水平向右、竖直向上和竖直向下,和/或偏移操作中对运动矢量进行偏移的偏移幅度为二的幂次方个像素。

根据本公开的再一个方面,提供一种视频解码装置,包括:运动矢量偏移使能信息解析单元,用于从码流中解析指示是否对所导出的运动矢量进行偏移的信息;运动矢量索引值解析单元,用于根据运动矢量偏移使能信息解析单元解析的信息的指示来解析关于导出的运动矢量的索引值;运动矢量偏移信息解析单元,用于解析关于运动矢量如何进行偏移的信息;预测方向信息解析单元,用于从码流中解析关于预测方向的信息;运动矢量确定单元,用于确定当前解码块的运动矢量;以及后续解码单元,用于根据确定的当前解码块的运动矢量进行后续解码。

在本公开的一些实施例中,根据运动矢量偏移使能信息解析单元解析的信息的指示来解析关于导出的运动矢量的索引值,包括:如果运动矢量偏移使能信息解析单元解析得到的信息指示不对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值一;如果运动矢量偏移使能信息解析单元解析得到的信息指示对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值二;其中,索引值二可能的取值个数小于索引值一可能的取值个数。

(三)有益效果

从上述技术方案可以看出,本公开提供的视频编码、解码方法及装置,具有以下有益效果至少之一:

(1)基于运动矢量导出模式下各个导出的运动矢量之间的关系,只对部分的运动矢量进行偏移以在较小的索引值开销下得到尽量多的不同的运动矢量,最大限度地避免了不同的运动矢量经过偏移后变成同一个运动矢量或相似运动矢量的情况;同时在导出不同预测方向的运动矢量时,考虑了各个运动矢量原来的预测方向,只支持对部分运动矢量进行其他预测方向的导出,这在不减少实际候选运动矢量的情况下减少了用于指示的比特数,即通过平衡比特开销和候选运动矢量的多样性,提高了视频编码的性能;

(2)在选取部分进行偏移操作后的运动矢量导出不同预测方向上的运动矢量过程中,只选取所述不同预测方向中的部分预测方向来进行运动矢量的导出,进一步降低冗余,使得编码效率进一步提高。

附图说明

图1为根据本公开第一个实施例所示的视频编码方法的流程图。

图2为根据本公开第二个实施例所示的视频编码装置的示意图。

图3为根据本公开第二个实施例所示的编码装置中运动矢量确定和码流写入单元的结构示意图。

图4为根据本公开第三个实施例所示的视频解码方法的流程图。

图5为根据本公开第四个实施例所示的视频解码装置的示意图。

【符号说明】

201-运动矢量导出单元;202-运动矢量偏移单元;

203-不同预测方向运动矢量导出单元;

204-运动矢量确定和码流写入单元;

204a-运动矢量确定子单元;204b-码流写入子单元;

205-后续编码单元;

501-运动矢量导出模式信息解析单元;

502-运动矢量偏移使能信息解析单元;

503-运动矢量索引值解析单元;

504-运动矢量偏移信息解析单元;

505-预测方向信息解析单元;

506-运动矢量确定单元;

507-后续解码单元。

具体实施方式

本公开提供了一种视频编码、解码方法及装置,通过对直接模式和跳过模式等模式导出的各个运动矢量进行了统计分析,只对其中部分的运动矢量进行偏移操作,最大限度地避免了不同的运动矢量经过偏移后变成同一个运动矢量的情况;其次,根据直接模式和跳过模式等模式导出的各个运动矢量的预测方向分布情况,对偏移后运动矢量的预测方向的调节也做了限制,去掉了不必要的预测方向的调整,这一方面降低了编码器的复杂度,另一方面也减少了码流中的指示开销,从而提高编码性能。

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。本公开中,术语“相邻块”为在同一图像中空间位置相邻的块。

在本公开的第一个示例性实施例中,提供了一种视频编码方法。

图1为根据本公开第一个实施例所示的视频编码方法的流程图。

参照图1所示,本公开的视频编码方法,包括:

步骤s102:对当前编码块,按照运动矢量导出规则导出多个运动矢量;

本实施例中,编码器按照预定的规则为当前编码块导出多个运动矢量,得到包含多个运动矢量的运动矢量库。本步骤s102中的运动矢量导出规则可以采用现有的任何规则,包括:直接模式、跳过模式、以及合并模式中采用的运动矢量导出规则等。

在一实例中,步骤s102中导出的多个运动矢量包括:根据参考图像上位置对应块的运动矢量导出的运动矢量、根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量。

步骤s104:选取导出的多个运动矢量中的部分运动矢量进行偏移操作,得到第一运动矢量,未进行偏移操作的运动矢量为第二运动矢量;

本步骤s104中,只选取导出的运动矢量库中的部分运动矢量进行偏移操作,以得到尽量多的不同运动矢量,是为了在较小的索引值开销下得到尽量多的不同的运动矢量,减少偏移后的运动矢量的相互冗余,最大限度地避免不同的运动矢量经过偏移后变成同一个运动矢量或相似运动矢量的情况。

这里选取部分运动矢量的原则是使得偏移后得到尽量多的不同运动矢量。一般而言,对于那些经过偏移之后与导出的运动矢量库中的运动矢量接近或者相同的运动矢量不进行偏移操作,以避免在经过偏移操作之后与别的运动矢量重合,从而减少冗余。

本实施例中,对于每个要进行偏移操作的运动矢量进行不同的偏移操作后得到多个运动矢量,为第一运动矢量,未进行偏移操作的多个运动矢量为第二运动矢量。在其它实施例中,选取导出的运动矢量库中的部分运动矢量进行偏移操作,该偏移操作可以根据实际需要进行设置,每个运动矢量的偏移操作可以相同,可以不同。需要说明的是,第一运动矢量和第二运动矢量均可包含若干个矢量,这里的“第一”、“第二”是为了区分运动矢量是否进行了偏移操作。

本步骤s104中,偏移操作可以在二维平面沿任意方向按照任意距离进行,也可以限定在水平和竖直方向,并且规定可能的偏移距离。其中,偏移操作不改变运动矢量的预测方向。

在一实例中,步骤s104的一种可能实现方法如下:对根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量进行偏移操作,不对根据参考图像上位置对应块的运动矢量导出的运动矢量进行偏移操作。或者,只对根据相邻块导出的对称预测的运动矢量和/或根据相邻块导出的双向预测的运动矢量进行偏移操作,不对其他的导出的运动矢量进行偏移操作。或者,只对根据相邻块导出的前向预测的运动矢量和/或根据相邻块导出的后向预测的运动矢量进行偏移操作,不对其他的导出的运动矢量进行偏移操作。

优选地,进行偏移操作的一种可能实现的方法如下:限定偏移可以包括水平向左、水平向右、竖直向上、以及竖直向下等,偏移的距离包括2的幂次方像素距离,如四分之一像素、二分之一像素、一个像素、两个像素、四个像素、八个像素、十六个像素、以及三十二个像素等。

步骤s106:选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,得到第三运动矢量;

本步骤s106中,选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,是根据直接模式和跳过模式导出的各个运动矢量的预测方向分布情况,在导出不同预测方向的运动矢量时,考虑了各个运动矢量原来的预测方向,只支持对部分运动矢量进行其他方式的导出,对第一运动矢量的预测方向的调节作了限制,去掉了不必要的预测方向调整。这样一来,在不降低不同运动矢量候选的情况下减少了比特数,通过平衡比特开销和候选运动矢量的多样性,以提高视频编码的性能。

本公开中,导出的不同预测方向上的运动矢量可以是所有其他预测方向上的运动矢量,也可以是其他预测方向中的个别预测方向上的运动矢量。

在一实例中,导出不同预测方向上的运动矢量的方法如下:根据前向运动矢量可以导出后向运动矢量,可以将前向运动矢量和后向运动矢量组合起来得到双向运动矢量;可以根据后向运动矢量导出前向运动矢量,可以将前向运动矢量和后向运动矢量组合起来得到双向运动矢量;可以将双向运动矢量中的前向运动矢量单独取出得到前向运动矢量,可以将双向运动矢量中的后向运动矢量单独取出得到后向运动矢量;可以将对称运动矢量中的前向运动矢量单独取出得到前向运动矢量,可以将对称运动矢量中的后向运动矢量单独取出得到后向运动矢量。

优选地,步骤s106的一种可能的实现方法如下:在第一运动矢量中,对于前向运动矢量和后向运动矢量导出与其预测方向不同的运动矢量,对其他预测方向的运动矢量不导出与其预测方向不同的运动矢量,即根据前向运动矢量导出后向运动矢量、双向运动矢量,根据后向运动矢量导出前向运动矢量、双向运动矢量,不根据双向运动矢量导出其他预测方向的运动矢量,不根据对称运动矢量导出其他预测方向的运动矢量。

本实施例中,为了进一步降低冗余,在选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量过程中,只选取不同预测方向中的个别预测方向上的运动矢量进行导出,即在导出其他预测方向的运动矢量时,只导出部分其他预测方向的运动矢量。例如,根据前向运动矢量只导出后向运动矢量,但不导出双向运动矢量和对称运动矢量,根据后向运动矢量只导出前向运动矢量,但不导出双向运动矢量和对称运动矢量。

特殊地,如果所有偏移后的运动矢量都不需要导出其他预测方向,该情况作为特例。

步骤s108:从第一运动矢量、第二运动矢量和第三运动矢量中确定当前编码块使用的运动矢量,并在码流中写入关于该确定使用的运动矢量的信息;

本实施例中,在步骤s102、s104、s106得到的所有运动矢量中为当前编码块选择最优运动矢量,并且把该运动矢量的信息写入码流。其中,得到的运动矢量包括:步骤s102中导出的多个运动矢量中没有在步骤s104进行偏移的运动矢量、步骤s104中进行偏移操作后的运动矢量、以及步骤s106中导出的不同预测方向的运动矢量,即对应为:第二运动矢量、第一运动矢量、以及第三运动矢量。编码器在这些运动矢量中为当前编码块选择最合适的运动矢量来进行帧间预测,并且将所选的运动矢量的信息写入码流,使得解码器能够确定所使用的运动矢量。

本实施例中,关于运动矢量的信息包括:关于当前编码块是否采用了导出运动矢量模式的信息、关于当前编码块是否对导出的运动矢量进行偏移操作的信息、关于当前编码块是对哪个导出的运动矢量进行偏移的信息、关于当前编码块对导出的运动矢量如何进行偏移操作的信息、以及关于当前编码块运动矢量的预测方向的信息。

步骤s110:根据当前编码块使用的运动矢量进行后续编码;

本实施例中,根据步骤s108中确定的当前编码块使用的运动矢量获取参考块,进行后续编码。本公开不对后续编码步骤作限定。

在本公开的第二个示例性实施例中,提供了一种视频编码装置。

图2为根据本公开第二个实施例所示的视频编码装置的示意图。图3为根据本公开第二个实施例所示的编码装置中运动矢量确定和码流写入单元的结构示意图。

结合图2和图3所示,本公开的视频编码装置,包括:运动矢量导出单元201,用于按照运动矢量导出规则导出多个运动矢量;运动矢量偏移单元202,用于对导出的多个运动矢量中的部分运动矢量进行偏移操作,得到第一运动矢量,未进行偏移操作的运动矢量为第二运动矢量;不同预测方向运动矢量导出单元203,用于选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,得到第三运动矢量;以及运动矢量确定和码流写入单元204,用于从第一运动矢量、第二运动矢量和第三运动矢量中确定当前编码块使用的运动矢量,并在码流中写入关于该确定使用的运动矢量的信息。可选的,该编码装置还可以包括后续编码单元205,用于根据编码块使用的运动矢量进行后续编码。

其中,运动矢量导出单元201,用于按照运动矢量导出规则导出多个运动矢量,本实施例中,用于导出运动矢量直接导出模式下的多个运动矢量,其导出规则为编解码共同约定或在编解码标准中规定,具体可以执行但不限于第一个实施例的步骤s102。

运动矢量偏移单元202,用于对导出的多个运动矢量中的部分运动矢量进行偏移操作,得到第一运动矢量,未进行偏移操作的运动矢量为第二运动矢量;具体可以执行但不限于第一个实施例的步骤s104。

不同预测方向运动矢量导出单元203,用于选取第一运动矢量中的部分运动矢量导出不同预测方向上的运动矢量,得到第三运动矢量,本实施例中,用于根据部分运动矢量偏移单元偏移后的运动矢量导出与之不同的其他预测方向上的运动矢量。具体可以执行但不限于第一个实施例的步骤s106。

运动矢量确定和码流写入单元204,用于从第一运动矢量、第二运动矢量和第三运动矢量中确定当前编码块使用的运动矢量,并在码流中写入关于该确定使用的运动矢量的信息。执行第一个实施例的步骤s108。参照图3所示,在一实施例中,运动矢量确定和码流写入单元204包括运动矢量确定子单元204a和码流写入子单元204b。

后续编码单元205,用于根据编码块使用的运动矢量进行后续编码。具体可以执行但不限于第一个实施例的步骤s110。本发明不对后续编码步骤作限定。

在本公开的第三个示例性实施例中,提供了一种相对应于本公开的编码进行解码的视频解码方法。

图4为根据本公开第三个实施例所示的视频解码方法的流程图。

参照图4所示,本公开的视频解码方法,包括:

步骤s402:从码流中解析关于运动矢量导出模式的信息;

本步骤s402中,关于运动矢量导出模式的信息指示解码器是否要为当前解码块导出运动矢量,该导出模式包括但不限于直接模式、跳过模式、合并模式等由解码器直接导出运动矢量的模式,当采用这些模式时,不解析运动矢量差而直接为当前解码块导出运动矢量。

本实施例中,该信息可以为一个标志位,用于指示当前解码块是否采用直接导出运动矢量的模式;也可以是为一个索引值,当索引值为某个或某些值时,表示当前解码块采用直接导出运动矢量的模式。例如,所述信息为跳过模式标识位或直接模式标识位,当标识位的值等于0时,表示不使用跳过模式或直接模式,当标识位的值等于1时,表示使用跳过模式或直接模式。或者,所述信息为编码块类型,当类型值等于0时,表示采用跳过模式,当类型值等于1时,表示采用直接模式,当类型值等于其他值时,表示不采用直接导出运动矢量的模式。

如果该信息指示使用运动矢量导出模式,则继续后续步骤s404。本公开考虑使用运动矢量导出模式的情况。

步骤s404:指示采用运动矢量导出模式后,从码流中解析关于是否进行运动矢量偏移的信息,并根据解析结果从码流中解析运动矢量索引值;

如果步骤s402中解析得到的信息指示当前解码块采用直接导出运动矢量的模式,则继续从码流中解析是否对导出的运动矢量进行偏移的信息,该偏移的信息可能为一个标志位。

如果步骤s404中的信息指示不对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值一;如果步骤s404中的信息指示对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值二。其中,索引值二的取值范围小于索引值一。

如果步骤s404中的信息指示不对导出的运动矢量进行偏移,则解码器在导出运动矢量后,直接使用该运动矢量进行后续解码操作。在这种情况下,解码器导出的运动矢量有多个可能值,由索引值一指示到底要导出哪个运动矢量。

索引值一索引的运动矢量包括:根据参考图像上位置对应块的运动矢量导出的运动矢量、和/或根据相邻块导出的双向预测的运动矢量、和/或根据相邻块导出的对称预测的运动矢量、和/或根据相邻块导出的前向预测的运动矢量、和/或根据相邻块导出的后向预测的运动矢量。

优选地,索引值一指示的导出的具有多个可能值的运动矢量包括:根据参考图像上位置对应块的运动矢量导出的运动矢量、根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量和根据相邻块导出的后向预测的运动矢量中的一部分或全部,也可以包括其他方法导出的运动矢量。

如果步骤s404中的信息指示对导出的运动矢量进行偏移,则解码器需要对导出的运动矢量进行偏移后才能使用,即解码器需要在导出运动矢量的同时还要对导出的运动矢量进行偏移。在这种情况下,解码导出的运动矢量有一个或多个可能值,由索引值二指示到底要导出哪个运动矢量。其中,这些可能值是不对导出的运动矢量进行偏移情况下导出的运动矢量的可能值的子集,因此索引值二的取值范围一定小于索引值一的取值范围。

索引值二索引的运动矢量包括:根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量、以及根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的前向预测的运动矢量和根据相邻块导出的后向预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量和根据相邻块导出的对称预测的运动矢量;或者包括根据相邻块导出的双向预测的运动矢量。

优选地,索引值二指示的导出的具有多个可能值的运动矢量包括:根据相邻块导出的双向预测的运动矢量、根据相邻块导出的对称预测的运动矢量、根据相邻块导出的前向预测的运动矢量和根据相邻块导出的后向预测的运动矢量中的一部分或全部,但此处所包含的运动矢量要少于不对运动矢量进行偏移的情况下导出的运动矢量。因此,索引值二的取值个数也应该小于索引值一的取值个数。

如果信息指示对运动矢量进行偏移则继续后续步骤s406,如果信息指示不对运动矢量进行偏移,则按照原运动矢量导出模式进行后续解码操作,本公开不做限定。

步骤s406:当要进行运动矢量偏移时,从码流中解析关于运动矢量偏移的信息;

如果步骤s404中的信息指示需要对导出的运动矢量进行偏移,则依据索引值定位到该运动矢量,进行偏移操作,此步骤s406中解析的关于运动矢量偏移的信息指示了对导出的运动矢量进行什么样的偏移操作。关于运动矢量偏移的信息包括进行偏移操作的方向和偏移幅度。

本实施例中,关于运动矢量偏移的信息也可以由偏移方向和偏移幅值组成。偏移方向包括水平向左、水平向右、竖直向上、以及竖直向下等;偏移幅值包括二的幂次方像素,如四分之一像素、二分之一像素、一个像素、两个像素、四个像素、八个像素、十六个像素、以及三十二个像素等。码流可以对偏移方向和偏移幅度进行指示。

其他实施例中,关于运动矢量偏移的信息可以为一个二维矢量,该矢量的两个维度分别规定了水平方向和竖直方向的偏移。例如,解析后的偏移信息为(x,y),x表示运动矢量水平分量的偏移,y表示了运动矢量竖直分量的偏移。

步骤s408:根据索引值从码流中解析关于预测方向的信息;

根据索引值二确定是否需要从码流中解析关于预测方向的信息以及从码流中解析关于预测方向的信息的可能值。

关于预测方向的信息指示的预测方向包括前向预测、后向预测、双向预测、对称预测中的全部或一部分;或者

如果进行偏移的导出的运动矢量为前向预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测和后向预测;如果进行偏移的导出的运动矢量为后预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测和后向预测;或者

如果进行偏移的导出的运动矢量为前向预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测、后向预测、以及双向预测;如果进行偏移的导出的运动矢量为后预测运动矢量,关于预测方向的信息指示的预测方向包括前向预测、后向预测、以及双向预测;如果进行偏移的导出的运动矢量为双向预测运动矢量,关于预测方向的信息指示的预测方向包括;双向预测、前向预测、以及后向预测;如果进行偏移的导出的运动矢量为对称预测运动矢量,关于预测方向的信息指示的预测方向包括;对称预测、前向预测、以及后向预测。

本实施例中,索引值二指示了在需要对导出的运动矢量进行偏移的情况下要导出的运动矢量是哪个预测方向的运动矢量。对于某些导出的运动矢量,解码器对其进行偏移后直接使用进行后续解码过程,实际预测方向即为导出的运动矢量的预测方向,因此不需要解析关于预测方向的信息;对于某些导出的运动矢量,解码器对其进行偏移后再根据偏移后的运动矢量导出不同预测方向上的运动矢量,然后再使用进行后续解码过程,实际预测方向与导出的运动矢量的预测方向不同,因此需要从码流中解析关于预测方向的信息。

优选地,根据索引值从码流中解析关于预测方向的信息的一种可能的实现方法如下:对于前向运动矢量和后向运动矢量导出与其预测方向不同的运动矢量,对其他预测方向的运动矢量不导出与其预测方向不同的运动矢量,即根据前向运动矢量导出后向运动矢量、双向运动矢量,根据后向运动矢量导出前向运动矢量、双向运动矢量,不根据双向运动矢量导出其他方向的运动矢量,不根据对称运动矢量导出其他预测方向的运动矢量。即当索引值二指示导出前向运动矢量时,从码流中解析关于预测方向的信息,该信息的可能取值有三种,可能指示当前解码块使用前向预测,或后向预测,或双向预测;当索引值二指示导出后向运动矢量时,从码流中解析关于预测方向的信息,该信息的可能取值有三种,可能指示当前解码块使用前向预测,或后向预测,或双向预测;当索引值二指示导出双向运动矢量或对称运动矢量时,不从码流中解析关于预测方向的信息,当前解码块直接使用双向预测或对称预测。

进一步地,对应编码的情况,在解码时,当需要导出其他预测方向的运动矢量时,只导出个别其他预测方向的运动矢量。例如,根据前向运动矢量只导出后向运动矢量,不导出双向运动矢量,根据后向运动矢量只导出前向运动矢量,不导出双向运动矢量。即当索引值二指示导出前向运动矢量时,从码流中解析关于预测方向的信息,该信息的可能取值有两种,可能指示当前解码块使用前向预测或后向预测;即当索引值二指示导出后向运动矢量时,从码流中解析关于预测方向的信息,该信息的可能取值有两种,可能指示当前解码块使用前向预测,或后向预测;当索引值二指示导出双向运动矢量或对称运动矢量时,不从码流中解析关于预测方向的信息,当前解码块直接使用双向预测或对称预测。

在一实例中,可以根据步骤s406得到的偏移后的运动矢量导出与其预测方向不同的运动矢量。例如,根据前向运动矢量可以导出后向运动矢量,可以将前向运动矢量和后向运动矢量组合起来得到双向运动矢量;可以根据后向运动矢量导出前向运动矢量,可以将前向运动矢量和后向运动矢量组合起来得到双向运动矢量;可以将双向运动矢量中的前向运动矢量单独取出得到前向运动矢量,可以将双向运动矢量中的后向运动矢量单独取出得到后向运动矢量;可以将对称运动矢量中的前向运动矢量单独取出得到前向运动矢量,可以将对称运动矢量中的后向运动矢量单独取出得到后向运动矢量。

特殊地,如果对于所有的经过偏移的运动矢量,都不需要导出与其预测方向不同的运动矢量,则不从码流中解析关于预测方向的信息。

以上步骤s406中解析关于运动矢量偏移的信息和步骤s408中解析关于预测方向的信息无相互依赖关系,可以交换顺序执行。另外,s406中解析关于运动矢量偏移的信息也可以提前至步骤s404从码流中解析关于是否进行运动矢量偏移的信息之后,码流中解析运动矢量索引值之前。

步骤s410:根据索引值、运动矢量偏移的信息和预测方向的信息,确定当前解码块的运动矢量;

在本实施例中,步骤s410中根据上述信息确定当前解码块的运动矢量中的上述信息包括步骤s402、s404、s406、s408中的信息,具体操作包括如下情况:

如果步骤s402和s404中解析的信息指示当前解码块采用直接导出运动矢量的模式并且导出的运动矢量需要进行偏移,那么解码器根据索引值二导出运动矢量,例如,如果索引值二指示前向运动矢量则按照规则导出预测方向为前向的运动矢量,如果索引值二指示后向运动矢量则按照规则导出预测方向为后向的运动矢量,如果索引值二指示双向运动矢量则按照规则导出预测方向为双向的运动矢量,如果索引值二指示对称运动矢量则按照规则导出预测方向为对称的运动矢量;导出运动矢量后,根据步骤s406中的关于偏移的信息对导出的运动矢量将进行偏移,然后根据步骤s408中解析得到的关于预测方向的信息导出不同预测方向的运动矢量,并获取最终的运动矢量。例如,如果导出的运动矢量为前向运动矢量,步骤s408中解析的信息指示双向预测,则根据偏移后的前向运动矢量导出预测方向为后向的运动矢量,然后将前向运动矢量和后向运动矢量组合为双向运动矢量,并确定该双向运动矢量为当前解码块的运动矢量;如果导出的运动矢量为前向运动矢量,步骤s408中解析的信息指示后向预测,则根据偏移后的前向运动矢量导出预测方向为后向的运动矢量,然后确定该后向运动矢量为当前解码块的运动矢量;如果导出的运动矢量为后向运动矢量,步骤s408中解析的信息指示双向预测,则根据偏移后的后向运动矢量导出预测方向为前向的运动矢量,然后将前向运动矢量和后向运动矢量组合为双向运动矢量,并确定该双向运动矢量为当前解码块的运动矢量;如果导出的运动矢量为后向运动矢量,步骤s408中解析的信息指示前向预测,则根据偏移后的后向运动矢量导出预测方向为前向的运动矢量,然后确定该前向运动矢量为当前解码块的运动矢量;如果导出的运动矢量为双向或对称运动矢量,步骤s408中解析的信息指示前向预测,则确定双向或对称运动矢量中的前向运动矢量为当前解码块的运动矢量;如果导出的运动矢量为双向或对称运动矢量,步骤s408中解析的信息指示后向预测,则确定双向或对称运动矢量中的后向运动矢量为当前解码块的运动矢量。

在确定了当前解码块的运动矢量之后根据该运动矢量获取参考块从而进行后续解码步骤。本公开不对后续解码步骤作限定。

在本公开的第四个示例性实施例中,提供了一种视频解码装置。

图5为根据本公开第四个实施例所示的视频解码装置的示意图。

参照图5所示,本公开的视频解码装置,包括:运动矢量导出模式信息解析单元501,用于从码流中解析关于运动矢量导出模式的信息;运动矢量偏移使能信息解析单元502,用于从码流中解析指示是否对所导出的运动矢量进行偏移的信息;运动矢量索引值解析单元503,用于根据运动矢量偏移使能信息解析单元解析的信息指示来解析关于导出的运动矢量的索引值;运动矢量偏移信息解析单元504,用于解析关于运动矢量进行偏移的信息;预测方向信息解析单元505,用于从码流中解析关于预测方向的信息;以及运动矢量确定单元506,用于确定当前解码块的运动矢量。可选的,该视频解码装置还可以包括后续解码单元507,用于根据确定的当前解码块的运动矢量进行后续解码过程。

其中,运动矢量导出模式信息解析单元501,用于从码流中解析关于运动矢量导出模式的信息,本实施例中,用于从码流中解析关于当前解码块是否采用运动矢量直接导出模式的信息,可以执行但不限于第三个实施例中步骤s402。

运动矢量偏移使能信息解析单元502,用于从码流中解析指示是否对所导出的运动矢量进行偏移的信息。

运动矢量索引值解析单元503,用于根据运动矢量偏移使能信息解析单元解析的信息指示来解析关于导出的运动矢量的索引值,如果运动矢量偏移使能信息解析单元502解析得到的信息指示不对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值一;如果运动矢量偏移使能信息解析单元解析得到的信息指示对导出的运动矢量进行偏移,则解析关于导出的运动矢量的索引值二。其中,索引值二的取值范围小于索引值一。运动矢量偏移使能信息解析单元502和运动矢量的索引值解析单元503可以执行但并不限于第三个实施例中步骤s404。

运动矢量偏移信息解析单元504,用于解析关于运动矢量进行偏移的信息,具体可以执行但不限于第三个实施例中步骤s406。

预测方向信息解析单元505,用于从码流中解析关于预测方向的信息,具体可以执行但不限于第三个实施例中步骤s408。

运动矢量确定单元506,用于确定当前解码块的运动矢量。执行第三个实施例的步骤s410。

后续解码单元507,用于根据确定的当前解码块的运动矢量进行后续解码,本发明对此不作限定。

综上所述,本公开提供了一种视频编码、解码方法及装置,通过对直接模式和跳过模式等模式导出的各个运动矢量进行了统计分析,选取导出的运动矢量库中的部分运动矢量进行偏移操作,以得到尽量多的不同运动矢量,在较小的索引值开销下得到尽量多的不同的运动矢量,最大限度地避免了不同的运动矢量经过偏移后变成同一个运动矢量的情况;其次,根据直接模式和跳过模式等模式导出的各个运动矢量的预测方向分布情况,在导出不同预测方向的运动矢量时,考虑了各个运动矢量原来的预测方向,只支持对部分运动矢量进行其他预测方向的导出,这在不降低运动矢量候选情况下减少了比特数,通过平衡比特开销和候选运动矢量的多样性,以提高视频编码的性能。这一方面降低了编码器的复杂度,另一方面也减少了码流中的预测方向指示开销,从而提高编码性能。更进一步,在选取部分进行偏移操作后的运动矢量导出不同预测方向上的运动矢量过程中,只导出不同预测方向中的个别预测方向上的运动矢量,进一步降低冗余,使得编码效率进一步提高。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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