96年ITU-T SG-15提案编号lbc96084---H.263中使用MLT的尝试

Title:    A Modulated Lapped Transform Enhancement of H.263
Author:   Gary J. Sullivan, Richard S. Grinnell, Henrique S. Malvar, & Wilson C. Chung
Source:   PictureTel Corporation
Time:     Dallas, USA, April 22-25, 1996

1. 介绍
DCT的块变换有几个对于编码系统很有利的性质:1)有效地通过频域的分解,以消除采样点之间的相关性.2)可在很小的块上进行操作以保证局部的适应性.3)有快速算法.但是DCT块变换有块效应问题,它可以让视频解码之后出现一些线格,更严重的情况下,可能会引起马赛克效果.

Modulated Lapped Transform(MLT)在优势上跟DCT块变换类似,但是MLT没有块效应,因为它的基函数在块与块之间是有重叠的,并在他们的边界入渐渐趋于0.因为这个原因,我们提出用MLT方法用于视频编码.但是我们只在亮度上用MLT进行变换,在色度元素上还是使用DCT.我们在Telenor的H.263软件上的baseline级上进行了基于MLT的变换实现,结果表明,它可以替代DCT块变换,而且不引入块效应。

2. MLT

在DCT块变换或II型DCT(一维变换中)中,对信号的第n块进行变换时,块大小为N,由如下公式得到:
D(u) = sqrt(2/N) c(u) SUM (x(nN+i) * cos[(2i+1)(2u)* PI/(4N)])(for i = 0,1,....N-1)
而c(u)在u=0时为1/sqrt(2),在u>0时,c(u) = 1;

对应的MLT的过程为(有一块重叠的情况下):
   X(u) = sqrt(2/N) SUM(x(nN+i) * cos[(2i+1)(2u+1) * PI/(4N)] * h(N/2+i)) for(i=-N/2,.....,3N/2-1)
余弦部分是进行选频的函数窗h(i)的余弦调制的结果,h(i)通常是一个在末端衰减为0的一个平滑的函数。MLT的函数窗应该满足两个条件:1)它是对称的。2)h(i) = h(2N-1-i)且h(i)^2 + h(N-1-i)^2 = 1。这些限制条件使窗系数为一系列的N/2的角{a},使得h(i) = sin(a),h(N-1-i) = cos(a).

窗口的选择控制了块效应的量,基函数在空域上的范围以及在空域中的"ringing"效应的大小。一个特殊的MLT窗,也就是余弦窗,定义为:a = (2I+1) * PI/(4N),这个窗的性质就是在象素域的DC系数只在MLT基函数的最低频生成非零系数。余弦调制的对称性允许MLT被分解为连续的两个操作过程:一个用来构成一块N个采样点的简单集,和一个长度为N的IV型DCT。遍历窗在块的边界进行如下运算:
   wn(i) = x(nN+i) h(N/2+i) + x(nN-1   -i) h(N/2-1-i), for i = 0,..., N/2-1
   wn(i) = x(nN+i) h(N/2+i) - x(nN+2N-1-i) h(i-N/2), for i = N/2,..., N-1
IV型DCT通过如下式子生成变换DCT系数:
X(u) = sqrt(2/N) * SUM(wn(i)cos[(2i+1)(2u+1) * PI/(4N)]) for(i=0,1,....,N-1)

在这个过程中每个采样点对只需要进行四次乘法和两次加法(或是三次乘法和三次加法),所以MLT不需要很大的计算代价。

逆变换过程与上面过程很相似,跟IDCT的过程也很相似,只是用X(u)和Y(n)对原函数进行逼近,通过一个遍历窗进行重构即可。

3. 将MLT嵌入H.263中
3.1 宏块编码模式的切换

H.263使用可切换的预测机制来提示编码器每个编码的宏块是静态的,intra编码的,或是运动补偿的inter帧。当不同的块之间有不同的预测模式的时候,这种基于块的切换模式本身也会对编码的信号造成块效应。这种情况下就不适合用MLT编码系统了,因为在MLT中使用的覆盖方法会把空间域中的块数据应有的区别给模糊化。

