图像FFTshift

本文探讨了一维及二维函数的傅里叶变换(FT)与离散傅里叶变换(DFT)的频谱分布特性。通过解析,解释了为何FT的频谱会沿原点对称分布,以及如何利用fftshift进行频谱平移,使图像的FT中心与频率矩形的中点对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于一维函数:未平移前,FT的一个周期是沿原点对称分布的。讨论DFT,假设频率范围为[0,1,……,M-1,M],则DFT的频谱分布在原点0的两侧,左:[M/2,M/2-1,……,0],右侧[0,……,M/2-1,M/2]

同样,将上述道理用于理解二维函数(比如图像数据):FT的中心位于频率矩形的中点——假设u,v为频率自变量,则在u方向的FT和沿v方向的FT是沿原点对称分布的,而原始图像的原点在左上角(故FT图像的原点也在左上角),这就导致一幅图像的FT图像由相邻的四个FT周期的1/4组成,如下图所示:

对傅立叶变换(FT)频谱平移的理解

频谱平移使用fftshift来重排数据,相当于把FT图像的原点移到了频率矩形的原点(左上角),如下图所示:

对傅立叶变换(FT)频谱平移的理解

### MATLAB 中 `fftshift` 函数的作用 在MATLAB中,`fftshift`函数用于重新排列快速傅里叶变换(FFT)的结果,使得零频率分量位于数组中心位置而不是默认的第一个元素处。这种调整对于可视化和进一步处理非常重要,因为它能够更好地展示图像中的低频和高频部分[^1]。 当对一幅二维图像执行离散傅立叶变换(DFT),即使用`fft2()`函数之后,得到的数据是以原点为中心展开的,其中心并不处于矩阵几何中心而是左上角的位置。为了便于观察和理解DFT后的数据分布情况,尤其是要突出显示中间区域内的特征时,则需要用到`fftshift`来进行坐标轴平移操作,从而使直流成分居于中央并让负半平面出现在正半平面之前[^3]。 ```matlab % 创建一个简单的测试图案作为输入图像 I = zeros(256, 256); I(80:176, 90:166) = 1; % 对图像应用 FFT 变换 F = fft2(I); % 应用 fftshift 来移动零频率到中心 Fs = fftshift(F); % 显示原始图像及其对应的幅度谱图 figure; subplot(1,2,1), imshow(log(abs(F)), []); title('未经过fftshift'); subplot(1,2,2), imshow(log(abs(Fs)), []); title('经过fftshift'); ``` 这段代码展示了如何创建一个矩形形状的二值图像,并对其进行二维傅里叶变换(`fft2`)。接着利用`fftshift`将变换结果中的零频率移到中心位置以便更直观地查看其频谱特性。最后通过绘制未经和经由`fftshift`处理过的频谱对比图来说明该函数的效果[^4]。 ### 使用注意事项 - 当准备逆向恢复空间域图像前,应该先调用一次`ifftshift`以撤销之前的位移影响; - 如果仅需计算单边频谱或特定方向上的功率密度估计,则可能不需要使用此功能; - 在实际编程实践中,总是建议配合绝对值运算(如上述例子所示),因为相位信息通常不是我们关注的重点,而取模后能获得更好的视觉呈现效果[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值