自适应量化
在一定量化级数下减少量化误差或在同样的误差条件下压缩数据,根据信号分布不均匀的特点,希望系统具有随输入信号的变化区间足以保持输入量化器的信号基本均匀的能力,这种能力叫自适应量化。
自适应量化必须有对输入信号的幅值进行估值的能力,有了估值才能确定相应的改变量。若估值在信号的输入端进行,称前馈自适应;若在量化输出端进行,称反馈自适应。信号的估值必须简单,占用时间短,才能达到实时处理的目的。
自适应预测
预测参数的最佳化依赖信源的特征,要得到最佳预测参数显然是一件繁琐的工作。而采用固定的预测参数往往又得不到较好的性能。为了能使性能较佳,又不致于有太大的工作量,可以采用自适应预测。
为了减少计算工作量,预测参数仍采用固定的,但此时有多组预测参数可供选择,这些预测参数根据常见的信源特征求得。编码时具体采用哪组预测参数需根据特征来自适应地确定。为了自适应地选择最佳参数,通常将信源数据分区间编码,编码时自动地选择一组预测参数,使该实际值与预测值的均方误差最小。随着编码区间的不同,预测参数自适应地变化,以达到准最佳预测。
在图像传输技术中,活动图像特别是电视图像是关注的主要对象。活动图像是由时间上以帧周期为间隔的连续图像帧组成的时间图像序列,它在时间上比在空间上具有更大的相关性。大多数电视图像相邻帧间细节变化是很小的,即视频图像帧间具有很强的相关性,利用帧所具有的相关性的特点进行帧间编码,可获得比帧内编码高得多的压缩比。对于静止图像或活动很慢的图像,可以少传一些帧,如隔帧传输,未传输的帧,利用接收端的帧存储器中前一帧的数据作为该帧数据,对视觉没有什么影响。因为人眼对图像中静止或活动慢的部分,要求有较高的空间分辨率,而对时间分辨率的要求可低些。这种方法叫帧重复方法,广泛应用于视频电话、视频会议系统中,其图像帧速率一般为1~15帧/秒。
采用预测编码的方法消除序列图像在时间上的相关性,即不直接传送当前帧的像素值,而是传送x和其前一帧或后一帧的对应像素x' 之间的差值,这称为帧间预测。当图像中存在着运动物体时,简单的预测不能收到好的效果,例如当前帧与前一帧的背景完全一样,只是小球平移了一个位置,如果简单地以第k-1帧像素值作为k帧的预测值,则在实线和虚线所示的圆内的预测误差都不为零。如果已经知道了小球运动的方向和速度,可以从小球在k-1帧的位置推算出它在k帧中的位置来,而背景图像(不考虑被遮挡的部分)仍以前一帧的背景代替,将这种考虑了小球位移的k-1帧图像作为k帧的预测值,就比简单的预测准确得多,从而可以达到更高的数据压缩比。这种预测方法称为具有运动补偿的帧间预测。
具有运动补偿的帧间预测编码是视频压缩的关键技术之一,它包括以下几个步骤:首先,将图像分解成相对静止的背景和若干运动的物体,各个物体可能有不同的位移,但构成每个物体的所有像素的位移相同,通过运动估值得到每个物体的位移矢量;然后,利用位移矢量计算经运动补偿后的预测值;最后对预测误差进行量化、编码、传输,同时将位移矢量和图像分解方式等信息送到接收端。
在具有运动补偿的帧间预测编码系统中,对图像静止区和不同运动区的实时完善分解和运动矢量计算是较为复杂和困难的。在实际实现时经常采用的是像素递归法和块匹配法两种简化的办法。
像素递归法的具体作法是,仍需通过某种较为简单的方法首先将图像分割成运动区和静止区。在静止区内像素的位移为零,不进行递归运算;对运动区内的像素,利用该像素左边或正上方像素的位移矢量D作为本像素的位移矢量,然后用前一帧对应位置上经位移D后的像素值作为当前帧中该像素的预测值。如果预测误差小于某一阈值,则认为该像素可预测,无需传送信息;如果预测误差大于该阈值,编码器则需传送量化后的预测误差、以及该像素的地址,收、发双方各自根据量化后的预测误差更新位移矢量。由此可见,像素递归法是对每一个像素根据预测误差递归地给出一个估计的位移矢量,因而不需要单独传送位移矢量给接收端。
块匹配法是另一种更为简单的运动估值方法。它将图像划分为许多子块,并认为子块内所有像素的位移量是相同的,这意味着将每个子块视为一个“运动物体”。对于某一时间t,图像帧中的某一子块如果在另一时间t-t1的帧中可以找到若干与其十分相似的子块,则称其中最为相似的子块为匹配块,并认为该匹配块是时间t-t1的帧中相应子块位移的结果。位移矢量由两帧中相应子块的坐标决定。
考虑到一定时间间隔内物体可能的运动速度、运动范围和匹配搜索所需的计算量,在匹配搜索时一般仅在一个有限范围内进行。假设在给定时间间隔内最大可能的水平和垂直位移为d h和d v个像素,则搜索范围SR为
其中M、N为子块的水平和垂直像素数。
在块匹配方法中需要解决两个问题:一是确定判别两个子块匹配的准则;二是寻找计算量最少的匹配搜索算法。判断两个子块相似程度的准则可以利用两个块间归一化的二维互相关函数、两子块间亮度的均方差MSE或两子块间亮度差绝对值的均值MAD等。通过对不同判别准则的比较研究表明,各种判别准则对位移矢量的估值精度影响差别不是很大。由于MAD准则的计算不含有乘法和除法运算而成为最常使用的匹配判别准则。MAD准则定义如下:
其中Xk和Xk-1分别表示图像在第k帧和第k-1帧的像素值。当MAD最小时,表示两个子块匹配。
对于匹配搜索算法,最简单和直接的方法就是全搜索方式,即将第k-1帧中的子块在整个搜索区内逐个像素移动,每移动一次计算一次判决函数。总的移动次数为 (2d h + 1)(2d v + 1)。当d h = d v = 6时,总的计算次数为169。显然,全搜索的运算量是相当大的。为了加快搜索过程,人们提出了许多不同的搜索方法,其中应用较广的有二维对数法、三步法、共轭方向法和正交搜索法。这几种方法都基于如下的假设:当偏离最小误差方向时,判决函数是单调上升的,搜索总沿着判决函数值减小的方向进行。上述几种方案所需的搜索步骤和计算点数略有差异,但基本思路是一致的。
通过上面介绍的两种运动矢量估值方法可以看出,像素递归法对每一个像素给出一个估计的位移矢量,因而对较小面积物体的运动估值较为精确。但像素递归法在估值时需要进行叠代运算,从而存在着收敛速度和稳定性问题。块匹配法对同一子块内位移量不同的像素只能给出同一个位移估值,限制了对每一像素的估值精度。但对于面积较大的运动物体而言,采用块匹配法的预测要比采用像素递归法的预测效果好。另外,从软硬件实现角度看,块匹配算法相对简单,在实际活动图像压缩编码系统中得到较为普遍的应用。
活动图像的帧间内插编码是在系统发送端每隔一段时间丢弃一帧或几帧图像,而在接收端再利用图像的帧间相关性将丢弃的帧通过内插恢复出来,以防止帧率下降引起闪烁和动作不连续。恢复丢弃帧的一个简单办法是利用线性内插,设x(i, j), y(i, j)分别代表两个传输帧中相同空间位置上像素的亮度,在中间第n个内插帧对应位置的亮度z(i, j) 可用如下的内插公式:
n=1,2,3,……N-1
其中N为两个传输帧之间的帧间隔数。
简单线性帧间内插的缺点在于当图像中有运动物体时,两个传输帧在物体经过的区域上不再一一对应,因而引起图像模糊。为解决这一问题可采用带有运动补偿的帧间内插。具有运动补偿的帧间内插和帧间预测都需要进行运动估值,但二者的目的和运动估值不准确所带来的影响不完全相同。
在帧间预测中引入运动补偿的目的是为了减少预测误差,从而提高编码效率。运动估值的不准确会使预测误差加大,从而使传输的数据率上升,但接收端据此位移矢量和预测误差解码不会引起图像质量下降。而在帧间内插中引入运动补偿的目的,是使恢复的内插帧中的运动物体不致因为内插而引起太大的图像质量下降。这是由于在丢弃帧内没有传送任何信息,要确定运动物体在丢弃帧中的位置必须知道该物体的运动速度。运动估值的不准确,将导致内插出来的丢弃帧图像的失真。另外,在帧间内插中的位移估值一般要对运动区的每一个像素进行,而不是对一个子块;否则,内插同样会引起运动物体边界的模糊。因此,在帧间内插中较多使用能够给出单个像素位移矢量的像素递归法。
其他还有阈值法(只传送像素亮度的帧间差值超过一定阈值的像素)、帧内插(对于活动缓慢的图像,利用前后两帧图像进行内插,得到预测图像,然后对帧差信号进行编码)、运动估计与补偿等。