昨天复习数字图像处理到很晚,最大的收获就是一不小心搞懂了离散傅立叶变换,原来这东西也没那么难。这里简单记录一下。
我们知道,数学中很经常把一种东西在另外一种表示方式中写出来,比如我们所常用的二维笛卡尔坐标中的点就可以转换成极坐标中的点,本质上就是给点换了一套「基」。傅立叶变换实际上也是做了一样的事,我们把在原有基上的数据用另外一种新的基表示了出来,只不过这里的数据不再是点了,而是函数,我们把原有的基构成的空间叫做时域(在数字图像处理中也叫做空间域),新的基构成的空间叫做频率域。
那么这个基是什么呢?就是我们在傅立叶变换中看到的指数项,比如在一维离散傅立叶变换
F(u)=n1x=0∑nf(x)e−i2πux/n
中,基是 e−i2πux。你可能会有疑问,这个基是与 x 相关的,它不是一个常量啊,这里我们换一种表示方法,用点积重写上面的式子,得到F(u)=y⋅e(u),其中 y=(f(x0),f(x1),⋯,f(xn−1))T、e(u)=(e−i2πu/n,e−i2πu×2/n,⋯,e−i2πu×(n−1)/n)T——到这里已经很明显了,我们知道一个向量对基向量的点积是这个向量在这个基上的投影长度,也就是在这个基上的分量,所以我们也就知道了 F(u) 的含义——F(u) 代表了 f 在这个基上的分量,如果我们把 F(i)0≤i<n 都求出来,我们就得到了 f 在 n 个基上的分量,也就是傅立叶变换的结果。
说到这里,我们会发现离散傅立叶变换的输入——离散函数 f 实际上就像一个 n 维空间中的点,而我们只是求了这个点在某个 n 维空间中的坐标。如果你对矩阵很熟悉的话,你会发现整个过程可以写成一个矩阵乘法,我们令 y 保持上一段中的定义,令矩阵 F=(e(0),e(1),⋯,e(n−1)),傅立叶变换的结果就可以写成 F=Fy。很巧的是,矩阵 F 的共轭转置乘上它自己的结果是 n,也就是说,我们有 F−1=n1F∗,我们以一种很自然的方式得出了傅立叶变换的逆变换。