다시 저도 여전히 저역 통과 필터를 실행하려고합니다.하지만 왜 아직도 실행되지 않는지 모르겠습니다. 나는 이상적인 저역 통과 필터를 이미지에 적용하기 위해 내 코드 FFT Filters과 이전 질문 FFT Question을 사용했다. 아래 코드는 이미지를 어둡게 만들고 결과 이미지에 흰색 픽셀을 배치합니다.fftw가있는 이상적인 저역 통과 필터
// forward fft the result is in freqBuffer
fftw_execute(forward);
for (int y = 0; y < h; y++)
{
for (int x = 0; x < w; x++)
{
uint gid = y * w + x;
// shifting coordinates normalized to [-0.5 ... 0.5]
double xN = (x - (w/2))/(double)w;
double yN = (y - (h/2))/(double)h;
// max radius
double maxR = sqrt(0.5f * 0.5f + 0.5f * 0.5f);
// current radius normalized to [0 .. 1]
double r = sqrt(xN * xN + yN * yN)/maxR ;
// filter response
double filter = r > 0.7f ? 0.0f : 1.0f;
// applying filter response
freqBuffer[gid][0] *= filter;
freqBuffer[gid][1] *= filter;
}
}
// normlization (see fftw scaling)
for (uint i = 0; i < size; i++)
{
freqBuffer[i][0] /= (float)size;
freqBuffer[i][1] /= (float)size;
}
// backward fft
fftw_execute(backward);
일부 도움을 받으실 수 있습니다. 늑대
임의의 내용의 경우, 벽돌 벽 필터 (FFT bins을 제로화)는 이상적이지 않습니다. – hotpaw2
내가 본 바로는이 동작을 "이상적"이라고합니다. [이상적인 저 패스] (https://ccrma.stanford.edu/~jos/sasp/Ideal_Lowpass_Filter.html) – DerHandwerk
이 필터는 연속적으로 사용할 수 있습니다. FFT 빈과는 매우 다르게 동작합니다 (다이어그램에 따라 응답이 빈 센터간에 큰 오버 슛을 가질 수 있음). – hotpaw2