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

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

本公开涉及视频编解码技术领域,特别是涉及一种视频编解码中运动信息的编码方法及装置、解码方法及装置。



背景技术:

由于在自然视频中,图像与图像之间存在很高的相似性。因此在视频压缩时,为了去除图像与图像之间的信息冗余,往往要进行帧间预测。所谓的帧间预测就是利用上一帧已经编码过的图像对当前要编码的图像进行预测,然后将预测的误差传递给解码器。比起直接传输当前图像的内容,预测误差的信息量要小得多,这样就达到了压缩的目的。实际在进行帧间预测时,编码器需要对每个图像块在之前已编码的参考图像中寻找一个尽量与之匹配的参考块,这样才能最大限度地减少预测误差。当前块与参考块之间的位置差称为运动矢量,运动矢量信息也需要在码流中传输,这样解码器才能知道当前块的参考块是哪个块。

所以,虽然帧间预测这一技术减少了在码流中传输的像素信息,但是却增加了需要传输的新的信息。随着预测技术的发展,预测误差越来越小,这样运动矢量信息在码流中所占的比例就越来越大了。所以,运动矢量信息也需要压缩。目前的方法是对运动矢量进行预测,将运动矢量预测值和运动矢量的差值写入码流,这一差值称为运动矢量差。运动矢量差的大小要比原运动矢量大小得多,这样就起到了对运动矢量信息的压缩作用。

在提高帧间预测效率方面,为了能够得到与当前块更为匹配的参考块,目前的编解码器都采用了分像素帧间预测,也就说参考块在参考图像中的位置并不一定是整像素,也可以是分像素。为了支持分像素的参考块,运动矢量的精度也必须是分像素的,进而运动矢量差也是分像素精度的。这样,一方面由于分像素位置的参考块的使用提高了帧间预测的效率降低了预测误差,另一方面由于分像素精度的运动矢量差的使用而增加了运动矢量信息在码流中传输时所需要的比特数。

为了平衡这一矛盾,视频编码领域的专家们又提出了变精度的运动矢量技术。所谓变精度的运动矢量精度技术就是说码流中传输的运动矢量差以及实际编解码时使用的运动矢量的精度是非固定的,不同的图像块可以采用的不同的运动矢量精度。这样,需要使用精细的预测的图像块就传输一个高像素精度的运动矢量差以提高帧间预测的效率,不需要使用精细预测的图像块就使用可以传输一个低像素精度的运动矢量差以减少传输比特。

变精度运动矢量技术一般有两种实现方法:一种是由编码器根据当前图像块的情况来选择运动矢量精度,然后在码流中传输所使用的精度值(称为显性指示方式);另一种是编解码器直接根据码流中传输的运动矢量差的大小来推断当前所使用的精度(称为隐形推断方式),比如当运动矢量差大于某个阈值时该运动矢量差为低像素精度运动矢量,当运动矢量差小于某阈值时该运动矢量差为高像素精度运动矢量。

然而,尽管变精度的运动矢量技术能够一定程度上解决预测效率和运动矢量传输开销之间的矛盾,但是上述现有的两种实现方法仍存在以下不足之处。

显性传输方式虽然能够精准地为每个图像块选择最优的运动矢量精度,但是需要在码流中传输额外的比特来指示运动矢量差所使用的精度,特别是当支持许多个不同的运动矢量精度时,这一额外的比特开销会变得十分巨大。而隐形推断方式,虽然不增加额外的比特开销,但是推断出来的情况并不一定适合当前的图像块的。比如,上文中所举例的根据运动矢量差的大小来推断运动矢量精度,事实上,大的运动矢量差的图像块有可能更适用于高精度帧间预测,而小运动矢量差的图像块有可能更适用于低精度帧间预测。

此外,当前运动矢量差正好为零时,运动矢量精度是不起实际作用的。因为任何精度下的零值都等于零。但是在显性指示方式中,每个图像块都需要传输运动矢量精度信息,这样对于运动矢量差正好为零的图像块,就白白多传输了运动矢量精度信息,这样反而会降低最终编码效率。



技术实现要素:

(一)要解决的技术问题

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

(二)技术方案

根据本公开的一个方面,提供了一种视频编码方法,包括:

确定基准运动矢量精度和所述基准运动矢量精度下的运动矢量差;

根据所述基准运动矢量精度和运动矢量差确定编码运动矢量精度,并根据所述编码运动矢量精度对所述运动矢量差进行处理;以及

将所述基准运动矢量精度信息和所述处理后的运动矢量差信息写入码流。

在一些实施例中,所述确定基准运动矢量精度和所述基准运动矢量精度下的运动矢量差的步骤包括:遍历所有候选基准运动矢量精度,对于每个候选基准运动矢量精度,通过运动搜索的方法确定该精度下的最优候选运动矢量;进行运动矢量预测得到运动矢量预测值并计算运动矢量差;比较采用不同候选基准运动矢量精度下的最优候选运动矢量对当前块进行编码的编码代价,以此确定最优候选基准运动矢量精度下的最优候选运动矢量,从而确定基准运动矢量精度和所述基准运动矢量精度下的运动矢量差;或者

所述确定基准运动矢量精度和所述基准运动矢量精度下的运动矢量差的步骤包括:遍历所有候选运动矢量,为每个候选运动矢量在所有的候选基准运动矢量精度中确定最优候选基准运动矢量精度;对各候选运动矢量在所述最优候选基准运动矢量精度下进行预测得到运动矢量预测值并计算运动矢量差;比较采用各自最优候选基准运动矢量精度下的各候选运动矢量进行编码的编码代价,以此确定最优候选运动矢量及其对应的最优候选基准运动矢量精度,从而确定基准运动矢量精度和所述基准运动矢量精度下的运动矢量差。

在一些实施例中,所述根据基准运动矢量精度和运动矢量差确定编码运动矢量精度包括:根据所述运动矢量差的大小来对所述基准运动矢量精度进行调节,将调节后的基准运动矢量精度作为所述的编码运动矢量精度。

在一些实施例中,在根据所述运动矢量差的大小来对所述基准运动矢量精度进行调节时,将所述运动矢量差与一阈值进行比较,

