回答
假設I
是你的輸入圖像和F
是它的傅立葉變換(即F = fft2(I)
)
您可以使用此代碼:
F = fftshift(F); % Center FFT
F = abs(F); % Get the magnitude
F = log(F+1); % Use log, for perceptual scaling, and +1 since log(0) is undefined
F = mat2gray(F); % Use mat2gray to scale the image between 0 and 1
imshow(F,[]); % Display the result
這裏是我如何Matlab的頁面的例子:
close all; clear all;
img = imread('lena.tif','tif');
imagesc(img)
img = fftshift(img(:,:,2));
F = fft2(img);
figure;
imagesc(100*log(1+abs(fftshift(F)))); colormap(gray);
title('magnitude spectrum');
figure;
imagesc(angle(F)); colormap(gray);
title('phase spectrum');
這給出了圖像的幅度譜和相位譜。我使用了彩色圖像,但您可以輕鬆調整它以使用灰色圖像。
ps。我只注意到在Matlab 2012a上面的圖像不再包含在內。所以,只需將上面的第一行替換爲
img = imread('ngc6543a.jpg');
它會工作。我使用了一個老版本的Matlab來製作上面的例子,並在這裏複製它。
在縮放因子
當我們繪製2D傅里葉變換幅度,我們需要用數變換擴大暗像素到明亮區域的範圍,所以我們可以更好地看到縮放像素值變換。我們的方程式
s = c log(1+r)
有預借以瞭解物質這個規模,我知道沒有已知的方法在使用c
值。只需要 嘗試不同的值,以得到你喜歡的。在上面的例子中我使用了100
。
如果您使用imagesc(不設置c限制),那麼對於您正在使用的常數c沒有意義 –
您正在空間和頻域中應用'fftshift'。那個。 。 。不可能是正確的,不是? – imallett
- 1. 2D繪製在Matlab
- 2. 繪製2D網格在MATLAB
- 3. 如何繪製在MATLAB中積分定義的函數的FFT?
- 4. 如何在MATLAB中繪製ascii值的fft?
- 5. 在matlab中繪製2d矩陣的行
- 6. 如何在2D矩陣中繪製matlab中的多邊形
- 7. 在Matlab中繪製FFT幅度譜信號
- 8. 如何在XNA中繪製2D像素?
- 9. 如何在2D中繪製網格?
- 10. 如何繪製在Matlab
- 11. 如何繪製在MATLAB
- 12. 如何繪製在Matlab
- 13. 如何繪製在Matlab
- 14. 如何繪製在MATLAB
- 15. 如何繪製在Matlab
- 16. 如何用彩條在python中繪製2d矩陣? (如在Matlab於imagesc)
- 17. 如何繪製2D弧
- 18. 使用1D FFT的2D FFT
- 19. 在Matlab上使用FFT計算和繪製信號的頻譜
- 20. 在python中繪製圖形和fft
- 21. 在Python中繪製2D
- 22. 2D FFT中的3D FFT分解
- 23. DCT 2D無FFT
- 24. 2D FFT aforge.net
- 25. 如何在matlab中繪製地球?
- 26. 如何在Matlab中繪製密度圖
- 27. 如何在matlab中繪製斜場
- 28. 如何在MATLAB中繪製圖表?
- 29. 如何在MATLAB中繪製3D角度
- 30. Matlab:如何在3D中繪製文本
+1。您可以添加註釋,說明您爲什麼使用日誌(F + 1)而不是日誌(F) - (由於日誌(0)未定義值) –
@Andery謝謝,完成。 –