4.3二变量的离散傅里叶变换

📘 数字图像处理中的二变量离散傅里叶变换(2D DFT)超级无敌具体详细讲解


🧠 一、直觉出发:DFT 是干什么的?

傅里叶变换的目的:

把图像从空间域(像素值)转换到频率域(频率成分)。

为什么要这样做?

  • 在空间域里,图像是像素点构成的。
  • 在频率域里,图像变成了由一堆“波”的频率、振幅和相位组成。
  • 频率越高,图像变化越剧烈(例如边缘);频率越低,图像越平滑(例如大致结构)。

📐 二、公式讲解(二变量离散傅里叶变换)

1️⃣ 变换公式(2D DFT):

给定一个大小为 M×NM \times NM×N 的图像 f(x,y)f(x, y)f(x,y),二维离散傅里叶变换的公式是:

F(u,v)=∑x=0M−1∑y=0N−1f(x,y)⋅e−j2π(uxM+vyN) F(u, v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) \cdot e^{-j2\pi \left( \frac{ux}{M} + \frac{vy}{N} \right)} F(u,v)=x=0M1y=0N1f(x,y)ej2π(Mux+Nvy)

其中:

  • f(x,y)f(x, y)f(x,y) 是空间域中的像素值;
  • F(u,v)F(u, v)F(u,v) 是频率域中的傅里叶系数;
  • u,vu, vu,v 是频率坐标;
  • jjj 是虚数单位;
  • e−jθ=cos⁡(θ)−jsin⁡(θ)e^{-j\theta} = \cos(\theta) - j\sin(\theta)ejθ=cos(θ)jsin(θ)

2️⃣ 逆变换(Inverse DFT):

f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)⋅ej2π(uxM+vyN) f(x, y) = \frac{1}{MN} \sum_{u=0}^{M-1} \sum_{v=0}^{N-1} F(u, v) \cdot e^{j2\pi \left( \frac{ux}{M} + \frac{vy}{N} \right)} f(x,y)=MN1u=0M1v=0N1F(u,v)ej2π(Mux+Nvy)

这表示可以完美还原图像,不丢信息!


🔍 三、物理/几何意义

空间域 vs 频率域

空间域频率域
像素强度 f(x,y)f(x, y)f(x,y)不同频率的振幅 + 相位 F(u,v)F(u, v)F(u,v)
图像本身图像的“构造波”

怎么理解频率?

  • (u,v)=(0,0)(u, v) = (0, 0)(u,v)=(0,0)直流分量,图像平均亮度;
  • u,vu, vu,v 越大:频率越高,图像变化越快;
  • 高频:细节、边缘;
  • 低频:轮廓、平滑区域;

频域可以用来:压缩图像、滤除噪声、检测边缘、增强细节等。


🧰 四、Python + Numpy 实现(代码版)

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

# 加载图像(灰度)
img = Image.open('your_image.png').convert('L')
f = np.array(img)

# 2D DFT
F = np.fft.fft2(f)

# 频谱图像(取对数幅值)
magnitude = np.abs(F)
magnitude_log = np.log(1 + magnitude)

# 中心化(把低频移到中心)
F_shifted = np.fft.fftshift(F)
magnitude_shifted = np.log(1 + np.abs(F_shifted))

# 显示频谱
plt.imshow(magnitude_shifted, cmap='gray')
plt.title('2D DFT Spectrum (Log Scale)')
plt.axis('off')
plt.show()

🔄 五、常见操作与应用

🎯 频率滤波器(滤除特定频率)

  • 低通滤波器:保留低频(去噪、模糊);
  • 高通滤波器:保留高频(锐化、边缘检测);
  • 带通滤波器:保留中等频率(特定细节增强);

操作方法:

  1. 做 DFT;
  2. 在频率域上乘以滤波器 mask;
  3. 做反变换得到滤波后的图像。

📊 六、图像频谱怎么看?

在频域图像(频谱)中:

  • 中间是低频(靠中心);
  • 边缘是高频(快速变化);
  • 白色亮点代表该频率分量强(重要);
  • 越亮的频率分量越“参与”图像构造。

🤯 七、深入理解:为何是指数 e−j2π(ux/M+vy/N)e^{-j2\pi(ux/M + vy/N)}ej2π(ux/M+vy/N)

复指数 e−jθe^{-j\theta}ejθ 本质上就是一个旋转的复数(单位圆上绕原点旋转):

  • 在数学上,它用来表示“波”的振动;
  • 在图像中,它表示图像中某种频率的“构造波”;
  • 傅里叶变换就是用一堆正弦波去拟合图像!

可以理解为:

每个 F(u,v)F(u,v)F(u,v) 是整个图像在频率 (u,v)(u,v)(u,v) 下的“响应”或“贡献”。


📎 总结一张图:

f(x,y)(空间域图像)
   ↓ 2D DFT
F(u,v)(频率域图像)
   ↓ 操作滤波器
F'(u,v)
   ↓ IDFT
f'(x,y)(处理后的图像)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值