一种运动估计方法及装置与流程

文档序号:14635795发布日期:2018-06-08 19:41阅读:146来源:国知局
一种运动估计方法及装置与流程

本发明涉及视频编码技术领域,特别涉及一种运动估计方法及装置。



背景技术:

随着多媒体应用中视频业务的不断发展以及视频云计算需求的不断提高,现有的网络传输带宽和存储资源愈来愈难以支撑数据量庞大的原始视频信源,这一现状使得视频编码逐渐成为国内外研究和应用的热点之一。

至今,国内外标准化组织已相继制定了多种不同的视频编码标准。自H.261视频编码标准以来,主流的视频编码标准均采用“基于块的预测和变换”的混合编码框架,输入的视频信号经过编码器中预测、变换、量化、扫描、熵编码等编码技术处理后,去除视频图像数据中的冗余信息,以减少传输带宽和存储空间。其中,视频编码中的预测技术一般分为两种,即帧内预测和帧间预测,I帧仅采用帧内预测,P、B帧既可采用帧内预测也能使用帧间预测。

其中,帧间预测用于减少时域冗余,它是利用相邻帧之间的相关性进行预测编码,即当前待编码的图像使用其它已编码并重构的图像作为参考帧,当前待编码块在参考帧中搜索相似块作为预测块。帧间预测中的关键技术包括运动估计(Motion Estimation)、运动补偿(Motion Compensation)技术。其中,运动估计是在一定数量的参考帧中搜索最佳参考帧中的最佳预测块的过程,最佳参考帧内的最佳预测块与当前编码块的相对位置信息用运动矢量(motion vector,mv)来表示。帧间预测由于相邻图像之间存在一定相关性,能搜索到更为匹配的预测块,使得残差值更小,因此可以用更少的编码比特编码视频信息,而由于需要从所有参考帧中以不同的搜索方式搜索最佳预测块,并进行后期运动补偿,其编码复杂度也随之增加。

运动估计技术试图在当前待编码图像的参考帧集合中所有参考帧的有效搜索区域内搜索一个大小相同的预测块,因此,运动估计最为关键的是预测块的搜索过程。现有的运动估计技术关于搜索预测块的搜索方法有全搜索、菱形搜索、六边形搜索等,然而,这些搜索方法在搜索预测块的过程中,均按照相同的预设搜索范围搜索每一个编码块的预测块,但是,对于运动平稳的图像中的编码块来说,只需要较小的搜索范围即可搜索到对应的预测块,那么,当预设搜索范围较大时会造成计算量的浪费,使得编码速度变慢。



技术实现要素:

本发明实施例的目的在于提供一种运动估计方法及装置,以自适应调整编码块的搜索范围,提高编码速度。具体技术方案如下:

为达到上述目的,本发明实施例公开了一种运动估计方法,所述方法包括:

根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;

根据所述初始运动矢量,调整所述目标编码块的初始搜索范围,得到目标搜索范围;

获得所述初始运动矢量对应的编码代价,并根据所获得的编码代价确定所述目标编码块对应的目标搜索模板;

根据所述初始运动矢量、所述目标搜索范围、所述目标搜索模板,进行针对所述目标编码块的运动估计,获得所述目标编码块的运动矢量。

可选的,所述根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量的步骤,包括:

根据已完成编码的编码块的运动矢量,构建所述目标编码块的针对运动矢量的预测候选集合;

按照预设的运动矢量选择顺序,从所述预测候选集合中确定两个中间运动矢量;

确定所述中间运动矢量对应的编码代价,并将编码代价最小的中间运动矢量确定为备选运动矢量;

根据所述备选运动矢量,确定所述目标编码块的初始运动矢量。

可选的,所述根据已完成编码的编码块的运动矢量,构建所述目标编码块的针对运动矢量的预测候选集合的步骤,包括:

依次判断所述目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块、第一编码块的右下相邻块、所述第一编码块的中心所在块是否存在且预测模式不是帧内预测,其中,所述第一编码块为:在所述目标编码块的参考帧中位置与在所述目标编码块所在帧中位置相同的编码块;

如果存在且预测模式不是帧内预测,将该块的运动矢量及该块的运动矢量缩放后的运动矢量加入到所述预测候选集合中;

将零向量加入到所述预测候选集合中。

可选的,所述方法还包括:

在所述目标编码块所在编码单元存在父编码单元和/或子编码单元时,将所述父编码单元的运动矢量和/或子编码单元的运动矢量加入到所述预测候选集合中。

可选的,所述按照预设的运动矢量选择顺序,从所述预测候选集合中确定两个中间运动矢量的步骤,包括:

在所述预测候选集合中存在第一子集合时,按照第一优先级顺序,从所述第一子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第一子集合由所述左下相邻块对应的第一运动矢量和/或所述左相邻块对应的第二运动矢量确定,所述第一优先级顺序为:所述第一运动矢量的优先级大于所述第二运动矢量的优先级;

在所述预测候选集合中存在第二子集合时,按照第二优先级顺序,从所述第二子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第二子集合由所述右上相邻块对应的第三运动矢量和/或所述上相邻块对应的第四运动矢量和/或所述左上相邻块对应的第五运动矢量确定,所述第二优先级顺序为:所述第三运动矢量的优先级大于所述第四运动矢量的优先级、所述第四运动矢量的优先级大于所述第五运动矢量的优先级;

