x265的码率控制原理

x264和x265的码率控制,是一脉相承,原理没差,所以放到一起来说。

x264和x265中的码率控制为什么不用HM中的lambda domain,而是采用复杂度计算qp呢?可以有以下几个方式解释:
一句话简言之:各有利弊,目前还没哪个码率控制模型统一视频编码的码率控制算法。
1、码率控制模块本身支持不同编码器使用不同码控策略和算法,HM参考软件只是其中一种码控策略。
2、λ域码率控制模型在2012年的k0103提案,x264那时已经开源很多年,经过时间和业务的证明,x264的码控算法是可以的,所以x265继续沿用x264的基于帧SATD作为复杂度经验的码控模型。
3、从功能上看,HM中的λ域的码控属于CBR码率控制算法,但对于实际应用场景说,一般还需要支持ABR和VBR,x264和x265是可以做到的。
4、从原来和复杂度来说,x264/x265每帧的QP计算基于当前帧和历史帧的复杂度以及实际编码消耗的bit,且考虑了人眼视觉特性,比HM单纯考虑基于历史帧的bit消耗更合理。但是HM的码控只是一些四则运算,不包含预处理模块,复杂度很低。
5、x264和x265本身有lookhead模块,除了码率控制会用到帧复杂度satd,在场景切换检测时也适用。
从功能上来说,所有视频编码器中的码率控制模块,是负责给编码器实际编码时(量化模块),提供合适的量化参数QP。
我们知道,H.264和H.265这些视频编码标准里面的量化参数QP的范围是亮度分量取0-51。对于某一帧或者某个宏块,到底是用高QP还是用低QP编码性能好,这个决策需要码率控制模块来做。
码控确定的QP参数用于量化模块,它会引起视频图像的失真,直接决定着残差数据的大小,几乎直接决定最终编码后码流的大小。QP不仅影响图像失真还关系到最终的编码码流大小,但选择最优QP是个优化过程,是视频编码里面的率失真优化RDO理论。
这样码率控制过程要涉及到RDO,那势必存在一个R-D模型。如果想知道别人在搞码率控制的研究,可先问问所用的R-D模型,或者R-QP模型是什么?那x264和x265的R-D模型是什么呢?QP的具体模型如下:
在这里插入图片描述
在这里插入图片描述其中R表示目标码率(比特数),X是当前帧复杂度,α是码控参数。上式意味着,当前帧的复杂度越大时,qscale就越大,帧级QP就相对越大。
那x264和x265里面要计算出一个帧级的QP,具体知道哪些信息?如下公式所示:
在这里插入图片描述
在这里插入图片描述
上式中n表示当前帧号,取值从0开始。当前帧的复杂度用SATD cost来表征,其值为当前帧的SATD和先前已编码帧的SATD线性加权和。,qCompress这个参数是外部可设参数,默认值0.6,是考虑人眼视觉特性对SATD的非线性映射,默认为0.6,该值为0时为CBR,该值为1时为固定QP编码。
QP式中分母部分,编码器配置的目标码率和帧率用于计算期望每帧比特数,随着编码帧数增大不断累加。
QP式中的分子部分,右边一项下标是i-1,表示它需要前一帧的编码信息,包括前一帧的实际bit数bit即biti-1,实际qscale即qscalei-1,实际rceq即rceqi-1。
具体计算细节解释如下:
1、帧级QP计算公式中的SATD cost值是图像半像素精度的残差STAD之和,是在码率控制模块之前的预处理模块中计算的。
2、SATD cost需进行预测编码过程,I帧需要基于图像块决策其最佳预测方向,P帧需基于图像块划分决策其最佳MV(需要做运动估计),得到整帧里所有块的SATD cost和。
3、前x264和x265里面都是用原始图像宽和高都做1/2降采样后的图像去计算SATD。
4、x265的码率控制包括三种模式:X265_RC_ABR,X265_RC_CQP和X265_RC_CRF分别自适应码率控制,恒定质量码率控制和不开率控时的固定QP配置;是“Quality-controlled VBR”,学界叫做consistent quality的码率控制。学术界,CBR是码率控制研究的重点,在x264/x265中,CRF模式是重点。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值