频域滤波:MATLAB 实现与原理详解
1. 频域变换的中心化处理
在频域分析中,为了简化频谱的可视化分析,常需要将变换的原点移到频率矩形的中心。理论上,可以在计算二维傅里叶变换之前,将图像函数 $f(x, y)$ 乘以 $(-1)^{x + y}$ 来实现这一目的。经过这样的处理后,频谱的周期会重新排列,例如在图 4.2(b) 中,坐标 $(M/2, N/2)$ 处的频谱值与图 4.2(a) 中 $(0, 0)$ 处的值相同,而图 4.2(b) 中 $(0, 0)$ 处的值与图 4.2(a) 中 $(-M/2, -N/2)$ 处的值相同。
不过在 MATLAB 中,更常用的方法是先不进行 $(-1)^{x + y}$ 的乘法运算,直接计算变换,然后使用 fftshift 函数对数据进行重新排列。 fftshift 函数通过交换变换结果的象限来将原点移到中心,其效果与在计算变换前将输入图像乘以 $(-1)^{x + y}$ 类似,但这两个过程不能互换。即 $\mathcal{F}[(-1)^{x + y} f(x, y)]$ 等于 fftshift(fft2(f)) ,但不等于 fft2(fftshift(f)) 。
2. MATLAB 中二维离散傅里叶变换(DFT)的计算与可视化
2.1 计算 DFT
在 MATLAB 中,使用快速傅里叶变换(FFT)算法来计算 DFT 和其逆变换。计算图像数组 $f$ 的 FFT 可以使用 fft2 函数,其基本语法为:
超级会员免费看
订阅专栏 解锁全文
1762

被折叠的 条评论
为什么被折叠?



