Matlib——二维傅里叶变换

作者:追风剑情 发布于:2018-8-18 11:15 分类:Matlab

在线对图像做傅里叶变换 https://sci2fig.herokuapp.com/fourier


尺寸为M×N的离散函数f(x,y)的二维离散傅里叶变换(Discrete Fourier Transform, DFT)如下

1111.png

f(x,y)可以通过对F(u,v)求傅里叶逆变换获得,其表达式如下

2222.png

式中,x=0,1,2,...,M-1;y=0,1,2,...,N-1。上面两个公式构成了二维离散傅里叶变换对。变量u和v是频率变量,x和y是空间变量。F(u,v)即为离散信号f(x,y)的频谱,通常是复数

F(u,v)=R(u,v)+jI(u,v)

式中,R(u,v)和I(u,v)分别是F(u,v)的实部和虚部,它的模和相角分别为

3333.png

称|F(u,v)|和ф(u,v)为f(x,y)的幅度谱相位谱

在实际工程应用中分析幅度谱较多,习惯上也常把幅度谱称为频谱。使用DFT进行图像处理时,有如下特点:

① 频谱的直流成分为

444.png

说明在频谱原点的傅里叶变换F(0,0)等于图像的平均灰度级。

 幅度谱|F(u,v)|关于原点对称,即F(u,v)=F(-u,-v)

③ 图像f(x,y)平移后,幅度谱不发生变化,仅有相位发生变化

示例:
%读入图像
M = imread('timg.jpg');
%显示图像
imshow(M);
%生成灰度图
I = rgb2gray(M);
%显示灰度图
figure, imshow(I);
%计算二维傅里叶变换
F1 = fft2(I);
%显示对数变换后的频谱图
figure, imshow(log(abs(F1)+1), [0 10]);
%将直流分量移到频谱图的中心
F2 = fftshift(F1);
%显示对数变换后中心化的频谱图
figure, imshow(log(abs(F2)+1), [0 10]);


截图

11111.png    2222.png    3333.png    444.png

平移和旋转

傅里叶变换满足下列平移特性

11111.png

22222.png

也就是说,用指数项乘以f(x, y)将使DFT的原点移到点(u0, v0);反之,用指数项乘以F(u, v)将使f(x, y)的原点移到点(x0, y0)。平移不影响F(u, v)的幅度(谱)

使用极坐标

333333.png

可得到下列变换对:

44444.png

它指出,若f(x, y)旋转θ0角度,则F(u, v)也旋转相同的角度。反之,若F(u, v)旋转一个角度,f(x, y)也旋转相同的角度。

当u0=M/2,v0=N/2时,有

555555.png

标签: Matlab

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号