(数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

news2025/1/18 3:28:59

文章目录

  • 一:一维离散傅里叶变换
    • (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将信号表示为不同频率的复数正弦波之和,每个正弦波都有相关的幅度和相位。这些正弦波的频率是均匀的,由信号的采样率和长度决定。其定义式如下,该方程通过对时域中所有样本的贡献进行加总,计算出频率分量 u u u在频域中的复数振幅,并以频率为 u u u的复数指数函数加权

  • f ( x ) f(x) f(x)是N个复数的序列,代表时域中的离散时间信号
  • F ( u ) F(u) F(u)是N个复数的序列,代表频域中的同一信号
  • 复指数函数 e − j 2 π u x N e^{-j\frac{2 \pi u x}{N}} ejN2πux的幅值为1,相位取决于频率 u u u和时间指数 x x x。它代表一个频率为 u u u、相位与时间指数 x x x成正比的正弦波。指数 − j -j j表示该波与参考信号是正交的,参考信号在零点时相位为零

F ( u ) = ∑ x = 0 N − 1 f ( x ) e − j 2 π u x N u = 0 , 1 , 2 , ⋯   , N − 1 F(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=0N1f(x)ejN2πuxu=0,1,2,,N1

一维逆向离散傅里叶变换(Inverse Discrete Fourier Transform, IDFT):代表离散时间信号的复数序列从频域转回时域。IDFT是离散傅里叶变换(DFT)的逆运算,它是一种广泛使用的数学技术,用于分析和处理各种应用中的信号,如音频和图像处理、通信和控制系统。IDFT可用于从其频域表示中恢复原始时域信号,频域表示可通过对信号施加DFT获得。换句话说,IDFT允许我们将信号从频域转换回时域,这对进一步的处理或分析很有用。其定义式如下,IDFT定义方程将反离散傅里叶变换(IDFT)表示为不同频率的复指数函数之和

  • F ( u ) F(u) F(u) N N N个复数的序列,代表频域中的信号
  • f ( x ) f(x) f(x)是N个复数的序列,代表时域中的同一信号

f ( x ) = 1 N ∑ u = 0 N − 1 F ( u ) e j 2 π u x N x = 0 , 1 , 2 , ⋯   , N − 1 f(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=0N1F(u)ejN2πuxx=0,1,2,,N1

为了表示方便,我们 W = e − j 2 π N W=e^{-j \frac{2\pi}{N}} W=ejN2π,则DFT和IDFT可以表示为

F ( u ) = ∑ x = 0 N − 1 f ( x ) W u x u = 0 , 1 , 2 , ⋯   , N − 1 f ( x ) = 1 N ∑ u = 0 N − 1 F ( u ) W − u x x = 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=0N1f(x)Wuxu=0,1,2,,N1f(x)=N1u=0N1F(u)Wuxx=0,1,2,,N1

W W W因子具有周期性和对称性

在这里插入图片描述

(2)实例

对于一个长度为4的数字序列,求其DFT

F ( u ) = ∑ 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)=\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=03f(x)Wux=f(0)W0+f(1)Wu+f(2)W2u+f(3)W3u

[ F ( 0 ) F ( 1 ) F ( 2 ) F ( 3 ) ] = [ 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 ] [ 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)

根据 W W W的对称性和周期性有

  • 对称性
    • W 2 = − W 0 W^{2}=-W^{0} W2=W0
    • W 3 = − W 1 W^{3}=-W^{1} W3=W1
  • 周期性
    • W 4 = W 0 W^{4}=W^{0} W4=W0
    • W 6 = W 2 W^{6}=W^{2} W6=W2
    • W 9 = W 1 W^{9}=W^{1} W9=W1

于是

( F ( 0 ) F ( 1 ) F ( 2 ) F ( 3 ) ) = ( 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 ) ( f ( 0 ) f ( 1 ) f ( 2 ) f ( 3 ) ) = ( 1 1 1 1 1 W 1 − 1 − W 1 1 − 1 1 − 1 1 − W 1 − 1 W 1 ) ( 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 1 f ( 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) = W0W0W0W0W0W1W0W1W0W0W0W0W0W1W0W1 f(0)f(1)f(2)f(3) = 11111W11W111111W11W1 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是快速傅里叶变换的缩写,它是计算 N N N个复数序列的离散傅里叶变换(DFT)的一种有效算法。FFT算法将DFT的计算复杂度从 O ( N 2 ) O(N^2) O(N2)降低到 O ( N l o g N ) O(N log N) O(NlogN),使其对实时信号处理应用非常实用。FFT的工作原理是利用DFT计算中使用的复数指数函数的对称性和周期性特性。通过巧妙地重新安排计算,FFT算法将DFT计算分成更小的子问题,这些子问题可以以分而治之的方式被递归解决。具体来说,将原函数分为奇数项和偶数项,通过不断的一个奇数一个偶数的相加(减),最终得到需要的结果,因此FFT是将复杂的运算变成两个数相加(减)的简单运算的重复

在这里插入图片描述

在这里插入图片描述

(2)实例

对于一个长度为8的数字序列,利用FFT算法求其DFT

F ( u ) = ∑ 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 4 u + f ( 5 ) W 5 u + f ( 6 ) W 6 u + f ( 7 ) W 7 u 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=07f(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 ) + j I ( 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。最后,代码使用subplotimshow来显示原始图像、其未缩放的DFT和其移位的DFT在1x3网格的子图中并排排列。总之,这段代码对输入图像进行了基本的频率分析,并将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 image
img = cv2.imread('desert.jpg')

# Convert to grayscale
gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# Compute the 2D Discrete Fourier Transform
dft_img = np.fft.fft2(gray_img)

# Get the absolute values
abs_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 Transform
shifted_dft_img = np.fft.fftshift(abs_dft_img)

# Plot the results using Matplotlib
fig, 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)线性

线性:二维傅里叶变换的线性属性指出,函数的线性组合的傅里叶变换等于它们的傅里叶变换的同一线性组合。在数学上,如果 f 1 ( x , y ) f1(x,y) f1(x,y) f 2 ( x , y ) f2(x,y) f2(x,y)是空间域的两个函数, a a a b b b是任意两个常数,那么我们有

F { a ∗ f 1 ( x , y ) + b ∗ f 2 ( x , y ) } = a ∗ F { f 1 ( x , y ) } + b ∗ F { f 2 ( x , y ) } F\{a * f1(x,y) + b * f2(x,y)\} = a * F\{f1(x,y)\} + b * F\{f2(x,y)\} F{af1(x,y)+bf2(x,y)}=aF{f1(x,y)}+bF{f2(x,y)}

这一特性使我们可以很容易地将多个函数结合起来,并将傅里叶变换应用到所产生的函数上,而不是对每个函数进行单独的傅里叶变换,然后再将结果结合起来

(3)周期性

周期性:二维傅里叶变换的周期性属性指出,一个周期性函数的傅里叶变换也是一个周期性函数,其周期相同。在数学上,如果 f ( x , y ) f(x,y) f(x,y)是一个周期为 T T 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 cv2
import numpy as np
import 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.shape
M = 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) 表示该图像的傅里叶变换的值
  • N N N M M 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)|^2 n=0N1m=0M1f(n,m)2=MN1u=0N1v=0M1F(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} F1 表示二维傅里叶反变换

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)=F1[F(u,v)G(u,v)]=F1[F(u,v)]F1[G(u,v)]=h(x,y)

该定理说明,在频域中计算卷积运算可以通过将两个二维函数的傅里叶变换相乘,然后进行反变换来实现。此外,该定理还意味着可以使用频域滤波器来实现空间域滤波操作,例如图像去噪和图像增强等。该定理在计算机视觉和数字图像处理中的广泛应用,因为它允许我们在频域执行与时域相同的操作,但以更有效的方式。例如,在图像处理中,可以使用卷积定理计算模糊卷积、形态学操作、边缘检测、图像重构等

五:离散傅里叶变换在图像处理中的应用

(1)描述图像信息

傅里叶描绘子:描绘子是表征图像特征的一系列符号,描绘子具有几何变换不变性(图像内容不变,仅产生几何变换,描绘子唯一)。傅里叶描绘子是一种基于傅里叶变换的形状特征提取方法,用于对二维物体或形状进行描述和分类。它可以将复杂的形状表示为一组傅里叶系数,这些系数具有很好的不变性和区分度,因此傅里叶描述子在图像检索、目标跟踪、识别和分类等方面有着广泛的应用

如下,闭合区域边界上的点列用复数序列表示, z ( n ) z(n) z(n)的DFT系数 Z ( k ) Z(k) Z(k) 称为傅立叶描绘子

z ( n ) = x ( n ) + i y ( n ) n = 0 , 1 , ⋯   , N − 1 z(n)=x(n)+{i} y(n) \quad n=0,1, \cdots, N-1 z(n)=x(n)+iy(n)n=0,1,,N1

对于一个形状,可以使用边缘检测算法提取其边缘,并将其表示为一组坐标点的集合。使用傅里叶描述子来描述形状的主要步骤包括四个步骤

  1. 对形状进行离散傅里叶变换(DFT),得到一组复数傅里叶系数
  2. 根据应用的需要,选择一定数量的傅里叶系数(通常是前几个)
  3. 使用这些傅里叶系数来重构原始形状,并使其尽可能接近实际形状
  4. 通过比较不同形状的傅里叶描述子来进行形状分类和匹配。通常使用欧氏距离和相似性度量来确定形状之间的相似度

傅里叶描述子具有对形状缩放、旋转和平移不变的特性,因此被广泛应用于目标跟踪、人脸识别、指纹识别和字符识别等方面。同时,傅里叶描述子还具有压缩性,可以用于压缩图像和减少存储空间

(2)在图像滤波中的应用

图像滤波中的应用:DFT 在图像滤波中有广泛的应用,可以用于几乎所有类型的图像滤波器。具体来说,可以将图像卷积的计算通过 DFT 改为频域中的点乘计算,然后再通过反变换将其转换回空间域。基本步骤如下

  1. 对输入图像进行零均值化处理,以消除 DC 分量
  2. 使用 DFT 将输入图像转换到频域
  3. 在频域中执行滤波操作
  4. 将滤波结果通过 IDFT 转换回空间域

常见的图像滤波器可以分为两类

  • 低通滤波器:用于图像平滑和去噪
  • 高通滤波器:用于图像锐化和边缘检测

A:低通滤波器

低通滤波器:低通滤波是一种信号处理技术,用于从信号中滤除高频分量,保留低频信号。在图像处理中,低通滤波通常用于图像平滑和去噪,可以帮助去除图像中的高频噪声,而保留图像中的结构和纹理。因此,低通滤波常被应用在图像增强和特征提取等领域。对于低通滤波器而言,可以使用基于 DFT 的传统滤波器,如高斯滤波器和均值滤波器

  • 高斯滤波器:通过保留低频分量(类似于图像的模糊部分)来平滑图像
  • 均值滤波器:通过计算像素周围区域的平均值来达到平滑效果

在这里插入图片描述

B:高通滤波器

高通滤波器:是一种图像处理技术,用于从图像中滤除低频分量,保留高频信号。在图像处理中,高通滤波通常用于图像增强和边缘检测等领域。它可以在强化图像中的高频细节的同时,削弱图像的低频信息,减少图像中的模糊和平滑效果。对于高通滤波器,可以使用基于 DFT 的拉普拉斯滤波器和锐化滤波器,它们通过保留高频分量(类似于图像的边缘部分)来增强图像的细节和纹理。拉普拉斯滤波器和锐化滤波器的计算也可以通过 DFT 变换来实现

在这里插入图片描述

(3)在图像压缩中的应用

图像压缩中的应用:由于 DFT 具有压缩能力,即使在使用较少的傅里叶系数时,也可以较好地重建图像。因此,DFT 可以用于图像压缩算法中,减少存储空间和数据传输的时间,使图像可以更快地传输和处理,更加适合于实际应用。通常,在图像压缩中使用的是基于 DCT(离散余弦变换)的压缩算法,如 JPEG 压缩算法和 MPEG 压缩算法等。这些算法使用的是一维变换,对图像进行分块处理,并将每个块视为一个向量。然后使用 DCT 转换将这些向量转换成一组系数,保留一部分系数,舍弃其余部分系数,以达到图像压缩的效果。最终,可以使用 IDCT 反变换将被压缩的图像恢复到原始图像的大小。DFT 在图像压缩中也有类似的应用过程,只是使用了复数变换。同样,可以将图像分块处理,使用 DFT 转换对每块图像进行变换,并保留部分傅里叶系数以达到压缩效果。最后,可以使用 IDFT 反变换将被压缩的图像恢复为原始图像的大小

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud微服务技术栈.黑马跟学(十二)

SpringCloud微服务技术栈.黑马跟学 十二今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3…

Flutter TextField UI 实例 —— 新手礼包

大家好,我是17。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交互实例 —— 新手礼包 本篇介绍了 Tex…

机器学习:基于逻辑回归对超市销售活动预测分析

系列文章目录 作者:i阿极 作者简介:Python领域新星作者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒关注哦!&a…

linxu学习之进程

文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程:守护进程(重点)僵尸进程:进程 程序和进程 操作系统可以运行多个程序,那他是如何运行的?实际上,CPU的执行是很快的,而待…

《随便测测》WEB接口测试平台

编写用例的船新版本,从未有过的顺滑体验背景在保证用例运行稳定、高效、准确的前提下以降低测试人员编写用例的时间为目的,减少编写用例的复杂度,达到提升效率的目的。解决问题因被测系统业务流程长,接口多(多的一个场…

【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

文章目录1. keytool VS openssl2. X.509 VS PKCS2.1 PKCS2.2 X.5092.2.1 证书编码格式2.2.1.1 DER 证书编码格式二进制2.2.1.2 文本格式 pem2.2.2 文件后缀名3. 常见Web服务软件及证书格式参考相关文章://-----------Java SSL begin----------------------【ssl认证…

【云原生】k8s集群命令行工具kubectl之集群管理命令

kubectl集群管理命令详解一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置二、集群管理命令2.1、top2.2、cordon2.3、uncordon2.4、drain2.5、taint2.5.1、污点设置。2.5.2、容忍度使用一、准备工作…

Scala之函数式编程

目录 函数和方法的区别: 参数默认值: 函数至简原则---能省则省: 至简原则细节 匿名函数的化简: 匿名函数至简原则: 高阶函数: 高阶函数的三种用法: (1)函数可以作…

【K8S系列】深入解析Pod对象(二)

目录 序言 1.Volume 简单介绍 2 Projected Volume 介绍 2.1 Secret 2.1.1 yaml讲解 2.1.2 创建Pod 2.2 Downward API 2.2.1 yaml示例 2.2.2 Downward API 支持字段 3 投票 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 在…

SqlServer实用系统视图,你了解多少?

SqlServer实用系统视图,你了解多少?前言master..spt_valuessysdatabasessysprocesses一套组合拳sysobjectssys.all_objectssyscolumnssystypessyscommentssysindexes结束语前言 在使用任何数据库软件的时候,该软件都会提供一些可能不是那么公…

小规模容器编排使用Docker Swarm不香么,用个锤子的kubernetes

文章目录一、Docker Swarm是什么?二、Swarmkit和Swarm Mode是什么?三、Docker Swarm的核心设计四、Docker Swarm安装部署4.1、初始化Swarm节点14.2、新节点加入Swarm集群4.3、使用swarm部署服务4.4、swarm集群管理一、Docker Swarm是什么? D…

“QT 快速上手指南“ 之 计算器(二)组件,坐标,窗口

文章目录前言一、QT 基本组件用法介绍:1. QLabel :2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数:2. resize( )函数:3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

标准化归一化方法

一、经典机器学习的归一化算法 分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的元素减去当前列的最小值,再除以该列的极差。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Ce…

使用Serv-U搭建FTP服务器并公网访问【内网穿透】

文章目录1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能手机…

这些IT行业趋势,将改变2023

上一周,你被"AI"刷屏了吗? 打开任何一家科技媒体,人工智能都是不变的热门话题。周初大家还在用ChatGPT写论文、查资料、写代码,到周末的时候大家已经开始用GPT-4图像识别来做饭、Microsoft 365 Copilot 来写PPT了。 GP…

【周末闲谈】AI的旅途

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录系列目录前言AIAI的开端第一个AI程序AI的寒冬关于AI的思考末尾前言…

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台学习前言什么是HRNetV2模型代码下载HRNetV2实现思路一、预测部分1、主干网络介绍a、Section-1b、Section-2c、Section-3d、Section-42、特征整合部分3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡🙌 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐😀时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于💓 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…

Half-UNet:用于医学图像分割的简化U-Net架构

Half-UNet简化了编码器和解码器,还使用了Ghost模块(GhostNet)。并重新设计的体系结构,把通道数进行统一。 论文动机 编码器的不同类型的架构图,编码器(A-C)的结构分别来源于U-Net的编码器、解码器和全的Unet结构。 下面是上图的一些结果指标…

4.2学习周报

文章目录前言文献阅读摘要介绍时间序列预测目前存在的问题时间序列预测方法分类未来方向时间序列预测总结前言 本周阅读文献《Forecast Methods for Time Series Data: A Survey》,本文主要对目前时间序列数据建模方法进行分类,主要分为了三类&#xff…