购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.1 码率控制基础

不同码率控制方法对编码视频质量有很大的影响,选择何种方法需考虑多种因素,如控制算法的计算复杂度,控制算法是否和被编码视频的内容类型相适应,传输信道的限制等。本节仅介绍基本的码率控制概念和方法。

1.码率控制的基本思路

码率控制的基本思想是通过监测编码端缓冲区充满度来调整编码参数,控制码率,使缓冲区既不“上溢”也不“下溢”(出空)。当缓冲区充满度较低时,为了避免下溢,码率控制器应该减小量化参数以产生更多的编码比特;反之,当缓冲区充满度较高时,为了避免上溢,码率控制器应该增大量化步长等参数,甚至跳帧,以产生较少的编码比特。

基本的码率控制原理如图2.8所示,在编码器和传输信道之间有一个数据缓存器用来平滑输出码率的波动。可以将缓存器看作一个受控制的先进先出(FIFO)装置,在编码过程中,缓存器一边接收编码器输出的压缩码流,同时另一边又从缓存器中移出一些比特送入信道。码率控制器根据收集到的码率、延时和缓存器状态信息产生控制参数送至编码器,由编码器根据控制参数实施对输出码率的控制,形成一个闭环的反馈控制过程。

img

图2.8 基本的码率控制原理

在编码端,数据输入到缓存区的码率是变化的,而输出码率则取决于信道对码率的要求,或信道码率模式。在固定码率(CBR)模式下,要求缓存器输出码率保持不变;在可变码率(VBR)模式下,输出码率允许在一定的范围内变化。理论上,当缓存器容量无限大时,可保持恒定的输出码率,但实际缓存区大小都是有限的,而且缓存区的大小还要受到最大延时的制约。缓冲容量越大,码率的平滑效果越好,但缓冲延时也较大;缓冲容量越小,则延时越小,但容易发生上溢、下溢现象,达不到匹配信道的目的。

上述的码率控制机制出现最早,也是最简单的码率控制方法,一直沿用至今。现在的各种视频编码的码率控系统至少要包含一个缓冲器,改进的主要方面是控制算法和控制过程。

2.码率控制的率失真表示

如前所述,码率控制问题的本质是在各种限制条件(如码率 R 、缓冲区 B )下,最优化视频质量,即最小化失真( D ),可用公式表示如下:

img

(2.34)

基于率失真优化的码率控制分为两步:第一步在限制条件下为图像分配最优目标比特;第二步设计准确的控制技术使图像实际编码的比特等于或接近目标比特,如通过调节帧层或块层量化参数(QP)来实现。

关键是第一步,如何准确地进行目标比特分配。可采用率失真优化的码率控制算法来解决,具体有以下几种方法:

(1)根据具体应用建立更适合、更精确的率失真模型。例如,采用目前常见的几类模型:对数率失真模型、指数模型及基于 ρ 域的率失真模型等。

(2)根据率失真准则优化比特分配。对于最优目标比特分配这一受限问题,可采用拉格朗日乘子法把受限问题转化为非受限问题,建立目标函数 J = D + λR ,对此函数最小化即可求得对任意量化器的优化比特分配方案。

(3)将码率控制和其他模块结合,整体进行率失真优化。例如,将码率控制和宏块模式选择结合,在一定失真的条件下,为每个宏块选择最优的编码模式,如编码所得的所有宏块的比特数与分配的比特数的差距超过一定范围,则调整失真,再重新编码直到满足约束条件。

3.码率控制的方式

至于码率控制方式,所有现行的视频编码标准并没有对此给出限制,开发者可为不同的应用设计各种合适的算法。

和压缩视频流的层次结构相对应,码率控制按照控制的层次可分为GOP层、帧层、宏块层等不同控制方法。对CBR应用,码率控制主要关注在满足较低延迟和缓冲区限制条件下,实际产生的码率与目标码率的匹配问题。对VBR应用,码率控制关注的是为用户提供适应信道状况的高质量视频流。

