2014-03-06 3 views
1

MATLAB에서 2D 이미지의 푸리에 변환 위상 및 크기를 플로팅하려면 어떻게해야합니까? angleabs을 사용한 다음 imshow을 사용하지만 검은 색 이미지가 나타납니다.
이 플롯팅에서 fftshift의 용도는 무엇입니까?위상 및 크기 이미지 플로팅

+0

try imagesc (abs (fftshift (fft2 (I))))); – lennon310

+0

나는 이것을 시도했다. 그러나 중심에 흰 점이있는 검은 색 이미지 만 보여준다. – amanda

답변

1
F = fft2(I); where I is the input 
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 

시도해보십시오. 코드 가져 오기 : How to plot a 2D FFT in Matlab?

+0

나는이 신을 보았지만 왜 로그와 fftshift를 사용하는지 이해하지 못했는데, 왜 이것을 사용하지 않고 그냥 보여주지 않았는가? – amanda

+0

감사합니다 lakesh 당신이 나를 구 했어요! 나는 그 로그 (F + 1)를 검색하는데 시간을 보냈다 : D 다음은 f = imread (imPath);를 읽으면 입력을 준비 할 때 안전한면에 대한 설명이다. 당신은 이것을 필요로 할 것입니다. F = fft2 (double (f)); 이미지가 unit8 형식으로 읽혀 지므로 FFT를 수행하기 전에 이중 배열로 변환해야합니다. http://matlabgeeks.com/tips-tutorials/how-to-do-a-2-d-fourier-transform-in-matlab/#comment-5137 – N0rA

1

의견에서 DC 오프셋을 제거해야합니다. 다음과 같음 :

imagesc(abs(fftshift(fft2(I - mean(I(:)))))); 
+0

감사합니다. 이제 작동합니다. – amanda

관련 문제