이미지 흐리게 처리하는 코드를보고 있습니다. 그러나 코드를 이해하는 데 어려움을 겪고 있으며 코드가 대략 무엇을하는지 이해할 수 있는지 궁금합니다.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;
나는 창 푸리에 가우스 컨볼 루션 커널의 또는에서 변환 인 경우 확실하지 않다 : 그러나, 우리는 선처럼 곱 전에 커널뿐만 아니라 푸리에 영역에서 발생하는 생각 최소한 코드에서 알 수는 없습니다.
이렇게 가우시안 블러 링을 어떻게 달성하는지 혼란 스럽습니다. 이 코드를 이해하는 데 도움이 될 것입니다.
답변 해 주셔서 감사합니다. 매우 빠른 질문입니다. 공간 영역에서의 가우시안 커널의 표준 편차가 2라고 가정하면, 푸리에 변환 된 커널의 SD는 0.5입니까? – Luca
@ 루카 표준 편차에 비례한다고 생각합니다. 아마도 온라인 또는 math.stackexchange.com 또는 dsp.stackexchange.com에서 수학 세부 정보를 확인하십시오. – chappjc