判断所述中间运动矢量的数量是否等于2;

如果不是,在所述预测候选集合中存在第三子集合时,按照第三优先级顺序,从所述第三子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第三子集合由所述第一编码块的右下相邻块对应的第六运动矢量和/或所述第一编码块的中心所在块对应的第七运动矢量确定,所述第三优先级顺序为:所述第六运动矢量的优先级大于所述第七运动矢量的优先级;

判断所述中间运动矢量的数量是否等于2;

如果不是,将所述预测候选集合中的零向量确定为中间运动矢量。

可选的,所述根据所述备选运动矢量,确定所述目标编码块的初始运动矢量的步骤,包括:

判断所述目标编码块所在编码单元是否存在父编码单元和/或子编码单元;

如果是,确定所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价,并将所述备选运动矢量、所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价最小的运动矢量确定为初始运动矢量;

如果否,将所述备选运动矢量确定为初始运动矢量。

可选的,所述根据所述初始运动矢量,调整所述目标编码块的初始搜索范围的步骤,包括:

将起始运动矢量设置为预设顺序中第一个运动矢量,其中,所述预设顺序为:左下相邻块的运动矢量、左下相邻块的运动矢量经缩放后的运动矢量、左相邻块的运动矢量、左相邻块的运动矢量经缩放后的运动矢量、右上相邻块的运动矢量、右上相邻块的运动矢量经缩放后的运动矢量、上相邻块的运动矢量、上相邻块的运动矢量经缩放后的运动矢量、左上相邻块的运动矢量、左上相邻块的运动矢量经缩放后的运动矢量、第一编码块的右下相邻块的运动矢量、第一编码块的右下相邻块的运动矢量经缩放后的运动矢量、第一编码块的中心所在块的运动矢量、第一编码块的中心所在块的运动矢量经缩放后的运动矢量;

判断所述起始运动矢量是否为零向量;

若为否,计算所述起始运动矢量和所述初始运动矢量的绝对差值,更新所述起始运动矢量为所述预设顺序中下一个运动矢量,跳转至执行所述判断所述起始运动矢量是否为零向量的步骤;

若为是,统计计算得到的绝对差值的个数K,判断K是否不小于第一预设阈值;若不小于,根据计算得到的绝对差值,调整所述目标编码块的初始搜索范围。

可选的,所述根据所获得的编码代价确定所述目标编码块对应的目标搜索模板的步骤,包括:

判断所述初始运动矢量的编码代价是否小于第二预设阈值;

如果否,将初始搜索模板确定为所述目标搜索模板;

如果是,将预设搜索模板确定为所述目标搜索模板。

为达到上述目的,本发明实施例还公开了一种运动估计装置,所述装置包括:

第一确定模块,用于根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;

调整模块,用于根据所述初始运动矢量,调整所述目标编码块的初始搜索范围,得到目标搜索范围;

第二确定模块,用于获得所述初始运动矢量对应的编码代价,并根据所获得的编码代价确定所述目标编码块对应的目标搜索模板;

运动估计模块,用于根据所述初始运动矢量、所述目标搜索范围、所述目标搜索模板,进行针对所述目标编码块的运动估计,获得所述目标编码块的运动矢量。

可选的,所述第一确定模块,包括:

构建子模块,用于根据已完成编码的编码块的运动矢量,构建所述目标编码块的针对运动矢量的预测候选集合;

第一确定子模块,用于按照预设的运动矢量选择顺序,从所述预测候选集合中确定两个中间运动矢量;

第二确定子模块,用于确定所述中间运动矢量对应的编码代价,并将编码代价最小的中间运动矢量确定为备选运动矢量;

第三确定子模块,用于根据所述备选运动矢量,确定所述目标编码块的初始运动矢量。

可选的,所述构建子模块,包括:

第一判断单元,用于依次判断所述目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块、第一编码块的右下相邻块、所述第一编码块的中心所在块是否存在且预测模式不是帧内预测,其中,所述第一编码块为:所述目标编码块的参考帧中位置与所述目标编码块位置相同的编码块;

第一加入单元,用于在第一判断单元判断出某一个块存在且预测模式不是帧内预测,将该块的运动矢量及该块的运动矢量缩放后的运动矢量加入到预测候选集合中;

第二加入单元,用于将零向量加入到所述预测候选集合中。

可选的,所述装置还包括:

第三加入单元,用于在所述目标编码块所在编码单元存在父编码单元和/或子编码单元时,将所述父编码单元的运动矢量和/或子编码单元的运动矢量加入到预测候选集合中。

可选的,所述第一确定子模块,包括:

第一确定单元,用于在所述预测候选集合中存在第一子集合时,按照第一优先级顺序,从所述第一子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第一子集合由所述左下相邻块对应的第一运动矢量和/或所述左相邻块对应的第二运动矢量确定,所述第一优先级顺序为:所述第一运动矢量的优先级大于所述第二运动矢量的优先级;

第二确定单元,用于在所述预测候选集合中存在第二子集合时,按照第二优先级顺序,从所述第二子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第二子集合由所述右上相邻块对应的第三运动矢量和/或所述上相邻块对应的第四运动矢量和/或所述左上相邻块对应的第五运动矢量确定,所述第二优先级顺序为:所述第三运动矢量的优先级大于所述第四运动矢量的优先级、所述第四运动矢量的优先级大于所述第五运动矢量的优先级;