若所述运动矢量差大于所述阈值,则降低所述基准运动矢量精度并将降低后的基准运动矢量精度作为所述编码运动矢量精度,若所述运动矢量差小于所述阈值,则直接将所述基准运动矢量精度作为所述编码运动矢量精度;或者

若所述运动矢量差大于所述阈值,则将基准运动矢量精度作为所述编码运动矢量精度,若所述运动矢量差小于或等于所述阈值,则提高基准运动矢量精度并将提高后的基准运动矢量精度作为所述编码运动矢量精度;或者

若所述运动矢量差大于所述阈值,则降低基准运动矢量精度并将降低后的基准运动矢量精度作为所述编码运动矢量精度,若运动矢量差小于或等于所述阈值,则提高基准运动矢量精度并将提高后的基准运动矢量精度作为所述编码运动矢量精度。

在一些实施例中,在根据所述基准运动矢量精度和运动矢量差确定编码运动矢量精度时,对部分基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度。

在一些实施例中,所述对部分基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度包括:

对最低精度的基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度;或者

所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素;若当前块的基准运动矢量精度为四分之一像素、二分之一像素或整像素,则编码运动矢量精度与基准运动矢量精度相同;若当前块的基准运动矢量精度为二像素或四像素,则比较运动矢量差与一阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为四像素和八像素,当运动矢量精度小于等于阈值时,确定编码运动矢量精度为基准运动矢量精度;或者

所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素;若当前块的基准运动矢量精度为四分之一像素、二分之一像素、整像素或二像素,则编码运动矢量精度与基准运动矢量精度相同;若当前块的基准运动矢量精度为四像素,则比较运动矢量差与阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为八像素,当运动矢量精度小于等于阈值时,确定编码运动矢量精度为基准运动矢量精度。

在一些实施例中,所述根据所述编码运动矢量精度对运动矢量差进行处理的步骤包括:

比较所述基准运动矢量精度和所述编码运动矢量精度;以及

根据比较结果对运动矢量差进行处理。

在一些实施例中,所述根据比较结果对运动矢量差进行处理包括:若编码运动矢量精度低于基准运动矢量精度,对运动矢量差超过阈值的部分进行右移。

在一些实施例中,若编码运动矢量精度低于基准运动矢量精度,对运动矢量差超过阈值的部分按下式方式进行右移:

mvd=((mv-(2pmv-pmvc)-th)>>1)+th=((mv+pmvc+th)>>1)-pmv,mv>pmvc;

式中,pmv为基准运动矢量精度下的运动矢量预测值,pmvc为编码精度下的运动矢量预测值,mv为基准运动矢量精度下的运动矢量值,th为所述阈值,mvd为处理后的运动矢量差;或者

按下式方式进行右移:

mvd=((mvd-th)>>1)+th((mv-pmv-th)>>1)+th;

式中,pmv为基准运动矢量精度下的运动矢量预测值,mv为基准运动矢量精度下的运动矢量值,th为所述阈值,mvd为处理前的运动矢量差,mvd为处理后的运动矢量差。

根据本公开的另一个方面,提供了一种编码装置,包括:

基准运动矢量精度和运动矢量差确定单元,用于确定基准运动矢量精度和运动矢量差;

编码运动矢量精度确定和运动矢量差处理单元,用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度并根据编码运动矢量精度对运动矢量差进行处理;以及

码流写入单元,用于将确定的基准运动矢量精度信息和处理后的运动矢量差信息写入码流。

在一些实施例中,所述基准运动矢量精度和运动矢量差确定单元包括:

基准运动矢量精度确定子单元,用于确定最优候选基准运动矢量精度;

运动搜索子单元,用于通过运动搜索的方法确定该精度下的最优候选运动矢量;

运动矢量预测子单元,用于进行运动矢量预测得到运动矢量预测值;以及

运动矢量差计算子单元,用于利用所述最优候选运动矢量及其运动矢量预测值计算运动矢量差。

在一些实施例中,所述编码运动矢量精度确定和运动矢量差处理单元包括:

编码运动矢量精度确定子单元,用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度;以及

运动矢量差处理子单元,用于根据编码运动矢量精度对运动矢量差进行处理。

根据本公开的又一个方面,提供了一种视频解码方法,包括以下步骤:

从码流中解析得到基准运动矢量精度信息和运动矢量差信息,并确定基准运动矢量精度和运动矢量差;

根据运动矢量差和基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行处理;

根据处理后的运动矢量差导出运动矢量;以及

根据导出的运动矢量对当前解码块进行解码。

在一些实施例中,所述根据运动矢量差和基准运动矢量精度确定编码运动矢量精度包括:根据所述运动矢量差的大小对所述基准运动矢量精度进行调节,将调节后的基准运动矢量精度作为所述的编码运动矢量精度。

在一些实施例中,在所述根据运动矢量差的大小对所述基准运动矢量精度进行调节时,将所述运动矢量差与一阈值进行比较,

若所述运动矢量差大于所述阈值,则降低所述基准运动矢量精度并将降低后的基准运动矢量精度作为所述编码运动矢量精度,若所述运动矢量差小于或等于所述阈值,则直接将所述基准运动矢量精度作为所述编码运动矢量精度;或者

若所述运动矢量差大于所述阈值,则将基准运动矢量精度作为所述编码运动矢量精度,若所述运动矢量差小于或等于所述阈值,则提高基准运动矢量精度并将提高后的基准运动矢量精度作为所述编码运动矢量精度;或者

若所述运动矢量差大于所述阈值,则降低基准运动矢量精度并将降低后的基准运动矢量精度作为所述编码运动矢量精度,若运动矢量差小于或等于所述阈值,则提高基准运动矢量精度并将提高后的基准运动矢量精度作为所述编码运动矢量精度。

在一些实施例中,在根据运动矢量差和基准运动矢量精度确定编码运动矢量精度时,对部分基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度。

在一些实施例中,所述对部分基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度,包括

对最低精度的基准运动矢量精度进行调节并将调节后的基准运动矢量精度作为编码运动矢量精度,对其余基准运动矢量精度不做调节直接作为编码运动矢量精度;或者

所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素;若当前块的基准运动矢量精度为四分之一像素、二分之一像素或整像素,则编码运动矢量精度与基准运动矢量精度相同;若当前块的基准运动矢量精度为二像素或四像素,则比较运动矢量差与一阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为四像素或八像素,当运动矢量精度小于或等于阈值时,确定编码运动矢量精度为基准运动矢量精度;或者

