离散傅立叶变换在图像处理中的推导和意义

傅立叶变换(FT)能应用的领域太多了,本文聊聊FT在图像处理上的应用。前有高人不用公式通俗地解释了傅立叶级数,傅立叶变换等概念(傅立叶变换讲解-知乎专栏, 任意取的一个名字,还望作者不要在意)。 本文目的是更深入地理解一下傅立叶变换在图像处理领域的应用,包括如何推导公式和变换后频谱图的物理意义。

为了表述方便,是会用到公式的,但是对数学方面的要求就是会解多元一次方程组就行。

1. 傅立叶变换的基础知识

根据傅立叶级数的知识,对于任意一个周期为T的函数f(x),它可以被表示成一系列正弦波和余弦波的叠加:

f(x) = \frac{a_0}{2}+\sum_{n=1}^{+\infty}a_n*cos(x\omega n) + b_n*sin(x\omega n)

其中\omega = \frac{2\pi}{T}

相信看过Heinrich大神那篇文章对这个就很容易理解,Wiki的图再放一遍 傅立叶级数动图

非周期函数没有傅立叶级数,但是我们可以把它看成一个T无限大的周期函数。此时,\omega趋向于0,用积分的思想仍然可以把任意函数表示成正弦波和余弦波的叠加。

以上就是傅立叶变换的核心思想,任何信号都可以表示成一系列正弦波和余弦波的和的形式。不再赘述。

 

2. 图片傅立叶变换公式的推导

这一部分主要阐述如何在图片数据上进行傅立叶变换。

通用傅立叶公式是:

F(\omega) = \mathcal{F}(f(t)) = \int_{-\infty}^{+\infty}f(t)e^{-i\omega t}dt

意思就是现实中的一个任意数据f(t),是由很多频率的正弦,余弦波叠加组成。其中F(\omega)是频率为\omega的正弦波幅度与余弦波幅度计算出的一个数值,是tt从-\infty+\infty时,f(t)e^{-i\omega t}的积分。这个公式不太好理解,比如为什么是负无穷到正无穷?为什么会出现自然对数?为什么会有虚数?不是说有正余弦波吗,在哪里呢?好混乱啊,这是因为理解一个东西就像是在爬楼梯,一阶一阶地上,任何人都可以毫不费力地走上去。但是如果楼梯缺了几块,就会觉得走上去很难。直接看这个公式就是让人直接从地面跳到十层楼的楼顶,对任何人都难。因为傅立叶变换的推导过程比较繁杂,最后看到的公式推想物理意义很难。我们想的是,从基本思想推导出公式。

 

一个灰度图片是以一个二维矩阵的形式存在,和通用傅立叶变换相比,有俩点不同:

  • 图片是二维,公式是一维

  • 图片数据有限且离散,公式无限且连续。

有很多资料在说在图片傅立叶变换中,一个图片会被分成8*8的小块,再进行计算。这可能是在实现时候提高运算效率的一种方法,但是我觉得这对理解傅立叶变换物理意义造成了影响。我们按照公式去实现了一下,先不考虑运算效率问题,也就是说不把图片分成小块,代码在这里: DFT 简单实现-Matlab

  • 二维的问题

二维矩阵中每一列(或者每一行)数据都可以单独看作一个波。对一个M \times N的矩阵,可以看作NM \times 1的波。在二维傅立叶变换里,先分别对每一列(行)做傅立叶变换,会得到同样大小的傅立叶系数向量,再在另一个维度(上面是行这里就是列,上面是列这里就是行)对这些系数做傅立叶变换。所以,研究二维傅立叶变换可以看成俩个一维傅立叶变换,本质上还是一维数据的处理。

 

从第三部分“频谱图的理解”插图的左上角原图里,我们拿出第100列的数据,是一个1024\times 1个像素的值,以1-1024之间的整数做X轴,以像素的值做Y轴,画出这个向量的波是:

 

这个波和我们在所有地方看到的信号是一样的,可以看成是多个正余弦波的叠加。盗图一张,同样出自傅立叶变换讲解-知乎专栏,写的真好:

最左侧那个波可以看作图片中一行或者一列的数值组成的波,后面是分解出来的不同幅度,不同频率的正弦和余弦波。

  • 关于无限到有限的问题

 

在实际情况中,无穷大是没有办法实现的,只能近似估计。图片的一维数据是一个波,我们假设这个波由P个频率的波叠加而成。

 

图片中的像素值是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值