首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从二维FFT计算功率谱

如何从二维FFT计算功率谱
EN

Stack Overflow用户
提问于 2013-11-09 03:42:02
回答 2查看 9K关注 0票数 4

我在做实验作业时遇到了一个问题,不知道如何实现:

fft2对灰度图像进行傅立叶变换,然后计算功率谱。这是我到目前为止的代码:

代码语言:javascript
复制
>> Pc = imread('pckint.jpg');
>> whos Pc;
  Name        Size             Bytes  Class    Attributes

  Pc        256x256            65536  uint8              

>> imshow(Pc);
>> result = fft2(Pc);

我的问题来自于结果。如何计算功率谱?

EN

回答 2

Stack Overflow用户

发布于 2013-11-09 04:30:45

尝试:

代码语言:javascript
复制
psd=abs(fftshift(fft2(Pc))).^2;

在dB中:

代码语言:javascript
复制
psd=immultiply(log10(abs(fftshift(fft2(Pc)))), 20);
票数 4
EN

Stack Overflow用户

发布于 2014-10-28 20:53:34

我猜你正在寻找FFT的对数形式,因为这是表达傅立叶级数功率谱的更好方法之一,因为与显示器的8位相比,频谱的动态范围非常大,以至于中心的亮度值控制了结果,这个困难通过对数变换来处理。

这就是在MATLAB中实现的方法:

代码语言:javascript
复制
I = imread('cameraman.tif');
imshow(I)
F = fft2(I);
shF = fftshift(F);
Log = log2(1 + abs(shF));
imshow(Log, []);

imshow表达式末尾的空方括号是显示指定范围内的图像所必需的,在本例中表示min(I(:)) max(I(:));即i中的最小值显示为黑色,最大值显示为白色。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19867279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档