图像处理学习笔记-04-频率域滤波04
图像处理领域的计算要求并不是微不足道的,需要一些基本方法简化傅里叶变换的计算,并加快计算速度
二维DFT的可分性
\[\begin{aligned}
F(u,v)
&= \sum_{x = 0}^{M - 1}e^{-j2\pi u x / M}\sum_{y = 0}^{N - 1}f(x,y)e^{-j2\pi vy / N} \\
&= \sum_{x = 0}^{M - 1}F(x,v)e^{-j2\pi ux/M} \\
F(x,v) &= \sum_{y = 0}^{N - 1}f(x,y)e^{-j2\pi vy/N}
\end{aligned}
\]
过程基本如下:首先对\(f(x,y)\)所有行计算一维DFT,然后沿着计算结果的每一列计算一维变换
用DFT算法计算IDFT
二维离散的反傅里叶变换
\[f(x,y) = \frac{1}{MN}\sum_{\mu = 0}^{M - 1}\sum_{v = 0}^{N - 1}F(\mu,v)e^{j2\pi(\mu x / M + vy / N)}
\]
取两边的复共轭:
\[MNf^*(x,y) = \sum_{u = 0}^{M - 1}\sum_{v = 0}^{N - 1}F^*(u,v)e^{-j2\pi(ux/M + vy/N)}
\]
所以基本过程是计算\(F^*(u,v)\)的二维傅里叶正变换,得到\(MNf^*(x,y)\),之后取其复共轭并将结果乘以\(1/MN\),就得到了\(F(u,v)\)的傅里叶反变换\(f(x,y)\)
快速傅里叶变换FFT
快速傅里叶变换将乘法和加法的次数降低到\(MN\log_2MN\),因为二维傅里叶变换可以通过一维变换的方法来执行,所以只需要关注一个变量的FFT:
\[F(u) = \sum_{x = 0}^{M - 1}f(x)W_M^{ux},u = 0,1,\cdots,M - 1
\]
其中:
\[W_M = e^{-j2\pi/M}
\]
且假设\(M\)有如下形式:
\[M = 2^n
\]
\(M\)也可以表示为:
\[M = 2K
\]
式子变为:
\[F(u) = \sum_{x = 0}^{2K - 1}f(x)W_{2K}^{ux} = \sum_{x = 0}^{K - 1}f(2x)W_{2K}^{u(2x)} + \sum_{x = 0}^{K - 1}f(2x + 1)W_{2K}^{u(2x + 1)}
\]
可以证明\(W_{2K}^{2ux} = W_K^{ux}\),所以上式:
\[F(u) = \sum_{x = 0}^{K - 1}f(2x)W_K^{ux} + \sum_{x = 0}^{K - 1}f(2x + 1)W_K^{ux}W_{2K}^u
\]
定义:
\[\begin{aligned}
F_{even}(u) &= \sum_{x = 0}^{K - 1}f(2x)W_K^{ux},u = 0,1,2,\cdots,K-1 \\
F_{odd}(u) &= \sum_{x = 0}^{K - 1}f(2x + 1)W_K^{ux},u = 0,1,\cdots,K - 1
\end{aligned}
\]
得到下式:
\[F(u) = F_{even}(u) + F_{odd}(u)W_{2K}^{u}
\]
有\(W_{M}^{u + M} = W_M^u,W_{2M}^{u + M} = -W_{2M}^u\)可得:
\[F(u + K) = F_{even}(u) - F_{odd}(u)W_{2K}^u
\]
计算过程基本如下:首先完成\(K\)个点的计算\(F_{even}(u),F_{odd}(u)\),另外的\(K\)个点可以通过\(F(u + K)\)直接得到,这个过程可以递归计算,假设\(m(n),a(n)\)分别代表实现算法所要求的复数乘法次数和加法次数,样本数目为\(2^n\):
\[m(n) = 2m(n - 1) + 2^{n - 1} ,n \geq 1\\
a(n) = 2a(n - 1) + 2^n,n\geq 1 \\
m(0) = 0 \\
a(0) = 0
\]
所以:
\[m(n) = \frac{1}{2}M\log_2M \\
a(n) = M\log_2M
\]
浙公网安备 33010602011771号