第二判断单元,用于判断所述中间运动矢量的数量是否等于2;

第三确定单元,用于在所述第二判断单元判断出所述中间运动矢量的数量不等于2的情况下,在所述预测候选集合中存在第三子集合时,按照第三优先级顺序,从所述第三子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第三子集合由所述第一编码块的右下相邻块对应的第六运动矢量和/或所述第一编码块的中心所在块对应的第七运动矢量确定,所述第三优先级顺序为:所述第六运动矢量的优先级大于所述第七运动矢量的优先级;

第三判断单元,用于判断所述中间运动矢量的数量是否等于2;

第四确定单元,用于在所述第三判断单元判断出所述中间运动矢量的数量不等于2的情况下,将所述预测候选集合中的零向量确定为中间运动矢量。

可选的,所述第三确定子模块,包括:

第四判断单元,用于判断所述目标编码块所在编码单元是否存在父编码单元和/或子编码单元;

第五确定单元,用于在所述第四判断单元判断出所述目标编码块所在编码单元存在父编码单元和/或子编码单元时,确定所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价,并将所述备选运动矢量、所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价最小的运动矢量确定为初始运动矢量;

第六确定单元,用于在所述第四判断单元判断出所述目标编码块所在编码单元不存在父编码单元和/或子编码单元时,将所述备选运动矢量确定为初始运动矢量。

可选的,所述调整模块,包括:

设置子模块,用于将起始运动矢量设置为预设顺序中第一个运动矢量,其中,所述预设顺序为:左下相邻块的运动矢量、左下相邻块的运动矢量经缩放后的运动矢量、左相邻块的运动矢量、左相邻块的运动矢量经缩放后的运动矢量、右上相邻块的运动矢量、右上相邻块的运动矢量经缩放后的运动矢量、上相邻块的运动矢量、上相邻块的运动矢量经缩放后的运动矢量、左上相邻块的运动矢量、左上相邻块的运动矢量经缩放后的运动矢量、第一编码块的右下相邻块的运动矢量、第一编码块的右下相邻块的运动矢量经缩放后的运动矢量、第一编码块的中心所在块的运动矢量、第一编码块的中心所在块的运动矢量经缩放后的运动矢量;

第一判断子模块,用于判断所述起始运动矢量是否为零向量;

计算子模块,用于在所述第一判断子模块判断出所述起始运动矢量不是零向量时,计算所述起始运动矢量和所述初始运动矢量的绝对差值,更新所述起始运动矢量为所述预设顺序中下一个运动矢量,并触发所述第一判断子模块;

调整子模块,用于在所述第一判断子模块判断出所述起始运动矢量是零向量时,统计计算得到的绝对差值的个数K,判断K是否不小于第一预设阈值;若不小于,根据计算得到的绝对差值,调整所述目标编码块的初始搜索范围。

可选的,所述第二确定模块,包括:

第二判断子模块,用于判断所述初始运动矢量的编码代价是否小于第二预设阈值;

第四确定子模块,用于在所述第二判断子模块判断出所述初始运动矢量的编码代价值不小于第二预设阈值时,将初始搜索模板确定为所述目标搜索模板;

第五确定子模块,用于在所述第二判断子模块判断出所述初始运动矢量的编码代价值小于第二预设阈值时,将预设搜索模板确定为所述目标搜索模板。

综上,本发明实施例提供的运动估计方法及装置,根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;根据初始运动矢量,调整目标编码块的初始搜索范围,得到目标搜索范围;获得初始运动矢量对应的编码代价,并根据所获得的编码代价,确定目标编码块对应的目标搜索模板;根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计,获得目标编码块的运动矢量。

可见,本发明实施例提供的方案,根据已完成编码的编码块的运动矢量选择搜索初始点,并对目标编码块的搜索范围进行调整,使得目标编码块的搜索范围与当前图像的运动剧烈程序相适应,对于运动平稳的图像中的编码块使用较小的搜索范围,可以减少搜索点的个数,提高编码速度,对于运动剧烈的图像中的编码块采用较大的搜索范围,可以提高预测精度。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1(a)和图1(b)分别为当前编码块的空域相邻块、时域相邻块的示意图;

图2为本发明实施例提供的一种运动估计方法的流程示意图;

图3为本发明实施例提供的图2中S201的一种实施方式的流程示意图;

图4为本发明实施例提供的一种运动估计装置的结构示意图;

图5为本发明实施例提供的图4中第一确定模块401的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

先对本申请文件中涉及到的技术用语进行简单介绍。

运动估计:视频编码过程中,通常将图像划分成编码块,在参考图像中搜索当前编码块的相似块,并确定与相似块之间的空间位置相对偏移,上述空间位置相对偏移的偏移量又被称之为运动矢量,简而言之,运动估计即获取运动矢量的过程。

覆盖运动矢量,即覆盖于当前编码块的编码单元范围的父编码单元的运动矢量,也称为fmv。

继承运动矢量,即继承于当前编码块的编码单元的子编码单元的运动矢量,也称为smv;获取smv的方法包括但不仅限于在当前编码块的编码单元范围内采用一个子编码单元的mv或多个子编码单元的mv的中值、平均值、最值等。

图1(a)示出了当前编码块的空域相邻块,其中,较大的正方形块表示为当前编码块,A0、A1、B0、B1、B2所在的正方形分别表示为当前编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块。

图1(b)示出了当前编码块的时域相邻块,其中,较大的正方形块表示为在参考帧中位置与当前编码块在当前编码帧中位置相同的编码块,当前编码帧为当前正在编码的视频帧,为描述方便,下文将图1(b)中较大的正方形表示的编码块称之为第一编码块;T0、T1所在的正方形分别表示为第一编码块的右下相邻块、第一编码块的中心所在块。需要说明的是,T1所表示的块与T0所表示的块的大小相同,并且T1所表示的块处在第一编码块的中心位置。

为解决现有技术问题,本发明实施例提供了一种运动估计方法及装置。下面首先对本发明实施例所提供的一种运动估计方法进行详细说明。

需要说明的是,本发明实施例所提供的一种视频编码方法的执行主体可以为一种视频编码装置,如:视频编码器。其中,该视频编码装置可以为现有视频编码软件中的插件,或者,独立的功能软件,这都是合理的。并且,该视频编码装置可以应用于终端中,也可以应用于服务器中。

图2为本发明实施例提供的一种运动估计方法的流程示意图,该方法包括:

S201,根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量。

其中,已完成编码的编码块的运动矢量取自于包括但不限于:从目标编码块的空域相邻块预测得到的运动矢量、从时域相邻块预测得到的运动矢量、对上述相邻块的运动矢量进行缩放处理后得到的运动矢量、覆盖于目标编码块的编码单元范围的父编码单元的运动矢量、继承于目标编码块的编码单元的子编码单元的运动矢量、以及零向量等。

已完成编码的编码块的运动矢量可以通过以下的图像信息获得:目标编码块所在图像的索引号、目标编码块的参考帧的索引号、目标编码块的位置信息、目标编码块的空域相邻块的信息、目标编码块在参考帧中的时域相邻块的信息、目标编码块所在编码单元的信息,等等,当然,还可以根据其他的图像信息获得,本实施例对此不做限定。

具体的,如图3所示,上述根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量的步骤,可以包括:

S2011,根据已完成编码的编码块的运动矢量,构建目标编码块的针对运动矢量的预测候选集合。

实际应用中,已完成编码的编码块可以是目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块,也可以是第一编码块的右下相邻块、第一编码块的中心所在块。可以理解的,这些编码块与目标编码块之间的相关性较大,因此可以作为目标编码块的预测候选。

根据已完成编码的编码块的运动矢量,可以按照一定的顺序构建目标编码块的针对运动矢量的预测候选集合。

将加入预测候选集合的预测候选来自于但不局限于目标编码块的空域相邻块(如图1(a)所示的A0、A1、B0、B1、B2位置的块)对应的运动矢量、时域相邻块(如图1(b)所示的T0、T1位置的块)对应的运动矢量、以及对上述相邻块的运动矢量进行缩放处理后得到的运动矢量、以及零向量、以及覆盖于当前编码块对应的编码单元范围的父编码单元的运动矢量和/或继承于目标编码块对应的编码单元的子编码单元的运动矢量等。其中,上述缩放处理可以采用但不限于采用基于位置距离线性缩放的处理方式。

具体的,根据已完成编码的编码块的运动矢量,构建目标编码块的针对运动矢量的预测候选集合的步骤,可以包括:

依次判断目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块、第一编码块的右下相邻块、第一编码块的中心所在块是否存在且预测模式不是帧内预测,其中,第一编码块为:目标编码块在参考帧中的位置与目标编码块在当前待编码帧中的位置相同的编码块;

如果存在且预测模式不是帧内预测,将该块的运动矢量及该块的运动矢量缩放后的运动矢量加入到预测候选集合中;

将零向量加入到所述预测候选集合中。

如果某一个块存在且预测模式不是帧内预测,可以理解为该块有效,那么,当一个块不存在或者预测模式是帧内预测,则可以理解为该块无效,同时,该块的运动矢量也是无效的。可以理解的,当一个块无效时,也就不需要对该块的运动矢量进行缩放处理,即该块的运动矢量经过缩放处理后的运动矢量也是无效的。

进一步的,上述目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块、第一编码块的右下相邻块、第一编码块的中心所在块所对应的运动矢量以及各个运动矢量经缩放后得到的运动矢量均可以视为预测候选,但是,在实际应用中,上述预测候选并不都是有效的。因此,在构建预测候选集合时,只需要将有效的预测候选加入到预测候选集合中。

按照各个块与目标编码块的位置关系,可以对各个块对应的运动矢量进行划分,具体为:

空域预测候选,包括但不限于左下相邻块的运动矢量、左相邻块的运动矢量、右上相邻块的运动矢量、上相邻块的运动矢量、左上相邻块的运动矢量;

时域预测候选,包括但不限于第一编码块的右下相邻块的运动矢量、第一编码块的中心所在块的运动矢量;

缩放预测候选,包括空域预测候选、时域预测候选根据一定缩放规则操作后得到的运动矢量。