所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素;若当前块的基准运动矢量精度为四分之一像素、二分之一像素、整像素或二像素,则编码运动矢量精度与基准运动矢量精度相同;若当前块的基准运动矢量精度为四像素,则比较运动矢量差与阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为八像素,当运动矢量精度小于或等于阈值时,确定编码运动矢量精度为仍为四像素。

在一些实施例中,所述根据所述编码运动矢量精度对运动矢量差进行处理的步骤包括:

比较所述基准运动矢量精度和所述编码运动矢量精度;以及

根据比较结果对运动矢量差进行处理。

在一些实施例中,所述根据比较结果对运动矢量差进行处理包括:若编码运动矢量精度低于基准运动矢量精度,对运动矢量差超过阈值的部分进行左移。

在一些实施例中,若编码运动矢量精度低于基准运动矢量精度时,对运动矢量差超过阈值的部分按下式方式进行左移:

mvd=((mvd-th)<<1)+th+(2pmv-pmvc)=2mvd-th+(2pmv-pmvc);

式中,pmv为基准运动矢量精度下的运动矢量预测值,pmvc为编码运动矢量精度下的运动矢量预测值,th为所述阈值,mvd为处理前编码运动矢量精度下的运动矢量差,mvd为处理后的运动矢量差,左移一位可用乘以2替换;或者

按下式方式进行左移:

mvd=((mvd-th)<<1)+th;

式中,th为所述阈值,mvd为处理前编码运动矢量精度下的运动矢量差,mvd为处理后的运动矢量差,左移一位可用乘以2替换。

根据本公开的另一个方面,提供了一种解码装置,包括:

码流解析单元,用于从码流中解析得到基准运动矢量精度信息和运动矢量差信息,并确定基准运动矢量精度和运动矢量差;

编码运动矢量精度确定和运动矢量差处理单元,用于根据所述确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行处理;

运动矢量值导出单元,用于根据处理后的运动矢量差导出运动矢量值;以及

解码单元,用于根据导出的运动矢量对当前解码块进行解码。

在一些实施例中,所述基准运动矢量精度和运动矢量差确定单元包括:

编码运动矢量精度确定子单元,用于根据所述确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度;

运动矢量差确定子单元,用于根据编码运动矢量精度对运动矢量差进行处理。

根据本公开的另一个方面,提供了一种编码方法,包括以下步骤:

确定运动矢量精度和运动矢量差;

根据所述的运动矢量差的第一分量和第二分量的值对所述运动矢量差的第一分量和第二分量以及运动矢量精度索引值进行处理,并确定需要写入码流的运动矢量差分量;以及

将所述处理后的运动矢量精度索引值和需要写入码流的运动矢量差的分量值写入码流。

在一些实施例中,若所述运动矢量差的第一分量和第二分量的值均为零,则确定需要将运动矢量精度索引值和运动矢量差的第一分量值写入码流,运动矢量差的第二分量值不写入码流;或者

若所述运动矢量差的第一分量值为零且第二分量值为非零值,则确定需要将运动矢量精度索引值和运动矢量差的第一分量值和第二分量值写入码流。

在一些实施例中,若所述运动矢量差的第一分量值和第二分量值均为零,则写入码流的运动矢量精度索引值为一预设值;或者

若所述运动矢量差的第一分量值为零且第二分量值为非零值,则写入码流的运动矢量精度索引值为除预设值以外的值。

在一些实施例中,若所述运动矢量差的第一分量值为零且第二分量值为非零值,则写入码流的运动矢量精度索引值为编码运动矢量精度的索引值加1,写入码流的运动矢量差的第一分量值为零,运动矢量差的第二分量值为实际值减1。

在一些实施例中,所述预设值为零。

根据本公开的再一个方面,提供了一种编码装置,包括:

运动矢量精度和运动矢量差确定单元,用于确定当前图像块所使用的运动矢量精度及运动矢量;

运动矢量精度和运动矢量差修正单元,用于根据运动矢量差的第一分量值和第二分量值对所述运动矢量差的第一分量值和第二分量值以及运动矢量精度索引值进行处理,并确定需要写入码流的运动矢量差分量;以及

码流写入单元,用于将处理后的运动矢量精度索引值和需要写入码流的运动矢量差的分量值写入码流。

根据本公开的另一个方面,提供了一种视频解码方法,包括:

从码流中解析运动矢量精度索引值和运动矢量差的第一个分量值;

根据所述运动矢量精度索引值和运动矢量差的第一分量值,确定从码流中解析运动矢量差的第二分量值或直接导出运动矢量差的第二分量值;

确定运动矢量精度和运动矢量差;以及

根据确定的运动矢量精度和运动矢量差,对当前解码块进行解码。

在一些实施例中,若所述从码流中解析得到的运动矢量精度索引值和运动矢量差的第一分量值分别两个预设值,则直接导出运动矢量差的第二分量值;或者

若所述从码流中解析得到的运动矢量精度索引值和运动矢量差的第一分量值中至少一个为除预设值以外的值,则从码流中解析运动矢量的第二分量值。

在一些实施例中,若所述从码流中解析得到的运动矢量精度索引值和运动矢量差的第一分量值分别为两个预设值,则直接导出运动矢量差的第二分量值为零。

在一些实施例中,所述直接导出运动矢量差的第二分量值为零时,确定运动矢量差的第一分量值也为零。

在一些实施例中,所述直接导出运动矢量差的第二分量值为零的时,确定编码运动矢量精度为编解码器所支持的所有运动矢量精度中或编解码标准中规定的所有可能的运动矢量精度中的最高精度。

在一些实施例中,确定编码运动矢量精度为四分之一像素精度。

在一些实施例中,若从码流中解析得到的运动矢量精度索引值和运动矢量差的第一分量值中至少有一个为除预设值以外的值,则从码流中解析运动矢量第二分量值时,若从码流中解析得到的运动矢量差的第一分量值不为预设值,则直接确定编码运动矢量精度为码流中解析得到的运动矢量精度索引值对应的运动矢量精度,运动矢量差的第一分量值和运动矢量差的第二分量值分别为码流中解析得到的运动矢量差的第一分量值和运动矢量差的第二分量值;或者

