H.266/VVC相关技术学习笔记5:视频编码中的码率控制的原理和目的

很多学习视频编码的同学一定接触过码率控制这么一个学术名词
今天就给大家简单通俗的介绍一下关于码率控制的相关理论和其在视频编码中的作用

一般视频压缩技术中,为了提高压缩效率,常见的视频压缩技术(如MPEG , H.264,H.265 )都采用了变长编码,所以一个视频序列经过压缩编码之后所得到的码流是变速率的,即每帧编码所用的比特数是不相等的。图 1 所示为用MPEG-4 编码器和固定量化步长 30 对视频序列Tabietenn ( SCIF 352>240 )进行编码后的统计结果。该序列共 180 帧 , 为了便于比较,采用每隔 14个 P 帧编码一个 I 帧的编码方式,无 B 帧。图中,第1 , 16 , 31 , 46 , 61 , 76 , 91 , 106 , 121 , 136 , 151 , 166 为 I帧,其余均为 P 帧。
在这里插入图片描述
从图 1 可以看出 MPEG 视频码流的两个特点:
(1) I 帧和 P 帧编码所用的比特数相差很大(图中曲线上的一个个尖峰大多为 I 帧所致),这是因为I 帧所编码的是完整的一帧图像,而 P 帧所编码的是运动预测之后的误差图像。显然,当前帧与参考帧越相似,预测误差就越小,编码误差图像所用的比特数就越少;当前帧与参考帧越不相似,预测误差就越大,极端情况是当前 P 帧与参考帧完全不相似(如场景切换),那么预测误差就会突然增大,编码误差图像所用的比特数也随之大大增加,以至于和 I 帧比特数相当,甚至超过 I 帧比特数。图 1 中的P149 帧就出现了这种情况,该 P 帧编码用了 69 696比特,创造了整个曲线的最高峰。另外 P90 帧也出现了场景切换,该帧编码用了 60 536 比特,紧跟其后的第 91 帧是一个 I 帧,用了 54 976 比特,所以从曲线上看, P90 和 I91 两个尖峰连在了一起。
(2) 即使没有场景切换,各 P 帧所用的比特数也不相等,如 P2 与 P84 所用比特数相差约 7 倍。同样,各个 I 帧所用的比特数也不相等,图像越复杂,编码所用的比特数越多。

为了便于观察,图 1 所示的序列编码中没有使用 B 帧,如果使用了 B 帧,将会使曲线更加参差不齐,因为 B 帧所编码的是经过前后两帧共同预测而得到的误差图像,编码该误差图像所用的比特数通常比 P 帧所用比特数还要少。所以从图 1 可以看出,图像序列经过编码之后,输出的是一个码率不断变化的码流,这样的码流虽然能够提供较高的压缩比,却不适合实时地在固定码率的信道中传输。

那么在固定码率的信道中,变码率码流将如何传输呢? 常用的解决办法就是使用缓冲器,如图 2 所示。
在这里插入图片描述

编码器产生的变码率数据先输出到编码缓冲器,然后再从缓冲器以固定码率 R 输出。在接收端,固定码率的数据先输入到解码缓冲器,然后解码器再以变码率从缓冲器读取数据。原始图像序列从进入编码器到离开解码器要经历 3 种延时:处理延时、传输延时、缓冲延时。其中处理延时在编码和解码过程中可以认为是相等的,因为一帧图像的编解码都是在相同的帧间隔内完成的,与缓冲延时相比,可以忽略不计。传输延时在整个编解码过程中都是固定不变的,与缓冲延时相比,也可以忽略不计。缓冲延时是一种可以人为事先设计的延时,在编
码器后加入缓冲器的目的是为了解决变码率码流的传输问题,缓冲器越大,越能够承受码率的波动,但同时,缓冲带来的延时也越大,即缓冲器的容量与时延成反比。在实时应用中,常常希望延时越小越好,这意味着缓冲器小,同时,缓冲器对码率波动的承受力也减小了,怎样把编码器输出的码流的码率控制在缓冲器能够承受的范围之内,即缓冲器既不出现“溢出”,也不出现“不足”,这就是码率控制所要完成的任务。

发布了89 篇原创文章 · 获赞 65 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览