5、二维离散傅里叶变换


1、概念

f(x, y) 表示一幅大小为 M*N 像素的数字图像,其中 x=0,1,2,...,M-1,y=0,1,2,...,N-1
其二维离散傅里叶变换(DFT)为
F(u, v)=\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x, y)e^{-j2\pi(ux/M+vy/N)}
离散傅里叶反变换(IDFT)为
f(x, y)=\frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u, v)e^{j2\pi(ux/M+vy/N)}
R(u, v)I(u, v) 分别表示 F(u, v) 的实部和虚部, 则傅里叶谱定义为
|F(u, v)|=[R^2(u, v)+I^2(u, v)]^{1/2}
变换的相角定义为
\phi(u, v)=arctan[\frac{I(u, v)}{R(u, v)}]
极坐标下表示复函数 F(u, v)
F(u, v)=|F(u, v)|e^{-j\phi(u, v)}
功率谱定义为幅度的平方
P(u, v)=|F(u, v)|^2=R^2(u, v)+I^2(u, v)
如果 f(x, y) 是实函数, 则其傅里叶变换关于远点共轭对称
F(u, v)=F^*(-u, -v)
其傅里叶谱也关于原点对称
|F(u, v)|=|F(-u, -v)|
DTF 和 IDTF 的周期性
F(u, v)=F(u+k_1M, v)=F(u, v+k_2N)=F(u+k_1M, v+k_2N)
f(x, y)=f(x+k_1M, y)=f(x, y+k_2N)=f(x+k_1M, y+k_2N)
变换居中
f(x, y) * (-1)^{x+y}



2、matlab 中计算 DFT

  • 快速傅里叶变换(FFT)
F = fft2(f);

使用傅里叶变换滤波时,需要对输入数据进行零填充。语法为

F = fft2(f, P, Q);

P , Q 为函数结果大小。

  • 傅里叶谱
S = abs(F);
imshow(S, [])
  • 居中变换
Fc = fftshift(F);
F = ifftshift(Fc); %居中反转
  • 相角
phi = atan2(I, R);
phi = atan2(imag(F), read(F));
phi = angle(F);
F = S .* exp(i*phi);
  • 傅里叶反变换
f = ifft2(F);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容