H265码率控制-K0103

1.码控目的:

码率控制,就是通过选择一系列编码参数,使得视频编码后的比特率满足所需要的码率限制,并且使得编码失真尽量小。码率控制属于率失真优化的范畴,码率控制算法的重点是确定与码率相关的量化参数(Quantization Parameter,QP).

 2.码率控制过程:

H.265/HEVC的码率控制算法仍然可以采用传统的两步骤方式:目标比特分配和量化参数确定。码率控制不属于 H265/HEVC标准化的内容。但由于码率控制是视频编码器中必备的关键模块,因此随着 H265/HEVC标准关键技术的确定,相应的码率控制算法也不断出现。JCTVC-K0103是H265/HEVC测试模型HM10.0的码率控制算法本节将对其进行详细介绍。该码率控制算法主要分为两个步骤:

(1)根据目标码率为不同编码单元分配日标比特数;

(2)根据R与λ,λ与QP的关系模型确定不同编码单元的量化参数;

目标比特分配算法仍采用分级策略(GOP级、图像级、CTU级)依次为不同编码单元分配目标比特。

2.1.GOP级比特分配:

首先计算每幅图片的目标比特数Rpicture,f为帧率,Rtar为目标码率(kb/s,代码实控中会乘以1000)

设视频序列已经编码的帧数为Ncoded,这些帧数用掉的比特数为Rcoded,当前GOP中的图片数量为NGOP ,

SW是平滑比特分配的滑动窗口的大小,用于使得比特消耗变化和编码图片的质量更加平缓,在这里设为40,则GOP级别的比特分配为:

上面第一个式子可以理解成SW窗所有帧数的目标比特数加上剩余或减去超载部分比特数,然后除以SW获得均值;

希望能在SW帧之后达到目标码率,如果SW帧图片可以正好做到每一帧消耗TAvgPic 比特,则上式可以改写为:(与H265书本中相同)

经过上述公式每一幅图像的平均目标比特数实质就是目标速率下的每帧平均目标比特数加上剩余或减去超出部分的比特数除以SW;

2.2.帧级比特分配:

设当前GOP已经用掉的比特数为CodedGOP ,ω 是每幅图片的比特分配权重,则当前图片的目标比特率为:

上述公式仅考虑了剩余bit数的权重影响,H265书本中还同时考虑了针对总目标比特数的权重影响。

上式可以根据不同图片的权重分配剩余的比特,ω 的值如下

对于帧内编码图像,当QP和λ未指定时,分配给帧内编码图像的比特数(TCurrPic)修正如下

需要注意的是,该修正值只在更新Rcoded 时使用(整个序列消耗的比特数),而不会用于更新CodedGOP (当前GOP消耗的比特数),这是因为帧内编码帧消耗的比特数往往很高,

甚至高于给GOP分配的比特数,用未经修正的TCurrPic值更新CodedGOP

在该提案中认为一个基本单元包含一个LCU,其目标比特数由下式决定:

Bitheader 是所有头信息比特数的估计值,由同一层之前的已编码图片的实际头信息比特数均值。

ω 则是每个LCU的权重,与当前编码图片在同一级且最邻近已编码图片中处于同一位置的基本单元的预测误差(MAD)进行计算,如下

3.R-λ模型应用:

 

首先将前面的R-λ模型变为如下形式:α和β为与当前图像最邻近已编码图像更新的模型参数,bpp为每个像素的平均比特数

使用上式依据一幅图片或者一个LCU的目标码率推导得到当前图片或者当前LCU编码所需要使用的λ。

根据确定得λ使用下面公式计算QP:

QP=4.2005*ln(\lambda )+13.7122

3.1.量化参数更新:

在确定完量化参数之后,即可编码一个LCU或者一幅图像,编码完成之后会得到实际编码bit数bpp值(bppreal)来更新α和β值。

需要注意的是,在一幅图像中,每一个LCU都有他自己的λ值,而整幅图像的λ为所有LCU的λ的几何平均值,至于整幅图像QP值,则采用所有LCU的QP算术平均值。

