支持帧场自适应运动估计的实现方法转让专利

申请号 : CN201110266004.0

文献号 : CN102291581B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋锐李云松魏维贾媛张威李宏伟冯守强

申请人 : 西安电子科技大学

摘要 :

本发明公开了一种支持帧场自适应的运动估计方法,主要解决了现有技术的硬件实现难度大的问题,其实现步骤是:将视频序列划分成N个32行16列像素大小的宏块对,对每个宏块对进行粗略运动估计和精细运动估计的双路设计;进行粗略运动估计时,分别确定帧场模式下宏块对的上下宏块,将每个宏块分成8个子块,对源宏块对和参考宏块对进行横向4∶1下采样,然后确定帧场模式下最佳运动向量类型和最佳匹配位置,并确定宏块对采用的帧场模式;进行精细运动估计时,根据粗略运动估计的结果,依次确定整像素精度、半像素精度和1/4像素精度的最佳匹配位置,从而获得1/4像素精度的运动估计结果。本发明降低了在硬件实现上的难度,提高了H.264视频编码的处理能力。

权利要求 :

1.一种支持帧场自适应运动估计的方法,包括以下步骤:

(1)将视频序列划分成N个32行16列像素大小的宏块对,N由视频序列的大小决定;

(2)对每个宏块对进行粗略运动估计:

2a)在帧模式下,将宏块对分为16行16列像素的上宏块和16行16列像素的下宏块;

在场模式下,将宏块对奇数行组成的16行16列像素记做上宏块,将宏块对偶数行组成的16行16列像素记做下宏块;再将每一个宏块分成8个子块,包括2个16×8的子块,2个8×16的子块和4个8×8的子块;

2b)将当前要估计的宏块对记做源宏块对,将估计源宏块对时用作参考的宏块对记做参考宏块对,分别对源宏块对和参考宏块对进行横向4:1下采样,并计算各运动向量情况下绝对差之和SAD;

2c)根据各运动向量情况下的绝对差之和SAD,分别确定帧场模式下最佳运动向量类型和最佳匹配位置,并确定宏块对采用的帧场模式;

(3)对每个宏块对进行精细运动估计

3a)根据步骤(2)确定的帧场模式下最佳运动向量类型和最佳匹配位置,对于最佳运动向量类型下的每个子块,计算其在零运动向量位置与参考子块的对应像素点的绝对差之和SAD;

3b)根据步骤(2)确定的帧场模式下最佳运动向量类型和最佳匹配位置,以最佳匹配位置为中心建立一个4行8列的搜索窗,对于最佳运动向量类型下的每个子块,计算其在搜索窗内的各个位置与参考子块的对应像素点的绝对差之和SAD;

3c)根据步骤3a)和步骤3b)得到的SAD结果,将最佳匹配位置更新为最小SAD所在的位置;

3d)根据步骤3c)得到的最佳匹配位置,计算以最佳匹配位置为中心的8个半像素位置的SAD,将最佳匹配位置更新为最小SAD所在的位置;

3e)根据步骤3d)得到的最佳匹配位置,计算以最佳匹配位置为中心的8个1/4像素位置的SAD,将最佳匹配位置更新为最小SAD所在的位置,得到1/4像素精度的精细运动估计结果。

2.根据权利要求1所述的运动估计方法,其中步骤2b)所涉及的对源宏块对和参考宏块对进行横向4:1下采样,按如下公式进行:X=clip((A+3B+3C+D)/8)

其中,X为4:1横向下采样的结果,A、B、C、D为宏块对横向的四个相邻位置,clip为四舍五入取整操作。

3.根据权利要求1所述的运动估计方法,其中步骤2b)所涉及的计算各运动向量情

况下的绝对差之和SAD,包括计算1运动向量、2运动向量和4运动向量情况下的SAD,其中计算1运动向量情况下的SAD,是计算横向4:1下采样后的源宏块和参考宏块的对应像素点的绝对差之和SAD,记为SAD1mv;计算2运动向量情况下的SAD,包括对16×8的两个子块和8×16的两个子块的计算:对于16×8的两个子块,分别计算横向4:1下采样后的每个

16×8子块与参考子块的对应像素点的绝对差之和SAD,记为SAD16×8;对于8×16的两个子块,分别计算横向4:1下采样后的每个8×16子块与参考子块的对应像素点的绝对差之和SAD,记为SAD8×16;计算4运动向量情况下的SAD,是计算横向4:1下采样后的8×8子块与参考子块的对应像素点的绝对差之和SAD,记为SAD4mv。

