本发明涉及视频编码技术领域,特别是涉及一种运动估计方法、装置、电子设备及存储介质。
背景技术:
视频编码(也称视频压缩)的目的是消除视频信号间的冗余信息,在视频编码过程中,需要进行预测。预测又分为帧内预测和帧间预测,帧间预测中最关键的技术是运动估计。运动估计是指针对当前编码块,在参考帧中搜索最佳匹配编码块,并确定当前编码块与最佳匹配编码块之间的相对偏移量的过程,其中,相对偏移量又被称为运动矢量。运动估计过程中,假如针对待编码的视频帧a所选定的参考帧为b1、b2、b3,使用a预测模式和b预测模式进行运动估计,具体的,采用a预测模式针对视频帧a中的编码块a1,在b1、b2、b3等参考帧中搜索最佳匹配编码块,采用b预测模式针对视频帧a中的编码块a1,在b1、b2、b3等参考帧中搜索最佳匹配编码块,将两次搜到的最佳匹配编码块进行比较,确定针对编码块a1的最佳匹配编码块。
运动估计一般包括整像素运动估计、半像素运动估计和1/4像素运动估计三个步骤,半像素位置和1/4像素位置的像素值是使用原始像素值经过插值算法计算得到的。目前,1/4像素运动估计的加速是比较重要的一个研究方向。传统的1/4像素运动估计过程中,以半像素运动估计确定的最佳匹配编码块的左上角点为搜索的中心点,以该中心点确定一个矩形搜索范围(一般是9×9个像素点的矩形范围),然后在这个矩形搜索范围内进行1/4像素运动估计。
为了提高视频编码速度,通常会以上述中心点确定一个较小的矩形搜索范围(如3×3个像素点的矩形范围),可以理解的是,在较小的搜索范围内搜索可以在一定程度上提高视频编码速度,但是,忽略的一些搜索点可能会导致编码性能损失较大。
技术实现要素:
本发明实施例的目的在于提供一种运动估计方法、装置、电子设备及存储介质,以在提高编码速度的基础上,减少编码性能损失。具体技术方案如下:
第一方面,本发明实施例提供了一种运动估计方法,所述方法包括:
读取当前预测模式下针对当前编码块已完成的半像素运动估计结果;
针对所述当前编码块,确定1/4像素搜索范围;
从所述半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1;
读取已完成的预测模式下针对所述当前编码块的第一运动估计结果;
从所述第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2;
判断所述最小值d1和所述最小值d2是否满足预设第一失真代价条件,其中,所述预设第一失真代价条件是根据编码性能需求设置的;
当所述最小值d1和所述最小值d2满足所述预设第一失真代价条件时,根据预设缩小规则,缩小所述1/4像素搜索范围;
根据缩小后的1/4像素搜索范围进行运动估计。
可选的,所述针对所述当前编码块,确定1/4像素搜索范围的步骤,包括:
从所述半像素运动估计结果中,确定最佳匹配编码块;
将所确定的最佳匹配编码块中的左上角点确定为搜索的中心点;
根据所述中心点,确定预设大小的矩形范围,并将所述矩形范围确定为针对所述当前编码块的1/4像素搜索范围。
可选的,所述判断所述最小值d1和所述最小值d2是否满足预设第一失真代价条件的步骤,包括:
对所述最小值d2进行归一化处理;
获得比较阈值;
计算所述比较阈值与所述最小值d1的乘积;
判断所述乘积与归一化后的最小值d2的大小;如果所述乘积大于归一化后的最小值d2,则所述所述最小值d1和所述最小值d2满足预设第一失真代价条件;否则,所述所述最小值d1和所述最小值d2不满足预设第一失真代价条件。
可选的,所述获得比较阈值,包括:
接收比较阈值,将所接收到的比较阈值确定为获得的比较阈值,其中,所述比较阈值是根据当前编码速度级别设置的。
可选的,所述根据预设缩小规则,缩小所述1/4像素搜索范围的步骤,包括:
缩小所述1/4像素搜索范围至空;
所述根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
将所述半像素运动估计结果确定为所述当前预测模式下针对所述当前编码块的运动估计结果。
可选的,所述根据预设缩小规则,缩小所述1/4像素搜索范围的步骤,包括:
缩小所述1/4像素搜索范围至部分搜索点;
所述根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
在所述部分搜索点中进行运动估计,获得第二运动估计结果;
根据所述半像素运动估计结果和所述第二运动估计结果,确定所述当前预测模式下针对所述当前编码块的运动估计结果。
可选的,所述根据预设缩小规则,缩小所述1/4像素搜索范围的步骤,包括:
按照预设的选择方式,选择以下任意一种方式执行:
方式一:缩小所述1/4像素搜索范围至空;
方式二:缩小所述1/4像素搜索范围至部分搜索点;
所述根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
当缩小后的1/4像素搜索范围为空时,将所述半像素运动估计结果确定为所述当前预测模式下针对所述当前编码块的运动估计结果;
当缩小后的1/4像素搜索范围仅包含部分搜索点时,在所述部分搜索点中进行运动估计,获得第二运动估计结果;根据所述半像素运动估计结果和所述第二运动估计结果,确定所述当前预测模式下针对所述当前编码块的运动估计结果。
第二方面,本发明实施例提供了一种运动估计装置,包括:
第一读取模块,用于读取当前预测模式下针对当前编码块已完成的半像素运动估计结果;
确定模块,用于针对所述当前编码块,确定1/4像素搜索范围;
第一获取模块,用于从所述半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1;
第二读取模块,用于读取已完成的预测模式下针对所述当前编码块的第一运动估计结果;
第二获取模块,用于从所述第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2;
判断模块,用于判断所述最小值d1和所述最小值d2是否满足预设第一失真代价条件,其中,所述预设第一失真代价条件是根据编码性能需求设置的;
缩小模块,用于当所述最小值d1和所述最小值d2满足所述预设第一失真代价条件时,根据预设缩小规则,缩小所述1/4像素搜索范围;
估计模块,用于根据缩小后的1/4像素搜索范围进行运动估计。
可选的,所述确定模块用于:
从所述半像素运动估计结果中,确定最佳匹配编码块;
将所确定的最佳匹配编码块中的左上角点确定为搜索的中心点;
根据所述中心点,确定预设大小的矩形范围,并将所述矩形范围确定为针对所述当前编码块的1/4像素搜索范围。
可选的,所述判断模块用于:
对所述最小值d2进行归一化处理;
获得比较阈值;
计算所述比较阈值与所述最小值d1的乘积;
判断所述乘积与归一化后的最小值d2的大小;如果所述乘积大于归一化后的最小值d2,则所述最小值d1和所述最小值d2满足预设第一失真代价条件;否则,所述最小值d1和所述最小值d2不满足预设第一失真代价条件。
可选的,所述判断模块用于:
接收比较阈值,将所接收到的比较阈值确定为获得的比较阈值,其中,所述比较阈值是根据当前编码速度级别设置的。
可选的,所述缩小模块用于:
缩小所述1/4像素搜索范围至空;
所述根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
将所述半像素运动估计结果确定为所述当前预测模式下针对所述当前编码块的运动估计结果。
可选的,所述缩小模块用于:
缩小所述1/4像素搜索范围至部分搜索点;
所述根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
在所述部分搜索点中进行运动估计,获得第二运动估计结果;
根据所述半像素运动估计结果和所述第二运动估计结果,确定所述当前预测模式下针对所述当前编码块的运动估计结果。
可选的,所述缩小模块用于:
按照预设的选择方式,选择以下任意一种方式执行:
方式一:缩小所述1/4像素搜索范围至空;
方式二:缩小所述1/4像素搜索范围至部分搜索点;
所述估计模块用于:
当缩小后的1/4像素搜索范围为空时,将所述半像素运动估计结果确定为所述当前预测模式下针对所述当前编码块的运动估计结果;
当缩小后的1/4像素搜索范围仅包含部分搜索点时,在所述部分搜索点中进行运动估计,获得第二运动估计结果;根据所述半像素运动估计结果和所述第二运动估计结果,确定所述当前预测模式下针对所述当前编码块的运动估计结果。
第三方面,本发明实施例提供了一种电子设备,其特征在于,包括处理器和存储器,其中:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一运动估计方法所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,该计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述任一运动估计方法所述的方法步骤。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一运动估计方法所述的方法步骤。
第六方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一运动估计方法所述的方法步骤。
本发明实施例提供的一种运动估计方法、装置、电子设备及存储介质,其中,方法包括:读取当前预测模式下针对当前编码块已完成的半像素运动估计结果;针对所述当前编码块,确定1/4像素搜索范围;从所述半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1;读取已完成的预测模式下针对所述当前编码块的第一运动估计结果;从所述第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2;判断所述最小值d1和所述最小值d2是否满足预设第一失真代价条件,其中,所述预设第一失真代价条件是根据编码性能需求设置的;当所述最小值d1和所述最小值d2满足所述预设第一失真代价条件时,根据预设缩小规则,缩小所述1/4像素搜索范围;根据缩小后的1/4像素搜索范围进行运动估计。
通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种运动估计方法的流程示意图;
图2为本发明实施例中确定1/4像素搜索范围步骤的流程示意图;
图3为发明实施例中1/4像素搜索范围的示意图;
图4为本发明实施例中判断最小值d1和最大值d2是否满足预设第一失真代价条件步骤的一种流程示意图;
图5为本发明实施例提供的一种运动估计装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
现有技术中,直接通过确定较小搜索范围进行1/4像素运动估计,虽然可以提高编码速度,但是会导致编码性能损失较大。为了解决该技术问题,本发明实施例提供了一种运动估计方法、装置、电子设备及存储介质。
在对本发明实施例提出的一种运动估计方法、装置、电子设备及存储介质进行详细介绍之前,先对本文涉及的部分现有技术进行简单介绍。
视频帧:视频中的图像又称为视频帧,视频帧类型包括三种:i帧、p帧和b帧;
其中,i帧:i帧中所有编码块的编码都使用帧内预测,编解码时使用本帧数据就可以重构完整图像;p帧:参考前面的已经编码且已经重构的视频帧进行编码,前面的是指按照显示顺序,在当前p帧之前的;b帧:参考前面的和后面的已经编码且已重构的视频帧进行编码,前面的是指按照显示顺序,在当前b帧之前的,后面的是指按照显示顺序,在当前b帧之后的。
p帧和b帧较i帧具有更好的压缩性能,视频编码中的预测技术一般分为两类预测模式,一类是帧内预测模式,一类是帧间预测模式,其中,帧间预测模式还可以包括合并模式、inter2nx2n模式、internx2n模式等。帧间预测可以减少时域冗余,利用相邻视频帧之间的相关性进行预测编码,当前待编码的视频帧使用其它已经编码并已重构的图像作为参考帧;针对当前编码块,在其所属的视频帧的参考帧中,搜索最佳匹配编码块作为预测值,根据预测值对当前编码块进行编码。
自h261视频编码标准以来,主流的视频编码标准均采用“基于块的预测和变换”的混合编码框架。具体的,从若干预测模式中,选择最优的一种预测模式,对输入的视频信号进行预测,得到预测信号;将预测信号与原始信号做差,得到残差信号;对残差信号进行变换、量化处理后,再通过商编码器进行编码,最终输出码流。由此可知,通过视频编码可以减小传输带宽和存储空间。
下面首先对本发明实施例提出的一种运动估计方法进行介绍。
参照图1,本发明实施例提供的运动估计方法,包括如下步骤:
s101、读取当前预测模式下针对当前编码块已完成的半像素运动估计结果。
在编码过程中,需要对视频帧进行块的划分,当前编码块是指当前处于编码中的块。这里的半像素运动估计结果是指在当前预测模式下,针对当前编码块,进行了整像素运动估计和半像素运动估计后得到的估计结果。
半像素运动估计结果具体可以包括:半像素搜索时搜索点所对应的失真代价、确定的最佳匹配编码块等等结果。
s102、针对当前编码块,确定1/4像素搜索范围。
1/4像素搜索范围是指进行1/4像素运动估计时,用于1/4像素搜索且由1/4像素点组成的搜索范围。参照图2,本步骤可以包括s201-s203三个子步骤,具体如下:
s201、从半像素运动估计结果中,确定最佳匹配编码块;
当前预测模式下,首先进行整像素运动估计,再进行半像素运动估计,此时,获得的最佳匹配编码块是进行整像素搜索和半像素搜索后,将两次获得的搜索结果进行比较后所确定的最佳匹配编码块。也就是说,这里的最佳匹配编码块可以是整像素搜索时获得的,也可以是半像素搜索时获得的。
s202、将所确定的最佳匹配编码块中的左上角点确定为搜索的中心点;
一般可以将最佳匹配编码块中左上角的一个像素点确定为搜索的中心点,也可以作为搜索的起始点。如图3所示,针对一个2×2的当前编码块,半像素运动估计时确定一个最佳匹配编码块,可以确定这个最佳匹配编码块上的左上角点为中心点,图3中的o点是中心点。
s203、根据该中心点,确定预设大小的矩形范围,并将矩形范围确定为针对当前编码块的1/4像素搜索范围。
预设大小可以是本领域技术人员根据实际经验来设置的,如图3中所示的9×9的矩形范围,图3中显示的是1/4像素点,当然,这里对预设大小不做具体限定。
s103、从半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1。
半像素搜索时各搜索点是指半像素搜索时在所使用的搜索范围内各个用于搜索的半像素位置。进行半像素运动估计后,针对每个搜索点都会得到一个失真代价,最小值d1是这些失真代价中的最大值。
s104、读取已完成的预测模式下针对当前编码块的第一运动估计结果。
第一运动估计结果是指除了当前预测模式之外的其它预测模式下,已经完成了的运动估计结果。例如,合并模式下针对当前编码块已完成了运动估计,则第一运动估计结果包括合并模式下的运动估计结果。
s105、从第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2。
s106、判断最小值d1和最小值d2是否满足预设第一失真代价条件,其中,预设第一失真代价条件是根据编码性能需求设置的。
需要说明的是,编码性能是一个综合的概念,与编码后的视频质量和压缩码率相关,同等视频质量,压缩码率越小,编码性能越好;同等压缩码率,视频质量越好,编码性能越好。
为了方便失真代价的计算,在预测时一般使用原始值与预测值的差值作为失真代价,失真代价在一定程度上能够反映编码性能的好坏。由于预设第一失真代价条件是根据编码性能需求设置的,因此,通过对失真代价的审核,可以确定已经进行的运动估计是否可以保证一定的编码性能。也就是说,如果半像素运动估计结果所包含的失真代价中最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中最小值d2满足预设第一失真代价条件,代表已经进行的运动估计具有一定的编码性能。预设第一失真代价条件的具体内容可以是根据经验设置的,也可以是根据实验获得的。预设第一失真代价条件可以为一个对于失真代价大小进行限制的不等式,例如,失真代价小于失真代价阈值。具体判断时,可以通过判断失真代价是否满足预设第一失真代价条件对应的不等式来实现。
s107、当最小值d1和最小值d2满足预设第一失真代价条件时,根据预设缩小规则,缩小1/4像素搜索范围。
本实施例中,可以根据预设第一失真代价条件来自适应的调整搜索范围,可以设置不同的预设缩小规则,以实现不同方式的缩小。
本发明实施例中的一种实施方式中,根据预设缩小规则,缩小1/4像素搜索范围的步骤,可以包括:缩小1/4像素搜索范围至空。
搜索范围缩小为空,也就是说当前预测模式下,之前已进行的运动估计可以保证一定的编码性能,因此,针对当前编码块,不再进行1/4像素运动估计,不仅可以更大程度地提高编码速度,也可以保证一定的编码性能。具体应用时,可以直接跳过1/4像素搜索来实现本步骤。
本发明实施例中的另一种实施方式中,根据预设缩小规则,缩小1/4像素搜索范围的步骤,可以包括:缩小1/4像素搜索范围至部分搜索点。
搜索范围缩小为部分搜索点,也就是说当前预测模式下,之前已进行的运动估计可以保证一定的编码性能,因此,针对当前编码块,用于进行1/4像素运动估计搜索范围缩小了部分,不仅可以更大程度地提高编码速度,也可以保证一定的编码性能。例如:可以从原来的1/4像素搜索范围中,任选一些搜索点组成缩小后的1/4像素搜索范围,也可以以原来的1/4像素搜索范围的中心点为中心,确定一个包括较少搜索点的矩形搜索范围,当然,还可以以原来的1/4像素搜索范围的中心点为中心,确定一个包括较少搜索点的菱形搜索范围。
本发明实施例中的另一种实施方式中,根据预设缩小规则,缩小1/4像素搜索范围的步骤,可以包括:
按照预设的选择方式,选择以下任意一种方式执行:
方式一:缩小1/4像素搜索范围至空;
方式二:缩小1/4像素搜索范围至部分搜索点。
其中,预设的选择方式可以是根据实际需求进行设置的,例如,可以随机的选择,也可以根据当前编码块所属的视频帧的参考帧的数量来设置。其中,根据当前编码块所属的视频帧的参考帧的数量来设置:可以设置一个数量阈值,当超过了这个数量阈值,说明参考帧的数量多,可以对应选择方式一,没有超过数量阈值,说明参考帧的数量少,可以对应选择方式二。具体采用什么样的选择方式,在此不做具体限定。
按照预设的选择方式来选择缩小方式,可以自适应的调整1/4像素搜索范围,相比于上述两种采用单一方式来调整1/4像素搜索范围的情况,可以更大程度的兼顾编码速度的提高和保证一定的编码性能。
示例性的,如图3所示,确定了一个9×9的矩形范围,可以设置预设缩小规则为:将该范围缩小至空。也可以设置预设缩小规则为:以o点为中心点,缩小至8×8的矩形范围,或其他较小尺寸的矩形范围。当然,还可以设置预设缩小规则为:以o点为中心,缩小至9×9的矩形范围内的最大菱形范围。
s108、根据缩小后的1/4像素搜索范围进行运动估计。
在s107包括“缩小1/4像素搜索范围至空”的情况下,s108可以包括:将当前预测模式下的半像素运动估计结果确定为当前预测模式下针对当前编码块的运动估计结果。
在s107包括“缩小1/4像素搜索范围至部分搜索点”的情况下,s108可以包括:在部分搜索点中进行运动估计,获得第二运动估计结果;根据半像素运动估计结果和第二运动估计结果,确定当前预测模式下针对当前编码块的运动估计结果。具体的,可以将两者的运动估计结果进行比较,选择较优的一个作为当前预测模式下针对当前编码块的运动估计结果。
在s107包括“按照预设的选择方式,选择以下任意一种方式执行:方式一:缩小1/4像素搜索范围至空;方式二:缩小1/4像素搜索范围至部分搜索点”的情况下,s108可以包括:
当缩小后的1/4像素搜索范围为空时,将半像素运动估计结果确定为当前预测模式下针对当前编码块的运动估计结果;
当缩小后的1/4像素搜索范围包含部分搜索点时,在部分搜索点中进行运动估计,获得第二运动估计结果;根据半像素运动估计结果和第二运动估计结果,确定当前预测模式下针对当前编码块的运动估计结果。
本发明实施例的一种实施方式中,当最小值d1和最小值d2不满足预设第一失真代价条件时,可以根据1/4像素搜索范围进行运动估计。针对半像素运动估计结果所包含的失真代价不满足预设第一失真代价条件即不满足编码性能需求的情况,通过进一步的1/4像素运动估计,可以进一步保证编码性能。
应用图1所示实施例,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
参照图4,判断最小值d1和最小值d2是否满足预设第一失真代价条件的步骤,包括:
s1061、对最小值d2进行归一化处理。
例如,当前预测模式下,当前编码块的大小是8×8,第一运动估计结果是合并模式下的运动估计结果,合并模式下,当前编码块的大小是4×8,需要将合并模式下的最小值d2乘以2,以完成归一化操作。
s1062、获得比较阈值。
本步骤可以包括:
(1)、接收比较阈值;其中,比较阈值是根据当前编码速度级别设置的。该比较阈值小于等于1,其大小跟当前编码速度级别有关,当前编码速度级别越快/越慢,设置该比较阈值越小/越大,在最快档次下,可以设置比较阈值为0.9。
(2)、将所接收到的比较阈值确定为获得的比较阈值。
s1063、计算比较阈值与最小值d1的乘积;
s1064、判断乘积与归一化后的最小值d2的大小;如果乘积大于归一化后的最小值d2,则最小值d1和最小值d2满足预设第一失真代价条件;否则,最小值d1和最小值d2不满足预设第一失真代价条件。
本发明实施例的一种实施方式中,当最小值d1和最小值d2满足预设第一失真代价条件时,根据预设缩小规则,缩小1/4像素搜索范围的步骤,包括:
从半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最大值d3;
判断最大值d3和最小值d1是否满足预设第二失真代价条件;
当最小值d1和最小值d2满足预设第一失真代价条件,且最大值d3和最小值d1满足预设第二失真代价条件时,根据预设缩小规则,缩小1/4像素搜索范围。
本发明实施例的一种实施方式中,判断最大值d3和最小值d1是否满足预设第二失真代价条件,可以包括:
计算最大值d3与最小值d1的差值△;
获得失真代价差值阈值;
判断差值△与失真代价差值阈值的大小;如果差值△大于失真代价差值阈值,则最大值d3和最小值d1满足预设第二失真代价条件;否则,最大值d3和最小值d1不满足预设第二失真代价条件。
其中,获得失真代价差值阈值可以按照以下方式实现:
本步骤中的失真代价差值阈值可以是人为设置并预先输入的,也可以是其他设备发送来的。在本实施方式中,本步骤可以包括:
(1)、接收失真代价差值阈值。
(2)、将所接收的失真代价差值阈值确定为获得的失真代价差值阈值。
其中,失真代价差值阈值是根据以下任意一个对象或任意多个对象设置的:当前预测模式下的量化参数、当前编码速度级别、当前编码块大小。当前预测模式下的量化参数越大/越小,可以对应的将失真差值阈值设置的越大/越小;当前编码速度级别越快/越慢,可以对应的将失真差值阈值设置的越大/越小;当前编码块大小越大/越小,可以对应的将失真差值阈值设置的越大/越小。
当然,在其他实施方式中,本步骤可以包括:
(1)、获取当前预测模式下的计算参数;
(2)、根据计算参数计算失真代价差值阈值;
其中,计算参数可以包括以下至少一个:量化参数、当前编码速度级别、当前编码块大小。具体的,使用sad来计算失真差值阈值,计算公式为((iwidth*iheight)*iamvqthreshold)>>3,其中,iwidth和iheight是当前编码块的宽度和高度,iamvqthreshold是跟当前编码速度级别相关的参数,如最快档次下设置iamvqthreshold超过50。
示例性的,基于上述运动估计方法,进行实验,实验结果如表一所示,从表一中可以看出,针对不同类型的视频进行编码,平均可以实现超过1%的加速。同时,针对不同类型的视频编码,编码性能有所提升。
表一
相应的,基于上述运动估计方法,本发明实施例提高的一种运动估计装置,下面将对该运动装置进行详细介绍。
参照图5,本发明实施例提供的运动估计装置包括:
第一读取模块51,用于读取当前预测模式下针对当前编码块已完成的半像素运动估计结果;
确定模块52,用于针对当前编码块,确定1/4像素搜索范围;
第一获取模块53,用于从半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1;
第二读取模块54,用于读取已完成的预测模式下针对当前编码块的第一运动估计结果;
第二获取模块55,用于从第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2;
判断模块56,用于判断最小值d1和最小值d2是否满足预设第一失真代价条件,其中,预设第一失真代价条件是根据编码性能需求设置的;
缩小模块57,用于当最小值d1和最小值d2满足预设第一失真代价条件时,根据预设缩小规则,缩小1/4像素搜索范围;
估计模块58,用于根据缩小后的1/4像素搜索范围进行运动估计。
应用图5所示实施例,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
本发明实施例的一种实施方式中,确定模块52用于:
从半像素运动估计结果中,确定最佳匹配编码块;
将所确定的最佳匹配编码块中的左上角点确定为搜索的中心点;
根据中心点,确定预设大小的矩形范围,并将矩形范围确定为针对当前编码块的1/4像素搜索范围。
本发明实施例的一种实施方式中,判断模块56用于:
对最小值d2进行归一化处理;
获得比较阈值;
计算比较阈值与最小值d1的乘积;
判断乘积与归一化后的最小值d2的大小;如果乘积大于归一化后的最小值d2,则最小值d1和最小值d2满足预设第一失真代价条件;否则,最小值d1和最小值d2不满足预设第一失真代价条件。
本发明实施例的一种实施方式中,判断模块56用于:
接收比较阈值,将所接收到的比较阈值确定为获得的比较阈值,其中,比较阈值是根据当前编码速度级别设置的。
本发明实施例的一种实施方式中,缩小模块57具体用于:
缩小1/4像素搜索范围至空;
根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
将半像素运动估计结果确定为当前预测模式下针对当前编码块的运动估计结果。
本发明实施例的一种实施方式中,缩小模块57用于:
缩小1/4像素搜索范围至部分搜索点;
根据缩小后的1/4像素搜索范围进行运动估计的步骤,包括:
在部分搜索点中进行运动估计,获得第二运动估计结果;
根据半像素运动估计结果和第二运动估计结果,确定当前预测模式下针对当前编码块的运动估计结果。
本发明实施例的一种实施方式中,缩小模块57用于:
按照预设的选择方式,选择以下任意一种方式执行:
方式一:缩小1/4像素搜索范围至空;
方式二:缩小1/4像素搜索范围至部分搜索点;
估计模块58具体用于:
当缩小后的1/4像素搜索范围为空时,将半像素运动估计结果确定为当前预测模式下针对当前编码块的运动估计结果;
当缩小后的1/4像素搜索范围仅包含部分搜索点时,在部分搜索点中进行运动估计,获得第二运动估计结果;根据半像素运动估计结果和第二运动估计结果,确定当前预测模式下针对当前编码块的运动估计结果。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器210和存储器220,其中,
存储器220,用于存放计算机程序;
处理器210,用于执行存储器220上所存放的程序时,实现上述任一运动估计方法所述的方法步骤,在本发明的一个实施例中,可以实现如下步骤:
读取当前预测模式下针对当前编码块已完成的半像素运动估计结果;
针对当前编码块,确定1/4像素搜索范围;
从半像素运动估计结果中,获取半像素搜索时各搜索点所对应的失真代价中的最小值d1;
读取已完成的预测模式下针对当前编码块的第一运动估计结果;
从第一运动估计结果中,获取搜索时各搜索点所对应的失真代价中的最小值d2;
判断最小值d1和最小值d2是否满足预设第一失真代价条件,其中,预设第一失真代价条件是根据编码性能需求设置的;
当最小值d1和最小值d2满足预设第一失真代价条件时,根据预设缩小规则,缩小1/4像素搜索范围;
根据缩小后的1/4像素搜索范围进行运动估计。
关于该方法各个步骤的具体实现以及相关解释内容可以参见上述图1所示的方法实施例,在此不做赘述。
另外,处理器210执行存储器220上所存放的程序而实现的应用设置方法的其它实现方式,与前述方法实施例部分所提及的实现方式相同,这里也不再赘述。
上述电子设备可以具备有实现上述电子设备与其它设备之间通信的通信接口。
上述的处理器210,通信接口,存储器220通过通信总线完成相互间的通信,此处所提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器220可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器210可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应用本发明实施例提供的电子设备,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的运动估计方法。
应用本发明实施例提供的计算机可读存储介质,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
在本发明提供的再一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一运动估计方法的方法步骤。
应用本发明实施例提供的计算机程序产品,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
在本发明提供的再一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一运动估计方法的方法步骤。
应用本发明实施例提供的计算机程序,通过预设第一失真代价条件对已完成的半像素运动估计结果所包含的失真代价的最小值d1,以及已完成的预测模式下针对当前编码块的第一运动估计结果所包含的失真代价中的最小值d2进行预先审核,对于满足预设第一失真代价条件的情况,根据缩小后的1/4像素搜索范围进行运动估计,可以提高编码速度。同时,又保证了一定的编码性能;对于不满足预设第一失真代价条件的情况,可以根据原来的1/4像素搜索范围进行运动估计,这样可以进一步保证编码性能。因此,采用这种自适应的方式进行运动估计,可以在提高编码速度的基础上,减少编码性能的损失。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置、系统、电子设备、计算机可读存储介质、计算机程序产品以及计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。