H.264中多参考帧预测技术的优化
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编码的实时实现很有利。
H.264中多参考帧预测技术的优化相关推荐
- 【H.264/AVC视频编解码技术详解】三. H.264简介
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- H.264中的SPamp;amp;SI帧技术简述
H.264中的SP&SI帧技术简述 1 应用背景(详细可见文献[1,2]) 流间切换.随机接入.错误恢复.快进快退.拼接 2 SP/SI帧 ...
- 【十六】 H.266/VVC | VVC中帧间预测技术详细总结 | 所有帧间预测技术代码汇总
前言 帧间预测是影响视频编码性能的关键环节之一,H.266/VVC帧间预测在传统只能应对简单的平移运动的基础上,采用了仿射运动模型,可以描述更加复杂的缩放.旋转等运动.为了更好的发挥合并模式(Me ...
- 【H.264/AVC视频编解码技术详解】二十六、帧间预测编码(4):宏块的帧间预测解码
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】八、 熵编码算法(2):H.264中的熵编码基本方法、指数哥伦布编码
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】十七:帧内预测编码的预测实现方法
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- H.264中IDR帧和I帧区别
IDR(Instantaneous Decoding Refresh)--即时解码刷新. I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...
- H.264/AVC视频编解码技术详解 第一章 视频信息与压缩编码
H.264/AVC视频编解码技术详解系列笔记 是对 H.264/AVC视频编解码技术详解 课程的学习 文章目录 人与世界的交互 视频信号的表示方法 视频压缩编码 视频信息为什么可以被压缩? 视频压缩编 ...
- 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】二. 主流视频编码标准的发展
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
最新文章
- 如何让类对象只在栈(堆)上分配空间?(转)
- python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
- python向上取整_Python 之 向上取整、向下取整以及四舍五入函数
- [SDOI2015]约数个数和
- 《Dotnet9》系列-开源C# Winform控件库1《HZHControls》强力推荐
- linux如何查看桌面环境变量,如何设置和查看Linux系统的环境变量
- es分页和mysql分页_用户logstash同步mysql数据到es中7.4.1版本以后输出的sql日志中没有分页信息...
- Excel 中的日期格式变成时间戳
- 洗点,现金1100G
- 源码解析:修改mysql密码出现错误1045
- php解决mysql主从同步_mysql 主从同步原理
- 32岁了 学python 来的及吗-32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧...
- 卡巴斯基2010 授权文件可以使用一年
- linux富文本软件,CherryTree(技术人员专用富文本笔记软件)
- 批量修改文件名.bat
- POJ 3295 Tautology (模拟法,栈的使用)
- 小白IT:如何快速写出一个前端页面(网页),Python中如何使用前端语言什么是?JavaScript?BOMDOM?Bootstrap??
- oracle导入DMP文件数据
- 百度搜索结果页面的参数 搜索框提示次数(rsv_sug1)
- python开三次方_python 3次方
热门文章
- (八)列表操作2(函数番外篇)
- c#操作Excel表格插入行和列代码
- (详细)华为荣耀8青春 PRA-AL00的usb调试模式在哪里开启的流程
- 计算机系统时间在哪改,win10系统日期时间在哪里修改?win10修改电脑时间的方法...
- windows快捷键之预览窗格
- 中科院阿里云发布11比特云超导量子处理器
- python中json是什么意思_python中json是什么
- com.mysql.jdbc.Connection.isValid(I)Z错误解决办法
- 辞职文案火了,程序员的辞职理由要命不要钱。
- 用显卡加速c语言程序,教程 | 如何在Julia编程中实现GPU加速