图像傅立叶变换(二维傅立叶变换fourier, 二维DFT, 2d-fft)的原理和物理意义

 

 
  
书中第24章内容, 部分内容来自:
http://www.jcrystal.com
http://www.academictutorials.com/graphics/graphics-2d-fourier-transform.asp
--------------------------------
图像傅立叶变换
图像的傅立叶变换,原始图像由N行N列构成,N必须是基2的,把这个N*N个包含图像的点称为实部,另外还需要N*N个点称为虚部,因为FFT是基于复数的,如下图所示:



计算图像傅立叶变换的过程很简单:首先对每一行做一维FFT,然后对每一列做一维FFT。具体来说,先对第0行的N个点做FFT(实部有值,虚部为0),将FFT输出的实部放回原来第0行的实部,FFT输出的虚部放回第0行的虚部,这样计算完全部行之后,图像的实部和虚部包含的是中间数据,然后用相同的办法进行列方向上的FFT变换,这样N*N的图像经过FFT得到一个N*N的频谱。

下面展示了一副图像的二维FFT变换:


频域中可以包含负值,图像中灰色表示0,黑色表示负值,白色表示正值。可以看到4个角上的黑色更黑,白色更白,表示其幅度更大,其实4个角上的系数表示的是图像的低频组成部分,而中心则是图像的高频组成部分。除此以外,FFT的系数显得杂乱无章,基本看不出什么。


将上述直角坐标转换为极坐标的形式,稍微比较容易理解一点,幅度中4个角上白色的区域表示幅度较大,而相位中高频和低频基本看不出什么区别来。


上述以一种不同的方法展示了图像频谱,它将低频部分平移到了频谱的中心。这个其实很好理解,因为经2D-FFT的信号是离散图像,其2D-FFT的输出就是周期信号,也就是将前面一张图周期性平铺,取了一张以低频为中心的图。将原点放在中心有很多好处,比如更加直观更符合周期性的原理,但在这节中还是以未平移之前的图来解释。

行N/2和列N/2将频域分成四块。对实部和幅度来说,右上角和左下角成镜像关系,左上角和右下角也是镜像关系;对虚部和相位来说,也是类似的,只是符号要取反,这种对称性和1维傅立叶变换是类似的,你可以往前看看。




为简单起见,先考虑4*4的像素,右边是其灰度值,对这些灰度值进行2维fft变换。


h和k的范围在-N/2到N/2-1之间。


通常I(n,m)是实数,F(0,0)总是实数,并且F(h,k)具有对偶性。

如果写成指数形式,即:


--------------------------------
图像傅立叶变换的物理意义



如果只保留靠近中心的幅度,则图像的细节丢失,但是不同区域还是有着不同灰度。


如果保留的是远离中心的幅度,则图像的细节可以看得出,但是不同区域的灰度都一样了。



考虑一个黑色矩形的傅立叶变换,这个黑色矩形的背景为白色。


如果对频域中垂直方向高频分量进行截断,则图像中黑白将不那么分明了,表现为振荡。



可以得出结论:
傅立叶变换系数靠近中心的描述的是图像中慢变化的特性,或者说灰度变换比较缓慢的特性(频率比较慢的部分);
傅立叶变换系数远离中心的描述的是图像中快变化的特性,或者说灰度变换比较剧烈的特性(频率比较快的部分)。

--------------------------------
傅立叶变换相位所含的信息
有两幅图像,如果用第一幅图像傅立叶变换的幅度和第二幅图像傅立叶变换的相位做反变换得到的图像是什么样子的?如果反过来,将第一幅图像的相位和第二幅图像的幅度做反变换得到的图像又是什么样子的?

这里再用1维傅立叶变换解释一下:

在1维傅立叶变换中,可以看到相位包含了边沿何时出现的信息!在图像的傅立叶变换中也一样,相位决定了图像的边沿,所以决定了图像中你看到物体的样子!
关于相位所含的信息,你可以这样理解:
边沿的形成是当很多正弦波上升沿都发生在同一时刻,也就是这些正弦波的相位是相同的时刻,所以相位所含的信息决定了边沿所发生的位置,而正是边沿决定了图像的样子。
这个就是图像信号和声音信号的一个区别,声音信号的信息多数都包含在其傅立叶变换的幅度中,即不同频率幅度的大小,就是说你听到什么声音取决于你听到什么样的频率的信号,而对于这些信号时什么时候发生的并不十分重要。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
二维傅立叶变换2D Fourier Transform)是一种将二维信号从时域转换到频域的数学工具,常用于图像处理和信号处理领域。在Matlab中,可以使用fft2函数来进行二维傅立叶变换。 下面是使用Matlab进行二维傅立叶变换的基本步骤: 1. 读取图像或生成二维信号。 2. 将信号转换为灰度图像(如果是彩色图像)。 3. 使用fft2函数对信号进行二维傅立叶变换。 4. 对变换结果进行频谱中心化,即将低频部分移到图像中心。 5. 可选:对频谱进行幅度谱或相位谱的分析。 6. 可选:对频谱进行滤波或其他处理。 7. 使用ifft2函数对处理后的频谱进行逆变换,得到处理后的图像或信号。 下面是一个简单的示例代码: ```matlab % 读取图像 image = imread('image.jpg'); % 转换为灰度图像 gray_image = rgb2gray(image); % 进行二维傅立叶变换 fft_image = fft2(double(gray_image)); % 频谱中心化 shifted_fft_image = fftshift(fft_image); % 可选:显示频谱的幅度谱和相位谱 amplitude_spectrum = abs(shifted_fft_image); phase_spectrum = angle(shifted_fft_image); % 可选:对频谱进行滤波或其他处理 % 对频谱进行逆变换 reconstructed_image = ifft2(ifftshift(shifted_fft_image)); % 显示原始图像和处理后的图像 figure; subplot(1, 2, 1); imshow(gray_image); title('原始图像'); subplot(1, 2, 2); imshow(uint8(abs(reconstructed_image))); title('处理后的图像'); % 相关问题: % 1. 什么是二维傅立叶变换? % 2. 如何在Matlab中进行二维傅立叶变换? % 3. 二维傅立叶变换有哪些应用领域? ``` 希望以上内容能对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值