具体的,构建预测候选集合的过程如下:首先检测空域预测候选,对于左相邻的预测候选,按照左下相邻块A0、左相邻块A1的顺序,依次将所有有效的预测候选加入到预测候选集合中,例如,如果左下相邻块A0、左相邻块A1均有效,则将A0的运动矢量、A0的运动矢量缩放后的运动矢量、A1的运动矢量、A1的运动矢量缩放后的运动矢量加入到预测候选集合中,如果A0有效而A1无效,则只将A0的运动矢量、A0的运动矢量缩放后的运动矢量加入到预测候选集合中;对于上相邻的预测候选,按照B0、B1、B2的顺序,依次将所有有效的预测候选加入到预测候选集合中;然后,检测时域预测候选,按照T0、T1的顺序检测,依次将所有有效的预测候选加入到预测候选集合中;最后,还需要补充零向量至预测候选集合中,由于本实施例需要从预测候选集合中确定两个中间运动矢量,因此为了避免上述空域预测候选和时域预测候选均无效的情况,可以补充两个零向量至预测候选集合中。

需要说明的是,本实施例需要从预测候选集合中确定两个中间运动矢量,因为这种方式的计算量较小,并且经过后续的处理可以得到较为准确的初始运动矢量,运动估计的预测精度也较好。

实际应用中,可以视为预测候选集合中的各个预测候选项是按照加入顺序依次排列的,也可以视为各个预测候选项是无序排列的,本发明实施例对此不做限定。

可以理解的,由于父编码单元覆盖了编码块所在编码单元的范围,可以说父编码单元与编码块所在编码单元之间具有较大的相关性,同样的,子编码单元是编码块所在编码单元的一部分,可以说子编码单元与编码块所在编码单元之间也具有较大的相关性。因此,还可以将父编码单元的运动矢量和子编码单元的运动矢量作为预测候选加入到预测候选集合中。

具体的,构建预测候选集合还可以包括:在目标编码块所在编码单元存在父编码单元和/或子编码单元时,将父编码单元的运动矢量和/或子编码单元的运动矢量加入到预测候选集合中。

S2012,按照预设的运动矢量选择顺序,从预测候选集合中确定两个中间运动矢量。

对于左相邻的预测候选,按照A0、A1的顺序,从预测候选集合中选择第一个有效的运动矢量作为中间运动矢量;对于上相邻的预测候选,按照B0、B1、B2的顺序,选择第一个有效的运动矢量作为中间运动矢量。如果当前中间运动矢量的数量不为2,即左相邻预测候选和上相邻预测候选中至少有一个不存在有效的运动矢量,此时,可以继续判断时域预测候选,按照T0、T1的顺序,选择第一个有效的运动矢量作为中间运动矢量。如果当前中间运动矢量的数量仍然不为2,则将零向量作为中间运动矢量。可以理解的,为保证算法的正确执行,对于上述空域预测候选和时域预测候选均无效的情况,可以使与测候选集合中的两个零向量作为中间运动矢量,以使中间运动矢量的数量为2。

具体的,按照预设的运动矢量选择顺序,从预测候选集合中确定两个中间运动矢量的步骤,可以包括:

在预测候选集合中存在第一子集合时,按照第一优先级顺序,从第一子集合中选择一个运动矢量确定为中间运动矢量,其中,第一子集合由左下相邻块对应的第一运动矢量和/或左相邻块对应的第二运动矢量确定,第一优先级顺序为:第一运动矢量的优先级大于第二运动矢量的优先级;

在预测候选集合中存在第二子集合时,按照第二优先级顺序,从第二子集合中选择一个运动矢量确定为中间运动矢量,其中,第二子集合由右上相邻块对应的第三运动矢量和/或上相邻块对应的第四运动矢量和/或左上相邻块对应的第五运动矢量确定,第二优先级顺序为:第三运动矢量的优先级大于第四运动矢量的优先级、第四运动矢量的优先级大于第五运动矢量的优先级;

判断中间运动矢量的数量是否等于2;

如果不是,在预测候选集合中存在第三子集合时,按照第三优先级顺序,从第三子集合中选择一个运动矢量确定为中间运动矢量,其中,第三子集合由第一编码块的右下相邻块对应的第六运动矢量和/或第一编码块的中心所在块对应的第七运动矢量确定,第三优先级顺序为:第六运动矢量的优先级大于第七运动矢量的优先级;

判断中间运动矢量的数量是否等于2;

如果不是,将预测候选集合中的零向量确定为中间运动矢量。

S2013,确定中间运动矢量对应的编码代价,并将编码代价最小的中间运动矢量确定为备选运动矢量。

其中,编码代价的计算方式包括但不仅限于率失真代价、亮度分量的率失真代价或亮度分量的失真代价、色度分量的率失真代价、色度分量的失真代价等计算方式。

S2014,根据备选运动矢量,确定目标编码块的初始运动矢量。

具体的,根据备选运动矢量,确定目标编码块的初始运动矢量的步骤,可以包括:

判断目标编码块所在编码单元是否存在父编码单元和/或子编码单元;

如果是,确定父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价,并将备选运动矢量、父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价最小的运动矢量确定为初始运动矢量;

如果否,将备选运动矢量确定为初始运动矢量。

可以理解的,编码代价有多种计算方式,在本实施例中,确定父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价,所利用的计算方式与确定备选运动矢量的编码代价的计算方式是相同的。

示例性的,基于率失真准则,比较两个中间运动矢量的编码代价,选择编码代价较小的中间运动矢量作为备选运动矢量。若目标编码块所在编码单元存在父编码单元,则比较备选运动矢量与父编码单元的运动矢量的编码代价,选择编码代价较小的运动矢量作为初始运动矢量。若目标编码块所在编码单元存在子编码单元,则比较备选运动矢量与子编码单元的运动矢量的编码代价,选择编码代价较小的运动矢量作为初始运动矢量。若目标编码块所在编码单元同时存在父编码单元和子编码单元,则从备选运动矢量、父编码单元的运动矢量和子编码单元的运动矢量中,选择编码代价较小的运动矢量作为初始运动矢量。

