2012-11-19 3 views
0

다음 코드를 사용하여 FFTW 및 OpenCV를 사용하여 푸리에 변환의 시각화를 생성합니다. 그러나, 나는 이미지의 윗부분 만 정확하게 얻고있다. 코드에 문제가있을 경우 설명 할 수 있습니까?fftw 및 opencv를 사용하여 fft 시각화

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

어디에서 fftw를 호출합니까? 어떤 fftw 함수를 사용하고 있습니까? – CookieOfFortune

+0

코드 덩어리 바로 앞에 fftw_execute를 호출하고 데이터를 "fft"에 저장합니다. 푸리에 변환의 크기를 시각화하려고합니다. –

+0

어느 fftw 플랜을 사용하고 있습니까? 데이터 크기가 올바르게 정렬되어 있습니까? 복식에서 fftw를하고 활주를 표시하고 있습니까? – CookieOfFortune

답변

0

는 각 채널의 RGB를 작성해야하지만, y+= fftvis->nChannels이 실행될 때 채널 데이터를 통해 스테핑된다.
또한 data+= step;은 데이터 step 바이트를 건너 뜁니다. 처리를 올바르게 정렬하는 경우에는 필요하지 않습니다.