为了将具有庞大数据量的视频在有限的信道内传输,存储,高压缩率的编码算法往往会造成编码重建视频与原始视频存在差别,即重建视频产生失真,该类压缩被称为有损压缩,对于有损压缩算法,其性能需要根据编码输出的比特率和编码带来的失真共同衡量,编码比特率和失真度相互制约,相互矛盾,如降低比特率往往会增加视频的失真度,相反要活的更好的视频质量,又会提高视频的编码比特率,因此,视频编码的主要目的就是在保证一定视频质量的条件下尽量减少编码比特率,或者在一定编码比特率限制下尽量的减小编码失真,在固定的编码框架上,为了应对不同的视频内容,往往有多种后弦的编码方式,编码器的一个主要工作就是以某种策略选择最优的编码参数,以实现最优的编码性能,基于码率失真理论的编码参数优化方法被称为码率失真优化,码率失真优化技术是保证编码器编码效率的主要的手段。
无论从信息论的角度还是系统设计的角度,码率失真优化技术贯穿了整个视频编码系统,前面章节分别详细的介绍了目前H265/HEVC所采用的各种编码工具,本章在此基础上讨论H265/HEVC编码器如何在码率失真优化的指导下选择最优的编码参数,实现高效的压缩性能。接下来,本章首先给出码率失真理论的基本概念,包括失真的度量和码率失真函数定义性质,然后介绍码率失真优化方法以及它在视频编码中的应用,最后讨论码率失真方法在H265/HEVC编码器中的具体实现。
11.1 码率失真优化技术
针对视频信息,无失真编码并非必须,如传送图像时,并不需要全部精确的吧图像传送到观察者,电视信号每一像素的黑白灰度级只需要分成256级,屏幕上的画面就已经足够清晰了,又如精致图像或者视频帧中,从空间频域来看,若将高频分量丢弃,只传输或者存储低频分量,数据率可以大大的减少,多数图像质量仍能令人满意,这是因为人的视觉特性允许传送的图像存在一定的误差。
另外,由第2章可以知道视频的数据量极大,采用无损压缩仍然无法满足通常的信道宽带限制,因此,需要采用量化等手段进一步提高压缩率,这也会导致解码重建信息于编码前的原始信息不一致,产生失真,只使用压缩率无法衡量有损压缩算法的性能,需要同时考虑重建信息的质量和压缩率。
在允许一定程度失真的条件下,能够吧信源信息压缩到什么程度,即最少需要多少比特数才能描述信源,针对这个问题。香农在1959年发表了 保真度准则下的离散信源编码定理。 定义了信息码率失真函数R(D)。并论述了其相关的基本定理,之后逐渐受到了人们的重视,Berger的著作比较系统,完整的给出了一般信源的信息码率失真函数以及其定理证明。
1 互信息量
设有两个离散的符号消息集合X和Y,Y是信源发出的符号集合,Y是信宿收到符号集合,该接收者实现不知道信源发出的是哪一个符号消息,信源发送每一个符号消息是一个随机事件。信源发出符号通过信道传递给信宿,如图11.1 所示,信源发出的消息称为信道输入消息,信宿收到的消息称为信道输出消息,由于信道噪声,信道输入消息于信道输出消息不一定相同。
通常信源集合X包含的各种符号消息X = {x1,x2,....xn}以及它们的概率分布P{x1},P{x2}, P{xn} 也就是预先知道信源集合的概率空间。
[X
P]. = P{x1},P{x2}, P{xn}
其中Xi (i = 1,2,..N)为集合X中各个符号消息的取值,概率P{xi}为符号消息Xi出现的先验概率。
信宿收到的符号消息集合Y的概率空间可以表示为
Y
P = P{y1},P{y2}, P{yn}
其中,Yj 为集合Y中各个消息的取值,概率P(yj)为符号 为符号消息Yj出现的概率,当信宿收到集合Y中的一个符号消息Yj(j = 1,2,3,..M)后,接收者重新估计关于信源哥哥消息Xi发生的概率就为条件概率P(xi|yj) 这种条件概率又被称为后验概率。
对于两个离散随机事件集X和Y,事件Yj的出现给出的关于事件Xi的信息量定义为互信息量I(Xi,Yj) 其定义式为
I(Xi:Yj) = log(P(Xi|Yj)/P(Xi))
即互信息量定义为验后概率与先验概率比值的对数,互信息量的单位与自信息量一样取决于对数的底,由式
I(Xi,Yj) = log(1/P(xi)) - log(1/P(Xi|Yj))
即互信息量等于自信息量减去条件自信息量,或者说,互信息量是一种消除的不确定性的度量,亦即互信息量等于先验的不确定性减去尚存在的不确定性,互信息量I(Xi|Yj) 可取正直,也可以去负值,如果互信息I(Xi|Yj)取负值,说明信宿在未收到消息Yj以前对消息Xi是否出现的猜测的难易程度较小,但是由于噪声的存在,接收消息Yj后,反而使信宿对消息Xi是否出现的猜测难易程度增加了,所以获得的信息量为负值。
为了从整体上表示从一个随机变量Y所给出关于另一个随机变量X的信息量,定义互信息I(Xi,Yj)在X和Y的联合概率空间中的统计平均值为随机变量X和Y间的平均互信息量。
I(X;Y) = sigmaI(1,N) * sigma J(1,M) P(x,y)I(Xi,Yj)
= sigma I(1,N) * sigma J(1,M)P(xi,Yj) log2^ (P(Xi|Yj)/P(xi))
= sigma I(1,N) * sigma J(1,M)P(Xi,Yj) log2^(1/P(Xi)) - sigma I(1,N) * sigma J(1,M) P(Xi,Yj) log2^ (1/P(Xi|Yj))
平均互信息量I(X|Y)与各类熵的关系为。
I(X;Y) = H(x) - H(X|Y)
I(X;Y) = H(y) - H(Y|X)
I(X;Y) = H(X) + H(Y) - H(XY)