文章目录
- 一:一维离散傅里叶变换
- (1)定义
- (2)实例
- 二:一维快速傅里叶变换
- (1)定义
- (2)实例
- 三:二维离散傅里叶变换
- (1)定义
- (2)程序
- 四:二维离散傅里叶变换的性质
- (1)可分性
- (2)线性
- (3)周期性
- (4)几何变换性
- A:概述
- B:程序
- (5)Parseval定理
- (6)卷积定理
- 五:离散傅里叶变换在图像处理中的应用
- (1)描述图像信息
- (2)在图像滤波中的应用
- A:低通滤波器
- B:高通滤波器
- (3)在图像压缩中的应用
一:一维离散傅里叶变换
(1)定义
一维离散傅里叶变换(Discrete Fourier Transform,DFT):是一种数学技术,用于将代表离散时间信号的N个复数序列从时域转换到频域。DFT被广泛用于许多应用,如音频和图像处理、通信和控制系统。DFT是傅里叶变换的离散版本,傅里叶变换是一种用于分析频域信号的连续数学技术。DFT将信号表示为不同频率的复数正弦波之和,每个正弦波都有相关的幅度和相位。这些正弦波的频率是均匀的,由信号的采样率和长度决定。其定义式如下,该方程通过对时域中所有样本的贡献进行加总,计算出频率分量uu u在频域中的复数振幅,并以频率为uu u的复数指数函数加权
- f(x)f(x) f(x)是N个复数的序列,代表时域中的离散时间信号
- F(u)F(u) F(u)是N个复数的序列,代表频域中的同一信号
- 复指数函数 e −j 2πuxN e^{-j\frac{2 \pi u x}{N}} e−jN2πux的幅值为1,相位取决于频率uu u和时间指数xx x。它代表一个频率为uu u、相位与时间指数xx x成正比的正弦波。指数−j-j −j表示该波与参考信号是正交的,参考信号在零点时相位为零
F(u)= ∑ x=0N−1 f(x) e −j 2πuxNu=0,1,2,⋯ ,N−1F(u)=\sum_{x=0}^{N-1} f(x) e^{-j \frac{2 \pi u x}{N}} \quad u=0,1,2, \cdots, N-1 F(u)=x=0∑N−1f(x)e−jN2πuxu=0,1,2,⋯,N−1
一维逆向离散傅里叶变换(Inverse Discrete Fourier Transform, IDFT):代表离散时间信号的复数序列从频域转回时域。IDFT是离散傅里叶变换(DFT)的逆运算,它是一种广泛使用的数学技术,用于分析和处理各种应用中的信号,如音频和图像处理、通信和控制系统。IDFT可用于从其频域表示中恢复原始时域信号,频域表示可通过对信号施加DFT获得。换句话说,IDFT允许我们将信号从频域转换回时域,这对进一步的处理或分析很有用。其定义式如下,IDFT定义方程将反离散傅里叶变换(IDFT)表示为不同频率的复指数函数之和
- F(u)F(u) F(u)是NN N个复数的序列,代表频域中的信号
- f(x)f(x) f(x)是N个复数的序列,代表时域中的同一信号
f(x)= 1 N ∑ u=0N−1 F(u) e j 2πuxNx=0,1,2,⋯ ,N−1f(x)=\frac{1}{N} \sum_{u=0}^{N-1} F(u) e^{j \frac{2 \pi u x}{N}} \quad x=0,1,2, \cdots, N-1 f(x)=N1u=0∑N−1F(u)ejN2πuxx=0,1,2,⋯,N−1
为了表示方便,我们W= e −j 2πN W=e^{-j \frac{2\pi}{N}} W=e−jN2π,则DFT和IDFT可以表示为
F(u)= ∑ x=0N−1 f(x) W uxu=0,1,2,⋯ ,N−1f(x)= 1 N ∑ u=0N−1 F(u) W −uxx=0,1,2,⋯ ,N−1\begin{array}{l} F(u)=\sum_{x=0}^{N-1} f(x) W^{u x} \quad u=0,1,2, \cdots, N-1 \\ f(x)=\frac{1}{N} \sum_{u=0}^{N-1} F(u) W^{-u x} \quad x=0,1,2, \cdots, N-1 \end{array} F(u)=∑x=0N−1f(x)Wuxu=0,1,2,⋯,N−1f(x)=N1∑u=0N−1F(u)W−uxx=0,1,2,⋯,N−1
WW W因子具有周期性和对称性
(2)实例
对于一个长度为4的数字序列,求其DFT
F(u)= ∑ x=03f(x) W ux =f(0) W 0+f(1) W u+f(2) W 2u +f(3) W 3u F(u)=\sum_{x=0}^{3} f(x) W^{u x}=f(0) W^{0}+f(1) W^{u}+f(2) W^{2 u}+f(3) W^{3 u} F(u)=x=0∑3f(x)Wux=f(0)W0+f(1)Wu+f(2)W2u+f(3)W3u
[ F(0)F(1)F(2)F(3)]= [ W0W0W0W0W0W1W2W3W0W2W4W6W0W3W6W9] [ f(0)f(1)f(2)f(3)]\left[\begin{array}{l} F(0) \\ F(1) \\ F(2) \\ F(\mathbf{3}) \end{array}\right]=\left[\begin{array}{llll} W^{0} & W^{0} & W^{0} & W^{0} \\ W^{0} & W^{1} & W^{2} & W^{3} \\ W^{0} & W^{2} & W^{4} & W^{6} \\ W^{0} & W^{3} & W^{6} & W^{9} \end{array}\right]\left[\begin{array}{l} f(0) \\ f(1) \\ f(2) \\ f(3) \end{array}\right] F(0)F(1)F(2)F(3) = W0W0W0W0W0W1W2W3W0W2W4W6W0W3W6W9 f(0)f(1)f(2)f(3)
根据WW W的对称性和周期性有
- 对称性
- W 2=− W 0W^{2}=-W^{0} W2=−W0
- W 3=− W 1W^{3}=-W^{1} W3=−W1
- 周期性
- W 4= W 0W^{4}=W^{0} W4=W0
- W 6= W 2W^{6}=W^{2} W6=W2
- W 9= W 1W^{9}=W^{1} W9=W1
于是
( F(0)F(1)F(2)F(3))= ( W0W0W0W0W0W1− W 0− W 1W0− W 0W0− W 0W0− W 1− W 0W1) ( f(0)f(1)f(2)f(3))= ( 1 1 1 1 1 W1−1− W 11 −11 −11 − W 1−1W1) ( f(0)f(1)f(2)f(3))= ( f(0)+f(2)+[f(1)+f(3)]f(0)−f(2)+[f(1)−f(3)] W 1f(0)+f(2)−[f(1)+f(3)]f(0)−f(2)−[f(1)−f(3)] W 1)\left(\begin{array}{c} F(0) \\ F(1) \\ F(2) \\ F(3) \end{array}\right)=\left(\begin{array}{cccc} W^{0} & W^{0} & W^{0} & W^{0} \\ W^{0} & W^{1} & -W^{0} & -W^{1} \\ W^{0} & -W^{0} & W^{0} & -W^{0} \\ W^{0} & -W^{1} & -W^{0} & W^{1} \end{array}\right)\left(\begin{array}{c} f(0) \\ f(1) \\ f(2) \\ f(3) \end{array}\right)=\left(\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & W^{1} & -1 & -W^{1} \\ 1 & -1 & 1 & -1 \\ 1 & -W^{1} & -1 & W^{1} \end{array}\right)\left(\begin{array}{c} f(0) \\ f(1) \\ f(2) \\ f(3) \end{array}\right)=\left(\begin{array}{c} f(0)+f(2)+[f(1)+f(3)] \\ f(0)-f(2)+[f(1)-f(3)] W^{1} \\ f(0)+f(2)-[f(1)+f(3)] \\ f(0)-f(2)-[f(1)-f(3)] W^{1} \end{array}\right) F(0)F(1)F(2)F(3) = W0W0W0W0W0W1−W0−W1W0−W0W0−W0W0−W1−W0W1 f(0)f(1)f(2)f(3) = 11111W1−1−W11−11−11−W1−1W1 f(0)f(1)f(2)f(3) = f(0)+f(2)+[f(1)+f(3)]f(0)−f(2)+[f(1)−f(3)]W1f(0)+f(2)−[f(1)+f(3)]f(0)−f(2)−[f(1)−f(3)]W1
二:一维快速傅里叶变换
(1)定义
一维快速傅里叶变化(Fast Fourier Transform, FFT):FFT是快速傅里叶变换的缩写,它是计算NN N个复数序列的离散傅里叶变换(DFT)的一种有效算法。FFT算法将DFT的计算复杂度从O( N 2)O(N^2) O(N2)降低到O(NlogN)O(N log N) O(NlogN),使其对实时信号处理应用非常实用。FFT的工作原理是利用DFT计算中使用的复数指数函数的对称性和周期性特性。通过巧妙地重新安排计算,FFT算法将DFT计算分成更小的子问题,这些子问题可以以分而治之的方式被递归解决。具体来说,将原函数分为奇数项和偶数项,通过不断的一个奇数一个偶数的相加(减),最终得到需要的结果,因此FFT是将复杂的运算变成两个数相加(减)的简单运算的重复
(2)实例
对于一个长度为8的数字序列,利用FFT算法求其DFT
F(u)= ∑ x=07f(x) W ux =f(0) W 0+f(1) W u+f(2) W 2u +f(3) W 3u +f(4) W 4u +f(5) W 5u +f(6) W 6u +f(7) W 7u F(u)=\sum_{x=0}^{7} f(x) W^{u x}=f(0) W^{0}+f(1) W^{u}+f(2) W^{2 u}+f(3) W^{3 u}+f(4) W^{4u}+f(5) W^{5u}+f(6) W^{6 u}+f(7) W^{7 u} F(u)=x=0∑7f(x)Wux=f(0)W0+f(1)Wu+f(2)W2u+f(3)W3u+f(4)W4u+f(5)W5u+f(6)W6u+f(7)W7u
三:二维离散傅里叶变换
(1)定义
二维傅里叶变换(two-dimensional Fourier transform):是一种数学运算,将一个二维函数从时域转换到频域。在二维傅里叶变换中,输入是一个二维函数f(x,y)f(x, y) f(x,y),输出是一个描述输入函数的频率内容的函数F(u,v)F(u, v) F(u,v)。输出F(u,v)F(u, v) F(u,v)是一个复值函数,其中F(u,v)F(u, v) F(u,v)的幅度代表(u,v)(u, v) (u,v)处频率成分的振幅,F(u,v)F(u, v) F(u,v)的相位代表该成分的相移
如下,频域中的复值函数F(u,v)F(u,v) F(u,v)可以用每个频率分量(u,v)(u,v) (u,v)的振幅∣F(u,v)∣|F(u,v)| ∣F(u,v)∣和相位角ϕ(u,v)\phi(u,v) ϕ(u,v)表示。F(u,v)F(u,v) F(u,v)的实部和虚部R(u,v)R(u,v) R(u,v)和I(u,v)I(u,v) I(u,v)可用于计算每个频率分量F(u,v)F(u,v) F(u,v)的振幅和相位角
F(u,v)=R(u,v)+jI(u,v)=∣F(u,v)∣ e jφ(u,v) F(u, v)=R(u, v)+j I(u, v)=|F(u, v)| e^{j \varphi(u, v)} F(u,v)=R(u,v)+jI(u,v)=∣F(u,v)∣ejφ(u,v)
- 傅里叶谱:∣F(u,v)∣=R 2(u,v)+ I 2(u,v) |F(u, v)|=\sqrt{R^{2}(u, v)+I^{2}(u, v)} ∣F(u,v)∣=R2(u,v)+I2(u,v)
- 相位谱:φ(u,v)=arctan I(u,v)R(u,v) \varphi(u, v)=\arctan \frac{I(u, v)}{R(u, v)} φ(u,v)=arctanR(u,v)I(u,v)
- 功率谱:E(u,v)=∣F(u,v) ∣ 2= R 2(u,v)+ I 2(u,v)E(u, v)=|F(u, v)|^{2}=R^{2}(u, v)+I^{2}(u, v) E(u,v)=∣F(u,v)∣2=R2(u,v)+I2(u,v)
(2)程序
MATLAB实现:相关函数如下,具体解释可看MATLAB帮助手册
fft
函数:计算一个向量或一个数组的一维快速傅里叶变换(FFT)ifft
函数:计算一个向量或一个数组的一维快速傅里叶逆变变换(IFFT)fft2
函数:计算一个矩阵的二维傅里叶变换ifft2
函数:计算一个矩阵的二维傅里叶逆变换fftshift
函数:将零频分量移到频谱中心。换句话说,它重新排列信号或图像的频域值,使零频分量位于频谱的中心。这对于可视化信号或图像的频率内容是很有用的。ifftshift
函数:将零频率分量移回频谱的原点。这对于将移位后的频域信号或图像转换回其原始形式很有用
实现如下效果:频谱搬移图中间部分为低频部分,越靠外边频率越高。图像中的能量主要集中在低频区,高频能量很少或为零
这段MATLAB代码读入图像 “desert.jpg”,将其转换为灰度,使用fft2
函数计算其二维离散傅里叶变换(DFT),并计算所得DFT的绝对值。然后,它使用最小-最大归一化将绝对DFT的值缩放到[0, 100]的范围内,并将这个缩放的DFT保存为ADFTI1。接下来,代码使用fftshift
函数将DFT的零频分量移到频谱的中心。得到的移位后的DFT被保存为ADFTI2。最后,代码使用subplot
和imshow
来显示原始图像、其未缩放的DFT和其移位的DFT在1×3网格的子图中并排排列。总之,这段代码对输入图像进行了基本的频率分析,并将DFT和移位的DFT可视化
Image=imread('desert.jpg');%读取图像grayI=rgb2gray(Image);%将彩色图像灰度化DFTI1=fft2(grayI); % 二维离散傅里叶变换ADFTI1=abs(DFTI1); % 获得其绝对值top=max(ADFTI1(:));bottom=min(ADFTI1(:));ADFTI1=(ADFTI1-bottom)/(top-bottom)*100; % 使用max-min归一化,缩放至[0,100]ADFTI2=fftshift(ADFTI1);%计算傅里叶变换并移位subplot(131),imshow(Image),title('原图');%显示原图像subplot(132),imshow(ADFTI1),title('原频谱图');%显示傅里叶变换频谱图subplot(133),imshow(ADFTI2),title('移位频谱图');%显示傅里叶变换频谱图
Python实现:使用Python实现上述同样的功能
cv2.dft
函数:计算单通道(灰度)或多通道阵列的一维或二维离散傅里叶变换。这个函数支持正向和反向变换cv2.idft
函数:计算单通道或多通道数组的反离散傅里叶变换cv2.fftshift
函数:将一维或二维阵列的零频率分量移到频谱中心cv2.ifftshift
函数:将一维或二维阵列的零频率分量移回频谱的原点
# Load the imageimg = cv2.imread('desert.jpg')# Convert to grayscalegray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)# Compute the 2D Discrete Fourier Transformdft_img = np.fft.fft2(gray_img)# Get the absolute valuesabs_dft_img = np.abs(dft_img)# Normalize using max-min normalization and scale to [0, 100]top = np.max(abs_dft_img)bottom = np.min(abs_dft_img)abs_dft_img = ((abs_dft_img - bottom) / (top - bottom)) * 100# Shift the Fourier Transformshifted_dft_img = np.fft.fftshift(abs_dft_img)# Plot the results using Matplotlibfig, axs = plt.subplots(1, 3, figsize=(10, 5))axs[0].imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))axs[0].set_title('Original Image')axs[1].imshow(abs_dft_img, cmap='gray')axs[1].set_title('Original Spectrum')axs[2].imshow(shifted_dft_img, cmap='gray')axs[2].set_title('Shifted Spectrum')plt.show()
四:二维离散傅里叶变换的性质
(1)可分性
可分性:两个函数在空间域的乘积的傅里叶变换等于它们在频率域的傅里叶变换的卷积。在数学上,如果f(x,y)f(x,y) f(x,y)和g(x,y)g(x,y) g(x,y)是空间域中的两个函数,那么它们的乘积为
h(x,y)=f(x,y)∗g(x,y)h(x,y) = f(x,y) * g(x,y) h(x,y)=f(x,y)∗g(x,y)
h(x,y)h(x,y) h(x,y)的傅里叶变换是
H(u,v)=F{h(x,y)}=F{f(x,y)∗g(x,y)}H(u,v) = F\{h(x,y)\} = F\{f(x,y) * g(x,y)\} H(u,v)=F{h(x,y)}=F{f(x,y)∗g(x,y)}
利用傅里叶变换的卷积定理,我们可以将H(u,v)H(u,v) H(u,v)表示为
H(u,v)=F{f(x,y)}∗F{g(x,y)}H(u,v) = F\{f(x,y)\} \ast F\{g(x,y)\} H(u,v)=F{f(x,y)}∗F{g(x,y)}
因此,两个函数之积的傅里叶变换等于它们的傅里叶变换的卷积。这一属性在图像处理和计算机视觉中很有用,因为它允许我们在空间域中对图像进行复杂的操作,把它们转换到频域并在那里应用更简单的操作。例如,我们可以利用这一特性来实现线性滤波器,如平滑或锐化滤波器,这在频域中更容易定义
(2)线性
线性:二维傅里叶变换的线性属性指出,函数的线性组合的傅里叶变换等于它们的傅里叶变换的同一线性组合。在数学上,如果f1(x,y)f1(x,y) f1(x,y)和f2(x,y)f2(x,y) f2(x,y)是空间域的两个函数,aa a和bb b是任意两个常数,那么我们有
F{a∗f1(x,y)+b∗f2(x,y)}=a∗F{f1(x,y)}+b∗F{f2(x,y)}F\{a * f1(x,y) + b * f2(x,y)\} = a * F\{f1(x,y)\} + b * F\{f2(x,y)\} F{a∗f1(x,y)+b∗f2(x,y)}=a∗F{f1(x,y)}+b∗F{f2(x,y)}
这一特性使我们可以很容易地将多个函数结合起来,并将傅里叶变换应用到所产生的函数上,而不是对每个函数进行单独的傅里叶变换,然后再将结果结合起来
(3)周期性
周期性:二维傅里叶变换的周期性属性指出,一个周期性函数的傅里叶变换也是一个周期性函数,其周期相同。在数学上,如果f(x,y)f(x,y) f(x,y)是一个周期为TT T的周期性函数,那么它的傅里叶变换F(u,v)F(u,v) F(u,v)也是周期为 1 T\frac{1}{T} T1的。在处理具有重复模式或结构的图像时,这一属性特别有用,因为它允许我们轻松分析和处理这些模式的频率成分
(4)几何变换性
A:概述
几何变换性:二维傅里叶变换具有许多重要的几何变换性质,其中一些常用性质包括
- 平移性质(Shift invariance):如果在空间域中对图像进行平移变换,则傅里叶变换中相应频率的位置也会发生平移。即,图像在空间域中平移会导致频域中相应的频率发生相同的平移
- 旋转性质(Rotation invariance):如果在空间域中对图像进行旋转变换,则傅里叶变换中相应频率的位置也会发生旋转。即,图像在空间域中旋转会导致频域中相应的频率发生相同的旋转
- 缩放性质(Scaling invariance)::如果在空间域中对图像进行缩放变换(例如,放大或缩小),则傅里叶变换中相应频率的位置也会发生缩放。即,图像在空间域中缩放会导致频域中相应的频率发生相同的缩放
- 对称性质(Symmetry property)::当信号在空间域中是实数时,其傅里叶变换具有一定的对称性质。具体而言,在傅里叶变换中,实数信号的频率幅值谱具有偶对称性,而相位谱具有奇对称性
- 周期性质(Periodicity)::傅里叶变换中,频率的范围是从负无穷到正无穷,其中正无穷和负无穷是等价的。此外,频率也是周期性的,它的周期与采样间隔有关
B:程序
MATLAB实现:
实现如下效果,对一幅图像进行几何变换,再进行DFT,验证性质
Python实现:
import cv2import numpy as npimport matplotlib.pyplot as plt# 读取图像,转为灰度图像img = cv2.imread('block.bmp', cv2.IMREAD_GRAYSCALE)# 比例变换scale = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)# 旋转变换rows, cols = img.shapeM = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1)rotate = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_LINEAR)# 平移变换tform = np.float32([[1, 0, 20], [0, 1, 20]])trans = cv2.warpAffine(img, tform, (cols, rows), flags=cv2.INTER_LINEAR)# 计算傅里叶变换Originaldft = np.abs(np.fft.fftshift(np.fft.fft2(img)))Scaledft = np.abs(np.fft.fftshift(np.fft.fft2(scale)))Rotatedft = np.abs(np.fft.fftshift(np.fft.fft2(rotate)))Transdft = np.abs(np.fft.fftshift(np.fft.fft2(trans)))# 显示原图和变换后的图像plt.subplot(221), plt.imshow(img, cmap='gray'), plt.title('原图')plt.subplot(222), plt.imshow(scale, cmap='gray'), plt.title('比例')plt.subplot(223), plt.imshow(rotate, cmap='gray'), plt.title('旋转')plt.subplot(224), plt.imshow(trans, cmap='gray'), plt.title('平移')plt.show()# 显示傅里叶变换后的图像plt.subplot(221), plt.imshow(Originaldft, cmap='gray'), plt.title('原图DFT')plt.subplot(222), plt.imshow(Scaledft, cmap='gray'), plt.title('比例DFT')plt.subplot(223), plt.imshow(Rotatedft, cmap='gray'), plt.title('旋转DFT')plt.subplot(224), plt.imshow(Transdft, cmap='gray'), plt.title('平移DFT')plt.show()
(5)Parseval定理
Parseval定理:在傅里叶变换中,Parseval 定理给出了时域和频域之间能量守恒的关系。在二维傅里叶变换中,其具体形式为
- f(n,m)f(n,m) f(n,m) 表示原始图像中位于 (n,m)(n,m) (n,m) 处的像素值
- F(u,v)F(u,v) F(u,v) 表示该图像的傅里叶变换的值
- NN N 和 MM M 分别表示图像的宽度和高度
- ∣f(n,m) ∣ 2|f(n,m)|^2 ∣f(n,m)∣2 和 ∣F(u,v) ∣ 2|F(u,v)|^2 ∣F(u,v)∣2 分别表示在时域和频域中的像素值平方
∑ n = 0 N − 1∑ m = 0 M − 1∣ f ( n , m ) ∣2= 1 M N∑ u = 0 N − 1∑ v = 0 M − 1∣ F ( u , v ) ∣2 \sum\limits_{n=0}^{N-1}\sum\limits_{m=0}^{M-1}|f(n,m)|^2=\frac{1}{MN} \sum\limits_{u=0}^{N-1}\sum\limits_{v=0}^{M-1}|F(u,v)|^2n=0∑N−1m=0∑M−1∣f(n,m)∣2=MN1u=0∑N−1v=0∑M−1∣F(u,v)∣2
该定理表明,原始图像的每个像素值平方之和等于其傅里叶变换的幅值平方之和的平均值。该定理在信号和图像处理中具有广泛的应用。例如,可以使用该定理来测试傅里叶变换的计算精度、比较不同图像的能量分布以及在时域和频域中执行滤波和降噪操作等。此外,Parseval 定理还提供了一种将傅里叶变换和反变换链接在一起的方法,并且可以确保通过傅里叶变换和反变换重建的图像与原始图像具有相同的能量
(6)卷积定理
卷积定理:在二维傅里叶变换中,卷积定理指出,卷积运算在空间域中对应于乘积运算在频率域中。该定理描述了频域卷积的关系,使得频率域操作成为图像处理中强大的工具。设 f(x,y)f(x,y) f(x,y) 和 g(x,y)g(x,y) g(x,y) 分别表示两个二维函数或图像,其二维傅里叶变换分别为 F(u,v)F(u,v) F(u,v) 和 G(u,v)G(u,v) G(u,v)。则它们的空间域卷积 h(x,y)=f(x,y)∗g(x,y)h(x,y)=f(x,y)*g(x,y) h(x,y)=f(x,y)∗g(x,y) 与它们的频域乘积 H(u,v)=F(u,v)⋅G(u,v)H(u,v)=F(u,v) \cdot G(u,v) H(u,v)=F(u,v)⋅G(u,v) 满足以下卷积定理:
- F −1 \mathcal{F}^{-1} F−1 表示二维傅里叶反变换
h(x,y)=f(x,y)∗g(x,y)= F −1 [F(u,v)⋅G(u,v)]= F −1 [F(u,v)]∗ F −1 [G(u,v)]=h(x,y)h(x,y)=f(x,y)*g(x,y)=\mathcal{F}^{-1}[F(u,v) \cdot G(u,v)]=\mathcal{F}^{-1}[F(u,v)] * \mathcal{F}^{-1}[G(u,v)]=h(x,y) h(x,y)=f(x,y)∗g(x,y)=F−1[F(u,v)⋅G(u,v)]=F−1[F(u,v)]∗F−1[G(u,v)]=h(x,y)
该定理说明,在频域中计算卷积运算可以通过将两个二维函数的傅里叶变换相乘,然后进行反变换来实现。此外,该定理还意味着可以使用频域滤波器来实现空间域滤波操作,例如图像去噪和图像增强等。该定理在计算机视觉和数字图像处理中的广泛应用,因为它允许我们在频域执行与时域相同的操作,但以更有效的方式。例如,在图像处理中,可以使用卷积定理计算模糊卷积、形态学操作、边缘检测、图像重构等
五:离散傅里叶变换在图像处理中的应用
(1)描述图像信息
傅里叶描绘子:描绘子是表征图像特征的一系列符号,描绘子具有几何变换不变性(图像内容不变,仅产生几何变换,描绘子唯一)。傅里叶描绘子是一种基于傅里叶变换的形状特征提取方法,用于对二维物体或形状进行描述和分类。它可以将复杂的形状表示为一组傅里叶系数,这些系数具有很好的不变性和区分度,因此傅里叶描述子在图像检索、目标跟踪、识别和分类等方面有着广泛的应用
如下,闭合区域边界上的点列用复数序列表示,z(n)z(n) z(n)的DFT系数Z(k)Z(k) Z(k) 称为傅立叶描绘子
z(n)=x(n)+iy(n) n=0,1,⋯ ,N−1z(n)=x(n)+{i} y(n) \quad n=0,1, \cdots, N-1 z(n)=x(n)+iy(n)n=0,1,⋯,N−1
对于一个形状,可以使用边缘检测算法提取其边缘,并将其表示为一组坐标点的集合。使用傅里叶描述子来描述形状的主要步骤包括四个步骤
- 对形状进行离散傅里叶变换(DFT),得到一组复数傅里叶系数
- 根据应用的需要,选择一定数量的傅里叶系数(通常是前几个)
- 使用这些傅里叶系数来重构原始形状,并使其尽可能接近实际形状
- 通过比较不同形状的傅里叶描述子来进行形状分类和匹配。通常使用欧氏距离和相似性度量来确定形状之间的相似度
傅里叶描述子具有对形状缩放、旋转和平移不变的特性,因此被广泛应用于目标跟踪、人脸识别、指纹识别和字符识别等方面。同时,傅里叶描述子还具有压缩性,可以用于压缩图像和减少存储空间
(2)在图像滤波中的应用
图像滤波中的应用:DFT 在图像滤波中有广泛的应用,可以用于几乎所有类型的图像滤波器。具体来说,可以将图像卷积的计算通过 DFT 改为频域中的点乘计算,然后再通过反变换将其转换回空间域。基本步骤如下
- 对输入图像进行零均值化处理,以消除 DC 分量
- 使用 DFT 将输入图像转换到频域
- 在频域中执行滤波操作
- 将滤波结果通过 IDFT 转换回空间域
常见的图像滤波器可以分为两类
- 低通滤波器:用于图像平滑和去噪
- 高通滤波器:用于图像锐化和边缘检测
A:低通滤波器
低通滤波器:低通滤波是一种信号处理技术,用于从信号中滤除高频分量,保留低频信号。在图像处理中,低通滤波通常用于图像平滑和去噪,可以帮助去除图像中的高频噪声,而保留图像中的结构和纹理。因此,低通滤波常被应用在图像增强和特征提取等领域。对于低通滤波器而言,可以使用基于 DFT 的传统滤波器,如高斯滤波器和均值滤波器
- 高斯滤波器:通过保留低频分量(类似于图像的模糊部分)来平滑图像
- 均值滤波器:通过计算像素周围区域的平均值来达到平滑效果
B:高通滤波器
高通滤波器:是一种图像处理技术,用于从图像中滤除低频分量,保留高频信号。在图像处理中,高通滤波通常用于图像增强和边缘检测等领域。它可以在强化图像中的高频细节的同时,削弱图像的低频信息,减少图像中的模糊和平滑效果。对于高通滤波器,可以使用基于 DFT 的拉普拉斯滤波器和锐化滤波器,它们通过保留高频分量(类似于图像的边缘部分)来增强图像的细节和纹理。拉普拉斯滤波器和锐化滤波器的计算也可以通过 DFT 变换来实现
(3)在图像压缩中的应用
图像压缩中的应用:由于 DFT 具有压缩能力,即使在使用较少的傅里叶系数时,也可以较好地重建图像。因此,DFT 可以用于图像压缩算法中,减少存储空间和数据传输的时间,使图像可以更快地传输和处理,更加适合于实际应用。通常,在图像压缩中使用的是基于 DCT(离散余弦变换)的压缩算法,如 JPEG 压缩算法和 MPEG 压缩算法等。这些算法使用的是一维变换,对图像进行分块处理,并将每个块视为一个向量。然后使用 DCT 转换将这些向量转换成一组系数,保留一部分系数,舍弃其余部分系数,以达到图像压缩的效果。最终,可以使用 IDCT 反变换将被压缩的图像恢复到原始图像的大小。DFT 在图像压缩中也有类似的应用过程,只是使用了复数变换。同样,可以将图像分块处理,使用 DFT 转换对每块图像进行变换,并保留部分傅里叶系数以达到压缩效果。最后,可以使用 IDFT 反变换将被压缩的图像恢复为原始图像的大小