H.264中多参考帧猜测技术的优化
来源:电子技术应用 作者: 董海燕 张其善
摘要:提出了一个低复杂度的快速多参考帧选择算法。模拟结果表明本算法在保持率失真性能的前提下可以大大减少多参考帧猜测的计算复杂度。
要害词:H.264运动估计 多参考帧猜测 运动搜索
运动估计是去除视频序列相邻帧之间冗余信息的有效方法,对整个视频编码效果有重要的影响。由两大国际标准化组织(ISO/IEC的MPEG和ITU-T的VCEG)共同制定的最新的国际视频编码标准H.264/AVC仍然采用成熟的基于块的混合编码框架,但由于引入了很多新的编码技术,如多参考帧猜测运动估计,从而可以提供更高的编码效率。
以前的视频编码标准如MPEG-4和H.263等都只支持一个参考帧猜测。H.264不同于以前的标准,采用了多参考帧猜测技术,使得运动搜索范围从原来的一个参考帧扩展为多个解码后的参考帧,这样通常能找到更精确的匹配,从而有助于获得更高的编码效率。但是多参考帧猜测技术同时也存在一些缺点,对存储空间和计算能力要求更高。
H.264中引入的拉格朗日率失真最优策略采用穷尽搜索在所有候选参考帧中选择率失真成本最低的参考帧。拉格朗日率失真最优模式选择问题可表述为:
其中m=(mx,my)T表示某个运动矢量,REF表示某个参考帧,Jmotion(s,c,m,REF\f1λMotion)表示在运动矢量m和参考帧REF下的率失真成本,s为原始的视频信号,c(m,REF)为在运动矢量m和参考帧REF下的重构视频信号,λmotion为拉格朗日乘子,R(m-P)表示编码运动矢量m的比特数,R(REF)表示编码参考帧REF的比特数,SAD(s,c,m,REF)(Sum Absolute Difference)为原始信号和重构信号之间的绝对差和,采用(2)式计算:
其中B1,B2表示块的水平和垂直像表数,可以取值16,8或4。
设m表示运动矢量搜索范围,若只答应一个参考帧进行猜测,那么每个宏块需要搜索(2×m+1)2个候选点;若答应N个参考帧进行猜测,那么每个宏块总共有N×2×m+1)2个候选搜索点。这意味着,运动搜索的计算量、编码时间随着猜测中总参考帧数成倍增长。答应的参考帧数越多,运动搜索的计算量、编码时间就越大。
为了减少上述多参考帧猜测技术中存在的问题,本文利用相邻帧间很高的相关性提出了一种低复杂度的快速多参考帧选择算法。
1 快速多参考帧猜测算法
在H.264运动估计中,多参考帧运动搜索过程在7种不同的块大小和外形条件下进行,执照从16×16到4×4的顺序依次进行。对于每一个块编码大小,需要在所有可能的参考帧中找出率失真成本最低的参考帧和其相应的运动矢量。多参考帧运动搜索过程首先从概率较高的参考帧REF(0)开始,一直进行到距离当前编码帧最远的参考帧REF(N-1).
由于视频序列相邻帧间存在很强的时域相关性,一般情况下,最优的匹配通常位于与当前编码帧紧密相邻的参考帧,本文采用REF(0)表示这一参考帧;其余的参考帧(在本文中表示为REF(i),i=1,2,…,N-1,设答应的最大参考帧数为N)被选中的概率远远小于第一个参考帧REF(0)。
为了进一步了解不同参考帧在实际视频序列中被采纳的情况,本文选择了几个典型的视频测试序列,并利用拉格朗日率失真最优搜索策略,在不同参考帧数条件下统计不同参考帧的被选中概率,实验数据如表1所示。从表1可以看出,在所有参考帧,REF(0)成为最优参考帧的概率最高,概率高达88.67%,而其余所有参考帧被选中的概率远远小于REF(0)。
表1 参考帧概率统计结果
测试序列
总参考帧数
REF(0)概率
REF(i)概率,(i=1,...,N)
Foreman_qcif.yuv
5
87.20
12.80
Silent_qcif.yuv
5
94.38
5.62
Mobile_cif.yuv
5
67.64
32.36
Akiyo_cif.yuv
10
96.12
3.88
coastg_cif.yuv
10
96.09
3.91
Stefan_cif.yuv
10
90.61
9.39
Average
88.67
11.33
从上述分析可知,参考帧REF(0)成为最终猜测帧的概率最高,在这一参考帧中获得的运动搜索结果对整个编码性能有着重要的影响。因此,可以认为在REF(0)中的搜索范围越大,对整个编码性能的改善也会越大。相比较,由于其余的参考帧被选 中的概率很低,而且每增加一个参考帧就会增加很大一部分计算量,所以在一定条件下合理地减少在这些参考帧中运动搜索的计算量,
对整个编码性能不会产生显著影响。由于相邻帧间存在很强的进域相关性,前一个参考帧中运动搜索后得到的运动信息可以用来猜测下一个参考帧的搜索中心。根据运动矢量的中心偏置定理,最优的运动矢量通常位于搜索中心四周的小范围里,利用螺旋搜索顺序,只需搜索这一小部分区域。
减少多参考帧猜测计算量的思路如图1所示。在最重要的参考帧REF(0)中,搜索范围较大以保证取得较高的猜测精度;而在其余不很重要的参考帧中,可以选择较小的搜索范围,同时利用前一帧已得到的运动信息猜测下一帧的搜索中心。这样既能减少计算量,同时又不会显著影响整个编码性能。
本文提出了一种减少多参考帧猜测计算量的快速算法。本算法不仅利用了运动矢量的空域相关性来猜测第一个参考帧REF(0)的搜索中心,即利用当前宏块四周的三个空域相邻块的中值运动矢量来猜测REF(0)的搜索中心;而且利用了运动矢量的时域相关性,即利用前一帧REF(i-1)所得到的运动信息对下一个参考帧REF(i)的搜索中心进行修正。由于相邻 帧间存在很高的时域相关性,下一帧的最优运动矢量很可能就位于修正后的搜索中心附件,只需对搜索中心四周的很少一部分候选点进行匹配运算。这样就省略了很大一部分运算量。
2 模拟结果和分析
为了测试本文算法的性能,本文采用H.264参考软件JM7.0作为实验平台。实验参数设置如下:6个典型的视频测试序列(Ailent、Mobile、Foreman、Template、Bus和Suzi)、CIF(352×288)或QCIF(176×144)图像格式,每个序列150帧,帧率为30f/s,运动矢量搜索范围为16,量化参数为32,采用Hadamard transform,GOP结构为IPPP。
表2列出了本文提出的算法与原始的采用穷尽搜索的拉格朗日率失真最优模式选择方法的比较结果。在表2中,ΔPSNR表示平均峰值信噪比(PSNR)下降值,单位为Db, Δbits表示平均码率增长百分数,Δtime表示运动估计编码时间的减少百分数。Δtime和Δbits分别采用式(3)和式(4)得到:
其中Toriginal和Borigind分别表示采用原始方法时所用的运动估计编码时间和总比特数;TPRoposed和Bproposed分别表示采用本文提出的方法时所用的运动估计编码时间和总比特数。
表2 实验结果比较
测试序列
2个参考帧
5个参考帧
ΔPSNR
Δbits
Δtime
ΔPSNR
Δbits
Δtime
Silent_quif.yuv
-0.022
0.16
6.67
-0.017
0.35
7.66
Mobile_qcif.yuv
0.004
-0.22
5.57
-0.133
2.87
22.97
Foreman_cif.yuv
-0.038
0.43
8.05
-0.099
1.70
11.82
Football_qcif.yuv
-0.016
9.22
8.32
-0.031
0.68
21.74
Template_cif.yuv
0.003
0.28
4.52
-0.048
0.95
16.50
Bus_qcif.yuv
-0.064
2.89
6.03
-0.166
3.96
14.21
Suzi_quif.yuv
0.017
2.32
6.94
-0.043
0.38
11.39
Average
-0.017
2.15
6.60
-0.077
1.56
15.18
从表2中的实验数据可以看出,与原始的采用穷尽搜索的拉格朗日率失真最优模式选择方法相比,本文提出的算法可以使运动估计编码时间平均减少15.18%,同时平均PSNR仅仅下降0.077dB,码率增长仅仅1.56%(5个参考帧情况下)。此外,对比不同参考帧数的实验结果,很轻易发现答应的参考帧数越多,节省的编码时间就越多。
模拟结果表明本文提出的算法可以节省H.264多参考帧运动猜测的计算复杂度,同时对率失真性能的影响很小。这对H.264编码的实时实现很有利。