不同的编码结构也会产生不同的码率控制问题,如基于对象的MPEG-4视频编码中,需要一种联合纹理和形状的码率控制算法在两者之间准确地分配码率,以获得最优的视频质量。在H.264编码中,由于率失真优化和码率控制都要用到QP,导致“蛋鸡悖论”(Chicken and Egg Dilemma),即QP和失真谁决定谁,使得以往经典的码率控制方法无法直接应用。

按照编码的次数可分为一次编码(One-Pass)、二次编码(Two-Pass)和多次编码(Multi-Pass)的码率控制方法。因为不同的应用环境有不同的计算复杂度要求,如实时应用中,应使用计算复杂度低的一次编码。而对于视频存储类应用(如DVD),可以采用二次编码或多次编码。即通过第一次编码获得信源的统计信息,再根据此统计信息进行二次或多次编码,可以获得更好的压缩性能、更好的平均质量及更小的质量波动。

4.经典的码率控制方法

近年来,码率控制方法无论是理论研究还是实际应用都有了很大的进展,为了更好地理解新近的码率控制方法,有必要将目前视频国际标准的参考软件中的码率控制模型作简单介绍,因为后来的新方法大多起源于这些控制模型。

1)MPEG-2的TM5

MPEG-2的测试模式第5版(Test Model 5,TM5)描述了一种用于CBR编码的码率控制算法,由三步组成:比特分配、码率控制和量化参数 Q 调整。

(1)比特分配:为当前的GOP指定一个目标比特数;根据相同类型(I、P或B帧)的前一帧图像的时间或(和)空间的活动性水平及GOP的目标比特数,为当前图像指定一个目标比特数 T

(2)码率控制:在当前图像编码期间,维持对编码比特数进行计数,计数结果用 d 表示;将 d 和目标比特数 T 进行比较,选择量化器的量化参数 Q 去尝试满足目标 T

(3) Q 调整:测量当前宏块中的亮度数据的方差,如果方差高于平均值(即在图像的当前区域中具有较高水平的细节),则增加 Q ,从而增加压缩率。

这种率控制算法的要点在于:获得当前GOP的目标编码比特数;分别处理I、P和B帧图像;对高细节区域进行较“粗糙”的量化,这是因为人眼对高细节区域的失真不太敏感。

2)H.263的TMN8

H.263的近期测试模式第8版(Test Model Near-term 8,TMN8)的速率控制算法包括:帧级的码率控制,决定是跳帧还是编码当前帧;宏块级的码率控制,为每个宏块计算量化步长。

(1)帧级控制:编码器每编码一帧就会增加编码器输出缓存的数据量,每传输一帧就会减少输出缓存的数据量,因此,如果缓存中的数据量超过了一定的门限值 M ,就跳过下一帧;否则就为下一个编码帧建立一个目标比特数 B 。门限值 M 越高跳帧数就越少,但编解码系统的延时也越大。

(2)宏块级控制:采用二次 R - Q 模型,一帧中编码第 i 个宏块所需的比特数 B i 如下式所示:

img

(2.35)

式中, A 表示一个宏块中的像素数; σ i 表示宏块中亮度或色度残差的方差; Q i 是量化参数; K C 是模型参数,将随编码器的运行实时更新。

由于这种码率控制方法随时对缓存容量进行调整,所以可以采用较小容量的缓存器,将编码延时降到最低,这对低延时的实时通信是相当重要的。

3)MPEG-4的附录L

在MPEG-4视频标准的附录L1中给出了一种可选择的码率控制算法,即众所周知的SRC(Scalable Rate Control)技术。这种算法只在帧级提供码率控制,即对完整的一帧选择单一量化步长。SRC采用二次 R - D 模型,设定的编码器速率 R

img

(2.36)

式中, Q 是量化参数; a b 是模式参数; S 是帧复杂性的度量,如运动补偿后的绝对帧差。 rz4wA0+1U6DhL0Smz3+rufjwIWw9owkOOMQvS84Dve1heHaUhc4gj3kZbSWbDkr9

点击中间区域
呼出菜单
上一章
目录
下一章
×