4.根据权利要求3所述的运动估计方法,其中步骤2c)所涉及的确定帧场模式下最佳运动向量类型,按如下公式进行:MV_MODE=(SAD1mv<(ΣSAD16×8+cost2mv))?1MV:(ΣSAD16×8<ΣSAD8×16)?2MV16×8:(ΣSAD8×16+cost2mv<(ΣSAD4mv+cost4mv))?2MV8×16:4MV该公式的语法结构是基于硬件语言Verilog所描述的,其中,MV_MODE为最佳运动向量类型;1MV为1运动向量,2MV16×8为16×8子块下的2运动向量,2MV8×16为8×16子块下的

2运动向量,4MV为8×8子块下4运动向量,cost2mv为2运动向量下的代价值,其典型值为

64;cost4mv为4运动向量下的代价值,其典型值为128;

分类时,首先比较SAD1mv和(ΣSAD16×8+cost2mv),如果SAD1mv<(ΣSAD16×8+cost2mv),则MV_MODE为1MV;否则,比较ΣSAD16×8和ΣSAD8×16,如果ΣSAD16×8<ΣSAD8×16,则MV_MODE为

2MV16×8;否则,比较(ΣSAD8×16+cost2mv)和(ΣSAD4mv+cost4mv),如果(ΣSAD8×16+cost2mv)<(ΣSAD4mv+cost4mv),则MV_MODE为2MV16×8;否则,MV_MODE为4MV。

5.根据权利要求1所述的运动估计方法,其中步骤2c)所涉及的确定帧场模式下最佳匹配位置,按如下步骤进行:首先,将子块在搜索范围内第一次进行SAD运算的位置,标记为该子块的最佳匹配位置,并将该最佳匹配位置的SAD标记为最小SAD;

然后,计算该子块在下一个运算位置的SAD,如果该位置的SAD小于标记的最小SAD,则将最佳匹配位置更新为该位置,并将最小SAD更新为该位置的SAD;依次遍历该子块搜索范围内的所有位置,即可确定帧场模式每个子块的最佳匹配位置。

6.根据权利要求1所述的运动估计方法,其中步骤2c)涉及的确定宏块对采用的帧场模式,按如下公式进行:MBAFF_MODE = ((SADframe_top+SADframe_bot) > (SADfield_top+SADfield_bot))?field_mode:frame_mode该公式的语法结构是基于硬件语言Verilog所描述的,其中,MBAFF_MODE为宏块对采用的模式;frame_mode为帧模式,field_mode为场模式;SADframe_top为帧模式时上宏块的SAD,SADframe_bot为帧模式时下宏块的SAD;SADfield_top为场模式时上宏块的SAD,SADfield_bot为场模式时下宏块的SAD;

比 较 (SADframe_top+SADframe_bot) 和(SADfield_top+SADfield_bot) 的 大 小,如 果 (SADframe_top+SADframe_bot)>(SADfield_top+SADfield_bot),则 MBA_FF为field_mode;否 则,MBAFF_MODE 为frame_mode。

说明书 :

支持帧场自适应运动估计的实现方法

技术领域

[0001] 本发明涉及视频图像处理领域,尤其涉及一种视频编码的实现方法,可用于H.264视频编码系统的视频压缩处理。

背景技术

[0002] 未来社会是信息化的社会,数字化的信息,尤其是数字化后的视频和音频信息,有一系列优点,如直观性,确切性,高效性,广泛性等,但是信息量太大,给信息的存储和传输造成很大的困难,成为阻碍人类获取和使用有效信息的瓶颈之一。要使视频信息得到有效的应用,必须解决编码压缩率和解码图像质量的问题。因此,研究和开发新型有效的多媒体数据压缩编码方法,以压缩的形式存储和传输这些数据将是最好的选择。在视频编码标准H.264中,如图1所示,首先对当前宏块进行帧内预测或者帧间预测,选择出最佳的预测模式,由当前宏块和最佳模式得到的预测宏块产生残差宏块,对其进行变换、量化;对量化系数进行熵编码;将编码后的结果递交到网络层进行传输;同时为了保证编解码的一致性,对量化系数进行反量化、反变换、重建、去块效应滤波,将处理结果用作后续图像的编码参考。
[0003] H.264的实际应用中,主要包括运动估计、宏块编码、熵编码和去块效应滤波等几个模块。针对运动估计模块,目前的搜索算法主要包括全搜索算法以及很多基于块匹配的快速搜索算法,其中基于块匹配的快速搜索算法的主要有:金字塔型搜索法,菱形搜索法和三步搜索法等。全搜索算法需要读取大量的数据,而基于块匹配的快速算法通过对搜索区域内的部分点进行搜索得到近似最优的运动向量,从而降低运算量,增加运算速度,但是这些快速搜索算法多是基于软件提出的,在硬件实现过程中要面临各种各样的难度,例如不规律的内存读写以及较低的资源利用率等。

