傅里叶变换的读书笔记

整体性俯瞰:
1、连续时间周期信号:处理时间连续并且具有周期性的信号,其频域上离散,非周期。
2、连续时间非周期信号:处理时间连续但是不具有周期性的信号,其频域上连续,非周期。
3、离散时间非周期信号:处理时间离散,不具有周期性的信号,其频域上连续,有周期性。
4、离散时间周期信号:处理时间离散,具有周期性的信号,其频域上离散,有周期性。

总结:
两个不同域之间的对应关系为:
离散对应周期,连续对应非周期。2者组合得到上面四种情况。

这边借助图像来和现实对应下:
图像可以看成是一个时域非周期函数的采样(离散化),因此是个时域的非周期离散函数。其对应的频域的函数应该是个连续的周期函数。实际应用中,因为计算机只能处理离散值,因此需要将连续的周期函数进行离散化。因为是周期函数,所以我们只需要在一个周期内采样即可。根据采样定理,我们的采样值M必须大于等于原信号序列N。为了方便起见,实际应用中取M=N。所以图像的空间为 HW 的话,其采样后的值也为 HW。
公式如下图:

图像的傅里叶变换

附一段直接根据公式进行采样的代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
#自定义傅里叶变换功能函数
def dft(img):
    #获取图像属性
    H,W,channel=img.shape
    #定义频域图,从公式可以看出为求出结果为复数,因此,需要定义为复数矩阵
    F = np.zeros((H, W,channel), dtype=np.complex)
    # 准备与原始图像位置相对应的处理索引
    x = np.tile(np.arange(W), (H, 1))
    y = np.arange(H).repeat(W).reshape(H, -1)
    #通过公式遍历
    for c in range(channel):#对彩色的3通道数进行遍历
        for u in range(H):
            for v in range(W):
                F[u, v, c] = np.sum(img[..., c] * np.exp(-2j * np.pi * (x * u / W + y * v / H))) / np.sqrt(H * W)
    return F

最终得到的每个采样点都是一个复数。实部和虚部正好对应复平面上的坐标,可以算出对应频段的幅值和相位。

你可能感兴趣的:(傅里叶变换的读书笔记)