更新过程及相关伪代码如下所示:αold、βold、λreal为该图像确定量化参数QP时所使用的数值:

δα 和δβ 设为0.1 和 0.05 

此外,在某些时候(如LCU使用了skip模式,或者一幅图片中有大量的skip模式的LCU)可能出现bpp过小的情况,此时用下式进行更新

当然,α和β也是有范围限定的。α 的值限定在 [0.05, 20] 而 β 的值限定在 [−3.0, −0.1].

当然,λ和QP值将会被限定在一个范围内,在图像层和LCU层分别限制为:

上述公式的文字描述就是:

图像层级描述:

相邻图像λ的比值应限制在[pow(0.5,10/3),pow(2,10/3)]以内,且处于相同时间层的邻近两图像的比值应限制在[0.5,2]以内。

相邻图像OP差异不超过10,相同时间层邻近两图像的OP差异不超过3

LCU层级描述:

相邻两个CTU的λ值应限制在[pow(0.5,1/3),pow(2,1/3)]之内,当前 CTU与其所属图像的λ值应限制在[pow(0.5,2/3),pow(2,2/3)]之内。

相邻两个CTU的QP差异不得大于1,当前 CTU与其所属图像的 OP差异不得大于2。

4.时间层概念:

4.1.典型时域参考模型:

全帧内(AI)配置:

在AI配置中,所有编码图像均为I图像,如图3所示。图像的显示顺序和解码顺序相同。图像之间没有参考关系。

低延迟(LD)配置:

在典型LD配置中,第一幅编码图像为I图像,其余编码图像为只具有显示顺序上过去的参考图像的B图像或P图像(后者也称为LDP配置),

如图所示。图像的显示顺序和解码顺序相同。箭头表示图像之间的参考关系,箭头指向的是参考图像。

IPPP配置:参考图像为严格意义上前一帧编码P图像;

随机访问(RA)配置:

在典型RA配置中,第一幅编码图像为I图像,其余编码图像为具有显示顺序上过去的和将来的参考图像的B图像,

如图所示。由于参考图像队列中可以有显示顺序上将来的图像,因此编码效果更好,但图像的显示顺序和解码顺序不同,需要额外的输出时间。

斜线左边的数字表示图像的显示顺序,右边表示图像的解码顺序,因此按照解码顺序排列的图像的显示顺序依次为0、8、4、2、1、3、6、5、7。

箭头表示图像之间的参考关系,箭头指向的是参考图像。

4.2.时间层概念:

相邻图像表示时域上的相邻图像;

AVS3标准支持将时域参考结构中的图像划分到多个时间层。划分方式由编码器指定,图像头中使用语法元素时间层标识(temporal_id)来传输当前图像的划分到的时间层。

时间层通常根据图像之间的参考关系来划分。以下图中的RA配置为例。时间层0包含显示顺序为0的I图像,时间层1包含显示顺序为8的B图像,时间层2包含显示顺序为4的B图像,

时间层3包含显示顺序为2、6的B图像,时间层4包含显示顺序为1、3、5、7的B图像。

以解码顺序数字即右边数字进行进一步说明:

0是I帧先解码,故为时间层0;1仅依赖于0,故在时间层0之后,为时间层1;2依赖于0和1,故在时间层1之后,为时间层2;3依赖于0和2,6依赖于1和2,故在时间层2之后,为时间层3;

1 3 5 7依赖的参考帧都已经在前面的时间层中解码完成,故为时间层4;

划分时间层的用途

划分时间层的目的是确定图像在时域参考结构中的重要性。目前最典型的用途有二。首先是用于制定量化参数(QP)分配策略。由于时间层越低的图像在时域参考结构中有越高的重要性,

通常在分配帧级QP时,会给时间层较低的图像分配较小的QP值,使其有较好的重建质量以利于后续图像的参考,而给时间层较高的图像则分配较大的QP值,兼顾压缩效率。

其次是用于实现视频的时域分级。不同的应用场合可以根据当前信道速率选择某个时间层、丢弃更高时间层的图像,并且可以动态地降低或提高选择的时间层,从而可以适应时变的信道速率,呈现不同时域分级下的视频内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值