我在做实验作业时遇到了一个问题,不知道如何实现:
用fft2对灰度图像进行傅立叶变换,然后计算功率谱。这是我到目前为止的代码:
>> Pc = imread('pckint.jpg');
>> whos Pc;
Name Size Bytes Class Attributes
Pc 256x256 65536 uint8
>> imshow(Pc);
>> result = fft2(Pc);我的问题来自于结果。如何计算功率谱?
发布于 2013-11-09 04:30:45
尝试:
psd=abs(fftshift(fft2(Pc))).^2;在dB中:
psd=immultiply(log10(abs(fftshift(fft2(Pc)))), 20);发布于 2014-10-28 20:53:34
我猜你正在寻找FFT的对数形式,因为这是表达傅立叶级数功率谱的更好方法之一,因为与显示器的8位相比,频谱的动态范围非常大,以至于中心的亮度值控制了结果,这个困难通过对数变换来处理。
这就是在MATLAB中实现的方法:
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中的最小值显示为黑色,最大值显示为白色。
https://stackoverflow.com/questions/19867279
复制相似问题