频域滤波—傅里叶变换(上)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 频域滤波—傅里叶变换

正文


1. 傅里叶变换的作用


离散傅里叶变换是最经典的一种正弦余弦型正交变换,它建立了空间域与频率域间的联系,具有明确的物理意义,能够更直观、方便地解决许多图像处理问题。而且具有快速算法,因此广泛应用于图像处理等各个领域。


2. 傅里叶变换的定义


2.1. 狄里赫莱条件


函数在任意有限区间内连续或只有有限个第一类间断点

在单个周期内函数仅有限个极值点

在单个周期内函数绝对可积

只有满足狄里赫莱条件的周期函数才存在傅里叶变换。


2.2. 连续傅里叶变换


一维傅里叶变换对:


1.png

函数F ( μ ) 一般情况下是一个复数量,可表示为:

2.png

3.png


其中f ( x 称为空间域;F ( μ )称为f ( x ) 的频率谱或频率域;4.png的幅度谱5.png称为f ( x )的相位谱。

二维傅里叶变换对:

6.png

同理二维傅里叶变换的F ( μ , ν )可表示为

7.png

其中F ( μ , ν ) 称为f ( x , y ) 的频谱;8.png称为f ( x , y )的幅度谱;5.png称为f ( x , y )的相位谱


2.3. 离散傅里叶变换


一维离散傅里叶变换

定义:设{ f ( x ) ∣ x = 0 , 1 , . . . , N − 1 } 为维信号的N 个抽样,其离散傅里叶变换及其逆变换分别为:

20.png

二维离散傅里叶变换对:

21.png

其中x y 、μ 、ν的取值范围为:μ , x = 0 , 1 , . . . , N − 1 , y = 0 , 1 , . . . , N − 1

同样的,F ( μ , ν )亦可表示为:

22.png

其中F ( μ , ν ) 称为f ( x , y ) 的频谱;23.png为f ( x , y ) )的幅度谱;5.png称为f ( x , y )的相位谱


python实现提取图像幅度谱与相位谱:


import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(image)  # 频谱
freSpectrum = np.fft.fftshift(freSpectrum)  # 平移对称
ampSpectrum = np.sqrt(freSpectrum.imag ** 2 + freSpectrum.real ** 2) # 幅度谱
phaSpectrum = np.arctan(freSpectrum.imag / freSpectrum.real) # 相位谱


3. 离散傅里叶变换的显示


1、对称平移


图像进行离散傅里叶变换的示意图:

24.png

在上图中,左一图即为f ( x , y ) 左二图即为f ( x , y ) 的幅度谱,白色部分为高频分量,阴影部分为低频分量,在四个角点频率最低,称其为直流部分或者直流分量。为了更好的体现图像的对称性,往往会将变换后的图像进行换位(对角交换),如左三图所示。这时,在频域的正中心即为直流分量,四周对应的就是高频分量


一个傅里叶变换实例:

25.png


python实现:

import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(_image)  # 频谱
freSpectrum = np.fft.fftshift(freSpectrum)  # 对频谱进行平移对称


2、值域动态范围压缩


由于傅里叶变换幅度谱的值域大于显示值域,会导致低频部分显示受限,因此要进行值域的动态范围压缩,放大低频压缩高频。通常办法是把频率谱取对数运算,表示为:


27.png


其中28.png由此可见,D ( μ , ν ) 的值域是[ 0 , 255 ]

python实现幅度谱值域动态范围压缩:

import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(image)  # 频谱
freSpectrum = np.fft.fftshift(freSpectrum)  # 低频集中的频谱
# 幅度谱值域动态范围压缩
maxlogValue = []
for i in range(len(freSpectrum)):
    maxlogValue.append(max(np.log(1 + np.abs(freSpectrum[i]))))
ampSpectrum =  255 / max(maxlogValue) * np.log(1 + np.abs(freSpectrum))   # 压缩后的幅度谱

下图中的图三和图四分别是没有进行值域动态范围压缩的傅里叶变换幅度谱和进行了值域动态范围压缩的傅里叶变换幅度谱,可以看到高频部分被压缩、低频部分被放大,图片更加清晰。

29.jpg


3.1. 二维离散傅里叶变换的幅度谱与相位谱


下图是傅里叶变换幅度谱及其逆变换

30.png

下图是傅里叶变换相位谱及其逆变换

31.png

很显然相位谱图像结果逆变换以后比幅度谱图像经过逆变换后的图像更加清晰直观,幅度谱图像经过逆变换后的图像过于抽象,难以理解。就这个现象来说,相位谱比起幅度谱携带着更容易被人类理解的信息。


3.2. 快速傅里叶变换FFT


FFT的出现极大促进了傅里叶变换的实用化,它利用了傅里叶变换的周期性和对称性,大大降低了计算量。

离散傅里叶变换与快速傅里叶变换的运算量之比为:

32.png

其中N 为图像大小

33.png

相关文章
|
算法 计算机视觉 索引
OpenCV(四十六):特征点匹配
OpenCV(四十六):特征点匹配
972 0
|
算法 机器人 Linux
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
7048 0
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
|
4月前
|
JSON NoSQL Redis
OpenClaw核心源码解读:从Gateway到Pi-embedded的完整调用链分析
本文直击OpenClaw实战痛点,剖析其“云端大脑(Orchestrator)+协议桥(Gateway)+本地执行端(Pi-embedded)”三层解耦架构,详解指令流转、沙箱隔离、节点注册与长连接避坑要点,助开发者快速定位超时、不响应等常见问题。
|
数据可视化 算法 计算机视觉
什么是傅里叶变换?傅里叶变换处理图像的原理是什么?
傅里叶变换是一种强大的数学工具,能够将信号在时域与频域之间进行转换,广泛应用于物理学、信号处理、图像处理等领域。它能够将复杂信号分解为多个简单的正弦波,从而便于分析和处理。在图像处理中,傅里叶变换可以用于去噪、锐化和压缩等操作,通过滤波器选择性地保留或去除特定频率的信息,提高图像质量。
|
10月前
|
机器学习/深度学习 传感器 编解码
DINOv3上手指南:改变视觉模型使用方式,一个模型搞定分割、检测、深度估计
DINOv3是Meta推出的自监督视觉模型,支持冻结主干、仅训练轻量任务头即可在分割、深度估计等任务上达到SOTA,极大降低训练成本。其密集特征质量优异,适用于遥感、工业检测等多领域,真正实现“一个模型走天下”。
6021 2
DINOv3上手指南:改变视觉模型使用方式,一个模型搞定分割、检测、深度估计
|
机器学习/深度学习 编解码 数据可视化
RT-DETR改进策略【Backbone/主干网络】| 替换骨干网络为2023-CVPR ConvNeXt V2 (附网络详解和完整配置步骤)
RT-DETR改进策略【Backbone/主干网络】| 替换骨干网络为2023-CVPR ConvNeXt V2 (附网络详解和完整配置步骤)
1121 11
RT-DETR改进策略【Backbone/主干网络】| 替换骨干网络为2023-CVPR ConvNeXt V2 (附网络详解和完整配置步骤)
|
数据挖掘 Python
时间序列分析中的互相关与相干性分析:前导-滞后关系的理论基础与实际应用
时间序列数据在现代数据分析中广泛应用,从金融市场到生物医学领域。本文重点介绍两种分析工具:互相关和相干性分析。互相关用于量化两个时间序列的时域关系,揭示前导-滞后关系;相干性分析则评估信号在频率域的相关性,适用于脑电图等研究。通过实际案例和Python代码示例,展示了这两种方法的应用价值。
1546 8
时间序列分析中的互相关与相干性分析:前导-滞后关系的理论基础与实际应用
|
机器学习/深度学习 文字识别 算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
8658 2
|
机器学习/深度学习 并行计算 PyTorch
ONNX 优化技巧:加速模型推理
【8月更文第27天】ONNX (Open Neural Network Exchange) 是一个开放格式,用于表示机器学习模型,使模型能够在多种框架之间进行转换。ONNX Runtime (ORT) 是一个高效的推理引擎,旨在加速模型的部署。本文将介绍如何使用 ONNX Runtime 和相关工具来优化模型的推理速度和资源消耗。
8135 4
|
编解码 算法 计算机视觉
使用NumPy进行傅里叶变换:基础概念与实践应用
使用NumPy进行傅里叶变换:基础概念与实践应用
849 0