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

简介: 频域滤波—傅里叶变换

正文


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

相关文章
常用图像卷积核类型小结
卷积操作的主要目的就是对图像进行降维以及特征提取; 1.卷积核往往是行数和列数均为奇数的矩阵,这样中心较好定位; 2.卷积核元素的总和体现出输出的亮度,若元素总和为1,卷积后的图像与原图像亮度基本一致;若元素总和为0,则卷积后的图像基本上是黑色,其中较亮的部分往往就是提取出图像的某种特征; 3.滤波实际上就是Same模式的卷积操作,也就是说滤波后图像的大小不变,各种滤镜和照片的风格化就是使用不同的滤波器对图像进行操作。因此卷积核、滤波器本质上都是一个东西; 4.高通滤波器(High Pass Filter, HPF)表示仅允许图像中高频部分(即图片中变化较剧烈的部分)通过,往往用于对图像
|
安全 数据安全/隐私保护 数据中心
|
机器学习/深度学习 自然语言处理 数据可视化
UNet家族最强系列 | UNet、UNet++、TransUNet与SWin-UNet究竟哪个更强!!!
UNet家族最强系列 | UNet、UNet++、TransUNet与SWin-UNet究竟哪个更强!!!
3080 0
|
传感器 机器学习/深度学习 编解码
图像配准:基于 OpenCV 的高效实现
在这篇文章中,我将对图像配准进行一个简单概述,展示一个最小的 OpenCV 实现,并展示一个可以使配准过程更加高效的简单技巧。
|
数据可视化 算法 计算机视觉
什么是傅里叶变换?傅里叶变换处理图像的原理是什么?
傅里叶变换是一种强大的数学工具,能够将信号在时域与频域之间进行转换,广泛应用于物理学、信号处理、图像处理等领域。它能够将复杂信号分解为多个简单的正弦波,从而便于分析和处理。在图像处理中,傅里叶变换可以用于去噪、锐化和压缩等操作,通过滤波器选择性地保留或去除特定频率的信息,提高图像质量。
|
存储 算法 数据可视化
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
403 2
|
存储 安全 测试技术
数组越界:深入理解、危害与防范
数组越界:深入理解、危害与防范
2888 18
|
11月前
|
数据挖掘 Python
时间序列分析中的互相关与相干性分析:前导-滞后关系的理论基础与实际应用
时间序列数据在现代数据分析中广泛应用,从金融市场到生物医学领域。本文重点介绍两种分析工具:互相关和相干性分析。互相关用于量化两个时间序列的时域关系,揭示前导-滞后关系;相干性分析则评估信号在频率域的相关性,适用于脑电图等研究。通过实际案例和Python代码示例,展示了这两种方法的应用价值。
1160 8
时间序列分析中的互相关与相干性分析:前导-滞后关系的理论基础与实际应用
计算机组成原理(9)----硬布线控制器
计算机组成原理(9)----硬布线控制器
547 1
|
机器学习/深度学习 人工智能 算法
量子计算算法:超越经典计算机的边界
【10月更文挑战第30天】量子计算基于量子力学原理,通过量子比特和量子门实现超越经典计算机的计算能力。本文探讨量子计算的基本原理、核心算法及其在密码学、化学、优化问题和机器学习等领域的应用前景,并讨论当前面临的挑战与未来发展方向。