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

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

正文


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月前
|
机器学习/深度学习
FFT能量归一化
FFT能量归一化
22 0
|
2月前
|
算法 C语言
数字信号处理中的快速傅里叶变换
数字信号处理中的快速傅里叶变换
25 0
|
12天前
|
算法 计算机视觉
傅里叶变换
傅里叶变换
21 2
|
4天前
|
数据安全/隐私保护
时域与频域数据互相转换,傅里叶变换与逆傅里叶变换,matlab程序,时域转频域
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
11天前
|
计算机视觉 Python
傅里叶滤波
傅里叶滤波
6 3
|
5月前
|
计算机视觉 Python
图像的傅里叶变换(二)
图像的傅里叶变换(二)
|
5月前
|
数据安全/隐私保护 Python
|
10月前
|
算法
转:fft算法(快速傅里叶变换算法)
FFT (Fast Fourier Transform) 是一种快速傅里叶变换算法。它是用来将一个信号从时域转换到频域的算法。这个算法通过分治策略,将一个长度为 N 的复数序列分解成 N/2 个长度为 2 的复数序列,然后对这些小的序列分别进行 FFT 计算。
238 0
|
机器学习/深度学习
傅立叶变换之(一)——欧拉公式
傅立叶变换之(一)——欧拉公式