올바른 패딩 크기를 결정한 후에 가우스 고역 통과 필터를 만들려고합니다 (예 : 이미지 너비와 높이가 10X10이고 20X20이어야 함).OpenCV에서 DFT 출력에 가우스 필터를 적용하는 방법
OpenCV에서 포트를 연결하려고하는 MATLAB 코드가 있는데 제대로 포팅하는 데 어려움이 있습니다.
f1_seg = imread('thumb1-small-test.jpg');
Iori = f1_seg;
% Iori = imresize(Iori, 0.2);
%Convert to grayscale
I = Iori;
if length(size(I)) == 3
I = rgb2gray(Iori);
end
%
%Determine good padding for Fourier transform
PQ = paddedsize(size(I));
I = double(I);
%Create a Gaussian Highpass filter 5% the width of the Fourier transform
D0 = 0.05*PQ(1);
H = hpfilter('gaussian', PQ(1), PQ(2), D0);
% Calculate the discrete Fourier transform of the image.
F=fft2(double(I),size(H,1),size(H,2));
% Apply the highpass filter to the Fourier spectrum of the image
HPFS_I = H.*F;
내가 OpenCV의에서 DFT를 사용하는 방법을 알고, 나는 그것의 이미지를 생성 할 수 있어요,하지만 난 가우시안 필터를 작성하는 방법을 잘 모르겠습니다 : 내 MATLAB 코드는 아래에 표시됩니다. 위에 표시된 것처럼 고역 통과 가우스 필터를 어떻게 만들 수 있는지 안내해주십시오.
답변 주셔서 감사합니다 나는 당신의 훌륭한 지침에 의한 결과에 매우 가깝다고 생각하지만 matlab에서 생산되는이 필터를 어떻게 생산할 수 있을지 확신하지 못합니다 ... [편집] http :// /uploading.com/files/498a6e9b/filter.png/ – wolvorinePk
이것은 하나의 MATLAB에서 출력입니다 ... 내가이 유형의 필터에 대한 4 개의 비행기를 만들고 그들 모두를 병합해야한다는 뜻입니까? http://i44.tinypic.com/r0twf7.png – wolvorinePk
사실, Matlab에서 필터가 'fftshift'를 사용하여 이동 한 것은 무엇입니까? 필자가 언급 한 첫 번째 기사에서 설명한 것처럼 쿼드런트 1 <-> 4 및 2 <-> 3을 바꿉니다. 또한,'dft.cpp' OpenCV 샘플은이를 수행하는 방법을 보여줍니다. – mevatron