How to generate the spectral profile of a picture?

2 Ansichten (letzte 30 Tage)
Will Stock
Will Stock am 7 Mai 2016
Kommentiert: John BG am 8 Mai 2016
Hello all,
Apologies for the long question.
I've been asked to do some look extraction on a satellite image and I'm having a lot of trouble understanding what I'm actually being asked, let alone on how to complete it.
I have a single-look complex (SLC) image (501x1759 matrix) and I have been told to normalise it, put it through an FFT (simple enough) and then shift the transform around 0 (again simple enough). Where it loses me is when it asks me to "Generate the spectral profile in azimuth direction. What are the min and max frequencies of the profile" It says this can be done by averaging the absolute value of the FFT in the range direction.
Can someone explain this to me and how I get a spectra from this? A histogram managed to get me something but I have no idea if this was the best way of getting the max/min.
%The code:
FFT_I=fft2(N_I); %N_I = normalised intensity
FFT_I=fftshift(FFT_I);
AFFT_I=abs(FFT_I);
M=mean(AFFT_I);
histogram(M)
Any help with this is greatly appreciated.

Antworten (2)

John BG
John BG am 7 Mai 2016
The image is From Wikipedia: Zernike Polynomials
instead of using a frequency based out of cos(wx*x) and cos(wy*y)
the Zernike decomposition uses a radial and azimuth base.
Have a look to page 7 of the here attached Journal article from Marchin Novotni and Reinhard Klein, this is the 3D version for different base lengths of what looks to me as an Imperial fighter approximation.
The Zernike radial-azimuth base you may want to use is available here
I have had a quick look in the forum and found a function to calculate 2D Zernike coefficients:
Sure you will find other Zernike related solutions to radial-azimuth decompose images.
If you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John
  2 Kommentare
Will Stock
Will Stock am 8 Mai 2016
Bearbeitet: Will Stock am 8 Mai 2016
Hi John,
Thanks for the answer. I'm not sure this is what they are after and I've never heard anyone mention Zernike coefficients for this type of problem before so sorry if what I'm about to ask are basic questions.
From what I am seeing, they work mainly on spherical/circular data, how does this apply to something that is a rectangular image and how do these coefficients produce a frequency spectrum?
John BG
John BG am 8 Mai 2016
never be sorry for asking basic questions, for without clear basics nothing else works, but be sure we all should (be sorry) if not asking them.
Why don't you try to window with an enclosed circle, within the square you have, and ignore whatever is outside the circle?

Melden Sie sich an, um zu kommentieren.


Image Analyst
Image Analyst am 8 Mai 2016
To get the profile of the fft in the azimuth direction I imagine you'd just get the first column before you call fftshift
FFT_I=fft2(N_I);
azimuthProfile = FFT_I(:,1);
Or maybe it's the first row instead of the first column - depends on if azimuth is rows or columns.
To get the max frequency, which is the frequency that the last element in the FFT corresponds to, you'd need to know the size of the image (501x1759) and the actual field of view in meters. Then you can get the frequency in cycles per meter.
  1 Kommentar
Will Stock
Will Stock am 8 Mai 2016
Thank you for answering.
It was the first row, and although the data I've been given isn't clear, it seems to match with a 10km swath. For finding the maximum do I divide by the total swath or length per pixel? Also why is it needed to get the frequency in cycles per meter? I can only assume that by getting the cycles per meter, multiplying it by the length of pixel you'd get the frequency of a certain pixel, but isn't what what the FFT gives us already?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by