若从码流中解析得到的运动矢量差的第一分量为预设值,则确定运动矢量精度为码流中解析得到的运动矢量索引值减1后对应的运动矢量精度,运动矢量差的第一分量值为零,运动矢量差的第二分量值为从码流中解析得到的运动矢量差的第二分量值加1。

在一些实施例中,所述预设值为零。

根据本公开的另一个方面,提供了一种解码装置,包括:

码流解析单元,用于执从码流中解析运动矢量精度索引值和运动矢量差的第一个分量值;

码流再解析判定单元,用于根据所述运动矢量精度索引值和运动矢量差的第一分量值确定是否要从码流中解析运动矢量差的第二分量值;

运动矢量精度和运动矢量差确定单元,用于从码流中进行解析运动矢量差的第二分量值或者导出运动矢量第二分量值,并最终确定运动矢量精度和运动矢量差;以及

解码单元,用于根据确定的运动矢量精度和运动矢量差,对当前解码块进行解码。

(三)有益效果

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

(1)本公开通过对基准运动矢量精度的选择和指示使得编码器能够根据所编码的每个图像块的特征为每个编码块选择合适的基准运动矢量精度,此外本公开利用运动矢量差的大小与其精度的之间相关性,在基准运动矢量精度的基础上根据运动矢量差的值导出实际使用的运动矢量精度,对于最优参考块落于高精度位置的图像块可采用高精度的运动矢量以提高帧间预测的效率降低预测误差,对于最优参考块落于低精度位置的图像块可采用低精度的运动矢量以较少运动矢量差的传输开销,从而提高了编码性能。

(2)与单纯的直接指示所使用的运动矢量精度的技术相比,本公开仅仅指示基准运动矢量精度,其可能的精度值要少于实际能够使用的,由此降低了运动矢量精度指示的开销;与直接根据运动矢量差的值来导出运动矢量精度的技术相比,本公开是在基准精度的基础上进行微调的,这样大大提高了导出的运动矢量精度的准确度,从而能够为每个图像块找到合适的运动矢量精度,提高了视频编码的性能。

附图说明

图1为本公开实施例一运动信息编码方法流程图。

图2为本公开实施例二运动信息解码方法流程图。

图3为本公开实施例三运动信息编码装置结构示意图。

图4为本公开实施例三运动信息编码装置中的基准运动矢量精度和运动矢量差确定单元结构示意图。

图5为本公开实施例三运动信息编码装置中的编码运动矢量精度确定和运动矢量差处理单元结构示意图。

图6为本公开实施例四运动信息解码装置结构示意图。

图7为本公开实施例四运动信息解码装置中的编码运动矢量精度确定和运动矢量差反处理单元结构示意图。

图8为本公开实施例四运动信息解码装置中的运动矢量重建单元结构示意图。

图9为本公开实施例五运动信息编码方法流程图。

图10为本公开实施例六运动信息解码方法流程图。

图11为本公开实施例七运动信息编码装置结构示意图。

图12为本公开实施例七运动信息解码装置中的运动矢量精度和运动矢量差确定单元结构示意图。

图13为本公开实施例七运动编码装置中的运动矢量精度和运动矢量差修正单元结构示意图。

图14为本公开实施例八运动信息解码装置结构示意图。

图15为本公开施例八运动信息解码装置中的码流再解析判定单元结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

一方面,本公开编码方法及装置、解码方法及装置将显性指示和隐性推断相结合,采用变运动矢量精度的编解码方式,在一个大的可支持的运动矢量精度范围内,在码流中指示当前图像块使用的运动矢量精度集,根据运动矢量差推断到底使用了运动矢量精度集中的哪一个精度。这样,由于码流只指示了一个集合而没有具体到指示出哪一精度,大大减少了需要在码流中传输的用于指示的标识的比特数,同时由于在推断运动矢量精度时只是在一个小的精度集合中推断,大大降低了推断不合适的概率以及由于推断不合适而造成的编码效率的降低,提高了帧间预测的效率又降低了变精度运动矢量带来的额外的开销,从而提升了视频编码的性能。

另一方面,本公开编码方法及装置、解码方法及装置对零运动矢量差的图像块作了特殊处理。对于水平和竖直两个分量的运动矢量差均为零的图像块,一律使用最高精度并在码流中指示最高精度,只传输一个分量的运动矢量差而跳过另一个分量的运动矢量差,从而节省比特数;而对于恰好只有传输的分量的运动矢量差为零而跳过的分量的运动矢量差不为零的图像块,在码流中指示非最高精度来进行区分,有效地节省零运动矢量差的图像块的运动矢量差的编码比特数,从而提高了视频编码的性能。

下面结合实施例一至八详细介绍本公开编码方法及装置、解码方法及装置。

实施例一

图1为本公开实施例一运动信息编码方法流程图。如图1所示,本实施例提供的一种运动信息的编码方法方法,包含:

步骤101,确定基准运动矢量精度和该基准运动矢量精度下的运动矢量差。

作为步骤101的一种可能的实现方法为,编码器遍历所有支持的候选基准运动矢量精度,对于每个候选基准运动矢量精度,通过运动搜索的方法确定该候选基准运动矢量精度下的最优候选运动矢量同时进行运动矢量预测得到运动矢量预测值并计算运动矢量差的值,然后比较采用不同候选基准运动矢量精度下的最优运动矢量对当前块进行编码的编码代价,以此确定最终的基准运动矢量精度和该精度下的运动矢量差。其中,编码代价最小的候选基准运动矢量精度为最优候选基准运动矢量精度,即所确定的基准运动矢量精度。

作为步骤101的另一种可能的实现方法为,遍历所有的候选运动矢量值,为每个运动矢量值在所有的候选基准运动矢量精度中确定最优候选基准运动矢量精度,然后比较采用各自最优候选基准运动矢量精度下的运动矢量进行编码的编码代价,以此确定最优候选运动矢量及其对应的最优候选基准运动矢量精度,进而确定基准运动矢量精度和该精度下的运动矢量差。

可以理解的是,每个候选运动矢量可对应多个候选基准运动矢量精度,相应的,最优候选运动矢量也对应多个候选基准运动矢量精度;而最优候选运动矢量所对应的多个候选基准运动矢量精度中的最优候选基准运动矢量精度可通过比较各候选基准运动矢量精度对当前块进行编码的编码代价来确定;类似的,每个候选基准运动矢量精度对应多个候选运动矢量,相应的,最优候选基准运动矢量精度也对应多个候选运动矢量,而最优候选基准运动矢量精度所对应的多个候选运动矢量中的最优候选运动矢量可通过比较各候选运动矢量对当前块进行编码的编码代价来确定,编码代价最小所对应的候选运动矢量为最优候选运动矢量,此处编码代价为开销及图像失真。

其中,在此步骤中,所述候选基准运动矢量精度可由编解码器共同约定或者编解码标准中规定,一种可能的约定为十六分之一像素、八分之一像素、四分之一像素、二分之一像素、整像素、双像素、四像素、八像素、十六像素中的若干个或是其他2的幂次方像素精度。

步骤102,根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行处理。

其中,确定编码运动矢量精度的一种可能的方法为,根据运动矢量差的大小来对基准运动矢量精度进行调节,将调节后的基准运动矢量精度作为编码运动矢量精度。例如,设置一阈值,当运动矢量差大于该阈值时,降低基准运动矢量精度并将降低后的基准运动矢量精度作为编码运动矢量精度,当运动矢量差小于该阈值时,直接将基准运动矢量精度作为编码运动矢量精度;或者,当运动矢量差大于该阈值时,直接将基准运动矢量精度作为编码运动矢量精度,当运动矢量差小于该阈值时,提高基准运动矢量精度并将提高后的基准运动矢量精度作为编码运动矢量精度;或者,当运动矢量差大于该阈值时,降低基准运动矢量精度并将作为编码运动矢量精度,当运动矢量差小于该阈值时,提高基准运动矢量精度并将提高后的基准运动矢量精度作为编码运动矢量精度。当然,也可以设置多个阈值,比较运动矢量差与多个阈值的大小关系,对运动矢量差进行不同程度的提高和降低来作为编码运动矢量精度。

具体的,可设置阈值为12(阈值由编解码器共同约定或由编解码标准规定,也可以设置为其他数值,本公开对此不作限定),当运动矢量差大于12时,若基准运动矢量精度为四分之一像素,则确定编码运动矢量精度为二分之一像素;若基准运动矢量精度为二分之一像素,则确定编码运动矢量精度为整像素;若基准运动矢量精度为整像素,则确定编码运动矢量精度为二像素;若基准运动矢量精度为二像素,则确定编码运动矢量精度为四像素;若基准运动矢量精度为四像素,则编码像运动矢量精度为八像素;当运动矢量差小于或等于12时,确定编码运动矢量精度为所述基准运动矢量精度。

优选地,在对基准运动矢量精度进行调节时,不同的基准运动矢量精度可以采用不同的调节方法。例如,假设所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,若当前块的基准运动矢量精度为四分之一像素、二分之一像素或整像素,则编码运动矢量精度与基准运动矢量精度相同,若当前块的基准运动矢量精度为二像素或四像素,则比较运动矢量差与阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为四像素和八像素,当运动矢量精度小于或等于阈值时,确定编码运动矢量精度为基准运动矢量精度。

根据编码运动矢量精度对运动矢量差进行处理的一种可能的方法为,通过比较基准运动矢量精度和编码运动矢量精度来确定如何对运动矢量差进行处理。

比如,当编码运动矢量精度低于基准运动矢量精度时,对运动矢量差超过阈值的部分进行右移,可以如下式所示(假设编码运动矢量精度为基准运动矢量精度1/2倍):

mvd=((mv-(2pmv-pmvc)-th)>>1)+th=((mv+pmvc+th)>>1)-pmv(假设mv大于pmvc);

其中,pmv为基准运动矢量精度下的运动矢量预测值,pmvc为编码运动矢量精度下的运动矢量预测值,mv为基准运动矢量精度下的运动矢量值,th为所设阈值,mvd为处理后的运动矢量差(即编码运动矢量精度下的运动矢量差),右移一位可用除以2替换。

或按下式方式进行:

mvd=((mv-pmv-th)>>1)+th(假设mv大于pmv,否则可取mv-pmv的绝对值);

其中,pmv为基准运动矢量精度下的运动矢量预测值,mv为基准运动矢量精度下的运动矢量值,th为所设阈值,mvd为处理后的运动矢量差,右移一位可用除以2替换。

再比如,当编码运动矢量精度高于基准运动矢量精度时,需要左移运动矢量差并补充高精度部分的运动矢量差信息。

优选地,以上步骤101和步骤102可以迭代进行。比如,遍历所有可能的候选基准运动矢量精度,对于每个候选基准运动矢量精度,遍历所有可能的运动矢量,对于每个运动矢量,进行运动矢量预测得到运动矢量预测值并计算运动矢量差,然后根据运动矢量差和对应的基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行处理,然后再对处理过的运动矢量差进行反处理并重建运动矢量,然后比较重建运动矢量,确定当前基准运动矢量精度下的最优候选运动矢量、运动矢量差和重建运动矢量,然后再比较不同基准运动矢量精度下的最优值,确定最优基准运动矢量精度以及该精度对应的最优运动矢量、运动矢量差和重建运动矢量。在这种方法中,最优基准运动矢量精度、编码运动矢量精度、运动矢量、运动矢量差、处理过的运动矢量差被一起确定。

步骤103,将确定的基准运动矢量精度信息和处理后的运动矢量差信息写入码流。

基准运动矢量精度信息可以通过索引值的形式写入码流,处理后的运动矢量差信息可以使用任何现有的运动矢量差的编码方式写入码流。此外,若在步骤102中为运动矢量差添加了高精度信息,则还需要将高精度信息写入码流。

实施例二

图2为本公开实施例二运动信息编码方法流程图。如图2所示,本实施例提供一种运动信息解码方法,包含:

步骤201,从码流中解析得到基准运动矢量精度信息和运动矢量差信息,并确定基准运动矢量精度和运动矢量差。

其中,作为解析基准运动矢量精度信息的一种可能的方法为,解析得到基准运动矢量精度索引值并以此确定基准运动矢量精度。解析运动矢量差信息的方法可以使用现有的任何运动矢量差解析方法,本公开不对此作具体限定。

