二维傅里叶变换是怎么进行的?

1.首先回顾一下一维FT

通俗来讲,一维傅里叶变换是将一个一维的信号分解成若干个三角波。

对于一个三角波而言,需要三个参数来确定它:频率,幅度 A ,相位。因此在频域中,一维坐标代表频率,而每个坐标对应的函数值也就是是一个复数,其中它的幅度就是这个频率三角波的幅度 A ,相位就是 。下图右侧展现的只是幅度图,在信号处理中用到更多的也是幅度图。

2.类比:从一维到二维

一维信号是一个序列,FT将其分解成若干个一维的简单函数(三角波)之和。二维的信号可以说是一个图片,类比一维,那二维FT是不是将一个图片分解成若干个简单的图片呢?

确实是这样,二维FT将一个图像分解成若干个三角平面波之和。如下图:

对于三角平面波,可以这样理解,在一个方向上存在一个三角函数,在法线方向上将其拉伸。前面说过三个参数可以确定一个一维的三角波。哪几个参数可以确定一个二维的三角平面波呢?答案是四个,其中三个和一维的情况一样(频率 ,幅度 A ,相位 ),但是具有相同这些参数的平面波却可以有不同的方向。如下图所示:

两个不同方向的平面波叠加

3.二维频率域K-SPACE

在一维中由于分解后的参数只要三个,所以用一个序列就能存储它:下标表示频率,存储的内容表示此频率的三角波的幅度和相位。而对于二维FT变换后的平面波有四个参数,那怎末来保存呢?

类比一维中,幅度和相位可以用一个复数表示,它可以作为我们存储的内容。但是还有两个:一个频率一个方向。这时想到向量是有方向的,也是有长度的。所以我们用一个二维的矩阵的来保存分解之后得到的信息。这个矩阵就是K空间。(一般用k来表示空间频率,单位是1/m)

什么意思呢?就是说一个二维矩阵点代表这个平面波的法向量,这个向量的模代表这个平面波的频率 ,这个点里面保存的内容复数就是此平面波的幅度和相位。下面这个图很好的体现了这一点:

也因此K空间的中心对于低频,周围对于高频。如下图,K空间中只有(0,0)处有值,也就是信号都是直流即不存在变化,所以实空间就是一张白纸。

再如下面这个图片,中心低频贡献了图像的主体,周围高频提供图像的细节和边缘。

4.关于K空间

在一维FT变换后,频域呈现对称性,也就前半段代表(0,fs/2),而后半段代表(-fs/2,0)。在二维中也是如此。因此为了方便理解,一般会对图像进行fftshift,将其交叉替换,将0频移至中心。另外,K空间也具有共轭对称性。

下面这个图像显示了二维傅里叶变换中,实空间旋转多少,频率空间也会相应旋转多少。这其实是高维傅里叶变换缩放定理的一种特殊情况。

5.二维傅里叶变换公式

上式为二维FT的公式。可以证明的实部也就是是一个三角平面波。也就是说,二维FT的公式就是将与每个不同方向不同频率的平面波做积分,求出这个基的系数。至于为什么这样可以,就要涉及到正交基、内积、线性空间的知识了。

二维傅立叶变换(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. 二维傅立叶变换有哪些应用领域? ``` 希望以上内容能对你有所帮助!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值