我已經開始(一個小項目)來計算頻域圖像的功率譜。圖像的功率譜
所以,我有什麼到現在是這樣的:
%// close all; clear all; %// not generally appreciated
img = imread('ajw_pic.jpg','jpg'); % it is a color image
img = rgb2gray(img); %// change to gray
psd = 10*log10(abs(fftshift(fft2(img))).^2);
figure(2); clf
mesh(psd)
到目前爲止,它看起來不錯;我得到了類似於我在各種學術論文中看到的光譜的網格圖。
但是,我正在尋找的是這個功率譜與頻率的關係圖,我不完全確定如何獲得這個頻率矢量。我可以做例如:
N=400; %// the image is 400 x 400
f=-N/2:N/2-1; %// possible frequencies?
但我不相信這是完全正確的,因爲這會導致負頻率。
我真的很感激,如果有人能指出我在正確的方向繪製日誌頻率與功率譜。
非常感謝您的詳細回覆。我似乎理解負頻率 - 但是,我還不完全確定的是我的頻率在fft之後應該如何。所以,正如你所解釋的,我可以使用'1/400'(給出400我的px),但是我沒有'fs',因爲這是一個圖像?此外,當我放映我的400x400圖像並計算功率時,結果也是一個400 x 400的矩陣 - 但是,我想我想要的是1x400的大小 - 以便我可以繪製頻率和功率譜。或者我在這裏很愚蠢? – AJW
你的fs實際上是1像素或1 /(像素間距)mm。如果你沒有像素間距,你仍然可以使用fs = 1(只要記住這個單位 - 你的奈奎斯特頻率就是半個倒像素)。您還應該考慮在x和y方向上可以有不同的頻率(例如非二次像素) - 這就是爲什麼您有400x400矩陣。因此,創建一個fx和fy頻率矢量(它們與NX = NY = 400相同,且像素大小未知)。但是如何可視化它是一個不同的問題(除了用fx和fy作爲抽動標記標記軸之外,我沒有很好的答案) – kamjagin
我正在嘗試做你所建議的:所以,我這樣做:'fs = 1;''f = fs/2 * linspace(-1,1,N); %其中N是400' - 這可以達到「-0.5到+0.5」 - 這是否有意義?這是Hz值還是弧度/秒? :( – AJW