步骤202,根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行反处理。

具体的,根据解析得到的运动矢量差对基准运动矢量精度进行调节,将调节后的基准运动矢量精度确定为编码运动矢量精度,然后按照编码运动矢量精度对所述运动矢量差进行反处理。

更具体而言,确定编码运动矢量精度的一种可能的方法为,根据运动矢量差的大小来对基准运动矢量精度进行调节。比如,设置一阈值,当运动矢量差大于该阈值时,降低基准运动矢量精度并将降低后的基准运动矢量精度作为编码运动矢量精度,当运动矢量差小于该阈值时,直接将基准运动矢量精度作为编码运动矢量精度;或者,当运动矢量差大于该阈值时,直接将基准运动矢量精度作为编码运动矢量精度,当运动矢量差小于该阈值时,提高基准运动矢量精度并将提高后的基准运动矢量精度作为编码运动矢量精度;或者,当运动矢量差大于该阈值时,降低基准运动矢量精度并将降低后的基准运动矢量精度作为编码运动矢量精度,当运动矢量差小于该阈值时,提高基准运动矢量精度并将提高后的基准运动矢量精度作为编码运动矢量精度。也可以设置多个阈值,比较运动矢量差与多个阈值的大小关系,对运动矢量差进行不同程度的提高和降低来作为编码运动矢量精度。

例如,设置阈值为12(阈值由编解码器共同约定或由编解码标准规定,也可以设置为其他数值,本公开不做限定),当运动矢量差大于12时,若基准运动矢量精度为四分之一像素,则确定编码运动矢量精度为二分之一像素;若基准运动矢量精度为二分之一像素,则确定编码运动矢量精度为整像素;若基准运动矢量精度为整像素,则确定编码运动矢量精度为二像素;若基准运动矢量精度为二像素,则确定编码运动矢量精度为四像素;若基准运动矢量精度为四像素,则编码像运动矢量精度为八像素;当运动矢量差小于或等于12时,确定编码运动矢量精度为基准运动矢量精度。

优选地,在对基准运动矢量精度进行调节时,不同的基准运动矢量精度可以采用不同的调节方法。例如,假设所有支持的候选基准运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,若当前块的基准运动矢量精度为四分之一像素、二分之一像素、整像素或二像素,则编码运动矢量精度与基准运动矢量精度相同,若当前块的基准运动矢量精度为四像素,则比较运动矢量差与阈值,当运动矢量差大于阈值时,分别确定编码运动矢量精度为八像素,当运动矢量精度小于或等于阈值时,确定编码运动矢量精度为仍为四像素。

对运动矢量差进行反处理的一种可能的方法为比较基准运动矢量和编码运动矢量来确定如何对运动矢量差进行处理。

比如,当编码运动矢量精度低于基准运动矢量精度时,对运动矢量差超过阈值的部分按下式方式进行左移:

mvd=((mvd-th)<<1)+th+(2pmv-pmvc)=2mvd-th+(2pmv-pmvc);

其中,pmv为基准运动矢量精度下的运动矢量预测值,pmvc为编码运动矢量精度下的运动矢量预测值,th为所设阈值,mvd为处理前编码运动矢量精度下的运动矢量差,mvd为处理后的运动矢量差,左移一位可用乘以2替换

或者按下式方式进行左移:

mvd=((mvd-th)<<1)+th;

其中,th为所设阈值,mvd为处理前编码运动矢量精度下的运动矢量差,mvd为处理后的运动矢量差,左移一位可用乘以2替换

再比如,当编码运动矢量精度高于基准运动矢量精度时,将运动矢量差左移后加上高精度部分的运动矢量差以重建高精度下的运动矢量,在这种情况下,高精度部分的运动矢量差也应该在步骤一中一并解析得到。

步骤203,根据反处理后的运动矢量差导出运动矢量。

首先进行运动矢量预测得到的运动矢量预测值,然后对运动矢量预测值进行精度转换,再结合处理后的运动矢量差导出基准运动矢量精度下的运动矢量。

具体地一种实现方法可以用下式来表示:

pmvc=(pmv>>1)<<1

mv=mvd+(2pmv-pmvc)=((mvd-th)<<1)+th+(2pmv-pmvc)=pmv+(mvd<<1)-(pmvc-pmv)-th;

其中,pmv为基准运动矢量精度下的运动矢量预测值,pmvc为编码精度下的运动矢量预测值,th为所设阈值,mvd为处理后的运动矢量差,mv为导出的运动矢量。

步骤204,根据导出的运动矢量对当前解码块进行解码。在导出运动矢量后可以根据该运动矢量获取参考块并进行后续的解码操作,具体方法不公开不做限定。

实施例三

如图3所示,本实施例提供一种编解码器或视频编解码系统中运动信息编码装置,包括:基准运动矢量精度和运动矢量差确定单元301,编码运动矢量精度确定和运动矢量差处理单元302以及码流写入单元303。

其中,所述基准运动矢量精度和运动矢量差确定单元301用于确定基准运动矢量精度和运动矢量差,可以执行但不限于实施例一中的步骤101。可选的,所述基准运动矢量精度和运动矢量差确定单元301包括:基准运动矢量精度确定子单元、运动搜索子单元、运动矢量预测子单元及运动矢量差计算子单元,如图4所示。其中,所述基准运动矢量精度确定子单元用于确定最优基准运动矢量精度(最优基准运动矢量精度即为所确定的基准运动矢量精度);所述运动搜索子单元用于通过运动搜索的方法确定该精度下的最优运动矢量;所述运动矢量预测子单元用于进行运动矢量预测得到运动矢量预测值;所述运动矢量差计算子单元用于利用所述最优运动矢量及其运动矢量预测值计算运动矢量差。

编码运动矢量精度确定和运动矢量差处理单元302用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度并根据编码运动矢量精度对运动矢量差进行处理。可以执行但不限于实施例一中步骤102。可选的,所述编码运动矢量精度确定和运动矢量差处理单元302包括:编码运动矢量精度确定子单元和运动矢量差处理子单元,如图5所示。其中,编码运动矢量精度确定子单元用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度;所述运动矢量差处理子单元根据编码运动矢量精度对运动矢量差进行处理。

