3.2 频率域滤波


3.2 频率域滤波

本节摘要:SOURCE 6.1:FFT 把图像变到频率域,**低频=平滑区,高频=边缘**。本节动手 dft、频谱可视化、理想/高斯低通滤波器。

本节导航

  1. 用 OpenCV dft 计算并显示对数频谱
  2. 构造高斯低通滤波器
  3. 解释频域卷积等价空域卷积

一、DFT 流程

import cv2, numpy as np img = cv2.imread('gray.png', 0).astype(np.float32) dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft) mag = 20*np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1])+1)

中心亮 = 低频(整体亮度);外围 = 高频(边缘细节)。

二、低通滤波

rows, cols = img.shape crow, ccol = rows//2, cols//2 mask = np.zeros((rows, cols, 2), np.float32) r = 30 cv2.circle(mask, (ccol, crow), r, (1,1), -1) fshift = dft_shift * mask f_ishift = np.fft.ifftshift(fshift) img_back = cv2.idft(f_ishift) img_back = cv2.magnitude(img_back[:,:,0], img_back[:,:,1])

高斯低通比理想低通无振铃(Gibbs 现象)。

频域低通流程

频域低通流程

频域低通流程

三、高通 = 边缘增强

mask = 1 - 低通 保留高频。Canny 前有时先轻度高斯低通抑噪。

四、实验

  1. 显示原图与频谱并排
  2. 半径 r=10,30,60 低通对比模糊程度
  3. 对比理想圆 mask 与高斯 mask 边缘振铃

⚠️ 常见坑:忘记 fftshift — 低频不在中心。

💡 关键直觉:频域滤波适合全局频率选择;空域适合局部核。

一节小结

  • DFT 将卷积变乘法
  • 低通去噪、高通提边
  • 高斯掩膜优于理想掩膜
  • 频谱诊断噪声频段

下一节形态学:腐蚀膨胀。

从空间到频率:换个坐标系看图像

频率域滤波的核心思想:任何图像都可以分解成不同频率的正弦波叠加。低频成分对应图像中变化缓慢的区域(大块亮度、渐变背景),高频成分对应快速变化的位置(边缘、纹理、噪声)。傅里叶变换把图像从"像素坐标系"转到"频率坐标系",频谱图中心是低频、外围是高频。滤波就变成了"按频率做乘法":低频通过、高频衰减即低通(平滑去噪);高频通过、低频衰减即高通(提取边缘)。空间域的卷积对应频率域的乘积,这就是"频域滤波等价于空间滤波"的数学本质。

import cv2, numpy as np # 高通滤波:保留高频,去除低频(等价于边缘增强) dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft) rows, cols = img.shape crow, ccol = rows//2, cols//2 dft_shift[crow-15:crow+15, ccol-15:ccol+15] = 0 # 抠掉中心低频 f_ishift = np.fft.ifftshift(dft_shift) img_high = cv2.magnitude(cv2.idft(f_ishift)[:,:,0], cv2.idft(f_ishift)[:,:,1])

fftshift 与频谱可视化

DFT 结果默认把零频(直流)放在左上角,fftshift 把低频移到中心,方便观察和构造滤波器。频谱可视化要取幅度取对数(因为直流成分远大于高频,线性显示只能看到一个亮点)。读频谱的经验:中心越亮说明整体亮度越高;有规律的十字亮线说明图像里有规律纹理或周期噪声(如扫描仪的摩尔纹);周围散布亮点说明有细碎噪声。学会"看频谱",就能定位噪声来源,从而针对性地设计滤波。

理想低通的振铃问题

理想低通(圆形硬边界)在频域切一刀,反变换回空间域会出现振铃——边缘附近产生一圈圈明暗涟漪(Gibbs 现象)。原因是硬边界在频域对应空间域无限延伸的 sinc 核。高斯低通没有硬边界,过渡平滑,无振铃,实际使用更安全。工程经验:需要保留细节时用高斯低通配合较小 sigma;只想去掉周期性噪声时,可以在频谱上针对性地抠掉对应亮点(陷波滤波),这是频率域比空间域更灵活的地方。

频率域的另一个实用价值是诊断:图像出现规律条纹(如莫尔纹、扫描条纹),在频谱上表现为一对对称亮点,知道噪声的频段位置后,可以直接设计陷波器精准去除,而不影响其他频率成分。这种"先诊断再处理"的能力是频率域独有的,空间域很难做到。

实验方法论:分别用半径 10、30、60 的圆掩膜做低通,观察模糊程度随半径的变化;再用理想圆和高斯两种掩膜对比振铃现象。记录每组的频谱图与输出图,这一组对比实验能把频率域滤波的核心概念全部串起来。

最后补一个计算量的直觉:对整幅图做二维 FFT 再逆变换,计算量远大于一个小卷积核的空间滤波,因此实时系统里频域滤波并不常用。它的价值更多在于"理解原理、分析噪声、设计复杂滤波器",而日常的平滑和锐化仍交给空间域完成。本节学完,你应当能用一句话总结:空间域卷积与频率域乘法是同一个操作的两面,选哪一面取决于问题是"局部核"好解决还是"全局频率选择"好解决。

补一个实际应用的细节:陷波滤波是频率域最实用的技巧之一——周期性噪声(扫描条纹、电网干扰、CCD 坏行)在频谱上表现为一对对称的亮斑,用高斯陷波器把这两处衰减掉,噪声就被精准消除,而图像其他频率成分几乎不受影响。相比空间域滤波对全图无差别处理,这种"指哪打哪"的能力是频率域不可替代的价值。另外,用频谱诊断图像时,横纵条纹分别对应频谱上垂直和水平方向的亮线,方向是正交的,记住这个对应关系可以快速定位条纹的来源方向。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U