CN112702601B - 确定用于帧间预测的运动矢量的方法和装置 - Google Patents

确定用于帧间预测的运动矢量的方法和装置 Download PDF

Info

Publication number
CN112702601B
CN112702601B CN202011500363.3A CN202011500363A CN112702601B CN 112702601 B CN112702601 B CN 112702601B CN 202011500363 A CN202011500363 A CN 202011500363A CN 112702601 B CN112702601 B CN 112702601B
Authority
CN
China
Prior art keywords
motion vector
decoding
current
decoding complexity
complexity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011500363.3A
Other languages
English (en)
Other versions
CN112702601A (zh
Inventor
刘智辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202011500363.3A priority Critical patent/CN112702601B/zh
Publication of CN112702601A publication Critical patent/CN112702601A/zh
Application granted granted Critical
Publication of CN112702601B publication Critical patent/CN112702601B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本公开关于一种确定用于帧间预测的运动矢量的方法和装置,所述方法包括:当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,其中,预测失真度表示当前块的原始值与预测值之间的失真程度,编码比特数表示对当前块进行编码所需要分配的比特数,解码复杂度表示对编码后的当前块进行解码的复杂程度;将计算出的代价最低的运动矢量候选确定为当前块的运动矢量。

Description

确定用于帧间预测的运动矢量的方法和装置
技术领域
本公开涉及音频技术领域,更具体地说,涉及一种确定用于帧间预测的运动矢量的方法和装置。
背景技术
随着对于用于有效地对高分辨率或高质量视频内容进行编码或解码的视频编解码器的需求的增加,HEVC/H265编解码标准应运而生。然而,HEVC/H265编解码标准虽然相比AVC/H264标准在相同质量下,可以节省约50%的码率,但是HEVC的解码复杂度也明显增加,考虑到依旧有大量的设备不支持HEVC硬解码,在大规模应用的场景下,解码复杂度带来的功耗是严重影响用户体验的现实问题。
发明内容
本公开提供一种确定用于帧间预测的运动矢量的方法和装置,以至少解决上述相关技术中的问题,也可不解决任何上述问题。
根据本公开实施例的第一方面,提供一种确定用于帧间预测的运动矢量的方法,包括:当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,其中,预测失真度表示当前块的原始值与预测值之间的失真程度,编码比特数表示对当前块进行编码所需要分配的比特数,解码复杂度表示对编码后的当前块进行解码的复杂程度;将计算出的代价最低的运动矢量候选确定为当前块的运动矢量。
可选地,所述基于关于运动矢量的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,可包括:确定当前运动矢量候选的解码复杂度;基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数;将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
可选地,所述确定当前运动矢量候选的解码复杂度,可包括:确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种;基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。
可选地,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度可被预先确定;其中,所述基于确定的运动矢量类型确定当前运动矢量候选复杂度,可包括:将与确定的运动矢量类型对应的预先确定的解码复杂度确定为当前运动矢量候选的解码复杂度。
可选地,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度可通过以下操作被预先确定:针对每种运动矢量类型执行以下操作:利用当前运动矢量类型的运动矢量对视频序列中的所有块执行运动估计,以生成编码视频序列;对所述编码视频序列进行解码以获得当前运动矢量类型的解码指标;基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。
可选地,所述视频序列可包括多个视频序列,针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标。
可选地,所述解码指标可包括CPU周期数和解码帧率中的至少一个。
可选地,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,可包括:将所述多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值;分别将所述多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定所述其它运动矢量类型的解码复杂度。
可选地,在所述解码指标为CPU周期数的情况下,所述确定其它运动矢量类型的解码复杂度,可包括:分别将所述其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
可选地,在所述解码指标为解码帧率的情况下,所述确定其它运动矢量类型的解码复杂度,可包括:分别将第一运动矢量类型的解码帧率与所述其它运动矢量类型的解码帧率之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
可选地,所述多种运动矢量类型可包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量中的至少一个。
可选地,在所述解码指标为CPU周期数的情况下,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,可包括:将整数运动矢量的解码复杂度确定为1;分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
可选地,在所述解码指标为解码帧率的情况下,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,可包括:将整数运动矢量的解码复杂度确定为1;分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
可选地,所述基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数,可包括:将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数,其中,所述预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数。
可选地,所述预定参数可通过以下操作确定:设置所述预定参数的多个预设值;针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;将性能指示最大的预设值作为所述预定参数的值;其中,所述性能指标为所述多个视频序列的平均解码收益与所述多个视频序列的平均BDRate之比。
可选地,所述解码收益可通过以下操作获得:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一解码帧率;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二解码帧率;将第一解码帧率与第二解码帧率之比作为所述解码收益。
可选地,所述BDRate可通过以下操作获得:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一RD曲线;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二RD曲线;基于第一RD曲线和第二RD曲线计算所述BDRate。
可选地,所述将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价,可包括:通过下面的公式获得当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV),
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示所述预定参数。
根据本公开实施例的第二方面,提供一种确定用于帧间预测的运动矢量的装置,包括:计算单元,被配置为:当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,其中,预测失真度表示当前块的原始值与预测值之间的失真程度,编码比特数表示对当前块进行编码所需要分配的比特数,解码复杂度表示对编码后的当前块进行解码的复杂程度;确定单元,被配置为:将计算出的代价最低的运动矢量候选确定为当前块的运动矢量。
可选地,计算单元可被配置为:确定当前运动矢量候选的解码复杂度;基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数;将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
可选地,计算单元可被配置为:确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种;基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。
可选地,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度被预先确定;其中,计算单元被配置为:将与确定的运动矢量类型对应的预先确定的解码复杂度确定为当前运动矢量候选的解码复杂度。
可选地,所述装置还可包括:解码复杂度确定单元,被配置为:通过以下操作预先确定所述多种运动矢量类型中的每种运动矢量类型的解码复杂度:针对每种运动矢量类型执行以下操作:利用当前运动矢量类型的运动矢量对视频序列中的所有块执行运动估计,以生成编码视频序列;对所述编码视频序列进行解码以获得当前运动矢量类型的解码指标;基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。
可选地,所述视频序列可包括多个视频序列,解码复杂度确定单元可被配置为:针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标。
可选地,所述解码指标可包括CPU周期数和解码帧率中的至少一个。
可选地,解码复杂度确定单元可被配置为:将所述多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值;分别将所述多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定所述其它运动矢量类型的解码复杂度。
可选地,在所述解码指标为CPU周期数的情况下,解码复杂度确定单元可被配置为:分别将所述其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
可选地,在所述解码指标为解码帧率的情况下,解码复杂度确定单元可被配置为:分别将第一运动矢量类型的解码帧率与所述其它运动矢量类型的解码帧率之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
可选地,所述多种运动矢量类型可包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量中的至少一个。
可选地,在所述解码指标为CPU周期数的情况下,解码复杂度确定单元可被配置为:将整数运动矢量的解码复杂度确定为1;分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
可选地,在所述解码指标为解码帧率的情况下,解码复杂度确定单元可被配置为:将整数运动矢量的解码复杂度确定为1;分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
可选地,计算单元可被配置为:将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数,其中,所述预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数。
可选地,所述装置还可包括:预定参数确定单元,被配置为通过以下操作确定所述预定参数:设置所述预定参数的多个预设值;针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;将性能指示最大的预设值作为所述预定参数的值;其中,所述性能指标为所述多个视频序列的平均解码收益与所述多个视频序列的平均BDRate之比。
可选地,预定参数确定单元可被配置为:通过以下操作获得所述解码收益:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一解码帧率;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二解码帧率;将第一解码帧率与第二解码帧率之比作为所述解码收益。
可选地,预定参数确定单元可被配置为:通过以下操作获得所述BDRate:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一RD曲线;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二RD曲线;基于第一RD曲线和第二RD曲线计算所述BDRate。
可选地,计算单元可被配置为:通过下面的公式获得当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV),
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示所述预定参数。
根据本公开实施例的第三方面,提供一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的确定用于帧间预测的运动矢量的方法。
根据本公开实施例的第四方面,提供一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的确定用于帧间预测的运动矢量的方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的确定用于帧间预测的运动矢量的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的确定用于帧间预测的运动矢量的方法和装置,在考虑使用运动矢量进行运动估计带来的预测失真度和编码比特数的基础上,还考虑不同类型的运动矢量带来的解码复杂度,来计算运动矢量的代价以作为最终选择最佳运动矢量的标准,从而可在编码端自适应调整运动矢量的选择策略,在基本不影响编码质量和码率的前提下,减少解码器解码运动矢量的插值次数,降低解码复杂度,进而降低功耗。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出根据本公开的确定用于帧间预测的运动矢量的方法和装置的实施场景图。
图2是示出根据本公开的示例性实施例的确定用于帧间预测的运动矢量的方法的流程图。
图3是示出根据本公开的示例性实施例的确定用于帧间预测的运动矢量的装置的框图。
图4是根据本公开的示例性实施例的电子设备400的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
现有的降低在解码器端的解码复杂度的方案,一般会在解码器进行单指令多数据流(SIMD)优化,即,通过使用更多汇编代码提高执行效率,进而提高解码速度,降低功耗。然而,SIMD优化的技术门槛较高,且技术瓶颈比较明显,将耗时占比高的函数优化以后,基本不存在继续优化的空间。
为了降低在解码器端的解码复杂度,本公开提出一种新颖的在编码器端确定用于帧间预测的运动矢量的方法,从而可在不影响视频码率和质量的前提下,输出解码复杂度更低的码流,无论是硬解码还是软解码,都可以更快速的完成视频解码过程。具体地说,在现有的运动矢量的代价(Cost)的计算模型本质上只考虑了运动矢量的预测失真和编码比特数,而忽略了不同类型的运动矢量带来的解码复杂度的差异,因此,在本公开提出的确定用于帧间预测的运动矢量的方法中,在原有的计算模型的基础上,引入了运动矢量解码复杂度的参数,在考虑使用运动矢量进行运动估计带来的预测失真度和编码比特数的同时,还考虑不同类型的运动矢量带来的解码复杂度,来计算运动矢量的代价以作为最终选择最佳运动矢量的标准。下面,将参照图1至图4来详细描述根据本公开的示例性实施例的确定用于帧间预测的运动矢量的方法和装置。
图1是示出根据本公开的确定用于帧间预测的运动矢量的方法和装置的实施场景图。图1(a)是示出视频编码过程的示意图,图1(b)是示出视频解码过程的示意图。
参照图1(a),当对视频图像图图像数据进行编码时,可在帧内模式下对当前帧的编码单元执行帧内预测,或者可通过使用当前帧和参考帧在帧间模式下对当前帧中的编码单元执行帧间预测和运动补偿。通过帧内预测、运动估计和运动补偿输出的数据通过变换和量化被输出为量化后的变换系数。量化后的变换系数通过反量化和逆变换被恢复为空间域中的数据,恢复的空间域中的数据在通过去块操作和环路滤波操作的后处理之后被输出为参考帧。量化后的变换系数可通过熵编码被输出为比特流。
这里,帧间预测是指通过使用当前图像和另一图像之间的相似性执行预测的过程。例如,可通过检测另一图像中与当前图像的当前区域相似的参考区域。当前区域和参考区域的坐标之间的距离被表示为运动矢量(MV),当前区域和参考区域的像素值之间的差被表示为残差数据。因此,通过对当前区域执行帧间预测,可输出指示另一图像的索引、运动矢量和残差数据,而不是直接输出关于当前区域的图像信息,从而达到减少传输数据量,降低码率的目的。这种通过搜索另一图像中与当前图像中的当前区域相似的最佳参考区域而获得最佳运动矢量的过程可被称为运动估计。当对当前帧的编码单元(CU)进行帧内预测或帧间预测时,可将编码单元划分为至少一个预测单元(PU)以执行预测,这里,预测单元是用于预测编码的基本单元。
在帧间预测时,需要对每个预测单元搜索并选择最优的运动矢量,通常考虑运动矢量带来的预测失真和编码比特数来计算运动矢量的代价,选择代价最低的运动矢量。这个搜索过程支持多种搜索模式,例如,菱形搜索算法、六边形搜索算法、非对称十字型多层次六边形格点搜索算法、连续消除法等。每一种搜索模式会按照不同的搜索路径去遍历运动矢量,以菱形搜索算法为例,可以以运动估计的起点为原点(0,0),搜索上下左右整数像素距离为1的四个点,即(1,0)、(-1,0)、(0,1)、(0,-1),其中,代价最低的点为新的原点,继续搜索上下左右四个点,直到原点是低价最低的点,运动估计过程结束。以开源编码器x265为例,运动矢量的代价一般通过使用下面的公式(1)计算得到:
Cost=SATD(MV)+BIT(MV) (1)
其中,SATD(MV)表示使用该运动矢量进行运动估计带来的失真,这里,SATD表示经哈德曼变换的4×4块的预测残差绝对值总和,BIT(MV)表示需要分配的比特数。
可见,现有的计算运动矢量的算法本质上只考虑了运动矢量的预测失真和编码比特数,忽略了不同的运动矢量带来的解码复杂度的差异,而根据本公开的确定用于帧间预测的运动矢量的方法和装置除可考虑运动矢量的预测失真和编码比特数,还考虑不同的运动矢量带来的解码复杂度来选择最优运动矢量,使得可在编码器上自适应调整运动矢量选择策略,在基本不影响编码质量和码率的前提下,减少解码器解码运动矢量的插值次数,降低解码复杂度,进而降低功耗。因此,根据本公开的确定用于帧间预测的运动矢量的方法和装置可应用于编码器或编码设备中。
参照图1(b),在视频图像解码过程中,可从比特流解析将被解码的编码图像数据和解码所需的编码信息。编码图像数据通过熵解码和反量化被输出为反量化的数据,反量化的数据通过逆变换被恢复为空间域中的图像数据。针对空间域中的图像数据,可在帧内模式下对编码单元执行帧内预测,或者可通过使用参考帧在帧间模式下对编码单元执行运动补偿。通过帧内预测和运动补偿的空间域中的图像数据可在通过去块操作和环路滤波操作的后处理之后被输出为恢复帧。另外,通过去块操作和环路滤波操作有后处理的图像数据可被输出为参考帧。
在帧间模式下,可对经过帧间预测被编码的预测单元执行运动补偿来恢复该预测单元。在编码端,可根据本公开的确定用于帧间预测的运动矢量的方法选择预测单元的最优运动矢量,并将针对该运动矢量(MV)的运动矢量预测(MVP)索引(每个预测单元都会根据预定规则产生一个运动矢量预测集合)和运动矢量残差MVD(MV-MVP)发送到解码端。在解码端,可基于接收到的MVP索引和MVD,按照与编码端相同的方式获得MVP集合,根据MVP索引找到MVP,再与MVD相加,获得相应的MV,因此可基于获得的MV对该预测单元执行运动补偿。
图2是示出根据本公开的示例性实施例的确定用于帧间预测的运动矢量的方法的流程图。
参照图2,在步骤201,当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价。这里,当前块可指当前图像中正在被执行运动估计的像素单元,例如,但不限于,可以是当前预测单元。运动矢量候选可指在执行运动估计(搜索)过程中遍历的运动矢量。预测失真度可表示当前块的原始值与预测值之间的失真程度,编码比特数可表示对当前块进行编码所需要分配的比特数,解码复杂度可表示对编码后的当前块进行解码的复杂程度。
根据本公开的示例性实施例,针对当前块的每个运动矢量候选可执行以下操作:确定当前运动矢量候选的解码复杂度,基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数,并将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
下面,将详细描述根据本公开的示例性实施例的确定当前运动矢量候选的解码复杂度的方法。
根据本公开的示例性实施例,可确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种,并基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。这里,在解码过程中,不同类型的运动矢量需要的插值次数或者计算成本是不同的,因此,当在不影响视频码率和质量的前提下,在编码端考虑运动矢量的解码复杂度,选择需要插值次数或计算成本更低的运动矢量类型,有利于提高解码速度,降低解码功耗。
根据本公开的示例性实施例,根据运动矢量的精度和方法,可将运动矢量划分为四种类型,即,整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量。整数运动矢量是指运动矢量的水平和垂直方向都是整数像素精度。例如,在HEVC标准里面运动矢量的精度是1/4精度,因此整数运动矢量的数值必须是4的倍数,例如,整数运动矢量可以是(4,4)。水平亚像素运动矢量是指运动矢量的垂直方向数值是整数像素精度,水平方向是亚像素精度,例如,(5,4)。垂直亚像素运动矢量是指MV的水平方向数值是整数像素精度,垂直方向是亚像素精度,例如,(4,5)。非水平非垂直亚像素运动矢量是指运动矢量的水平和垂直方向均是亚像素精度,例如,(5,5)。当然,本公开的对运动矢量的类型的划分不限于上述划分方式,还可以任何可能的划分方式来划分运动矢量的类型,例如,还可根据精度将水平亚像素运动矢量进一步划分为水平2像素运动矢量、水平4像素运动矢量、水平1/2像素运动矢量、水平1/4像素运动矢量等,此类类推。因此,本公开对运动矢量类型的划分方式不作任何限制。
根据本公开的示例性实施例,多种运动矢量类型中的每种运动矢量类型的解码复杂度可被预先确定。因此,当确定出当前运动矢量候选的运动矢量类型时,就可找到与当前运动矢量候选的运动矢量类型相应的解码复杂度,作为当前运动矢量候选的解码复杂度。
根据本公开的示例性实施例,可采用每种运动矢量类型的实际解码指标(例如,实际解码花费的CPU周期数或者实际解码中的解码帧率(FPS)等)来确定每种运动矢量类型的解码复杂度。这里,CPU周期数是指解码花费的时间,CPU周期数越小,说明解码复杂度越低,解码性能越好。解码帧率是指每秒可解码的帧数,解码帧率越大,说明解码复杂度越低,解码性能越好。具体地说,针对每种运动矢量类型,可利用当前运动矢量类型的运动矢量对视频序列中的所有块(例如,所有预测单元)执行运动估计,以生成编码视频序列;对编码视频序列进行解码以获得当前运动矢量类型的解码指标;并基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。例如,可统计多个视频序列分别在所有块使用每种运动矢量类型的运动矢量时的解码所需的CPU周期数或解码帧率,以获得每种运动矢量类型的解码复杂度。这里,对于多个视频序列,可针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标,从而获得每种运动矢量类型的解码复杂度。
根据本公开的示例性实施例,当获得每种运动矢量类型的解码复杂度时,可将多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值(例如,1),并分别将多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定其它运动矢量类型的解码复杂度。例如,在解码指标为CPU周期数的情况下,可分别将其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与预定值相乘,确定其它运动矢量类型的解码复杂度。例如,在解码指标为解码帧率的情况下,可分别将第一运动矢量类型的解码帧率与其它运动矢量类型的解码帧率之比与预定值相乘,确定其它运动矢量类型的解码复杂度。
例如,当运动矢量类型包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量时,可统计多个视频序列分别在全部预测单元使用整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量时的解码所需的CPU周期数或解码帧率以确定整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,在使用CPU周期数作为解码指标的情况下,可获得全部使用整数运动矢量的CPU周期数Mcycle0,全部使用水平亚像素运动矢量的CPU周期数Mcycle1,全部使用垂直亚像素运动矢量的CPU周期数Mcycle2,全部使用非水平非垂直亚像素运动矢量的CPU周期数Mcycle3。可将整数运动矢量的解码复杂度确定为1,并分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,可获得解码复杂度的量化表,如下面的表1所示:
【表1】
Figure BDA0002843438510000131
又例如,在使用解码帧率作为解码指标的情况下,可获得全部使用整数运动矢量的解码帧率FPS0,全部使用水平亚像素运动矢量的解码帧率FPS1,全部使用垂直亚像素运动矢量的解码帧率FPS2,全部使用非水平非垂直亚像素运动矢量的解码帧率FPS3。可将整数运动矢量的解码复杂度确定为1,并分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,可获得解码复杂度的量化表,如下面的表2所示:
【表2】
Figure BDA0002843438510000132
Figure BDA0002843438510000141
下面,将详细描述根据本公开的示例性实施例的基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数,并将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价的方法。
根据本公开的示例性实施例,可将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数。这里,预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数,预定参数的值可被预先确定,例如,但不限于,0.01。因此,可通过下面的公式(2)来计算当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV) (2)
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示预定参数。
例如,λ可以是一个超参数,可通过以下操作来预先确定λ的值:可预先设置λ的多个预设值;针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;并将性能指示最大的预设值作为λ的值。这里,性能指标可以是多个视频序列的平均解码收益与多个视频序列的平均BDRate之比。这里,解码收益可表示两种算法(根据本公开的算法和现有算法)的解码帧率之比,解码收益越高,说明性能越好;BDRate可表示两种算法(根据本公开的算法和现有算法)在获得的图像质量相同的情况下所需码率的比较,BDRate越低,说明性能越好。这里,可针对每个视频序列计算解码收益和BDRate,并将多个视频序列的解码收益求平均来获得平均解码收益,并将多个视频序列的BDRate求平均来获得平均BDRate。
例如,可通过以下操作获得解码收益:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法(即,根据本公开的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第一解码帧率;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法(即,现有的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第二解码帧率;将第一解码帧率与第二解码帧率之比作为解码收益。
例如,可通过以下操作获得BDRate:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法即,根据本公开的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第一RD曲线;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法(即,现有的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第二RD曲线;基于第一RD曲线和第二RD曲线计算BDRate。
在步骤202,可将计算出的代价最低的运动矢量候选确定为当前块的运动矢量。因此,根据本公开的确定运动矢量的方案,可考虑预测失真度、编码比特数和解码复杂度来最终选择当前块的最优运动矢量,从而在基本不影响编码质量和码率的前提下,减少解码器解码运动矢量的插值次数,降低解码复杂度,进而降低功耗。
图3是示出根据本公开的示例性实施例的确定用于帧间预测的运动矢量的装置的框图。
参照图3,根据本公开的示例性实施例的确定用于帧间预测的运动矢量的装置300可包括计算单元301和确定单元302。
当对当前块执行运动估计时,计算单元301可基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价。这里,当前块可指当前图像中正在被执行运动估计的像素单元,例如,但不限于,可以是当前预测单元。运动矢量候选可指在执行运动估计(搜索)过程中遍历的运动矢量。预测失真度可表示当前块的原始值与预测值之间的失真程度,编码比特数可表示对当前块进行编码所需要分配的比特数,解码复杂度可表示对编码后的当前块进行解码的复杂程度。
根据本公开的示例性实施例,计算单元301针对当前块的每个运动矢量候选可执行以下操作:确定当前运动矢量候选的解码复杂度,基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数,并将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
下面,将详细描述计算单元301确定当前运动矢量候选的解码复杂度的过程。
根据本公开的示例性实施例,计算单元301可确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种,并基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。这里,在解码过程中,不同类型的运动矢量需要的插值次数或者计算成本是不同的,因此,当在不影响视频码率和质量的前提下,在编码端考虑运动矢量的解码复杂度,选择需要插值次数或计算成本更低的运动矢量类型,有利于提高解码速度,降低解码功耗。
根据本公开的示例性实施例,根据运动矢量的精度和方法,可将运动矢量划分为四种类型,即,整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量。整数运动矢量是指运动矢量的水平和垂直方向都是整数像素精度。例如,在HEVC标准里面运动矢量的精度是1/4精度,因此整数运动矢量的数值必须是4的倍数,例如,整数运动矢量可以是(4,4)。水平亚像素运动矢量是指运动矢量的垂直方向数值是整数像素精度,水平方向是亚像素精度,例如,(5,4)。垂直亚像素运动矢量是指MV的水平方向数值是整数像素精度,垂直方向是亚像素精度,例如,(4,5)。非水平非垂直亚像素运动矢量是指运动矢量的水平和垂直方向均是亚像素精度,例如,(5,5)。当然,本公开的对运动矢量的类型的划分不限于上述划分方式,还可以任何可能的划分方式来划分运动矢量的类型,例如,还可根据精度将水平亚像素运动矢量进一步划分为水平2像素运动矢量、水平4像素运动矢量、水平1/2像素运动矢量、水平1/4像素运动矢量等,此类类推。因此,本公开对运动矢量类型的划分方式不作任何限制。
根据本公开的示例性实施例,多种运动矢量类型中的每种运动矢量类型的解码复杂度可被预先确定。因此,当确定出当前运动矢量候选的运动矢量类型时,计算单元301就可找到与当前运动矢量候选的运动矢量类型相应的解码复杂度,作为当前运动矢量候选的解码复杂度。
根据本公开的示例性实施例,装置300还可包括解码复杂度确定单元(未示出),或者计算单元301可获取或使用预先确定好的每种运动矢量类型的解码复杂度。解码复杂度确定单元可采用每种运动矢量类型的实际解码指标(例如,实际解码花费的CPU周期数或者实际解码中的解码帧率(FPS)等)来确定每种运动矢量类型的解码复杂度。这里,CPU周期数是指解码花费的时间,CPU周期数越小,说明解码复杂度越低,解码性能越好。解码帧率是指每秒可解码的帧数,解码帧率越大,说明解码复杂度越低,解码性能越好。具体地说,针对每种运动矢量类型,解码复杂度确定单元可利用当前运动矢量类型的运动矢量对视频序列中的所有块(例如,所有预测单元)执行运动估计,以生成编码视频序列;对编码视频序列进行解码以获得当前运动矢量类型的解码指标;并基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。例如,解码复杂度确定单元可统计多个视频序列分别在所有块使用每种运动矢量类型的运动矢量时的解码所需的CPU周期数或解码帧率,以获得每种运动矢量类型的解码复杂度。这里,对于多个视频序列,解码复杂度确定单元可针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标,从而获得每种运动矢量类型的解码复杂度。
根据本公开的示例性实施例,当获得每种运动矢量类型的解码复杂度时,解码复杂度确定单元可将多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值(例如,1),并分别将多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定其它运动矢量类型的解码复杂度。例如,在解码指标为CPU周期数的情况下,解码复杂度确定单元可分别将其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与预定值相乘,确定其它运动矢量类型的解码复杂度。例如,在解码指标为解码帧率的情况下,解码复杂度确定单元可分别将第一运动矢量类型的解码帧率与其它运动矢量类型的解码帧率之比与预定值相乘,确定其它运动矢量类型的解码复杂度。
例如,当运动矢量类型包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量时,解码复杂度确定单元可统计多个视频序列分别在全部预测单元使用整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量时的解码所需的CPU周期数或解码帧率以确定整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,在使用CPU周期数作为解码指标的情况下,解码复杂度确定单元可获得全部使用整数运动矢量的CPU周期数Mcycle0,全部使用水平亚像素运动矢量的CPU周期数Mcycle1,全部使用垂直亚像素运动矢量的CPU周期数Mcycle2,全部使用非水平非垂直亚像素运动矢量的CPU周期数Mcycle3。解码复杂度确定单元可将整数运动矢量的解码复杂度确定为1,并分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,解码复杂度确定单元可获得解码复杂度的量化表,如上面的表1所示。又例如,在使用解码帧率作为解码指标的情况下,解码复杂度确定单元可获得全部使用整数运动矢量的解码帧率FPS0,全部使用水平亚像素运动矢量的解码帧率FPS1,全部使用垂直亚像素运动矢量的解码帧率FPS2,全部使用非水平非垂直亚像素运动矢量的解码帧率FPS3。解码复杂度确定单元可将整数运动矢量的解码复杂度确定为1,并分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。例如,解码复杂度确定单元可获得解码复杂度的量化表,如上面的表2所示。
下面,将详细描述计算单元301的基于确定的解码复杂度计算当前运动矢量候选的解码复杂度参数,并将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价的过程。
根据本公开的示例性实施例,计算单元301可将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数。这里,预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数,预定参数的值可被预先确定,例如,但不限于,0.01。因此,计算单元301可通过下面的公式(2)来计算当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV) (2)
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示预定参数。
例如,λ可以是一个超参数,装置300还可包括预定参数确定单元(未示出),或者计算单元301可获取并使用预定参数λ。例如,预定参数确定单元可通过以下操作来预先确定λ的值:可预先设置λ的多个预设值;针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;并将性能指示最大的预设值作为λ的值。这里,性能指标可以是多个视频序列的平均解码收益与多个视频序列的平均BDRate之比。这里,解码收益可表示两种算法(根据本公开的算法和现有算法)的解码帧率之比,解码收益越高,说明性能越好;BDRate可表示两种算法(根据本公开的算法和现有算法)在获得的图像质量相同的情况下所需码率的比较,BDRate越低,说明性能越好。这里,预定参数确定单元可针对每个视频序列计算解码收益和BDRate,并将多个视频序列的解码收益求平均来获得平均解码收益,并将多个视频序列的BDRate求平均来获得平均BDRate。
例如,预定参数确定单元可通过以下操作获得解码收益:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法(即,根据本公开的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第一解码帧率;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法(即,现有的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第二解码帧率;将第一解码帧率与第二解码帧率之比作为解码收益。
例如,预定参数确定单元可通过以下操作获得BDRate:利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法即,根据本公开的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第一RD曲线;利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法(即,现有的确定用于帧间预测的运动矢量的方法)对视频序列进行编解码,获得第二RD曲线;基于第一RD曲线和第二RD曲线计算BDRate。
确定单元302可将计算出的代价最低的运动矢量候选确定为当前块的运动矢量。因此,根据本公开的确定运动矢量的方案,可考虑预测失真度、编码比特数和解码复杂度来最终选择当前块的最优运动矢量,从而在基本不影响编码质量和码率的前提下,减少解码器解码运动矢量的插值次数,降低解码复杂度,进而降低功耗。
图4是根据本公开的示例性实施例的电子设备400的框图。
参照图4,电子设备400包括至少一个存储器401和至少一个处理器402,所述至少一个存储器401中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器402执行时,执行根据本公开的示例性实施例的确定用于帧间预测的运动矢量的方法。
作为示例,电子设备400可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备400并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备400还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备400中,处理器402可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器402可运行存储在存储器401中的指令或代码,其中,存储器601还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器401可与处理器402集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器401可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器401和处理器402可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器402能够读取存储在存储器中的文件。
此外,电子设备400还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备400的所有组件可经由总线和/或网络而彼此连接。
根据本公开的示例性实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的确定用于帧间预测的运动矢量的方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例性实施例的确定用于帧间预测的运动矢量的方法。
根据本公开的确定用于帧间预测的运动矢量的方法和装置,在考虑使用运动矢量进行运动估计带来的预测失真度和编码比特数的基础上,还考虑不同类型的运动矢量带来的解码复杂度,来计算运动矢量的代价以作为最终选择最佳运动矢量的标准,从而可在编码端自适应调整运动矢量的选择策略,在基本不影响编码质量和码率的前提下,减少解码器解码运动矢量的插值次数,降低解码复杂度,进而降低功耗。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (34)

1.一种确定用于帧间预测的运动矢量的方法,其特征在于,包括:
当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,其中,预测失真度表示当前块的原始值与预测值之间的失真程度,编码比特数表示对当前块进行编码所需要分配的比特数,解码复杂度表示对编码后的当前块进行解码的复杂程度;
将计算出的代价最低的运动矢量候选确定为当前块的运动矢量;
其中,所述基于关于运动矢量的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,包括:
确定当前运动矢量候选的解码复杂度;
将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数,其中,所述预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数;
将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
2.如权利要求1所述的方法,其特征在于,所述确定当前运动矢量候选的解码复杂度,包括:
确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种;
基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。
3.如权利要求2所述的方法,其特征在于,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度被预先确定;
其中,所述基于确定的运动矢量类型确定当前运动矢量候选复杂度,包括:
将与确定的运动矢量类型对应的预先确定的解码复杂度确定为当前运动矢量候选的解码复杂度。
4.如权利要求3所述的方法,其特征在于,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度是通过以下操作被预先确定的:
针对每种运动矢量类型执行以下操作:
利用当前运动矢量类型的运动矢量对视频序列中的所有块执行运动估计,以生成编码视频序列;
对所述编码视频序列进行解码以获得当前运动矢量类型的解码指标;
基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。
5.如权利要求4所述的方法,其特征在于,所述视频序列包括多个视频序列,针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标。
6.如权利要求4所述的方法,其特征在于,所述解码指标包括CPU周期数和解码帧率中的至少一个。
7.如权利要求4所述的方法,其特征在于,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,包括:
将所述多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值;
分别将所述多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定所述其它运动矢量类型的解码复杂度。
8.如权利要求7所述的方法,其特征在于,在所述解码指标为CPU周期数的情况下,所述确定其它运动矢量类型的解码复杂度,包括:
分别将所述其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
9.如权利要求7所述的方法,其特征在于,在所述解码指标为解码帧率的情况下,所述确定其它运动矢量类型的解码复杂度,包括:
分别将第一运动矢量类型的解码帧率与所述其它运动矢量类型的解码帧率之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
10.如权利要求4至9中的任意一项权利要求所述的方法,其特征在于,所述多种运动矢量类型包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量中的至少一个。
11.如权利要求10所述的方法,其特征在于,在所述解码指标为CPU周期数的情况下,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,包括:
将整数运动矢量的解码复杂度确定为1;
分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
12.如权利要求10所述的方法,其特征在于,在所述解码指标为解码帧率的情况下,所述基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度,包括:
将整数运动矢量的解码复杂度确定为1;
分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
13.如权利要求1所述的方法,其特征在于,所述预定参数是通过以下操作确定的:
设置所述预定参数的多个预设值;
针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;
将性能指示最大的预设值作为所述预定参数的值;
其中,所述性能指标为所述多个视频序列的平均解码收益与所述多个视频序列的平均BDRate之比。
14.如权利要求13所述的方法,其特征在于,所述解码收益是通过以下操作获得的:
利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一解码帧率;
利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二解码帧率;
将第一解码帧率与第二解码帧率之比作为所述解码收益。
15.如权利要求13所述的方法,其特征在于,所述BDRate是通过以下操作获得的:
利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一RD曲线;
利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二RD曲线;
基于第一RD曲线和第二RD曲线计算所述BDRate。
16.如权利要求1所述的方法,其特征在于,所述将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价,包括:
通过下面的公式获得当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV),
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示所述预定参数。
17.一种确定用于帧间预测的运动矢量的装置,其特征在于,包括:
计算单元,被配置为:当对当前块执行运动估计时,基于使用当前块的运动矢量对当前块执行帧间预测而带来的预测失真度、编码比特数和解码复杂度,计算当前块的每个运动矢量候选的代价,其中,预测失真度表示当前块的原始值与预测值之间的失真程度,编码比特数表示对当前块进行编码所需要分配的比特数,解码复杂度表示对编码后的当前块进行解码的复杂程度;
确定单元,被配置为:将计算出的代价最低的运动矢量候选确定为当前块的运动矢量;
其中,计算单元被配置为:
确定当前运动矢量候选的解码复杂度;
将预定参数与当前运动矢量候选的解码复杂度和预测失真度三者相乘,获得当前运动矢量候选的解码复杂度参数,其中,所述预定参数是用于调节预测失真度、编码比特数和解码复杂度之间的平衡的参数;
将当前运动矢量候选的预测失真度、编码比特数和解码复杂度参数相加,获得当前运动矢量候选的代价。
18.如权利要求17所述的装置,其特征在于,计算单元被配置为:
确定当前运动矢量候选的运动矢量类型,其中,所述运动矢量类型是预定的多种运动矢量类型中的一种;
基于确定的运动矢量类型确定当前运动矢量候选的解码复杂度。
19.如权利要求18所述的装置,其特征在于,所述多种运动矢量类型中的每种运动矢量类型的解码复杂度被预先确定;
其中,计算单元被配置为:
将与确定的运动矢量类型对应的预先确定的解码复杂度确定为当前运动矢量候选的解码复杂度。
20.如权利要求19所述的装置,其特征在于,还包括:解码复杂度确定单元,被配置为:通过以下操作预先确定所述多种运动矢量类型中的每种运动矢量类型的解码复杂度:
针对每种运动矢量类型执行以下操作:
利用当前运动矢量类型的运动矢量对视频序列中的所有块执行运动估计,以生成编码视频序列;
对所述编码视频序列进行解码以获得当前运动矢量类型的解码指标;
基于获得的当前运动矢量类型的解码指标来确定当前运动矢量类型的解码复杂度。
21.如权利要求20所述的装置,其特征在于,所述视频序列包括多个视频序列,解码复杂度确定单元被配置为:针对每个视频序列计算当前运动矢量类型的解码指标,并将针对每个视频序列计算的当前运动矢量类型的解码指标求平均,以获得当前运动矢量类型的解码指标。
22.如权利要求20所述的装置,其特征在于,所述解码指标包括CPU周期数和解码帧率中的至少一个。
23.如权利要求20所述的装置,其特征在于,解码复杂度确定单元被配置为:
将所述多种运动矢量类型中的第一运动矢量类型的解码复杂度确定为预定值;
分别将所述多种运动矢量类型中的其它运动矢量类型的解码指标与第一运动矢量类型的解码指标进行比较,并基于比较的结果和所述预定值,确定所述其它运动矢量类型的解码复杂度。
24.如权利要求23所述的装置,其特征在于,在所述解码指标为CPU周期数的情况下,解码复杂度确定单元被配置为:
分别将所述其它运动矢量类型的CPU周期数与第一运动矢量类型的CPU周期数之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
25.如权利要求23所述的装置,其特征在于,在所述解码指标为解码帧率的情况下,解码复杂度确定单元被配置为:
分别将第一运动矢量类型的解码帧率与所述其它运动矢量类型的解码帧率之比与所述预定值相乘,确定所述其它运动矢量类型的解码复杂度。
26.如权利要求20至25中的任意一项权利要求所述的装置,其特征在于,所述多种运动矢量类型包括整数运动矢量、水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量中的至少一个。
27.如权利要求26所述的装置,其特征在于,在所述解码指标为CPU周期数的情况下,解码复杂度确定单元被配置为:
将整数运动矢量的解码复杂度确定为1;
分别将水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的CPU周期数与整数运动矢量的CPU周期数之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
28.如权利要求26所述的装置,其特征在于,在所述解码指标为解码帧率的情况下,解码复杂度确定单元被配置为:
将整数运动矢量的解码复杂度确定为1;
分别将整数运动矢量的解码帧率与水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码帧率之比确定为水平亚像素运动矢量、垂直亚像素运动矢量、非水平非垂直亚像素运动矢量的解码复杂度。
29.如权利要求17所述的装置,其特征在于,还包括:预定参数确定单元,被配置为通过以下操作确定所述预定参数:
设置所述预定参数的多个预设值;
针对每个预设值,对多个视频序列执行编解码实验,计算每个预设值的性能指标;
将性能指示最大的预设值作为所述预定参数的值;
其中,所述性能指标为所述多个视频序列的平均解码收益与所述多个视频序列的平均BDRate之比。
30.如权利要求29所述的装置,其特征在于,预定参数确定单元被配置为:通过以下操作获得所述解码收益:
利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一解码帧率;
利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二解码帧率;
将第一解码帧率与第二解码帧率之比作为所述解码收益。
31.如权利要求29所述的装置,其特征在于,预定参数确定单元被配置为:通过以下操作获得所述BDRate:
利用基于将预测失真度、编码比特数和解码复杂度参数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第一RD曲线;
利用基于将预测失真度和编码比特数相加计算的代价选择运动矢量的方法对视频序列进行编解码,获得第二RD曲线;
基于第一RD曲线和第二RD曲线计算所述BDRate。
32.如权利要求17所述的装置,其特征在于,计算单元被配置为:
通过下面的公式获得当前运动矢量候选的代价:
Cost=SATD(MV)+Bit(MV)+DecoderComplexity(MV)*λ*SATD(MV),
其中,Cost表示当前运动矢量候选的代价,SATD(MV)表示当前运动矢量候选的预测失真度,Bit(MV)表示当前运动矢量候选的编码比特数,DecoderComplexity(MV)表示当前运动矢量候选的解码复杂度,λ表示所述预定参数。
33.一种电子设备,其特征在于,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到16中的任一权利要求所述的确定用于帧间预测的运动矢量的方法。
34.一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到16中的任一权利要求所述的确定用于帧间预测的运动矢量的方法。
CN202011500363.3A 2020-12-17 2020-12-17 确定用于帧间预测的运动矢量的方法和装置 Active CN112702601B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011500363.3A CN112702601B (zh) 2020-12-17 2020-12-17 确定用于帧间预测的运动矢量的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011500363.3A CN112702601B (zh) 2020-12-17 2020-12-17 确定用于帧间预测的运动矢量的方法和装置

Publications (2)

Publication Number Publication Date
CN112702601A CN112702601A (zh) 2021-04-23
CN112702601B true CN112702601B (zh) 2023-03-10

Family

ID=75509004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011500363.3A Active CN112702601B (zh) 2020-12-17 2020-12-17 确定用于帧间预测的运动矢量的方法和装置

Country Status (1)

Country Link
CN (1) CN112702601B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1461566A (zh) * 2001-04-18 2003-12-10 皇家菲利浦电子有限公司 在媒体处理器中mpeg2解码的动态复杂度预测和调整
CN101287122A (zh) * 2008-05-23 2008-10-15 清华大学 一种具有主动式缓存管理和复杂度控制功能的视频解码方法
CN110248188A (zh) * 2018-03-07 2019-09-17 华为技术有限公司 预测运动矢量生成方法以及相关设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006096612A2 (en) * 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
US20090135901A1 (en) * 2007-11-28 2009-05-28 The Hong Kong University Of Science And Technology Complexity adaptive video encoding using multiple reference frames
US10819997B2 (en) * 2016-01-20 2020-10-27 Arris Enterprises Llc Encoding video data according to target decoding device decoding complexity

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1461566A (zh) * 2001-04-18 2003-12-10 皇家菲利浦电子有限公司 在媒体处理器中mpeg2解码的动态复杂度预测和调整
CN101287122A (zh) * 2008-05-23 2008-10-15 清华大学 一种具有主动式缓存管理和复杂度控制功能的视频解码方法
CN110248188A (zh) * 2018-03-07 2019-09-17 华为技术有限公司 预测运动矢量生成方法以及相关设备

Also Published As

Publication number Publication date
CN112702601A (zh) 2021-04-23

Similar Documents

Publication Publication Date Title
JP7261275B2 (ja) 低減されたメモリアクセスを用いてfrucモードでビデオデータを符号化又は復号する方法及び装置
CN102835111B (zh) 使用先前块的运动矢量作为当前块的运动矢量来对图像进行编码/解码的方法和设备
JP7330243B2 (ja) 低減されたメモリアクセスを用いてfrucモードでビデオデータを符号化又は復号する方法及び装置
EP4037320A1 (en) Boundary extension for video coding
CN112702601B (zh) 确定用于帧间预测的运动矢量的方法和装置
GB2588563A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
GB2595195A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
GB2595194A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant