一种考虑时域率失真优化的零延迟码率控制方法与流程

专利2022-05-10  37



1.本发明属于图像编码技术领域,具体涉及一种考虑时域率失真优化的零延迟码率控制方法。


背景技术:

2.码率控制是使编码器输出码流满足传输信道带宽限制或存储设备存储空间的需求,在流媒体传输的各种应用场景中是编码系统不可缺少的重要模块。率失真优化技术在视频编码中扮演着非常重要的角色,编码器通过率失真优化(rdo)为输入视频选择一组最优的编码参数。零延迟是指不允许编码器预先获得后续帧的信息,即得到待编码帧后必须立刻编码。
3.目前x264中的帧级码率控制算法具体步骤包括:
4.步骤一、对当前图像做抽样滤波,在分辨率是原来一半的图像上做半像素精度预测,与原图相减得到残差,再对这个残差做哈达玛变换并求绝对和得到绝对误差和(satd),当前图像的复杂度(complexity)就是由当前帧satd与之前帧satd值的加权平均构成,而后使用下式得到qpscale的值,其中qcomp为常数
5.qpscale=complexity
(1

qcomp)
6.步骤二、由之前图像的编码信息确定比例因子调整qpscale的值,使得实际码率尽可能接近所设定的目标码率。若已编码帧的实际消耗比特数大于目标比特数,比例因子越小,缩放后的qpscale就越大,量化步长也越大,编码消耗的比特数就越少,从而达到调整比特率的目的
[0007][0008]
步骤三、对qpscale做溢出补偿处理,通过补偿能够合理控制文件的大小,但在一定程度上会降低质量。如果实际编码比特数大于目标比特数,则溢出补偿(overflow)大于1,qpscale被放大,从而生成更少的码流;相反如果实际比特数小于目标比特数,溢出补偿小于1,qpscale被缩小,量化步长变小,从而生成更多的码流,调整了比特率.
[0009]
第四,由qpscale得到当前帧的量化步长qp:
[0010][0011]
现有的针对hevc的帧级码率控制方法过程为,在计算得编码单元的目标比特数后,通过基于r

lambda的模型求得编码单元的lambda以及qp来进行编码,包括:
[0012]
首先依据目标码率计算当前待编码帧的目标比特数(tbpp),然后依据公式
[0013]
lamda=α
×
pow(tbpp
pic
,b)
[0014]
计算得到帧级的拉格朗日乘子lambda,而后使用计算得到帧级qp
[0015]
qp=4.2005
×
log(lamda) 13.7122
[0016]
在编码完成一帧之后,根据实际编码的信息对于码率控制参数进行a,b更新
[0017]
=a 0.1
×
(log(lamda
real
)

log(lamda
estimate
))
×
a
[0018]
b=b 0.05
×
(log(lamda
real
)

log(lamda
estimate
))
×
log(rbpp
pic
)
[0019]
上述现有方法中,x264中的码率控制算法精度较差,而且会严重影响编码器的编码质量。除此以外,该种率控算法需要计算每帧图像的复杂度,消耗较多编码时间。hevc中的r

lambda码率控制可以在hevc达到较高的算法精度,但其参数无法直接应用在x264编码器上,所有的公式需要针对编码器重新进行拟合。除此以外,无法提高编码器的率失真性能,没有利用到帧间信息进行率失真优化,编码器编码质量有继续提升的空间。


技术实现要素:

[0020]
针对上述问题,本发明提供了一种考虑时域率失真优化的零延迟码率控制方法。
[0021]
本发明的技术方案为:
[0022]
一种考虑时域率失真优化的零延迟码率控制方法,如图1所示,包括以下步骤:
[0023]
s1、向编码器输入目标码率以及待编码序列;
[0024]
s2、根据码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数:
[0025]
r
pic
=r
target
/f
[0026]
其中,中r
pic
是码率控制单元的每帧的目标比特数,r
target
是待设定的目标码率,f是视频序列的帧率;
[0027]
s3、将得到的码率控制单元的目标比特数结合滑动窗的状态分配到每帧,得到当前帧分配的比特数为:
[0028][0029]
其中,n
coded
是已编码的帧数,r
coded
是已经消耗的比特数,sw是滑动窗的长度;
[0030]
s4、计算当前帧的帧级拉格朗日乘子λ以及量化参数qp:
[0031]
对于i帧,定义帧内复杂度为则:
[0032][0033]
mad为像素的平均绝对值误差,t
bpp
=t
pic
/n
pixels
为像素的平均目标比特,n
pixels
是一个图片的像素数,α和β是预设的参数;
[0034]
对于p帧,λ=αr
β
,r为当前待编码帧平均每像素目标比特数,α和β是预设的参数;
[0035]
量化参数qp为:
[0036]
qp=4.3231lnλ

11.486
[0037]
s5、除第一帧外,通过当前编码帧前一帧中每个宏块的编码失真以及运动补偿预测误差,计算当前帧内宏块的近似时域影响因子w:
[0038][0039]
其中,d
cur
是编码块的失真,是编码块的运动补偿预测误差;
[0040]
s6、根据获得的时域影响因子w调节每个宏块的拉格朗日乘子,进而实现时域率失真优化,具体为:
[0041]
根据获得的帧内所有宏块的时域影响因子,先进行求和,再通过除以宏块数量得到宏块时域影响因子的均值
[0042][0043]
其中,n为宏块数量,w
n
是第n个宏块的时域影响因子;
[0044]
将每个宏块的时域影响因子除以平均时域影响因子得到每个宏块的拉格朗日乘子调整权重w
n

[0045][0046]
将原本的宏块拉格朗日乘子除以调整权重后得到新的拉格朗日乘子λ
n
,进而实现时域率失真优化:
[0047][0048]
其中,λ
p
为帧级拉格朗日乘子;
[0049]
s7、编码一帧图像的每个宏块以完成对一帧图像的编码,编码完每张图片后更新码率控制单元的参数,更新方式为:
[0050]
α
new
=α
old
δ
α
×
(ln(λ
real
)

ln(λ
comp
))
×
α
old
[0051]
β
new
=β
old
δ
β
×
(ln(λ
real
)

ln(λ
comp
))
×
ln(r
real
)
[0052]
其中,α
old
以及β
old
代表的是编码前计算λ时候使用的参数值,λ
comp
为编码时使用的帧级拉格朗日乘子,λ
real
为当前帧编码结束后,依据实际使用的比特数带入公式λ=αr
β
计算得到的,δ
α
以及δ
β
分别设置为0.2以及0.02。
[0053]
本发明的有益效果为:本发明提出既能提高码率控制精度,提高编码器性能,同时又可以缩短编码时间的帧级码率控制方法,且本方法不需要提前缓存后续帧,可以应用在直播,会议等应用场景中。
附图说明
[0054]
图1为本发明的整体流程框图;
[0055]
图2为依据时域依赖性在宏块上调整拉格朗日乘子的流程图。
具体实施方式
[0056]
下面结合附图对本发明进行详细描述。
[0057]
本发明针对在零延迟的条件下,x264编码器码率控制精度不高,而且性能相较于给定qp是编码器性能损失较大,在ctc标准测试序列中平均损失4.9%bd

rate。提出一个既能提高码率控制精度,提高编码器性能,同时又可以缩短编码时间的帧级码率控制方法,且本方法不需要提前缓存后续帧,可以应用在直播,会议等应用场景中。
[0058]
同时针对x264编码器率控精度差的问题,本发明使用r

lambda模型提高率控精
度。针对x264编码器编码性能损失的问题,提出了使用前一帧已编码宏块的失真信息来估计编码块的时域依赖性,并依据求得的时域依赖性对于编码帧内的每一个宏块进行时域率失真优化。需要注意的是本时域率失真优化可以应用在其他编码框架中。
[0059]
如图1所示,本发明总体包括以下步骤:
[0060]
a、向编码器输入目标码率以及待编码序列;
[0061]
b、根据所述码率控制单元的目标码率来计算码率控制单元的目标比特数,初始化码率控制单元的参数;
[0062]
c、将上述计算的码率控制单元的目标比特数结合滑动窗的状态分配到每帧;
[0063]
d、计算当前帧的帧级拉格朗日乘子lambda以及量化参数qp;
[0064]
e、除第一帧外,通过当前编码帧前一帧中每个宏块的编码失真以及运动补偿预测误差,计算当前帧内宏块的近似时域影响因子;
[0065]
f、根据步骤e中获得的时域影响因子调节每个宏块的拉格朗日乘子,进而实现时域率失真优化;
[0066]
g、编码一帧图像的每个宏块以完成对一帧图像的编码,编码完每张图片后更新码率控制单元的参数。
[0067]
步骤b中,计算码率控制单元的目标比特数的计算公式为r
pic
=r
target
/f,其中r
pic
是指码率控制单元的每帧的目标比特数,r
target
是指待设定的目标码率,f是指视频序列的帧率。
[0068]
步骤c中,依据计算所述码率控制的每帧的目标比特数,通过滑动窗平滑码流,计算得到当前帧分配的比特数
[0069][0070]
其中,r
pic
是指一个当前图片的目标比特数,在前一步中以及计算得到,n
coded
是指已编码的帧数,r
coded
表示的是已经消耗的比特数,sw是指实际由编码顺序在当前图片之后的多少个图片进行补偿,即滑动窗的长度。
[0071]
步骤d中,首先计算当前帧图像的平均每像素目标比特数(t
bpp
),计算公式为
[0072]
t
bpp
=t
pic
/n
pixels
[0073]
n
pixels
是指一个图片的像素数。而后计算当前图像的帧级拉格朗日参数λ。
[0074]
对于ⅰ帧:采用基于帧内复杂度的码率控制方法。根据实验知,定义帧内复杂度为则和拉格朗日乘子有如下关系:
[0075][0076]
其中,mad为像素的平均绝对值误差,bpp是像素的平均目标比特。α和β参数的初始值经验地设置为9.9416和

1.367。
[0077]
对于p帧:计算方式为λ=αr
β
,r为当前待编码帧平均每像素目标比特数,α的初始值设置为1058,β的值设置为

1.327
[0078]
qp=4.3231lnλ

11.486
[0079]
相应的帧级qp使用如下关系式进行计算得到:
[0080]
步骤e:使用参考重建宏块的像素的失真引起编码单元的失真来度量视频编码中的时域依赖性,即
[0081][0082]
经过公式推导和近似后得到
[0083]
即使用编码块的失真d
cur
与编码块的运动补偿预测误差的比值来度量时域依赖性的大小,对于当前编码块来说,在真正编码之前无法获得其失真。基于设定的零延迟条件,故而时间上不能允许二次编码,所以考虑使用前一帧对应位置宏块信息近似代替当前块的时域依赖性。这样做的原因是ippp的编码结构,每个p帧的参考帧就是它前一帧图像,而相邻两帧特点一般比较相近,所以进行这样的近似是合理的。需要说明的是,因为第一帧没有前一帧的信息,所以不对其进行调整。具体流程图如图2。
[0084]
步骤f中,根据步骤e中获得的时域影响因子调节每个宏块的拉格朗日乘子,具体的来说,将本帧内所有宏块的时域影响因子求和,而后通过除以宏块数量得到宏块时域影响因子的均值
[0085][0086]
而后将每个宏块的时域影响因子除以平均时域影响因子得到每个宏块的拉格朗日乘子调整权重w
n

[0087][0088]
通过将原本的宏块拉格朗日乘子除以调整权重后得到新的拉格朗日乘子λ
n
,进而实现时域率失真优化。
[0089][0090]
其中λ
p
为帧级拉格朗日乘子。显然,时域依赖性强的宏块,w
n
越大,那么调整后的拉格朗日乘子就越小,也就意味着其失真将会被减小,有利于后续帧达到更高的率失真性能;反之,时域依赖性弱的宏块就会被相对的编差一些。
[0091]
步骤g中,编码一个图片的每个宏块以完成对一个图片的编码,编码完每张图片后更新码率控制单元的参数,更新方式为:
[0092]
α
new
=α
old
δ
α
×
(ln(λ
real
)

ln(λ
comp
))
×
α
old
[0093]
β
new
=β
old
δ
β
×
(ln(λ
real
)

ln(λ
comp
))
×
ln(r
real
)
[0094]
其中α
old
以及β
old
代表的是编码前计算λ时候使用的参数值,λ
comp
为编码时使用的帧级拉格朗日乘子,λ
real
为当前帧编码结束后,依据实际使用的比特数带入公式λ=αr
β
计算得到的。δ
α
以及δ
β
分别设置为0.2以及0.02。依据上面两个公式在编码完一帧之后更新码率控制参数。整体的流程图如图1。
[0095]
下面使用仿真实例说明本发明方案的有效性,本实验中使用x264作为实验平台,
参考的对象为x264中的码率控制方法abr(average bitrate control),测试的序列为ctc标准测试序列中的b,c,d,e测试集合,编码结构为ippp,对比的指标有bd

rate,误码率以及编码时间。
[0096]
其中当bd

rate为负值时,代表相同重建质量下码率减少,技术具有增益,当bd

rate为正值时,代表相同重建质量下码率增加,技术存在损失。表中bd

rate为负值时,代表相同重建质量下码率减少,技术具有增益,当bd

rate为正值时,代表相同重建质量下码率增加,技术存在损失。此处对比的基准均为给定qp时x264编码器的编码质量。
[0097]
表1给出了本方案及x264码率控制方法在bd

rate上的表现。
[0098]
表1 bd

rate
[0099][0100]
相较于x264的码率控制方法,明显减低了因为控制码率带来的编码质量损失,而且因为考虑了时域相关性,本方法相较于给定qp时的编码器性能有0.9%的增益。
[0101]
表2给出了本方案以及x264原码率控制方案误码率的大小。误码率的计算方法为,实际编码输出码率与设定的目标码率之间的绝对误差除以目标码率,偏差越大,误码率越高,码率控制的精度也就越低。可以明显看出,本方案明显降低了误码率,从3.7%降低到0.06%。
[0102]
表2误码率
[0103][0104]
表3给出了本方案在编码时间上的性能。
[0105]
表3编码时间
[0106][0107]
这里的编码时间计算的方法为,相较于给定qp的编码器编码时间,设定对于码率的码率控制方法所需要的编码时间。明显看出,本发明相较于原方案缩短接近10%的编码时间,与给定qp的编码时间基本一致。
转载请注明原文地址:https://doc.8miu.com/read-1453436.html

最新回复(0)