率失真优化技术
率失真优化:
视频编码的主要目的是在保证一定视频质量的条件下尽量降低视频的编码比特率,或者在一定编码比特率限制条件下尽量地减小编码失真。在固定的编码框架下,为了应对不同的视频内容,往往有多种候选的编码方式,编码器的一个主要工作就是在某种策略选择最优的编码参数,以实现最优的编码性能。基于率失真理论的编码参数优化被称为率失真优化,率失真优化技术是保证编码器效率的主要手段。
率失真理论:
在允许一定程度失真的条件下,能够把信源信息压缩到什么程度?也就是说,最少需要多少比特才能描述信源?针对这个问题,香农在1959年发表了 《保真度准则下的离散信源编码定理》 ,定义了信息率失真函数R(D),并讨论了其相关基本定理。之后,率失真理论逐渐受到了人们的重视。
互信息量:
对于两个离散随机事件集X和Y,事件 yj 的出现给出的关于事件 xi 的信息量定义为互信息量 I(xi; yj) ,其定义公式如下。由公式可以看出,互信息量为后验概率与先验概率比值的对数。互信息量的单位与自信息量一样取决于对数的底。
失真度:
设离散无记忆信源[X; P] = [x1, …xN; p(x1),…p(xN)]经过信道传输后接收端的离散变量Y的概率空间为[Y; P] = [y1, …yN; p(y1),…p(yN)]。对于每对(xi, yj),指定一个非负的函数d(xi, yj)>=0,称其为单个符号的失真度或失真函数。
规定了单个符号的失真度之后,传输一个符号引起的平均失真度,即信源的平均失真度如下公式。
不同的信源符号和不同的接受符号,产生的失真不同,但平均失真度已对信源和信道进行了统计平均,所以平均失真度可描述某一信源在某一试验信道传输下的失真大小,可从整体上描述系统的失真情况。
率失真函数:
接收端获得的平均信息量可用平均互信息量I(X, Y)来表示,这就变成这在满足保真度准则的条件下,寻找平均互信息量的最小值。这个最小值就是在满足保真度准则的条件下,信源必须传输的最小平均信息量,如下公式,就是信息率失真函数,简称率失真函数。
率失真函数R(D)的一半曲线图形如下图。
率失真信源编码定理:
保真度准则下信源编码定理、保真度准则下信源编码逆定理。
视频编码中率失真优化
视频压缩的目标:
在保证视频质量的都前提下尽量降低视频流的压缩码率。
视频失真测度:
平方误差和SSE、均方误差MSE、绝对误差和SAD、峰值信噪比PSNR。
视频率失真曲线:
视频编码率失真优化:
不同的编码参数可以得到不同的率失真性能,最优的编码方案就是在编码系统定义的所有编码参数中使用能够使系统性能最优的参数值,视频编码系统中的率失真优化就是基于率失真理论选择最优的编码参数。拉格朗日优化法是视频率失真中最常见和最有力的优化工具。
H266中的率失真优化
H266采用了更先进的编码算法和多种高效的编码工具,因此编码过程也面临更多的编码参数选择。因此,拉格朗日优化方法在图像组层、片层、CTU层和CU层都发挥了重要的应用。
速率控制
速率控制:
通过一系列编码参数,使得视频编码后的比特率满足所需要的速率限制要求,并且使编码失真最小。速率控制术语率失真的范畴,速率控制算法的重点是确定与速率相关的量化参数。
缓冲机制:
视频的编码速率与编码参数、编码结构、视频内容等诸多因素密切相关,速率控制算法通常无法保证实际编码速率与目标速率完全一致。为了减小二者之间的差别,通常会在编码器和传输信道间建立一个数据缓冲区,称为“缓冲机制”,用于平滑编码速率与信道速率之间的差别。如下图。
缓冲机制可以使编码速率更好地匹配信道速率,但会消耗存储空间和带来时延。因此,实际应用中,缓冲区的大小由允许最大时延及运营成本决定。
流体流量模型:
为了设计含缓冲区的速率控制算法,通常将缓冲区的动态变化过程用流体流量模型来表示,如下图。
速率控制技术:
主要分为两个模块,即目标比特分配和量化参数的确定。在视频编码中的速率控制过程如下图。H266标准的速率控制算法仍然采用传统的两步骤方式。
参考
JVET输出文档:
https://www.itu.int/wftp3/av-arch/jvet-site/
书籍:
新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]
备注
本系列博客主要是对《新一代通用视频编码H266/VVC:原理、标准与实现》
的学习笔记。