所述码流写入单元303用于将确定的基准运动矢量精度信息和处理后的运动矢量差信息写入码流。可以执行但不限于实施例一中步骤103。

实施例四

如图6所示,本实施例提供一种编解码器或视频编解码系统中运动信息解码装置,包括:码流解析单元401,编码运动矢量精度确定和运动矢量差反处理单元402,运动矢量导出单元403以及解码单元404。

其中,所述码流解析单元401用于从码流中解析得到基准运动矢量精度信息和运动矢量差信息,并确定运动矢量精度和运动矢量差。具体可以执行但不限于实施例二中步骤201。

编码运动矢量精度确定和运动矢量差反处理单元402用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度,并根据编码运动矢量精度对运动矢量差进行反处理。具体可以执行但不限于实施例二中步骤202。可选的,所述运动矢量精度确定和运动矢量差反处理单元402包括:编码运动矢量精度确定子单元和运动矢量差反处理子单元。其中,编码运动矢量精度确定子单元用于根据确定的运动矢量差和基准运动矢量精度确定编码运动矢量精度;所述运动矢量差反处理子单元用于根据确定的编码运动矢量精度对运动矢量差行反处理。

所述运动矢量导出单元403用于根据反处理后的运动矢量差导出运动矢量,具体可以执行但不限于实施例二中步骤203。可选的,所述运动矢量导出单元403包括:运动矢量预测子单元和运动矢量计算子单元。其中,所述运动矢量预测子单元用于进行运动矢量预测以得到的运动矢量预测值;所述运动矢量计算子单元用于对运动矢量预测值进行精度转换,并结合处理后的运动矢量差导出基准精度下的运动矢量。

所述解码单元404,用于根据导出的运动矢量对当前解码块进行解码。

前述实施例一至四,通过将显性指示和隐性推断相结合,能够克服单纯的显性传输方式存在的增大开销的不足,以及单纯的隐形推断方式可能存在的推断结果非最优的不足,提高了帧间预测的效率又降低了变精度运动矢量带来的额外的开销,从而提升了视频编码的性能。

实施例五

如图9所示,本实施例提供一种运动信息编码方法,包含:

步骤501,确定运动矢量精度和运动矢量差。

本步骤可以采用任何现有的方法确定当前图像块所使用的运动矢量精度及运动矢量差,包括但不限于通过本公开中实施例一中运动矢量精度和运动矢量差确定方法来完成,本公开不对具体方法做限定。

步骤502,根据运动矢量差的第一分量和第二分量的值对所述运动矢量差的第一分量和第二分量以及运动矢量精度索引值进行处理,并确定需要写入码流的运动矢量差分量。

作为步骤502的一种可能的实现方法为,若运动矢量差的第一分量和第二分量的值均为零,则确定写入码流的信息为运动矢量精度索引值和运动矢量差的第一分量,运动矢量差的第二分量不写入码流。进一步,还可以确定要写入码流的运动矢量精度索引值为一编解码器事先约定或在编解码标准中规定的特殊值,比如“0”,或者最高运动矢量精度对应的索引者,以及确定要写入码流的运动矢量差的第一分量值为零。此时所采用的运动精度可以是特殊值对应的运动矢量精度或编解码器/编解码标准另行设定的精度,或者所支持的最高精度。例如,所支持的运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,对应运动矢量精度索引值分别为0、1、2、3、4。当运动矢量差的第一分量和分量均为零值时,确定码流中要写入运动矢量精度索引值“0”,以及运动矢量差的第一分量值零,此时采用的运动矢量精度为四分之一像素精度。

若运动矢量差的第一分量的值为零,第二分量的值不为零,则确定要写入码流的信息为运动矢量精度索引值和运动矢量差的第一分量值和第二分量值。进一步,还可以确定要写入码流的运动矢量精度索引值为除上述编解码器事先约定或在编解码标准中规定的特殊值以外的值,比如非零值,以及确定要写入码流的运动矢量差的第一分量值为零,确定要写入码流的运动矢量差的第二分量值为运动矢量差的第二分量值或运动矢量差的第二分量值减去1后的值。此时,采用的运动矢量精度可以为与写入码流的运动矢量精度索引值对应的运动矢量精度,也可以是比与写入码流的运动矢量精度索引值对应的运动矢量精度高一个级别的运动矢量精度。例如,所支持的运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,对应运动矢量精度索引值为0、1、2、3、4。当运动矢量差的第一分量值为零而第二分量值不为零(记为x)时,确定码流中要写入运动矢量精度索引值为k(k不等于0),运动矢量差的第一分量值为零,运动矢量差的第二分量值为x-1,此时采用的运动矢量进度为k-1对应的运动矢量精度。

其余情况,则确定需要写入码流的信息为运动矢量精度索引值和运动矢量差的第一分量值和第二分量值。

步骤503,将处理后的运动矢量精度索引值和需要写入码流的运动矢量差的分量值写入码流。

本步骤可以采用任何现有的方法将步骤502中确定的要写入码流的运动矢量精度索引值和运动矢量差的分量值写入码流,本公开不做具体限定。

实施例六

如图10所示,本实施例提供一种运动信息解码方法,包含:

步骤601,从码流中解析运动矢量精度索引值和运动矢量差的第一个分量。

本步骤可以采用任何现有的方法从码流中解析得到运动矢量精度索引值和运动矢量差的第一分量值,本公开不做具体限定。

步骤602,根据所述运动矢量精度索引值和运动矢量差的第一分量值确定是否要从码流中解析运动矢量差的第二分量值。

具体地,作为步骤602的一种可能地实现方法为,若从码流中解析得到的运动矢量精度索引值和运动矢量差的第一分量值均为编解码器事先约定或编解码标准规定的特殊值,比如均为零,则确定不需要从码流中解析运动矢量差的第二分量值,否则确定需要从码流中解析运动矢量差的第二分量值。

步骤603,确定运动矢量精度和运动矢量差。

若步骤602中确定需要从码流中进行解析运动矢量差的第二分量值则从码流中解析得到运动矢量差的第二分量值,然后对运动矢量精度索引值、运动矢量差的第一分量值和运动矢量差的第二分量值进行调整,导出运动矢量精度和运动矢量差的第一分量值和运动矢量差的第二分量值。

