视频编码的码率和失真是矛盾的,相互制约的。那么,这两者之间的关系可以从正反两个方面来分析:一方面,在给定失真的条件下,视频能够压缩到什么程度,或码率能够降低到什么程度?另一方面,将此问题反过来,在给定码率的条件下,如何将压缩给视频带来的失真降至最低?本节介绍的率失真定理(Rate Distortion Theorem)和失真率定理将给出上述两个问题的简要回答。
1.编码模型
为了便于理解,可将图像信源的编码和解码过程类比为通信的发送、接收过程,所形成的简化模型如图2.3所示。发送端 X 为离散独立信源符号集,由{ a i }表示;接收端 Y 为输出符号集,由{ b j }表示。从通信系统的信息传播过程来看,信息的接收者对信源 X 发出的信息内容是通过输出集 Y 来了解的。如果是理想信道,没有噪声干扰,发送符号 a i 和接收符号 b j 是一一对应的,没有差错;如果是有噪声信道,发送符号 a i 时,接收符号却不一定是 b j ,会出现差错。
图2.3 信源编解码模型
如果把通信模型套用到编码-解码过程中,信息经编码后发送,经解码后接收,将编解码环节理解为通信信道。从图2.3可以看出,和通信系统类似,接收者收到的不是信源的符号集(码字) X 本身,而是经解码输出的符号集 Y ,由它提供了有关 X 的信息。现在考虑编解码过程:在无外界干扰时,如果编解码过程中采取合并、量化等措施,接收的信息和发送的信息不完全相同,相当于引入一种等效(信道)“噪声”;如果不进行编码或采用信息保持型编码,则编解码过程相当于理想信道,没有“噪声”,也没有信息损失。
如果在信息发、收过程中,没有任何信息丢失,发送集与接收集的符号是一一对应的,则这时编码所采用的最佳方法就是所谓的熵编码(Entropy Coding),码率的下界由信源的0阶熵确定:
(2.7)
在实际应用中发现,尽管信息提供的图像内容很丰富,但对接收者来说不需要或并不能完全感觉到,例如,由于人眼的识别能力、显示装置的分辨能力有限,或者某些其他原因等。在编码时可以采用量化等编码方法去掉或合并一些信息符号。这样做的好处是,由于减少了信息符号集的大小,可以节省相应的编码码字。那么,最多能够去掉多少信息符号呢?或者从传输的角度看,对于有一定误差(失真)的编码,最低的码率应该是多少呢?下面从条件信息量和互信息量的概念出发对这个问题进行简要解答。
2.互信息量
设信源发出符号 a i ,出现的先验概率为 P ( a i ),编码输出为 b j ,出现概率为 Q ( b j )。用 P ( a i , b j )表示信源发出 a i ,同时解码输出为 b j 的联合概率;用 P ( a i | b j )表示已知编码输出为 b j ,估计信源发出 a i 的条件概率;用 Q ( b j | a i )表示信源发出 a i 而解码输出为 b j 的转移概率。
由条件概率定义条件信息量为
I ( a i | b j )=-log 2 P ( a i | b j )
(2.8)
表示收到 b j 后,信源发送符号为 a i 的不确定性所形成的信息量。
I ( b j | a i )=-log 2 Q ( b j | a i )
(2.9)
表示信源发送 a i 后,收到符号为 b j 的不确定性所形成的信息量。
在如图2.3所示的模型中,现考察在接收端收到符号 b j 后,编码系统所传送的关于信源发送符号 a i 的信息量。在接收端未接收到 b j 以前,判断发送端发送符号 a i 的概率为 P ( a i ),所代表的信息量为 I ( a i );而收到符号 b j 后,这时判断发送符号 a i 的概率为 P ( a i | b j ),所代表的信息量为 I ( a i | b j )。可见,接收符号 b j 后,预计发送符号 a i 的概率从 P ( a i )变为 P ( a i | b j ),不确定性(信息量)减少,不确定性减少量所引起的信息量为
(2.10)
这种不确定性的减少(概率增大)是由于接收到 b j 所传递的信息量实现的。 I ( a i ; b j )是传送的关于 a i 的信息量,称为传送信息量,也称为互信息量。
从上述定义式可以看出, I ( a i )是 a i 所含的信息量; I ( a i | b j )表示知道 b j 后, a i 还保留的信息量,或者说是 b j 尚未消除的 a i 的不确定性; I ( a i ; b j )表示编码后 b j 实际为 a i 提供的信息量。
对于信息保持型编码,由于编码前的符号{ a i }与编码后的符号{ b j }之间存在一一对应的关系,因此 P ( a i | b j )=1, Q ( b j | a i )=1,从而使 I ( a i | b j )=0, I ( b j | a i )=0, I ( a i ; b j )= I ( a i ),它表明 b j 为接收者提供了与 a i 相同的信息量。当编码中引入组合或量化后,两个符号集失去了一一对应的关系,这时 P ( a i | b j )≠1, I ( a i | b j ) ≠ 0, I ( a i | b j )< I ( a i )。因此可以说,互信息量 I ( a i ; b j )是扣除了信道中量化或组合的等效噪声损失的信息量。
符号集中符号的平均信息量称为熵,从而可定义条件信息量的平均为条件熵:
(2.11)
式(2.11)为 I ( a i | b j ) 的统计平均,表示收到符号集 Y 的每一个符号后,符号集 X 还保留的平均信息量,或平均不确定性。类似的还可以定义条件熵 H ( Y | X ):
(2.12)
在此基础上引入平均互信息量,定义为
(2.13)
式(2.13)表示平均每个编码符号为信源 X 提供的信息量,如在通信系统中则表示信道中传输的信息量。式中, H ( X )为信源的0阶熵; H ( X | Y )代表编码引入的对信源的不确定性,它是编码造成的信息丢失。
3.失真度量
如前所述,在编解码系统中,如果是无失真编码,则信源符号集{ a i }和输出符号集{ b j }具有一一对应的关系,编解码结果没有信息损失。如果是有失真编码,信源符号集{ a i }和输出符号集{ b j }不再有一一对应关系,如输出符号集的符号个数小于信源符号集的符号个数,这时编解码后信息发生损失,也就是产生的失真。
这里用 d ( a i , b j )表示信源发出 a i 而被编码成 b j 时引入的失真量。对于数值型的符号,失真度量有多种,常用的为下面两种。
(1)均方误差: d ( a i , b j )=( a i - b j ) 2 (2.14)
(2)绝对误差: d ( a i , b j )=| a i - b j | (2.15)
由于编码符号和解码符号都是随机变量,由它们表示的失真 d ( a i , b j )也是随机变量,因此需要计算失真的统计平均,即 d ( a i , b j )的数学期望 来作为总体失真的衡量:
(2.16)
式中, 又称为平均失真,是表征编解码系统性能好坏的一个重要指标。由于 P ( a i )是由信源特性决定的,因此 是 Q 的函数,其大小完全由条件概率 Q ( b j | a i )来确定,或者说有失真编码的性能由 Q ( b j | a i )决定。而 Q ( b j | a i )是由某种编码方法(或编解码符号之间的对应关系)所确定的,有一种编码方法就有一套 Q ( b j | a i ):
(2.17)
给定一个允许失真 D ,在平均编码失真 的条件下有多种编码方法,对应多套{ Q ( b j | a i )},所有满足此条件的 Q ( b j | a i )形成一个集合,记作 Q D :
(2.18)
在给定 P ( a i )的情况下, Q D 中任意一套{ Q ( b j | a i )}所对应的平均失真 皆不会超过 D 。我们就是要寻找在此约束条件下的一套{ Q ( b j | a i )},它所形成的平均互信息量最小。
4.率失真函数
平均互信息量 I ( X ; Y )实际上是编解码系统的编码输出的信息量,对于一个好的编码器,自然要求它在满足一定的失真条件下其平均互信息量越小越好。因为编码器的平均互信息量越小,就意味着编出的码字越少。传输这些码字,所需的信道带宽就越窄;存储这些码字,所需的存储空间就越小。现在问题变成了一个优化问题:在允许失真量的限制下,在 Q D 集合中,求使平均互信息量最小的一套 Q ( b j | a i ),即编码方案,这就是率失真定理:
(2.19)
定理表达了最小平均互信息 I min 和允许失真 D 之间的函数关系 R ( D )。从式(2.19)可见,平均互信息量是由信源符号的概率、编码输出符号的概率,以及已知符号出现的条件概率确定的。在信源一定的情况下, P ( a i )和 Q ( b j )是确定的。编码方法的选择实际上是改变条件概率 Q ( b j | a i ),它同时也决定了引入平均失真的大小。
上式表示从信源必须送给接收者的最小的平均信息量,接收者才能以小于或等于 D 的失真来恢复原信息。换句话说,率失真函数 R ( D )是在允许失真 D 时,信源编码给出的平均互信息量 R 的下界,也就是在给定失真下信源编码能达到的极限压缩码率。离散信源的 R 和 D 之间的关系如图2.4所示。
图2.4 离散信源的 R ( D )的曲线
可以证明,率失真函数具有以下性质:
(1)由于平均失真最小时为0,所以 D< 0 时, R ( D )无定义。
(2)存在一个 D max ,使 D>D max 时, R ( D )=0。
(3)在0 <D<D max 范围内, R ( D )是正的连续下凸函数。
(4)对独立信源, R (0)= H ( X ),即熵编码的结论。
5.失真率函数
率失真函数对信源编码是具有指导意义的。然而遗憾的是,对实际信源来说,计算其 R ( D )是极其困难的。一方面,信源符号的概率分布很难确知,另一方面,即便知道了概率分布,求解 R ( D )也不容易,它是一个条件极小值的求解问题,其解一般只能以参数形式给出。
实际中解决以上问题的方法通常是采用相反的思路,即给定信息率 R ,通过改变编码方法或编码参数,寻找尽可能小的平均失真 D ( R ),它就是失真率函数。 D ( R )和 R ( D )是对同一个问题的两种不同角度的描述。在一些场合,也可用 D ( R )进行编码性能的比较,或者作为编码方法的选择标准。
在失真率函数的指导下,视频编码的问题可归结为:在保证比特率 R 不超过最大比特率 R max 的条件下,通过选择优化的编码方案和编码参数,使失真 D 达到最小,能够获得“最好”的重建图像质量(如PSNR最高)。如图2.5所示,这一处理过程大体如下所述。
图2.5 R-D 曲线和实际工作点
(1)用一套特定的编码参数(量化步长、宏块模式选择等)对视频序列进行编码,检测编码比特率和解码图像质量(或失真)。这样绘出一个 R 和 D 的一个 R - D 工作点。
(2)用不同的若干套编码参数重复上述编码过程,获得若干个 R - D 工作点。
率失真定理告诉人们,对于给定的 R max ,最小的失真 D 点必然在这一曲线上。率失真优化的目标就是寻找一套编码参数,使它所代表的工作点尽可能地接近理想 R - D 曲线。
至此可以看出,在比较视频编码器性能时常用的速率-PSNR曲线本质上就是 R - D 曲线,一个实例如图2.6所示。这是一幅表示4种不同编码方案的 R - D 仿真实验结果的曲线。它的横坐标表示编码速率,单位为kb/s,它的纵坐标是以PSNR表示的失真 D ,单位是dB,而且越往上,PSNR数值越大,失真越小。图2.6中的节点是实际测量的结果,即“工作点”,将各个方案的工作点接起来就是各自的 R - D 特性曲线(或 D - R 曲线)。
图2.6 实际编码器的 R - D 曲线
6.有记忆信源的处理
由于图像信源实际上是有记忆信源,如前所述,对于有记忆信源,把信源发出的 N 个符号序列成组计算的熵值 H N ( X )低于把信源作为无记忆时按符号计算的熵值 H ( X )。因此,对有记忆信源按单个符号来编码效率是不高的。为此可以按符号序列成组进行编码,或者进行某种变换,对变换域中形成分布集中、相关性较弱的新符号进行编码,达到逼近信源熵的目标。
在率失真理论中也有类似的关系,有记忆信源的率失真函数低于把信源作为无记忆信源时计算所得的率失真函数。同样,对有记忆信源也可经过去相关的处理后,再按独立信源来对待,或者根据相关性先对像素值进行预测,然后再对预测误差编码。这就是图像编码中的两类基本方法:变换编码和预测编码。