发明内容

[0004] 本发明的目的在于针对上述已有技术的不足,提供一种支持帧场自适应运动估计的实现方法,通过粗略运动估计和精细运动估计的双路设计,降低在硬件实现上的难度,提高H.264视频编码的实时处理能力。
[0005] 一、术语说明
[0006] 宏块:图像被分为若干个16×16的块,每一个块称为一个宏块。
[0007] 量化系数:像素进行量化后的值。
[0008] SAD:Sum of Absolute Differences,绝对差之和。
[0009] 运动向量:当前宏块相对参考宏块或当前子块相对参考子块的运动矢量。
[0010] 二、实现方案
[0011] 实现本发明目的的技术方案包括以下步骤:
[0012] (1)将视频序列划分成N个32行16列像素大小的宏块对,N由视频序列的大小决定;
[0013] (2)对每个宏块对进行粗略运动估计:
[0014] 2a)在帧模式下,将宏块对分为16行16列像素的上宏块和16行16列像素的下宏块;在场模式下,将宏块对奇数行组成的16行16列像素记做上宏块,将宏块对偶数行组成的16行16列像素记做下宏块;再将每一个宏块分成8个子块;
[0015] 2b)将当前要估计的宏块对记做源宏块对,将估计源宏块对时用作参考的宏块对记做参考宏块对,分别对源宏块对和参考宏块对进行横向4∶1下采样,并计算各运动向量情况下绝对差之和SAD;
[0016] 2c)根据各运动向量情况下的绝对差之和SAD,分别确定帧场模式下最佳运动向量类型和最佳匹配位置,并确定宏块对采用的帧场模式;
[0017] (3)对每个宏块对进行精细运动估计
[0018] 3a)根据步骤(2)确定的帧场模式下最佳运动向量类型和最佳匹配位置,对于最佳运动向量类型下的每个子块,计算其在零运动向量位置与参考子块的对应像素点的绝对差之和SAD;
[0019] 3b)根据步骤(2)确定的帧场模式下最佳运动向量类型和最佳匹配位置,以最佳匹配位置为中心建立一个4行8列的搜索窗,对于最佳运动向量类型下的每个子块,计算其在搜索窗内的各个位置与参考子块的对应像素点的绝对差之和SAD;
[0020] 3c)根据步骤3a)和步骤3b)得到的SAD结果,将最佳匹配位置更新为最小SAD所在的位置;
[0021] 3d)根据步骤3c)得到的最佳匹配位置,计算以最佳匹配位置为中心的8个半像素位置的SAD,将最佳匹配位置更新为最小SAD所在的位置;
[0022] 3e)根据步骤3d)得到的最佳匹配位置,计算以最佳匹配位置为中心的8个1/4像素位置的SAD,将最佳匹配位置更新为最小SAD所在的位置,得到1/4像素精度的精细运动估计结果。
[0023] 本发明与现有技术对比,具有以下优点:
[0024] 在运动估计过程中,由于现有的全搜索算法需要读取大量的数据,而基于块匹配的快速搜索算法则需要进行大量不规律的读写,这些都不便于硬件实现;而本发明由于通过横向4∶1下采样的方法使读写的数据量减少了4倍;同时通过粗略运动估计和精细运动估计的双路设计,在搜索范围内按照顺序搜索的方式,使运算单元可以快速地进行流水操作,易于硬件实现。

附图说明

[0025] 本发明的特征及优点通过以下附图和实例进一步说明:
[0026] 图1是H.264标准编码系统框图;
[0027] 图2是本发明的运动估计总流程图;
[0028] 图3是本发明的粗略运动估计子流程图;
[0029] 图4是宏块以及各个子块的结构示意图;
[0030] 图5是横向4∶1下采样的示意图;
[0031] 图6是本发明的精细运动估计子流程图;
[0032] 图7是本发明的精确运动估计的搜索窗;
[0033] 图8是半像素精度的搜索位置示意图;
[0034] 图9是1/4像素精度的搜索位置示意图。

具体实施方式

[0035] 下面结合附图对本发明做进一步的描述:
[0036] 本发明实现的是H.264标准编码系统中的运动估计部分。在H.264标准编码系统中,首先进行帧内模式和帧间模式的选择,由当前宏块和预测宏块产生残差宏块,对其进行变换、量化;对量化系数进行熵编码;同时为了保证编解码的一致性,对量化系数进行反量化、反变换、重建和去块效应滤波,将得到的结果用作后续图像的编码参考;H.264标准编码系统的结构如图1所示。
[0037] 参照图2,本发明的实现步骤如下:
[0038] 步骤1,将视频序列划分成N个32行16列像素大小的宏块对,N由视频序列的大小决定,宏块对的结构记为16×32。
[0039] 步骤2,以宏块对作为基本运动估计单元,进行粗略运动估计。
[0040] 参照图3,本步骤的具体实现如下:
[0041] 2.1)在帧模式下,将宏块对分为16行16列像素的上宏块和16行16列像素的下宏块;在场模式下,将宏块对奇数行组成的16行16列像素记做上宏块,将宏块对偶数行组成的16行16列像素记做下宏块;将每个宏块分成8个子块,包括2个16×8的子块,2个8×16的子块和4个8×8的子块,上宏块、下宏块以及各个子块的结构如图4所示;其中,上宏块的结构如图4(a)所示,下宏块的结构如图4(b)所示,16×8子块的结构如图4(c)所示,8×16子块的结构如图4(d)所示,8×8子块的结构如图4(e)所示;
[0042] 2.2)将当前要估计的宏块对记做源宏块对,将估计源宏块对时用作参考的宏块对记做参考宏块对;从外存中分别读取源宏块对数据和参考宏块对数据,按照如下公式对源宏块对和参考宏块对进行横向4∶1下采样:
[0043] X=clip((A+3B+3C+D)/8)
[0044] 其中,X为4∶1横向下采样的结果,A、B、C、D为宏块对横向的四个相邻位置,clip为四舍五入取整操作;8×8大小的子块经过横向4∶1下采样后的结构如图5所示;
[0045] 2.3)计算横向4∶1下采样后的源宏块和参考宏块的对应像素点的绝对差之和SAD,记为SAD1mv,从而得到1运动向量情况下的SAD;
[0046] 2.4)分别计算横向4∶1下采样后的每个16×8子块与参考子块的对应像素点的绝对差之和SAD,记为SAD16×8,从而得到2运动向量情况下16×8子块的SAD;
[0047] 2.5)分别计算横向4∶1下采样后的每个8×16子块与参考子块的对应像素点的绝对差之和SAD,记为SAD8×16,从而得到2运动向量情况下8×16子块的SAD;
[0048] 2.6)分别计算横向4∶1下采样后的每个8×8子块与参考子块的对应像素点的绝对差之和SAD,记为SAD4mv,从而得到4运动向量下的SAD;
[0049] 2.7)根据各运动向量情况下的绝对差之和SAD,按照如下公式确定帧场模式下最佳运动向量类型:
[0050] MV_MODE=(SAD1mv<(∑SAD16×8+cost2mv))?1MV:(∑SAD16×8<∑SAD8×16)?2MV16×8:
[0051] (∑SAD8×16+cost2mv<(∑SAD4mv+cost4mv))?2MV8×16:4MV
[0052] 该公式的语法结构是基于硬件语言Verilog所描述的,其中,MV_MODE为最佳运动向量类型;1MV为1运动向量,2MV16×8为16×8子块下的2运动向量,2MV8×16为8×16子块下的2运动向量,4MV为8×8子块下4运动向量,cost2mv为2运动向量下的代价值,其典型值为64;cost4mv为4运动向量下的代价值,其典型值为128;
[0053] 分 类 时, 首 先 比 较 SAD1mv 和 ( ∑ SAD16×8+cost2mv), 如 果 SAD1mv<(∑SAD16×8+cost2mv),则MV_MODE为1MV;否则,比较∑SAD16×8和∑SAD8×16,如果∑SAD16×8<∑SAD8×16,则MV_MODE为2MV16×8;否则,比较(∑SAD8×16+cost2mv)和(∑SAD4mv+cost4mv),如果(∑SAD8×16+cost2mv)<(∑SAD4mv+cost4mv),则MV_MODE为2MV16×8;否则,MV_MODE为4MV;
[0054] 2.8)按照如下步骤确定帧场模式下的最佳匹配位置:
[0055] 首先,将子块在搜索范围内第一次进行SAD运算的位置,标记为该子块的最佳匹配位置,并将该最佳匹配位置的SAD标记为最小SAD;
[0056] 然后,计算该子块在下一个运算位置的SAD,如果该位置的SAD小于标记的最小SAD,则将最佳匹配位置更新为该位置,并将最小SAD更新为该位置的SAD;依次遍历该子块搜索范围内的所有位置,即可确定帧场模式下每个子块的最佳匹配位置;
[0057] 2.9)按照如下公式,确定宏块对采用的帧场模式:
[0058] MBAFF_MODE=((SADframe_top+SADframe_bot)>(SADfield_top+SADfield_bot))?[0059] field_mode:frame_mode
[0060] 该公式的语法结构是基于硬件语言Verilog所描述的,其中,MBAFF_MODE为宏块对采用的模式;frame_mode为帧模式,field_mode为场模式;SADframe_top为帧模式时上宏块的SAD,SADframe_bot为帧模式时下宏块的SAD;SADfield_top为场模式时上宏块的SAD,SADfield_bot为场模式时下宏块的SAD;
[0061] 比较(SADframe_top+SADframe_bot)和(SADfield_top+SADfield_bot)的大小,如果(SADframe_top+SADframe_bot)>(SADfield_top+SADfield_bot),则MBAFF_MODE为field_mode;否则,MBAFF_MODE为frame_mode。
[0062] 步骤3,以宏块对作为基本运动估计单元,进行精细运动估计。
[0063] 参照图6,本步骤的具体实现如下:
[0064] 3.1)在通常的视频序列中,一个宏块以很大的概率静止,根据粗略运动估计确定的帧场模式下最佳运动向量类型和最佳匹配位置,对于最佳运动向量类型下的每个子块,计算其在零运动向量位置与参考子块的对应像素点的绝对差之和SAD;
[0065] 3.2)根据粗略运动估计确定的帧场模式下最佳运动向量类型和最佳匹配位置,以粗略运动估计的最佳匹配位置为中心建立一个4行8列的搜索窗,搜索窗的结构如图7所示,对于最佳运动向量类型下的每个子块,计算其在搜索窗内的各个位置与参考子块的对应像素点的绝对差之和SAD;
[0066] 3.3)对于最佳运动向量类型下的每个子块,根据步骤3.1)和步骤3.2),确定整像素精度的最佳匹配位置:
[0067] 首先,将零运动向量位置标记为整像素精度的最佳匹配位置;
[0068] 然后,遍历搜索窗内的32个位置,将SAD最小的位置标记为搜索窗内的最小SAD位置,并将最小SAD位置的SAD与零运动向量位置的SAD进行比较,如果最小SAD位置的SAD小于零运动向量位置的SAD,则将整像素精度的最佳匹配位置更新为搜索窗内的最小SAD位置;否则不更新;
[0069] 3.4)根据步骤3.3)得到的整像素精度的最佳匹配位置,计算以最佳匹配位置为中心的8个半像素位置的SAD,以最佳匹配位置为中心的8个半像素位置如图8所示,确定半像素精度的最佳匹配位置:
[0070] 首先,将步骤3.3)得到的整像素精度的最佳匹配位置标记为半像素精度的最佳匹配位置;
[0071] 然后,遍历以最佳匹配位置为中心的8个半像素位置,将SAD最小的位置标记为半像素精度的最小SAD位置,并将最小SAD位置的SAD与整像素精度的最佳匹配位置的SAD进行比较,如果最小SAD位置的SAD小于整像素精度的最佳匹配位置的SAD,则将半像素精度的最佳匹配位置更新为半像素精度的最小SAD位置;否则不更新;
[0072] 3.5)根据步骤3.4)得到的半像素精度的最佳匹配位置,计算以半像素精度的最佳匹配位置为中心的8个1/4像素位置的SAD,以半像素精度的最佳匹配位置为中心的8个1/4像素位置如图9所示,确定1/4像素精度的最佳匹配位置:
[0073] 首先,将步骤3.4)得到的半像素精度的最佳匹配位置标记为1/4像素精度的最佳匹配位置;
[0074] 然后,遍历以半像素精度的最佳匹配位置为中心的8个1/4像素位置,将SAD最小的位置标记为1/4像素精度的最小SAD位置,并将最小SAD位置的SAD与半像素精度的最佳匹配位置的SAD进行比较,如果最小SAD位置的SAD小于半像素精度的最佳匹配位置的SAD,则将1/4像素精度的最佳匹配位置更新为1/4像素的最小SAD位置;否则不更新;
[0075] 通过以上粗略运动估计和精细运动估计的各个步骤,即完成了粗略运动估计和精细运动估计的双路设计,实现了支持帧场自适应的运动估计。
[0076] 本发明提供的支持帧场自适应运动估计的实现方法,通过粗略运动估计和精细运动估计的双路设计,加速了宏块的运动估计速度,降低了在硬件实现上的难度,提高了H.264视频编码的实时处理能力。