Jak wykreślić FFT 2D w Matlab?
Używam fft2 do obliczania transformacji Fouriera obrazu w skali szarości w MATLAB.
Jaki jest wspólny sposób na wykreślenie wielkości wyniku?
2 answers
Zakładając, że I
jest twoim obrazem wejściowym, a {[2] } jest jego transformatą Fouriera (tj. F = fft2(I)
)
Możesz użyć tego kodu:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-25 09:21:25
Oto przykład z mojej strony jak 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');
Daje to widmo wielkości i widmo fazowe obrazu. Użyłem kolorowego obrazu, ale można łatwo dostosować go do korzystania z szarego obrazu, jak również.
Ps. Właśnie zauważyłem, że na Matlab 2012a powyższy obraz nie jest już uwzględniony. Więc po prostu zamień pierwszą linię powyżej na say
img = imread('ngc6543a.jpg');
I to zadziała. Użyłem starszej wersji Matlab zrobić powyższy przykład i po prostu skopiowane go tutaj.
On współczynnik skalowania
Kiedy wykreślimy wielkość transformaty Fouriera 2D, musimy przeskalować wartości pikseli za pomocą transformacji log, aby rozszerzyć zakres ciemnych pikseli na jasny obszar, abyśmy mogli lepiej zobaczyć transformatę. Używamy wartości {[3] } w równaniu
s = c log(1+r)
Nie jest znany mi sposób na predestynację tej skali. Just need to
spróbuj różnych wartości, aby dostać się na lubisz. Użyłem 100
w powyższym przykładzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-25 08:55:58