Inverse de la transformée de fourier de OpenCV

Je suis nouveau dans OpenCV et des algorithmes de traitement d'image. J'ai besoin de faire de la transformation de fourier inverse discrete dans OpenCV en C++, mais je ne sais pas comment. J'ai cherché sur internet et je ne trouve pas de réponse. Je suis en train de faire la transformation de fourier dans mon programme avec ce code de cette page: http://opencv.itseez.com/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.html. J'ai essayé de faire inverse de ce code, mais je ne sais pas où j'ai fais de mal. Mon code est ici (je pense que tout le code est erroné):

void doFourierInverse(const Mat &src, Mat &dst) {
normalize(src, dst, 0, -1, CV_MINMAX); 
int cx = dst.cols/2;
int cy = dst.rows/2;
Mat q0(dst, Rect(0, 0, cx, cy));   
Mat q1(dst, Rect(cx, 0, cx, cy));  
Mat q2(dst, Rect(0, cy, cx, cy));  
Mat q3(dst, Rect(cx, cy, cx, cy)); 
Mat tmp;         
q0.copyTo(tmp);
q3.copyTo(q0);
tmp.copyTo(q3);
q1.copyTo(tmp);      
q2.copyTo(q1);
tmp.copyTo(q2);
dst = dst(Rect(0, 0, dst.cols & -2, dst.rows & -2));
exp(dst, dst);
dst -= Scalar::all(1);  
Mat planes[2];
polarToCart(dst, Mat::zeros(dst.rows, dst.cols, dst.type()), planes[0], planes[1]);
merge(planes, 2, dst);    
idft(dst, dst, DFT_INVERSE | DFT_SCALE); 
split(dst, planes);   
dst = planes[0];
}
Que pensez-vous est "mauvais" exactement avec votre code et/ou les résultats qu'il produit ?
Je pense que la fonction polarToCart n'est pas bon inverse de la fonction de l'ampleur.

OriginalL'auteur rwrx_ | 2012-04-22