S202,根据初始运动矢量,调整目标编码块的初始搜索范围,得到目标搜索范围。

其中,初始搜索范围可以由用户在视频编码装置的配置文件中设置,也可以采用视频编码装置的默认值。

具体的,根据初始运动矢量,调整目标编码块的初始搜索范围,得到目标搜索范围,可以包括:

将起始运动矢量设置为预设顺序中第一个运动矢量,其中,预设顺序为:左下相邻块的运动矢量、左下相邻块的运动矢量经缩放后的运动矢量、左相邻块的运动矢量、左相邻块的运动矢量经缩放后的运动矢量、右上相邻块的运动矢量、右上相邻块的运动矢量经缩放的运动矢量、上相邻块的运动矢量、上相邻块的运动矢量经缩放后的运动矢量、左上相邻块的运动矢量、左上相邻块的运动矢量经缩放后的运动矢量、第一编码块的右下相邻块的运动矢量、第一编码块的右下相邻块的运动矢量经缩放后的运动矢量、第一编码块的中心所在块的运动矢量、第一编码块的中心所在块的运动矢量经缩放后的运动矢量;

判断起始运动矢量是否为零向量;

若为否,计算起始运动矢量和初始运动矢量的绝对差值,更新起始运动矢量为预设顺序中下一个运动矢量,跳转至执行判断起始运动矢量是否为零向量的步骤;

若为是,统计计算得到的绝对差值的个数K,判断K是否不小于第一预设阈值;若不小于,根据计算得到的绝对差值,调整目标编码块的初始搜索范围。

示例性的,将初始运动矢量与上述预设顺序中的块的运动矢量依次进行比较,计算初始运动矢量与每一个块的运动矢量的x分量、y分量的绝对差值,设初始运动矢量为mv(x,y),起始运动矢量为mv(x’,y’),则绝对差值D=max(|x-x’|,|y-y’|)。

当起始运动矢量为零向量时跳出该过程,此时,比较过的运动矢量个数记为K,因此,当K大于等于第一预设阈值时,对搜索范围(L,H)调整,否则仍采用初始搜索范围(L0,H0)。

进一步的,从已经计算得到的绝对差值D中,还可以确定一个最大的绝对差值Dmax,并根据该最大绝对差值,来调整目标编码块的初始搜索范围。具体的:当Dmax大于一定阈值TH1,说明图像可能产生了剧烈运动,因此,需要相应扩大搜索范围,即如果初始搜索范围较小,则需要调大,但是如果初始搜索范围已经足够大,则不必调整;如果Dmax小于一定阈值TH2(其中TH1大于等于TH2),说明运动相对平缓,因此,初始搜索范围应尽可能缩小。其中,调整的方法包括但不局限于同时调整初始搜索范围的上限和下限,即对上限和下限同时增加或减小一定数量,或者分别调整范围的上限和下限;或者仅调整范围的上限,或者仅调整范围的下限。

需要说明的是,上述初始搜索范围的上限和下限分别指的是初始搜索范围的L0和H0。假设目标编码块最左点的位置为(k,l),那么根据初始搜索范围与目标编码块的位置关系,可以得到L0=k-d,H0=l+d,d为初始搜索范围的大小。扩大搜索范围,就是减小L增大H,缩小搜索范围,就是增大L减小H。

S203,获得初始运动矢量对应的编码代价,并根据所获得的编码代价确定目标编码块对应的目标搜索模板。

编码代价的计算方式包括但不仅限于率失真代价、亮度分量的率失真代价或亮度分量的失真代价、色度分量的率失真代价、色度分量的失真代价等计算方式。此处编码代价的计算方式,可以与上述确定中间运动矢量对应的编码代价的计算方式相同,也可以不同,本实施例对此不做限定。

具体的,根据所获得的编码代价确定目标编码块对应的目标搜索模板的步骤,可以包括:

判断初始运动矢量的编码代价是否小于第二预设阈值;

如果否,将初始搜索模板确定为目标搜索模板;

如果是,将预设搜索模板确定为目标搜索模板。

初始搜索模板为视频编码装置初始设置的搜索模板,可以为三步法模板、四步法模板、菱形模板、六边形模板、以及如EPZS(Enhanced Predictive Zonal Search)、UMH(Uneven Multi-Hexagon-gird)等更加复杂的搜索模板。

预设搜索模板可以为六边形模板,这是因为:相对于UMH、EPZS模板,六边形模板的搜索范围小、计算简洁,相对三步法模板、四步法模板,在相同情况下六边形模板不会搜索过多的搜索点,相对于菱形模板,六边形模板的计算稍微复杂但性能更好。当然,还可以根据实际情况选择其他类型的模板作为预设搜索模板,本实施例对此不做限定。

S204,根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计,获得目标编码块的运动矢量。

实际应用中,根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计,获得目标编码块的运动矢量的步骤,可以包括:

根据初始运动矢量、目标搜索范围、目标搜索模板,进行整像素级运动估计,获得整像素级运动矢量;

若编码器支持分像素运动估计,基于整像素级运动矢量,对目标编码块进行分像素级运动估计,获得分像素级运动矢量;

根据整像素级运动矢量或分像素级运动矢量,获得目标编码块的运动矢量。

