HEVC码率控制

参考资料:

[1]万帅,杨付正编著. 新一代高效视频编码H.265/HEVC 原理、标准与实现[M]. 北京:电子工业出版社, 2014.12.

上一章:HEVC率失真优化

码率控制概述

码率控制的主要工作是建立编码速率R与量化参数QP的关系,公式化描述为:
Q ∗ = ( Q 1 ∗ , ⋯   , Q N ∗ ) = a r g m i n ( Q 1 , ⋯   , Q N ) ∑ i = 1 N D i       s . t . ∑ i = 1 N R i ≤ R c (1) Q^* = (Q^*_1,\dotsb,Q^*_N)=argmin_{(Q_1,\dotsb,Q_N)}\sum_{i=1}^{N}{D_i} \,\,\,\,\, s.t.\sum_{i=1}^{N}{R_i} \leq R_c \tag{1} Q=(Q1,,QN)=argmin(Q1,,QN)i=1NDis.t.i=1NRiRc(1)

码率控制算法组成

  1. 比特分配:依据视频内容、缓冲区状态、信道带宽为每个编码单元(GOP、帧、CTU)分配最优的目标比特数。HEVC多种预测技术的采用使得不同编码单元间具有高度相关性,需要在该部分着重考虑。
  2. 量化参数确定:依据码率R-量化参数QP模型为每个编码单元选择最优编码参数QP。QP选择受其他参数影响较小,但其采用的模型高度依赖于视频内容特征。

缓冲区模型

缓冲区用于平衡编码器输出码率和信道速率。缓冲越大,适应信源、信道码率波动的性能越好,但相应地会引入较大延迟。
请添加图片描述

缓冲区采用流体流量模型建模:
B c ( n + 1 ) = m a x { 0 , B c ( n ) + A ( n ) − u ( n ) } (2) B_c(n+1) = max \lbrace 0 , B_c(n)+A(n)-u(n) \rbrace \tag{2} Bc(n+1)=max{0,Bc(n)+A(n)u(n)}(2)

其中:

  • B c ( n ) B_c(n) Bc(n)为第n时刻缓冲区占用
  • A ( n ) A(n) A(n)为第n时刻编码器输出码率
  • u ( n ) u(n) u(n)为第n时刻信道速率

目标比特分配概述

该部分给出码率控制算法理论上的指导思想,而非具体实现。
码率控制算法需要作用于不同层级依次分配比特。HEVC中层级的顺序为:GOP-Frame-CTU。

图像层目标比特分配

由于HEVC中采用了复杂的时域参考关系,因此当前图像的编码比特数分配依赖于其参考的图像。该部分详细推导见[1]第12章,这里只给出结论:
假设已编码的图像失真确定后,当前编码图像的失真D只与其比特数R有关。(拓展:该问题具有马尔可夫性?)
假设变换系数服从参数为α的拉普拉斯分布:
p ( x ) = α 2 e ( − α ∣ x ∣ ) p(x)=\frac{\alpha}{2}e^{(-\alpha|x|)} p(x)=2αe(αx)
其中:α反映视频内容特性

定义失真度为绝对误差,得率失真函数:
R ( D ) = { l n ( 1 α D ) , 0 < D ≤ 1 α 0 , o t h e r R(D) = \begin{cases} ln(\frac{1}{\alpha D}), & 0<D\leq\frac{1}{\alpha} \\ 0, & other \end{cases} R(D)={ln(αD1),0,0<Dα1other

根据[1]中描述的依赖关系:
∂ D i ∂ R i = − λ ω i \frac{\partial D_i}{\partial R_i} = -\frac{\lambda}{\omega_i} RiDi=ωiλ
∂ D i ∂ R i = − 1 α i e − R \frac{\partial D_i}{\partial R_i} = -\frac{1}{\alpha_i}e^{-R} RiDi=αi1eR

结合上式:
R i = − l n ( α i ω i λ ) (3.1) R_i = -ln(\frac{\alpha_i}{\omega_i}\lambda) \tag{3.1} Ri=ln(ωiαiλ)(3.1)

其中:

  • α i   ,   ω i \alpha_i \, , \, \omega_i αi,ωi与视频内容相关
  • ω i \omega_i ωi与时域预测结构相关
  • λ由总比特数 R c R_c Rc确定

上述公式的意义:只要找到λ-总比特数 R c R_c Rc的关系,即可为每帧图像分配最优比特数!

实际中考虑复杂度,往往做出如下假设:

  • 时域预测结构固定,内容特性稳定,不同图像之间最优目标比特数具有较为稳定的关系。

此时问题可简化为下式:
R i R j = l n ( α i ω i λ ) l n ( α j ω j λ ) = η i , j (3.2) \frac{R_i}{R_j} = \frac{ln(\frac{\alpha_i}{\omega_i}\lambda)}{ln(\frac{\alpha_j}{\omega_j}\lambda)} = \eta_{i,j} \tag{3.2} RjRi=ln(ωjαjλ)ln(ωiαiλ)=ηi,j(3.2)
∑ i = 1 N R i = R c (3.3) \sum_{i=1}^{N}R_i = R_c \tag{3.3} i=1NRi=Rc(3.3)

其中:

  • η i , j \eta_{i,j} ηi,j为第i、j图像之间的相关参数,由视频内容特性、时域预测结构、总目标比特数确定。

优化:
这里假设内容特性稳定,但实际该条件不一定满足。码率控制的不少文献中也指出了该问题。

量化参数模型概述

[1]中给出了多种目前研究得到的R-QP模型,其中各个模型均包含与视频序列相关的参数。这里省略推导过程。文中详细讲述二次率失真模型的推导,可以参见H264中模型的推导。
JM编码器码率控制算法笔记:以JVT-G012r1为例

JCTVC-K0103码率控制算法实现

目标比特分配

GOP级比特分配

GOP级比特分配根据目标码率、缓冲区状态、信道速率为每个GOP分配码率。JCTVC-K0103码率控制算法根据每帧的平均比特数计算GOP的可用比特数,公式如下:
T g = T ‾ f ⋅ N G (4.1) T_g = \overline{T}_f \cdot N_G \tag{4.1} Tg=TfNG(4.1)
T ‾ f = u F r + u F r × N v , c − R v , c S W (4.2) \overline{T}_f = \frac{u}{F_r}+\frac{\frac{u}{F_r}\times N_{v,c}-R_{v,c}}{SW} \tag{4.2} Tf=Fru+SWFru×Nv,cRv,c(4.2)

其中:

  • u为信道速率
  • F r F_r Fr为帧率
  • N v , c N_{v,c} Nv,c为视频序列已编码总帧数
  • R v , c R_{v,c} Rv,c为已编码帧消耗比特
  • SW为滑动窗口尺寸,用于平均比特波动,一般取值40

理解:

  • 第一项 u F r \frac{u}{F_r} Fru为目标码率下平均每帧的比特数
  • 第二项 u F r × N v , c − R v , c S W \frac{\frac{u}{F_r}\times N_{v,c}-R_{v,c}}{SW} SWFru×Nv,cRv,c为已编码帧消耗比特与目标消耗比特之间的偏差,反映缓冲区充盈度,该项的目的在于根据缓冲区状态对GOP的目标比特进行修正。
  • SW反映了对于缓冲区状态的修正程度,较小SW容易导致GOP之间较大比特波动。

图像级目标比特分配

设GOP共有 N G N_G NG帧,第j帧的目标比特数为:
T f ( j ) = β ⋅ T ~ f ( j ) + ( 1 − β ) ⋅ T ^ f ( j ) (4.3) T_f(j)=\beta\cdot\widetilde{T}_f(j) + (1-\beta)\cdot\hat{T}_f(j) \tag{4.3} Tf(j)=βT f(j)+(1β)T^f(j)(4.3)
T ~ f ( j ) = T G × ω f ( j ) ∑ k = 1 N g ω f ( k ) (4.4) \widetilde{T}_f(j) = T_G \times \frac{\omega_f(j)}{\sum_{k=1}^{N_g}\omega_f(k)} \tag{4.4} T f(j)=TG×k=1Ngωf(k)ωf(j)(4.4)
T ^ f ( j ) = T G − R G , c ∑ k = 1 N g ω f ( k ) ⋅ ω f ( j ) (4.5) \hat{T}_f(j) = \frac{T_G - R_{G,c}}{\sum_{k=1}^{N_g}\omega_f(k)}\cdot\omega_f(j) \tag{4.5} T^f(j)=k=1Ngωf(k)TGRG,cωf(j)(4.5)

其中:

  • β \beta β为权重,典型值0.9
  • R G , c R_{G,c} RG,c为当前GOP已编码图像实际消耗比特
  • ω f ( j ) \omega_f(j) ωf(j)为GOP中每帧图像权重
  • T ~ f ( j ) \widetilde{T}_f(j) T f(j)为根据当前GOP目标比特按每帧图像权重分配的比特数
  • T ^ f ( j ) \hat{T}_f(j) T^f(j)为根据当前GOP剩余可用比特按每帧图像权重分配的比特数

不同参考结构GOP每帧具有不同的权重,帧间编码图像权重如下表所示:
请添加图片描述

帧内编码图像目标比特数 T f T_f Tf需要进行修正:
请添加图片描述

CTU级比特分配

设图像共有 N L N_L NL个CTU,第m个CTU目标比特数为:
T L ( m ) = T f − H f − R L , C ∑ k = 1 N L ω L ( k ) ⋅ ω L ( m ) (4.6) T_L(m) = \frac{T_f-H_f-R_{L,C}}{\sum_{k=1}^{N_L}\omega_L(k)}\cdot\omega_L(m) \tag{4.6} TL(m)=k=1NLωL(k)TfHfRL,CωL(m)(4.6)

其中:

  • R L , c R_{L,c} RL,c为当前GOP已编码图像实际消耗比特
  • H f H_f Hf为图像头信息比特数预测值
  • ω L ( m ) \omega_L(m) ωL(m)为CTU权重,以当前图像相同层且距离最近图像对应位置CTU的MAD平方值计算

思考:

  • 公式中ω为反映图像变化程度的量,但可能不准确:相同位置变化很大不代表运动预测后残差也大。

量化参数选择

图像级量化参数确定

实验表明,双曲函数可反映HEVC中码率-失真关系:
D ( R ) = C R − k D(R) = CR^{-k} D(R)=CRk
λ = − ∂ D ∂ R = α ⋅ R β \lambda = -\frac{\partial D}{\partial R}=\alpha\cdot R^{\beta} λ=RD=αRβ

QP与lnλ之间存在如下关系:
Q P = 4.2005 l n λ + 13.7122 (5.1) QP = 4.2005ln\lambda+13.7122 \tag{5.1} QP=4.2005lnλ+13.7122(5.1)

图像对应的拉格朗日乘子为:
b p p = T f ( j ) / N p i x e l s , f bpp = T_f(j)/N_{pixels,f} bpp=Tf(j)/Npixels,f
λ = α ⋅ b p p β (5.1) \lambda = \alpha \cdot bpp^{\beta} \tag{5.1} λ=αbppβ(5.1)

其中:

  • T f ( j ) T_f(j) Tf(j)为第j帧图像的目标比特数
  • N p i x e l s , f N_{pixels,f} Npixels,f为该帧图像的像素数
  • α、β为相同层距离最近图像编码完成后α、β的更新值
  • 相邻图像λ比值限定为 [ 1 / 2 10 / 3 , 2 10 / 3 ] [1/2^{10/3},2^{10/3}] [1/210/3,210/3]
  • 相同时间层相邻图像λ比值限定为 [ 0.5 , 2 ] [0.5,2] [0.5,2]
  • 相邻图像QP差异不超过10
  • 相同时间层相邻图像QP差异不超过3

编码参数更新:
请添加图片描述

其中:

  • δ α = 0.1 \delta_{\alpha} = 0.1 δα=0.1
  • δ β = 0.05 \delta_{\beta} = 0.05 δβ=0.05
  • α范围[0.05,20]
  • β范围[-3.0,-0.1]

当实际编码bpp’太小时,按下式更新参数:
请添加图片描述

CTU量化参数确定

CTU对应的拉格朗日乘子为:
b p p = T L ( j ) / N p i x e l s , L bpp = T_L(j)/N_{pixels,L} bpp=TL(j)/Npixels,L
λ = α ⋅ b p p β (5.1) \lambda = \alpha \cdot bpp^{\beta} \tag{5.1} λ=αbppβ(5.1)

其中:

  • T L ( j ) T_L(j) TL(j)为第j个CTU的目标比特数
  • N p i x e l s , L N_{pixels,L} Npixels,L为该CTU的像素数
  • α、β为相同层距离最近图像相同位置CTU编码完成后α、β的更新值
  • 相邻CTU的λ比值限定为 [ 1 / 2 1 / 3 , 2 1 / 3 ] [1/2^{1/3},2^{1/3}] [1/21/3,21/3]
  • CTU的λ与图像λ比值限定为 [ 1 / 2 2 / 3 , 2 2 / 3 ] [1/2^{2/3},2^{2/3}] [1/22/3,22/3]
  • 相邻CTU的QP差异不超过1
  • CTU的QP与所属图像的QO差异不超过2

编码参数更新方式同图像级模型。

总结:
与H264的码率控制策略在速录上基本相同。该算法模型大多由经验得到,准确度尚有优化空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值