визуализация fft с использованием fftw и opencv

Я использую следующий код для генерации визуализации преобразования Фурье с использованием FFTW и OpenCV. Однако я правильно получаю только верхнюю часть изображения.
Может кто-нибудь объяснить, если что-то не так с кодом?

fft хранит данные fftw_execute.

int nl= fftvis->height; // number of lines
// total number of element per line
int nc= fftvis->width * fftvis->nChannels;

// get the pointer to the image buffer
unsigned char *data= reinterpret_cast<unsigned char *>
(fftvis->imageData);
k =0;
for (int x=1; x<nl; x++) {
for (int y=0; y<nc; y+= fftvis->nChannels) {
data[y] = 10*log(sqrt((pow(fft[k++][0],2) + pow(fft[k++][1],2))));
//k+=1;
} // end of line

data+= step;
// next line
}

0

Решение

Вам нужно заполнить RGB каждого канала, но вы переступаете через данные канала, когда y+= fftvis->nChannels выполнен.
Также, data+= step; будет пропускать step байт ваших данных, в этом нет необходимости, если вы правильно выровняете обработку.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector