How to calculate amplitude of each frequency?

7 views (last 30 days)
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,[]);

Accepted Answer

AdamG2013468
AdamG2013468 on 21 Aug 2019
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 Comments
AdamG2013468
AdamG2013468 on 21 Aug 2019
Edited: AdamG2013468 on 21 Aug 2019
One way,
for i = 1:length(fftmag)
if fftmag(i) < 1/8
fftmag(i) = 0
end
end
Desiree
Desiree on 21 Aug 2019
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

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!