Fourier Transform 3 (2D DFT, Image)

二维离散傅里叶变换

分量形式

是一个二元函数,其中 . 类似于一维的离散傅里叶变换和逆变换,二维离散傅里叶变换为: 逆变换为:

矩阵形式

同一维情形类似,我们也可以将二维 DFT 写作矩阵形式。视 的矩阵,记 分别为 次单位复数根和 次单位复数根,构建矩阵: 则二维离散傅里叶变换可以写作: 进一步地,利用拉直算子 以及 Kronecker 积的性质 ,上式也可写作: 该形式与一维情形具有统一的形式,能方便后续的推导。

性质

二维 DFT 的大部分性质可类比一维 DFT 的性质推广而来。

平移性质:设 ,则:

旋转性质:使用极坐标:,可得如下变换对: 即若 旋转 角度,则 也旋转相同的角度,反之亦然。

周期性

共轭对称性:若 是实函数,则 是共轭对称的(实部偶函数,虚部奇函数),即: 是虚函数,则 是共轭反对称的(实部奇函数,虚部偶函数),即:

频谱和功率谱:由于 DFT 是复函数,因此可以用极坐标表示: 其中 称为幅度谱, 称为相位谱,二者统称为频谱。另外,功率谱定义为幅度谱的平方:

前文说到,对于实函数 ,其傅里叶变换 是共轭对称的,于是容易知道其频谱是关于原点偶对称的,而相位谱是关于原点奇对称的:

二维循环卷积定理:设 ,则:

其中卷积依旧是循环卷积。

图像的频域滤波

图像的空间域与频域

前文中我们研究的一元函数可以看作是时域信号,但是对于图像而言,时域信号这个说法显然不合适了。那应该怎么理解呢?

首先,一幅数字图像其实是一个二元函数 ,其中自变量 是像素的坐标,函数值是像素的灰度级。因此,将图像在三维空间中绘制出来,就好像一个连绵不断的山脉,类似于信号波形的二维版本。只不过这里自变量表示空间位置而非时间,因此我们称之为空间域

与时域信号类似,我们可以用无数个二维的不同角频率的正余弦函数去近似一幅图像。其中,图像变化比较剧烈的地方——比如边缘、纹理等细节,需要依靠高频的正余弦函数去拟合;相反,图像大体的构图就对应低频的正余弦函数。因此,我们经常把图像的细节称作高频分量,而整体构图称作低频分量。

对图像做二维离散傅里叶变换就得到了其频域表示,将频域表示的频谱可视化出来就是频谱图。频域滤波指在频谱图上使用一个滤波器对图像做滤波的过程。然而,出于可视化、浮点误差等考虑,下面我们关注对图像做频域滤波时一些值得注意的方面。

循环卷积与交叠误差

根据循环卷积定理,在空间域中做循环卷积等价于在频域中做乘法。然而,我们在图像处理中使用的卷积通常是 padding 0 的卷积,两种卷积方式导致的结果差别就是所谓的交叠误差。

幸运的是交叠误差很容易解决。设 分别是 的图像,则选取 ,将 都往右下填充 0 直到 大小,那么在频域中处理(对应循环卷积)与直接 padding 0 的卷积结果就一样了。

频谱图的可视化:中心化与对数变换

我们知道 表示频率最低的分量,其值其实是图像所有位置的亮度之和: 因此在频谱图上,这个点的亮度是最大的。又由于周期性,所以事实上四个角的亮度都很大,这不利于我们观察频谱图。因此,我们常常对频谱图做中心化,即将 平移到 的位置。根据傅里叶变换的平移性质,这相当于在做傅里叶变换之前先对 乘以 .

另外,由于 实在是太大了,当我们可视化出频谱图后其他地方的亮度很低,不利于观察,因此我们常常在可视化之前做如下对数变换:

浮点误差

理论上,傅里叶变换和逆变换是一对可逆操作,但是由于计算机存在浮点误差,实际操作中数值也许会稍有扰动。例如,数字图像原本是实值函数,在傅里叶变换到频域后执行某些滤波操作,然后傅里叶逆变换后理应得到实值函数,但实际中可能存在很小的虚部。因此,我们常常需要在逆变换后增加一个取实部的操作。

频域滤波步骤

根据上文的讨论,在对图像进行频域滤波时有如下步骤:

  1. 对于 的图像 ,取
  2. 将原图零填充到 大小,得到
  3. 乘以 ,为频谱图的中心化做准备;
  4. 计算二维离散傅里叶变换
  5. 构造大小为 的频域滤波器
  6. 进行频域滤波:
  7. 计算傅里叶逆变换,取实部并将 乘回来:
  8. 左上角 区域 ,得到最终结果。

参考资料

  1. Rafael C. Gonzalez. Digital Image Processing, Fourth Edition. ↩︎

Fourier Transform 3 (2D DFT, Image)
https://xyfjason.github.io/blog-main/2023/12/27/Fourier-Transform-3-2D-DFT-Image/
作者
xyfJASON
发布于
2023年12月27日
许可协议