2012-05-03 4 views
1

저는 opencv에 매우 익숙합니다. matlab에서 코드를 opencv.i로 변환해야합니다. matlab.i에서 fft를 사용하는 데 문제가 있습니다. 1 차원 행렬이 있습니다. 아래에 주어진대로 fft를 적용 할 것입니다.matlab fft 함수를 opencv에서 cvDft로 변환하는 방법

a = [0;0;0;0;0;0;0;0;0.09707;0.0998;0.1202;-0.1606;-0.0913;0.1523;0.1288]; 
c = abs(fft(a,15)); 
c >>  0.3463 
    0.1056 
    0.3608 
    0.5705 
    0.4232 
    0.2407 
    0.1486 
    0.1488 
    0.1488 
    0.1486 
    0.2407 
    0.4232 
    0.5705 
    0.3608 
    0.1056 

C가 나는 결과가 일부 example..my C 코드는 아래와 같습니다 좀 도와 differnt.please있는이 하나 cvDFT를 사용하는거야 matlab.while에서 가져온 내 결과입니다 ..

CvMat* fftin = cvCreateMat(nn,1,CV_64FC2); 
CvMat* fftout = cvCreateMat(nn,1,CV_64FC2); 
cvZero(b); ////consider a hav the value of mat b is empty for imgin 
cvMerge(a,b,NULL,NULL,fftin); 
cvDFT(fftin,fftout,CV_DXT_FORWARD,0); 
cvSplit(fftout,out_real,out_img,0,0); 
    for (int i = 0;i<out_real->rows;i++) 
    { 
     double val11= cvGetReal2D(out_real,i,0); 
     double val12= cvGetReal2D(out_img,i,0); 
     val11 = abs(val11); 
     val12 = abs(val12); 
     printf("DFT value is:%f %f\n",val11,val12); 
     cvSetReal2D(C_out,i,0,val11); 
    } 
+0

OpenCV 코드의 출력을 추가 할 수 있습니까? –

답변

0

첫 번째 예에서는 결과에 각 복소수 값의 크기를 인쇄하는 것처럼 보입니다. 그러나 두 번째 예에서는 복소수 값의 각 구성 요소 (예 : 길이 또는 빗변 대신 X 및 Y)의 각 값의 절대 값을 인쇄하는 것처럼 보입니다.

관련 문제