2014-10-23 3 views
3

이미지 흐리게 처리하는 코드를보고 있습니다. 그러나 코드를 이해하는 데 어려움을 겪고 있으며 코드가 대략 무엇을하는지 이해할 수 있는지 궁금합니다.matlab code : 푸리에 도메인에서 가우시안 블러 링

여기서 변수 "Iref"는 이미지입니다. 여기

Imin = min(Iref(:)); 

Iref_fft = Iref-Imin; 
Iref_fft = fftshift(Iref_fft,1); 
Iref_fft = fftshift(Iref_fft,2); 

Iref_fft = fft(Iref_fft,[],1); 
Iref_fft = fft(Iref_fft,[],2); 

Iref_fft = fftshift(Iref_fft,1); 
Iref_fft = fftshift(Iref_fft,2); 

, 나는 그것이 푸리에 도메인에없는 이미지에 fftshift을 적용 할 것이 무엇을 의미하는지에 이미 혼란 스러워요. 그래서 각 축을 따라 푸리에 변환을 수행하고 있다고 말할 수 있습니다. 그러나 왜 전후에 fftshift를합니까? 후속 단계에서

Nx_r = 32; 
Ny_r = 32; 
sigma = 1.5; 
wx  = reshape(gausswin(Nx_r,sigma), [1 Nx_r]); 
wy  = reshape(gausswin(Ny_r,sigma), [Ny_r 1]); 
wx_rep = repmat(wx, [Ny_r 1]); 
wy_rep = repmat(wy, [1 Nx_r]); 
Window = wx_rep .* wy_rep; 

xIndices = floor((Nx-Nx_r)/2)+1 : floor((Nx-Nx_r)/2)+Nx_r; 
yIndices = floor((Ny-Ny_r)/2)+1 : floor((Ny-Ny_r)/2)+Ny_r; 

Iref_blurred = zeros(Ny,Nx); 
Iref_blurred(yIndices,xIndices,:) = Iref_fft(yIndices,xIndices) .* Window; 
Iref_blurred = fftshift(ifft2(fftshift(Iref_blurred))); 
Iref_blurred = abs(Iref_blurred)+Imin; 

, 나는 우리가 가우시안 블러 링을하고 있다고 생각 :

코드로 다음과 같다.

Iref_blurred(yIndices,xIndices,:) = Iref_fft(yIndices,xIndices) .* Window; 

나는 창 푸리에 가우스 컨볼 루션 커널의 또는에서 변환 인 경우 확실하지 않다 : 그러나, 우리는 선처럼 곱 전에 커널뿐만 아니라 푸리에 영역에서 발생하는 생각 최소한 코드에서 알 수는 없습니다.

이렇게 가우시안 블러 링을 어떻게 달성하는지 혼란 스럽습니다. 이 코드를 이해하는 데 도움이 될 것입니다.

답변

3

이 코드에서 가우스의 FFT가 없다는 것이 맞지만, 기억해야 할 것은 the Fourier space representation of a Gaussian is also a Gaussian이며, 역 표준 편차 만 있습니다. 이 코드를 작성한 사람은이 사실을 알고 있거나 아니면 그냥 잊어서 운이 좋았습니다.

gausswin 섹션의 Gaussian Window and the Fourier 변환 섹션을 참조하십시오. 설명서 gausswin 예의 응축 버전 :

N = 64; n = -(N-1)/2:(N-1)/2; alpha = 8; 
w = gausswin(N,alpha); 
nfft = 4*N; freq = -pi:2*pi/nfft:pi-pi/nfft; 
wdft = fftshift(fft(w,nfft)); 
plot(n,w) 
hold on 
plot(freq/pi,abs(wdft)/10,'r') 
title('Gaussian Window and FFT') 
legend({'win = gausswin(64,8)','0.1 * abs(FFT(win))'}) 

enter image description here

따라서 행하고, FFT없이 바로 푸리에 공간으로 gausswin의 출력을 해석 훨씬 큰으로의 가우시안 윈도우 총점 시그마는 공간 영역에서

+0

답변 해 주셔서 감사합니다. 매우 빠른 질문입니다. 공간 영역에서의 가우시안 커널의 표준 편차가 2라고 가정하면, 푸리에 변환 된 커널의 SD는 0.5입니까? – Luca

+0

@ 루카 표준 편차에 비례한다고 생각합니다. 아마도 온라인 또는 math.stackexchange.com 또는 dsp.stackexchange.com에서 수학 세부 정보를 확인하십시오. – chappjc