How to calculate amplitude of each frequency?

7 次查看(过去 30 天)
I have an image and I have a code which gives the 2d fft of each color of the image. Now I need to calculate the amplitude of each frequency but I don’t know how to do it. Help is appreciated. Here’s my code so far:
im=imread('image ')/255.;
im1=im;
im=im(:,:,1);
imagefft2=fft2(im);
a=im_fft2;
a(angle(imagefft2)<pi/2)=1;
figure();
im1(:,:,1)=abs(ifft2(a));
imshow(im,[]);

采纳的回答

AdamG2013468
AdamG2013468 2019-8-21
For a 1-D fft, the process is as follows:
fs = %arbitrary sample frequency
N = length(signal);
fbins = [(0:1/N:1-1/N)*fs]; %frequency bin vector for plotting (x axis)
calval = N/2; %for two-sided ffts, calval should just be N for one-sided
[fftdat] = fft(signal);
fftmag = abs(fftdat)/calval;
%to visualize that expected magnitude is correct
figure
hold on
plot(fbins, fftmag)
See if you have any luck with a similar approach for your 2-D fft.
  5 个评论
AdamG2013468
AdamG2013468 2019-8-21
编辑:AdamG2013468 2019-8-21
One way,
for i = 1:length(fftmag)
if fftmag(i) < 1/8
fftmag(i) = 0
end
end
Desiree
Desiree 2019-8-21
I’m really sorry, but still I cannot understand the relationship between your first answer for 1d fft and my question. In my case I don’t have a function, but an image. It has nothing similar to what I have

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by