一维FFT的基本概念
FFT基于复数运算。对于任意一维信号(在这里是图像的一行或一列),假设有 (N) 个数据点,一维FFT的目标是将这些点从时间域(或空间域)转换到频域。一维FFT的结果也是一个长度为 (N) 的序列,表示不同频率成分的复数幅度。
一维离散傅里叶变换(DFT)的定义为:
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
⋅
e
−
i
2
π
k
n
N
X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-i 2\pi \frac{kn}{N}}
X[k]=n=0∑N−1x[n]⋅e−i2πNkn
其中,
- (X[k]) 是频域中的第 (k) 个成分,
- (x[n]) 是时域中的第 (n) 个样本,
- (N) 是样本总数,
- (i) 是虚数单位。
对图像行的FFT
对于352x288的图像,首先对每行(共288行)进行FFT:
-
对于每一行,我们有352个数据点。应用上述DFT公式,为每个频率 (k) (从0到351),计算该频率的复数幅度:
X [ k ] = ∑ n = 0 351 x [ n ] ⋅ e − i 2 π k n 352 X[k] = \sum_{n=0}^{351} x[n] \cdot e^{-i 2\pi \frac{kn}{352}} X[k]=n=0∑351x[n]⋅e−i2π352kn -
这个计算为每一行生成一个新的352个元素的行,这些元素现在表示原始数据在频域中的复数表示。
对图像列的FFT
完成所有行的变换后,每列(现在是转换后的352个频域数据)也要进行FFT:
-
对于每一列,同样应用DFT公式,但这次是对每个列的288个数据点进行变换。这为每个频率 (k) (从0到287)计算复数幅度:
Y [ k ] = ∑ m = 0 287 X [ m ] ⋅ e − i 2 π k m 288 Y[k] = \sum_{m=0}^{287} X[m] \cdot e^{-i 2\pi \frac{km}{288}} Y[k]=m=0∑287X[m]⋅e−i2π288km -
这个计算为每一列生成一个新的288个元素的列,这些元素代表了该列的频域数据。
结果的解释
经过上述两次FFT(先行后列),我们得到一个新的352x288的复数矩阵,其中的每个元素 (Y[j][k]) 都代表了原图像在特定频率上的复数幅度。这个矩阵展示了图像的频域特性,其幅值和相位分别反映了频率成分的强度和相位信息。
应用
这个频域矩阵可以用来进行图像的频域分析和处理,比如滤波、压缩等。通过修改这个矩阵中的特定元素,然后应用逆FFT,我们可以实现对原始图像的各种修改和改进。