整像素级别的运动估计,即在目标搜索范围内,从初始运动矢量所指向的位置开始,依据目标搜索模板,搜索能使得编码代价最小的运动矢量,该运动矢量即为整像素级的最优运动矢量。进一步的,若编码器还支持分像素搜索,则再以整像素级的最优运动矢量为初始运动矢量,遍历周围所有分像素点找出编码代价最小的分像素最优点,完成分像素级的运动估计,获得最优的运动矢量。

具体的,根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计的方法可以参照现有技术的方法,在此不做赘述。

需要说明的是,因为利用本实施例所提供的方案,可以生成符合现有视频编码标准的视频码流,所以生成的视频码流可以直接被常用播放器解码播放。

本实施例提供的运动估计装置,根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;根据初始运动矢量,调整目标编码块的初始搜索范围,得到目标搜索范围;获得初始运动矢量对应的编码代价,并根据所获得的编码代价,确定目标编码块对应的目标搜索模板;根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计,获得目标编码块的运动矢量。

可见,本实施例提供的方案,根据已完成编码的编码块的运动矢量选择搜索初始点,并对目标编码块的搜索范围进行调整,使得目标编码块的搜索范围与当前图像的运动剧烈程序相适应,对于运动平稳的图像中的编码块使用较小的搜索范围,可以减少搜索点的个数,提高编码速度,对于运动剧烈的图像中的编码块采用较大的搜索范围,可以提高预测精度。

本实施例所提供的运动估计方法的基本原理是确定搜索初始点的位置并自适应调整搜索范围,选择合理的搜索模板进行搜索,从而减少搜索点计算个数,降低运动估计模块的计算复杂度以节省总体编码时间,因此可以节省非全I帧编码的视频编码时间,同时编码性能损失较小。

具体的,表1表明了本实施例所提供的运动估计方法带来的编码时间节省,表中Y、U、V和YUV分别表示Y、U、V以及YUV合并质量下的码率节省(负值表示节省,正值表示增加);编码器复杂度的计算方式如(1)所示,Δfps表示编码加速,其中FPSanchor表示使用原编码器编码视频序列的帧率fps,FPSproposed表示同一编码器采用本实施例所提供的运动估计方法后的编码视频序列的帧率fps。表中正值表示加速,负值表示减速。由表1可知,本实施例所提供的运动估计方法平均带来29%左右的加速,且几乎不影响编码效率,只有0.5%左右的码率增加。

此外,表2表明了本发明实施例所提供的运动估计方法的时间节省性能,其中,时间节省的计算方式如(2)所示,ΔT表示时间节省,Tanchor表示原编码器编码序列运动估计模块所耗费的时间,Tproposed表示采用本实施例所提供的运动估计方法后的编码器编码序列运动估计模块所耗费的时间。表中负值表示减速,正值表示加速。由表2可知,本实施例所提供的运动估计方法平均带来36%左右的时间节省。

表1

表2

与上述的运动估计方法相对应,本发明实施例还提供了一种运动估计装置。

与图2所示的方法实施例相对应,图4为本发明实施例提供的一种运动估计装置的结构示意图,该装置可以包括:

第一确定模块401,用于根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;

调整模块402,用于根据所述初始运动矢量,调整所述目标编码块的初始搜索范围,得到目标搜索范围;

第二确定模块403,用于获得所述初始运动矢量对应的编码代价,并根据所获得的编码代价确定所述目标编码块对应的目标搜索模板;

运动估计模块404,用于根据所述初始运动矢量、所述目标搜索范围、所述目标搜索模板,进行针对所述目标编码块的运动估计,获得所述目标编码块的运动矢量。

在实际应用中,如图5所示,所述第一确定模块401,可以包括:

构建子模块4011,用于根据已完成编码的编码块的运动矢量,构建所述目标编码块的针对运动矢量的预测候选集合;

第一确定子模块4012,用于按照预设的运动矢量选择顺序,从所述预测候选集合中确定两个中间运动矢量;

第二确定子模块4013,用于确定所述中间运动矢量对应的编码代价,并将编码代价最小的中间运动矢量确定为备选运动矢量;

第三确定子模块4014,用于根据所述备选运动矢量,确定所述目标编码块的初始运动矢量。

在实际应用中,所述构建子模块4011,可以包括:

第一判断单元(图中未示出),用于依次判断所述目标编码块的左下相邻块、左相邻块、右上相邻块、上相邻块、左上相邻块、第一编码块的右下相邻块、所述第一编码块的中心所在块是否存在且预测模式不是帧内预测,其中,所述第一编码块为:所述目标编码块在参考帧中的位置与所述目标编码块在当前待编码帧中的位置相同的编码块;

第一加入单元(图中未示出),用于在第一判断单元判断出某一个块存在且预测模式不是帧内预测,将该块的运动矢量及该块缩放后的运动矢量加入到所述预测候选集合中;

第二加入单元,用于将零向量加入到所述预测候选集合中。

在实际应用中,所述构建子模块4011,还可以包括:

第三加入单元(图中未示出),用于在所述目标编码块所在编码单元存在父编码单元和/或子编码单元时,将所述父编码单元的运动矢量和/或子编码单元的运动矢量加入到所述预测候选集合中。

在实际应用中,所述第一确定子模块4012,可以包括:

第一确定单元(图中未示出),用于在所述预测候选集合中存在第一子集合时,按照第一优先级顺序,从所述第一子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第一子集合由所述左下相邻块对应的第一运动矢量和/或所述左相邻块对应的第二运动矢量确定,所述第一优先级顺序为:所述第一运动矢量的优先级大于所述第二运动矢量的优先级;

第二确定单元(图中未示出),用于在所述预测候选集合中存在第二子集合时,按照第二优先级顺序,从所述第二子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第二子集合由所述右上相邻块对应的第三运动矢量和/或所述上相邻块对应的第四运动矢量和/或所述左上相邻块对应的第五运动矢量确定,所述第二优先级顺序为:所述第三运动矢量的优先级大于所述第四运动矢量的优先级、所述第四运动矢量的优先级大于所述第五运动矢量的优先级;

第二判断单元(图中未示出),用于判断所述中间运动矢量的数量是否等于2;

第三确定单元(图中未示出),用于在所述第二判断单元判断出所述中间运动矢量的数量不等于2的情况下,在所述预测候选集合中存在第三子集合时,按照第三优先级顺序,从所述第三子集合中选择一个运动矢量确定为中间运动矢量,其中,所述第三子集合由所述第一编码块的右下相邻块对应的第六运动矢量和/或所述第一编码块的中心所在块对应的第七运动矢量确定,所述第三优先级顺序为:所述第六运动矢量的优先级大于所述第七运动矢量的优先级;

第三判断单元(图中未示出),用于判断所述中间运动矢量的数量是否等于2;

第四确定单元(图中未示出),用于在所述第三判断单元判断出所述中间运动矢量的数量不等于2的情况下,将所述预测候选集合中的零向量确定为中间运动矢量。

在实际应用中,所述第三确定子模块4014,可以包括:

第四判断单元(图中未示出),用于判断所述目标编码块所在编码单元是否存在父编码单元和/或子编码单元;

第五确定单元(图中未示出),用于在所述第四判断单元判断出所述目标编码块所在编码单元存在父编码单元和/或子编码单元时,确定所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价,并将所述备选运动矢量、所述父编码单元的运动矢量和/或子编码单元的运动矢量对应的编码代价最小的运动矢量确定为初始运动矢量;

第六确定单元(图中未示出),用于在所述第四判断单元判断出所述目标编码块所在编码单元不存在父编码单元和/或子编码单元时,将所述备选运动矢量确定为初始运动矢量。

在实际应用中,所述调整模块402,可以包括:

设置子模块(图中未示出),用于将起始运动矢量设置为预设顺序中第一个运动矢量,其中,所述预设顺序为:左下相邻块的运动矢量、左下相邻块的运动矢量经缩放后的运动矢量、左相邻块的运动矢量、左相邻块的运动矢量经缩放的运动矢量、右上相邻块的运动矢量、右上相邻块的运动矢量经缩放后的运动矢量、上相邻块的运动矢量、上相邻块的运动矢量经缩放后的运动矢量、左上相邻块的运动矢量、左上相邻块的运动矢量经缩放后的运动矢量、第一编码块的右下相邻块的运动矢量、第一编码块的右下相邻块的运动矢量经缩放后的运动矢量、第一编码块的中心所在块的运动矢量、第一编码块的中心所在块的运动矢量经缩放后的运动矢量;

第一判断子模块(图中未示出),用于判断所述起始运动矢量是否为零向量;

计算子模块(图中未示出)用于在所述第一判断子模块判断出所述起始运动矢量不是零向量时,计算所述起始运动矢量和所述初始运动矢量的绝对差值,更新所述起始运动矢量为所述预设顺序中下一个运动矢量,并触发所述第一判断子模块;

调整子模块(图中未示出),用于在所述第一判断子模块判断出所述起始运动矢量是零向量时,统计计算得到的绝对差值的个数K,判断K是否不小于第一预设阈值;若不小于,根据计算得到的绝对差值,调整所述目标编码块的初始搜索范围。

在实际应用中,所述第二确定模块403,可以包括:

第二判断子模块(图中未示出),用于判断所述初始运动矢量的编码代价是否小于第二预设阈值;

第四确定子模块(图中未示出),用于在所述第二判断子模块判断出所述初始运动矢量的编码代价值不小于第二预设阈值时,将初始搜索模板确定为所述目标搜索模板;

第五确定子模块(图中未示出),用于在所述第二判断子模块判断出所述初始运动矢量的编码代价值小于第二预设阈值时,将预设搜索模板确定为所述目标搜索模板。

本实施例提供的运动估计装置,根据已完成编码的编码块的运动矢量,确定目标编码块的初始运动矢量;根据初始运动矢量,调整目标编码块的初始搜索范围,得到目标搜索范围;获得初始运动矢量对应的编码代价,并根据所获得的编码代价,确定目标编码块对应的目标搜索模板;根据初始运动矢量、目标搜索范围、目标搜索模板,进行针对目标编码块的运动估计,获得目标编码块的运动矢量。

可见,本实施例提供的方案,根据已完成编码的编码块的运动矢量选择搜索初始点,并对目标编码块的搜索范围进行调整,使得目标编码块的搜索范围与当前图像的运动剧烈程序相适应,对于运动平稳的图像中的编码块使用较小的搜索范围,可以减少搜索点的个数,提高编码速度,对于运动剧烈的图像中的编码块采用较大的搜索范围,可以提高预测精度。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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