一种可能的实现方法为,根据码流中解析得到的运动矢量精度索引值和/或运动矢量差的第一分量值和/或运动矢量差的第二分量值对运动矢量精度索引值、运动矢量差的第一分量值和运动矢量差的第二分量值进行调整并最终确定运动矢量精度和运动矢量差的两个分量值。优选地,一种调整的方法为,若从码流中解析得到的运动矢量差的第一分量值不为编解码器事先约定或编解码标准规定的特殊值,比如0,则直接确定编码运动矢量精度为码流中解析得到的运动矢量精度索引值对应的运动矢量精度,运动矢量差的第一分量值和运动矢量差的第二分量值分别为码流中解析得到的运动矢量差的第一分量值和运动矢量差的第二分量值;若从码流中解析得到的运动矢量差的第一分量为编解码器事先约定或编解码标准规定的特殊值,比如0,则确定运动矢量精度为码流中解析得到的运动矢量索引值减1后对应的运动矢量精度,运动矢量差的第一分量值为零,运动矢量差的第二分量值为从码流中解析得到的运动矢量差的第二分量值加一。例如,所支持的运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,对应运动矢量精度索引值为0、1、2、3、4,若解析得到的运动矢量精度索引值为k,运动矢量差的第一分量值为x(x不等于0),运动矢量差的第二分量值为y,则确定运动矢量精度为k所对应的运动矢量精度,运动矢量差的第一分量值和运动矢量差的第二分量值分别为x和y;若解析得到的运动矢量精度索引值为k,运动矢量差的第一分量值为零,运动矢量差的第二分量值为y,则确定运动矢量精度为k-1所对应的运动矢量精度,运动矢量差的第一分量值和运动矢量差的第二分量值分别为x和y+1。

若步骤602中确定不需要从码流中进行解析运动矢量差的第二分量值则导出运动矢量差的第二分量值,然后确定运动矢量精度和运动矢量差的第一分量值和运动矢量差的第二分量值(此处确定运动矢量差的第二分量值即为导出的运动矢量差的第二分量值)。

一种可能实现的方法为,确定运动矢量差的第一分量值和运动矢量差的第二分量值为编解码器事先约定或编解码标准规定的特殊值,如都为0,确定运动矢量精度为编解码器约定或编解码标准中规定的运动矢量精度,如所支持的最高精度。例如,所支持的运动矢量精度为四分之一像素、二分之一像素、整像素、二像素和四像素,对应运动矢量精度索引值为0、1、2、3、4,则确定运动矢量差的第一分量值和运动矢量差的第二分量值均为零,所采用的运动矢量精度为四分之一像素精度。

步骤604,根据确定的运动矢量精度和运动矢量差,对当前解码块进行解码。

实施例七

如图11所示,本实施例提供一种编解码器或视频编解码系统中运动信息编码装置,包括运动矢量精度和运动矢量差确定单元701,运动矢量精度和运动矢量差修正单元702以及码流写入单元703。

其中,所述运动矢量精度和运动矢量差确定单元701可以用于确定当前图像块所使用的运动矢量精度及运动矢量差,具体可以执行但不限于本公开实施例5中的步骤501。所述运动矢量精度和运动矢量差确定单元701可以包括运动矢量精度确定子单元和运动矢量差确定子单元,如图12所示。其中,所述运动矢量精度确定子单元用于确定当前图像块所使用的运动矢量精度;所述运动矢量差确定子单元用于确定运动矢量差。

所述运动矢量精度和运动矢量差修正单元702用于根据运动矢量差的第一分量值和运动矢量差的第二分量值对所述运动矢量差的第一分量值和运动矢量差的第二分量值以及运动矢量精度索引值进行处理,并确定需要写入码流的运动矢量差的分量,具体可以执行但不限于本公开实施例5中的步骤502。所述运动矢量精度和运动矢量差修正单元702可以包括:修正子单元和判断子单元,如图13所示。其中,所述修正子单元所述分别用以修正运动矢量差的第一分量值和运动矢量差的第二分量值及运动矢量精度索引值。所述判断子单元用于确定需要写入码流的量。

所述码流写入单元703用于将处理后的运动矢量精度索引值和需要写入码流的运动矢量差的分量值写入码流。具体可以执行但不限于本公开实施例5中的步骤503。

实施例八

如图14所示,本实施例提供一种编解码器或视频编解码系统中运动信息解码装置,包括码流解析单元801,码流再解析判定单元802,运动矢量精度和运动矢量差确定单元803以及解码单元804。

其中,所述码流解析单元801用于码流中解析运动矢量精度索引值和运动矢量差的第一个分量值。具体可以执行但不限于实施例六中步骤601。

所述码流再解析判定单元802用于根据所述运动矢量精度索引值和运动矢量差的第一分量值确定是否要从码流中解析运动矢量差的第二分量值。具体可以执行但不限于实施例六中步骤602。

所述运动矢量精度和运动矢量差确定单元803用于从码流中进行解析运动矢量差的第二分量值或者导出运动矢量第二分量值,并最终确定运动矢量精度和运动矢量差的两个分量值,具体可以执行但不限于实施例六中步骤603。所述运动矢量精度和运动矢量差确定单元803可以包括:运动矢量差的第二分量解析或导出子单元、运动矢量精度和运动矢量差确定子单元,如图15所示。其中,所述运动矢量差的第二分量解析或导出子单元用于从码流中解析运动矢量差的第二分量值或者导出运动矢量第二分量值;所述运动矢量精度和运动矢量差确定子单元用于确定运动矢量精度和运动矢量差。

所述解码单元804,用于根据确定的运动矢量精度和运动矢量差,对当前解码块进行解码。

前述实施例五至实施例八通过在对零运动矢量差的图像块作了特殊处理,避免了现有的编码方法及装置在当前块运动矢量差正好为零时,运动矢量精度不起实际作用的缺陷,有效地节省零运动矢量差的图像块的编码比特数,从而提高了视频编码的性能。

至此,已经结合附图对本公开实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开有了清楚的认识。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。

当然,根据实际需要,本公开方法还包含其他的步骤,由于同本公开的创新之处无关,此处不再赘述。

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

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