图像处理学习笔记-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 \]

posted @ 2022-09-30 17:22  eryo  阅读(64)  评论(0)    收藏  举报