但是,我们可以注意到MLT是通过二步法进行实现的(先做窗遍历,再作IV型DCT),然后处理之后的信号可以被认为是可以被单独处理的分隔的块。这样,我们就把变换块预测的模式的工作放到窗遍历之后作。比如,如果一个块的预测模式设定为intra,那么窗遍历之后的数据就被这样进行编码这样我们就构建得到了编码器,使它先对输入帧和前一存储的帧进行窗遍历,并在之后根据预测的残差决定它的预测模式。

3.2 运动补偿预测

因为预测模式每个宏块之间都可能不一样,用于从前一帧中预测当前块的运动向量对于每个宏块来说就有差异。对于这一点,我们仍然选择在窗遍历之后进行运动估计与运动补偿。这样,运动向量就可以指定一个对于之前的参考帧来说的偏移量。窗的位置随着运动向量的位置进行移动。

对于一块进行运动补偿预测是由使用运动向量来对前一帧进行标记,对前一帧的相应区域进行窗处理,并从当前帧数据中减去窗预测的结果。

我们现在必须考虑如何进行运动估计过程来决定每个宏块的运动向量了。首先,很重要的一点就是运动估计方法不在标准之内,所以就没有什么需要特别指明的方法。然而,我们必须选定一些方法进行测试。我们决定用两种方法,一是基于空域块估计进行预测,比较输入图象中的块与存储的参考帧中的块的偏移量。第二种方法我们使用跟H.263测试模型中一样的方法,不同只是我们在窗处理之后进行预测以得到更好的结果。在这种方法中,对于每个运动向量的测试需要计算宏块的窗处理之后的数据。且窗处理进行操作只比窗处理之前进行操作略强而且引入了更大的运算复杂度,所以我们提倡使用传统的运动估计方法。

3.3 处理边缘

构建MLT的时候,我们假设图象邻近块在前向变换和后向变换的过程中都可以重叠。但是事实上,对于图象的边缘来说这点并不成立。因为在图象边界处没有块景内容。对于处理边缘提出了很多种的方法。我们决定使用在H. S. Malvar, Signal Processing with Lapped Transforms, Artech House, Boston, 1992.中提出的方法,它在边缘处不进行窗处理,使用一般的DCT来代替这里的运算。还有一些更好的解决方法,我们不再多列。

3.4 对系数进行scaling.
因为MLT的输入要覆盖比DCT块变换更大的区域,所以输出的值就有可能大一些。比如,如果我们使用H.263中的N=8,输入的象素值范围为[0,255],一个MLT变换的DC系数的取值范围在8*255*[-0.151,1.151],而DCT的范围为:8*255*[0,1]。

为了适应这个新的取值区间,设定量化值的时候,我们需要加上8*255*0.151,在重建的时候,每个系数的值都要乘以1.31来补偿这个量化过程。当然因为我们对系数做了一次scaling,我们在量化步长上也应该选取更细的步长,以得到更好的性能。

从结果上看虽然这种方法从一定程序上解决了块效应的问题,但是因为我并没有看到实验的结果数据,所以我不知道这种方法在处理块效应的时候会好多少,但是很明显的一点是在H.263中一个宏块的编码模式跟分块模式都比较少,这样,采用同样编码模式的块是比较多的,MLT会在大一些的比例上进行实用,但是在像H.264这样的模式复杂多变的系统中,MLT这样的技术就感觉有些力不从心了,当然我们都知道在264里面采用的处理块效应的方法是Deblock Filter,具体两者在同样的宏块模式分布下性能的对比手上也没有数据,不过相信应该Deblock Filter会好不少,但是MLT给了我们一些启示,一方面,对于理论上的改进,往往在于细节,MLT就是利用了一个有边缘收缩的窗函数而形成了一个重叠,以处理块与块之间的关系,这跟当前的Gabor窗的Fourier Transform有些相似,至少想法上是的,所以说,如果某些区域需要细节化,那么我们就可以用窗函数的方法进行尝试。另一方面,从实验方式上看,他们使用了公用的一些编码平台,但是具体编码的过程中,像运动估计这些核心算法的时候,都是尽量把与自己的技术不相关的部分尽量简单化,用baseline来做,这样降低了实验的复杂度,也比较容易出结果,这一点也很值得借鉴。

必竟是快十年前的提案了,MLT技术本身目前估计只在音频处理中还有些应用,在视频处理中怕是已经没有应用了,但是这并不代表它就不会再有新的价值了,特将文中的一些思路性的东西记下来,以备后查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值