H.264码率控制算法研究及JM相应代码分析(一)

这是之前我们学校张远老师留的课程作业,要求个人整理分析H.264码率控制算法及JM相应代码,个人感觉自己做的还不错,所以发出来给大家分享一下。鉴于公式什么的太多了,我这里就直接从文档里截图了。文末包含了pdf文件的下载链接。

要明白码率控制算法,首先要理解率失真理论,定义如下

H.264码率控制算法研究及JM相应代码分析(一)_第1张图片

而要实现这一目标的基本方法有两个:拉格朗日乘子法和动态规划方法

H.264码率控制算法研究及JM相应代码分析(一)_第2张图片

H.264码率控制算法研究及JM相应代码分析(一)_第3张图片

所以最后无论哪种方法,综合考虑起来都只能得到局部最优解。目前看来一般还是用的拉格朗日乘子法。

下面就分别看一下对于前面提到的三大编码参数是如何做出选择来实现RDO 的,首先需要注意的是,视频编码器的整体比特率主要由编码模式选择、运动矢量和量化步长决定,失真度则主要由量化参数决定。

H.264码率控制算法研究及JM相应代码分析(一)_第4张图片

H.264码率控制算法研究及JM相应代码分析(一)_第5张图片

H.264码率控制算法研究及JM相应代码分析(一)_第6张图片

为什么偏偏要看这两种分布?因为DCT 变换后的直流DC 系数通常服从高斯分布,而交流系数一般服从拉普拉斯分布。在较高码率时,对于零均值的统计独立信源,经过标量量化后的比特数b- 失真D 曲线可以用下式近似:


也就是


H.264码率控制算法研究及JM相应代码分析(一)_第7张图片

到这里我们找到拉格朗日乘子和量化步长之间的关系,意味着三种优化参数之间建立了紧密的联系。看起来似乎所有问题都得到了解决,其实不然。

H.264码率控制算法研究及JM相应代码分析(一)_第8张图片

我们用如下图所示的漏斗模型描述这一缓冲区的原理

H.264码率控制算法研究及JM相应代码分析(一)_第9张图片

解码器根据这个缓冲区模型确定内存大小和解码延时等参数。编码器则根据缓冲区模型对编码码流进行约束控制,保证解码器在内存大小确定的情况下正常解码,即解码过程中解码端缓冲区既不上溢也不下溢。这通常需要码率控制技术来实现,因此码率控制是视频编码和传输的关键环节。

H.264码率控制算法研究及JM相应代码分析(一)_第10张图片

本文完整pdf文档下载链接:http://download.csdn.net/detail/nonmarking/8876649



你可能感兴趣的:(优化,算法,编码,h.264,码率控制)