您的位置:首页 > 其它

【转帖】关于差值滤波器的理论基础

2010-09-29 15:18 1546 查看
昨晚上在群里和别人探讨了一下H.264里的插值滤波器的原理。在这里做一点总结。(写完以后回头看,发现写的十分罗嗦。懂信号理论的人可以速速浏览。)

1 插值与上采样

插值的过程从信号处理的角度其实就是一个上采样(提升空间采样频率)的过程。因此我们首先从信号处理的角度回顾一下上采样问题。下图为某一维信号上采样的例子:



图表 1:上采样过程频域分析
<A>假设是原始信号的频谱图。注意数字信号的频谱是以2π为周期的,所以该信号的基本频率特性是低频(0附近)丰富,高频逐渐减小,直至±π处为0。此外这里还隐含了一个问题,就是该信号的原始采样频率恰好就是奈奎斯特频率(所以周期性的频谱恰好首尾相接),原始采样频率再低一点就要发生混叠了,这个将是第3节要着重考察的问题。
<A>-<D>描述的是2倍上采样的过程。事实上我们都知道,插值无非就是用一个N-tap的计算式得出一个值罢了(正如H.264的1/2像素插值)。但是在频率域分析的时候为了清楚起见,通常会将这个过程分成两个步骤:1.增加采样率(压缩频谱横轴);2.低通滤波。需要说明的是这样的两个步骤只是为了分析需要,它与直接一个N-tap插值是等价的!
<B>就是<A>增加采样率后的结果,从数学推导上这个过程对应的结果就是压缩横轴,可以想象把<A>的频谱从左右两个方向向中间挤压就得到了<B>。但是在<B>中高频部分其实是次生的频率(mirror frequency),因此我们需要一个低通滤波器把它滤掉,<C>就是这样一个理想的低通。最终得到了<D>,上采样结束。
对比<A>和<D>,其实不难理解。<A>是用奈奎斯特频率(假设是f)采得的信号,那么如果我用2f去采,理所当然频谱的间隔会大。

2 H.264的插值滤波器

我们知道H.264使用了两种插值滤波器:1/2像素精度插值时用6-tap FIR;1/4像素精度插值时用bilinear。本节讲为什么要采用这两种滤波器。
首先要明白,这里的两种滤波器实质上对应的都是图表 1的<C>,也就是低通滤波器,只不过性能有区别而已。<C>的低通是理想的,即边缘完全是切下来的,过渡带宽度为0。而在实际中不可能做到理想,实际滤波器都会有一个过渡带。一般情况下,滤波器实现阶数越高越复杂,对理想性能的逼近越好。下图为一个概念性的示意图(现实情况远比此复杂):



图表 2:低通滤波器示意图
6-tap要比bilinear复杂,因此低通性能要好。也许有人会说那为什么不采用阶数更高的FIR而获取更好的低通滤波器呢?原因就是这样会给实现带来巨大的复杂性。JVT专家经过权衡计算,得出现有的6-tap滤波器低通性能是所有6-tap中最好的,并且6-tap的计算相对简单。
那么为什么1/4像素精度插值的时候,可以使用性能较差的bilinear滤波器就可以了呢?原因也很简单,如下图



图表 3:插值信号的频率示意
<A>-<B>的过程中,由于<A>的频谱基本上占据了整个频段,所以滤波的时候必须要理想低通,否则在高频处就会失真。因此要采用较好的低通滤波器。
而<B>-<C>的过程中,<B>并没有占据全部频段,高频部分都是空的,所以这里的低通就不用那么严格要求了。
总而言之,低通滤波器的选择要兼顾性能与复杂度。此外,第一步插值对低通性能的要求最高,之后的插值要求就大为降低了。

3 6-tap FIR的问题

至此,H.264的插值滤波器基本上说明清楚了。下面说一点高级的话题,关于6-tap滤波器存在的问题。留给有兴趣的人吧。
在图表 1中提过,<A>的采样频率恰好是奈奎斯特频率,因此没有任何混叠(aliasing)失真。但是视频图像在有些高频区域(比如头发,密线条等)很容易就违背奈奎斯特采样而出现混叠失真。下面来一个混叠失真的实例:




图表 4:混叠失真



图表 5:混叠频域示意
当视频中出现这样的区域时,插值将受到很大的破坏。进而严重影响ME的效果,最终导致压缩性能的下降。前面说明了6-tap FIR是个低通性能相对较好的滤波器,但是低通性能好并不能抵抗混叠失真。这就是现有H.264中插值滤波器的最大问题。
至于如何解决混叠问题,一种思路就是用其他性能更好的滤波器替换6-tap FIR,比如Wiener滤波器等等。这里就不继续展开了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: