您当前的位置:首页 > 精选问答 > 内容

确定最佳阈值的方法,基于通过阈值预判方法进行宏块选择

确定最佳阈值的方法,基于通过阈值预判方法进行宏块选择

1导言

在H.264文章编码中,一个1616的宏块(MB)可以分为1616、168、816和88进行运动估计,88可以进一步分为84、48和44子块。这样,每个细分模块寻找更精确的匹配块,可以增加预测精度,提高压缩比。然而,由于每个分类都需要运动估计,这样做的直接成本是巨大的计算量。

为了解决多模式预测带来的计算复杂度增加的问题,近年来出现的帧间模式选择算法得到了深入研究,利用阈值提前截止的模式选择思想得到了广泛应用,以较少的性能损失为代价降低了计算复杂度。比如文献中提出,如果发现1616模式适用,则直接跳过168和816的模式检查,否则进行全搜索;文献提出了使用多级阈值和根据QP改变阈值的方法。本文的研究也是基于宏块选择的阈值预测方法。

快速帧间模式选择算法

2.1使用自适应阈值算法的帧间模式选择

使用阈值进行预测,确实可以在文章质量下降可以忽略不计的情况下,尽可能地降低编码复杂度,但上述方法都有一定的局限性。文献中提出的算法只考虑了三种模式,很多情况下仍然使用全搜索。虽然文献提出了可变阈值,但其阈值只随着QP的变化而变化,没有考虑不同文章的特点。因为不同的文章序列有不同的特征,即使是同一文章序列中的不同帧也有不同的特征,影响阈值的因素有很多。基于上述观点,本文提出一种统计分类方法,对帧间预测模式进行分类,并选择自适应阈值来选择宏块模式。

一般情况下,1616模式的利用率最高,必须计算其SAD(绝对差和)值,因此可以建立1616模式的SAD值(简称sad16)与最终选择的模式之间的关系,这是一个标准的模式分类问题。通过文章中相邻帧之间的时间相关性和上一帧模式对应的sad16的分布,训练得到下一帧的阈值,从而选择下一帧的宏块模式。具体方法如下:

1)分类

首先,H.264的帧间模式分为两类:BSM(BigSize Mode),包括1616、168和816模式;SSM(small size Mode),包括88、84、48和44模式。通过对一些CIF格式的测试文章序列的统计,可以发现BSM的概率普遍大于SSM(见表1),而且如上所述,SSM的计算量更大,因此可以在BSM和SSM之间设置一个阈值T,这个阈值T代表模式预测精度的可接受程度。如果小于阈值t,则宏块仅选择BSM;如果它大于阈值t,则宏块计算两种模式。

2)统计

分别计算了两种模式下的sad16,发现sad16的值一般小于8 000。为了便于统计,将计算出的sad16值左移7位,即除以128,sad16分布在64个值区间。根据原有的模式选择算法,选择一帧中的每个宏块,记录其对应的sad16值,从而统计出该帧中每种模式对应的不同sad16区间的宏块个数的分布。因为SSM的值比较小,为了便于观察,统计结果乘以10。公式如下

其中:k为sad16的64个值区间,取值为[0,63];Sad16k表示Sad16的值在区间k内;如果宏块判断为BSM模式,nBSM=1,NSSM=0;如果宏块被判断为SSM模式,nSSM=1,nBSM=0。图1和图2分别是两个代表性CIF序列,foot-ball和foreman的统计分布。

从图1和图2的统计结果可以看出,BSM模式下的宏块占大多数,对应的sad16主要分布在较小的值区,也有存在于较大的值区,但较少;而SSM模式的宏块数量较少,对应的sad16主要分布在大值区域,但数量较少(图1和图2中SSM模式已经乘以10)。通过其他测试序列可以得到相同的结论。因此,通过取阈值t,可以判断当只计算sad16时,该宏块是否可以直接判定为BSM模式。当sad16T时,计算BSM模式和SSM模式。从图1和图2中还可以看出,任何两个相邻帧的分布都是非常相似的,无论是剧烈运动的足球序列还是平缓运动的福尔曼序列,因此可以根据序列的两个相邻帧之间的时间相关性,利用前一帧的分布来预测下一帧的阈值。

3)误判率

该算法节省了大量计算量,文章质量几乎没有下降,代价是SSM模式下的一些宏块被判断为BSM,损失了一些压缩率。如图3所示,当阈值为t时,阴影部分应该是SSM,但由于sad16在阈值t的左侧,所以判断为BSM,阴影部分虽然属于误判部分,但由于在阈值的左侧,属于sad16相对较小的区域,所以最终sad变化不大,压缩损失也不大。那么选择阈值的准则是:使BSM模式尽可能在阈值T的左边,以减少决策时间;使SSM模式尽可能在阈值的右边,以减少压缩率的损失。

2.2 4自适应阈值选择方法

基于上面分析的阈值选择标准,根据上一帧的统计结果来设置下一帧的阈值有很多种方法。本文初步提出了四种阈值计算方法:

1)最小值阈值(MVT)

这种方法取BSM曲线的最大sad16和SSM曲线的最小sad16,然后取较小的一个作为阈值,如图4所示。

阈值计算公式为

