我们在“深入浅出的学习傅里叶变换”时曾了解到,数学界有过一场“正弦曲线能否组合成一个带有棱角的信号”的伟大争议,而这场争议的男主角自然就是傅里叶和拉格朗日了。当然两位男主角都没有错,剧情也告一段落。
直到1898年,美国阿尔伯特·米切尔森做了一个谐波分析仪,当他测试方波时惊讶的发现方波的XN(t)在不连续点附近部分呈现起伏,这个起伏的峰值大小似乎不随N增大而下降!于是他写信给当时著名的数学物理学家吉布斯,吉布斯检查了这一项结果,随机发表了他的看法:随着N增加,部分起伏就向不连续点压缩,但是对任何有限的N值,起伏的峰值大小保持不变,这就是吉布斯现象。
吉布斯现象示意图
吉布斯现象的含义是:一个不连续信号X(t) 的傅里叶级数的截断近似XN(t),一般来说,在接近不连续点处将呈现高频起伏和超量,而且,若在实际情况下利用这样一个近似式的话,就应该选择足够大的N,以保证这些起伏拥有的总能量可以忽略。当然,在极限情况下,近似误差的能量是零,而且一个不连续的信号(如方波)的傅里叶级数表示是收敛的。
出现吉布斯现象其实是由于傅里叶变换本身有很多成熟的快速算法(如FFT),而且性能接近最佳,但它由于图像数据的二维傅里叶变换实质上是一个二维图像的傅里叶展开式,当然这个二维图像被认为是周期性的。由于子图像的变换系数在边界上不连续,而将造成的复原子图像也在其边界上不连续。于是由复原子图像构成的整幅复原图像将呈现隐约可见的以子图像尺寸为单位的方块状结构,影响整个图像质量。这就是为什么傅里叶变换在分析方波时在其不连续点上出现吉布斯现象的原因了。
解决吉布斯现象的方法是后来研究出来的离散余弦变换(DCT),即在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么其傅里叶级数中只包含余弦项,再将其离散化可导出余弦变换。
基本思路为:将一个对称的2N*2N像素的子图像代替原来N*N子图像。由于对称性,子图像做二维傅里叶变换,其变换系数将只剩下实数的余弦项。这样就可以消除吉布斯现象了。