MATLAB Answers

power spectrum plot of an image

170 views (last 30 days)
Dsp on 10 Dec 2013
Edited: Prasobhkumar P. P. on 10 Mar 2020
I am quite new to signal processing and matlab, and I have begun (a small project) to calculate the power spectrum of an image in the frequency domain - and plot this against the frequency.
So, what I have till now is the following:
close all; clear all;
img = imread('my_pic.jpg','jpg'); % it is a color image 400px x 400px
img = rgb2gray(img); % change to gray
psd = 10*log10(abs(fftshift(fft2(img))).^2 );
figure(2); clf
So far it looks good - I get the mesh plot which resembles the spectra I see in various academic papers.
However, what I am looking for is a graph plot of this power spectra Vs. the frequency - and I am not entirely sure how to get this frequency vector for the image. I could do say:
N=400; % the image is 400 x 400
f=-N/2:N/2-1; % possible frequencies?
.. but I am not convinced this is entirely correct.... I'd really appreciate if someone could point me in the right direction to plot log frequency Vs. the power spectrum.

  1 Comment

Jan on 11 Dec 2013
I would agree to your suggestion. The notion of spatial frequencies in image is at a first glance not quite as intuitive as in other digital signal processing applications. However, in my opinion a spatial frequency in an image depends on the geometry of the optics (recording distance, pixel size, pixel pitch etc.) in much the same way as a frequency in a one dimensional signal depends on the sampling rate. Yet I would appreciate an input of more experienced forum members on this point.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!