MIN(sad16,SSM)一般是取SSM时sad16的最小值,而为了避免某些帧不存在SSM的情况,选择MAX(sad16,BSM)进行比较,取最小值。因为Min (SSM,SAD16)总是在增加,而Max (BSM,SAD16)本身的值就很大,我们可以把它们乘以一个小于1的比例因子来控制它们的大小。修订后的阈值计算公式为

其中:1, 2 (0,1)为修正系数,可取 1=1/2, 2=3/4。

2)面积百分比阈值(APT)

该方法计算BSM曲线的总面积,以总面积的%面积对应的sad16为阈值,如图5所示。

阈值计算公式为

公式中,(0,100)为面积百分比因子,=75较好。

3)最高点阈值(HPT)

这种方法以BSM曲线最高点对应的sad16为阈值,如图6所示。

阈值计算公式为

4)衰减因子阈值(AFT)。

该方法取BSM曲线中的最高点,越过最高点后,取该高度的(1-)高度对应的sad16作为阈值,如图7所示。

阈值计算公式为

公式中, (0,1)为衰减因子,=0.75更好,可以选择TAFT>THPT。

本文只实验了四种计算阈值的方法。利用本文2.1中得到的统计图和模式分类思想,也可以用其他计算方法得到可用阈值。

2.3算法流程

根据上一级宏块的步骤4中记录的每个宏块的信息,按照本文描述的方法计算本帧帧间模式选择所需的阈值t,并利用t对本帧中的每个宏块进行分类,具体步骤如下:

1)以1616、168和816为备选模式,计算sad(1616)、sad(168)和sad(816),取最小值为sadmin;

2)如果萨德明

3)取1616,168,816,88(其中88包括子块8 4,48,44)作为备选模式,计算sad(88),与之前计算的sad(1616),SAD (16 4)进行比较。

4)结束宏块的模式选择,记录宏块的相关信息,用于计算下一帧的阈值。

3模拟结果

模拟条件:首先用MPEG-2编码器对mobile、football、bus、news、table、foreman六个CIF(352288)序列的前100帧进行编码,参数设置为N=12,M=3,码率为6 mbit/s,得到源文章。转码过程参照MPEG-2解码器和T264编码器实现。帧速率为30 f/s,OP为30,GoP为200。实验平台为英特尔P4 2.0 GHz,内存为512 Mbyte,操作系统为Windows XP。采用自适应阈值算法,阈值为最小阈值法,简称ATH_MVT,其他简称类似。通过实验得到了最佳的经验因子:ATH APT算法中的=75,ATH AFT算法中的=0.75。仿真结果如表2所示(给出了三个典型序列:细节更多的移动,运动更激烈的足球,稳定性更强的新闻,其他序列省略)。

根据模拟结果:

ATH-MVT方法在减少搜索时间和编码时间方面表现一般。除运动激烈的足球序列外,其搜索时间减少38%以上,编码时间减少26%以上。该方法PSNR降低在0.01dB以内,码率增加在0.39%以内,性能损失小。

ATH_APT方法在减少搜索时间和编码时间方面有很好的表现,其搜索时间大多减少45%以上,编码时间大多减少30%以上。值得一提的是,对于动作相对激烈的足球序列,比其他方法更省时。在这种方法中,PSNR降低了0.01 dB以内,码率增加了1.1%以内,导致性能略有损失。

ATH_HPT方法在减少搜索时间和编码时间方面是所有序列中最差的,最小的减少搜索时间约7%,编码时间约5%。该方法文章质量最好,PSNR值不低于原算法,码率增加在0.47%以内,性能损失小。

ATH_AFT方法在减少搜索时间和编码时间方面具有最好的性能。除足球序列外,其搜索时间减少50%以上,编码时间减少30%以上。该方法的文章质量较好,PSNR值与原算法基本相当,码率增加在0.15%以内,性能损失很小。

图3中的阴影部分是SSM的误判部分,使用了公式。

将自适应阈值算法确定的SSM数与原算法确定的SSM数进行比较,误判率如表3所示(仍然只列出三个典型序列)。其中TH_HPT(原算法采用最高点阈值法)的误判率相对较小,其他三种方法的误判率相对较大,但最大不超过30%。

综合考虑:TH_MVT各方面表现比较平庸;TH_HPT虽然误判率较小,但节省的搜索时间和编码时间很少,不实用。TH_APT更适合文章运动剧烈,性能损失不严格的情况;TH_AFT方法得到的阈值总体效果最好,可以使文章编码在保持良好性能的同时节省编码时间,是四种方法中对一般序列较好的方法。

4摘要

基于相邻帧之间的时间相关性和模式识别中的分类统计方法,本文提出了一种H.264编码中帧间模式选择的算法,并给出了四种计算阈值的方法。在几个测试序列上的实验表明,与原算法相比,本文提出的算法可以显著节省编码时间,性能下降可以忽略不计,其中TH_AFT的阈值选取方法对一般序列的效果最好。本文的算法还可以进一步扩展,如增加多级阈值,设计更好的阈值计算方法。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 什么是移动互联网(关于什么是移动互联网的介绍)

下一篇: 液晶电视谁家的色彩最好(哪种的液晶电视色彩效果好啊)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号