Bonjour,
j'ai un projet qui porte sur le traitement de l'image.
et j'ai besoins d'implémenter la FFT de l'image et la fft inverse en utilisant la bibliothéque fttw.
je suis débutant avec le c++ (j'utilise le VC++ 6.0)
Merci d"avance pour votre aide.





Bonjour,
j'ai un projet qui porte sur le traitement de l'image.
et j'ai besoins d'implémenter la FFT de l'image et la fft inverse en utilisant la bibliothéque fttw.
je suis débutant avec le c++ (j'utilise le VC++ 6.0)
Merci d"avance pour votre aide.
Salut et bien venu sur le forum.
Quel est ton problème?
en attendant, en faisant une recherche rapide sue le forum
http://www.developpez.net/forums/sho...highlight=fftw
http://www.developpez.net/forums/sho...highlight=fftw





Merci ,a tous pour votre intérêt.En faite Aprés quatre jours de recherche j'ai enfin pu implémenter cette maudite fft .
Merci A tous.





bonsoir tout le monde
comme j'ai enfin pu implémenter le fft
je suis maintenant bloqué au niveau la fft inverse.
remarque je travail avec des images.
J'ai essayer de travailler avec la bibliothèque fttw mais ça n'a pas abouti.
Regarde le lien que je t'ai donné, il y a la FFT inverse.





Bonjour ,
bon mon problem est que:
Quand je le code du lien que vous m'avait fournit.j'ai rencontrer cette erreur.
"error C2440: '=' : cannot convert from 'void *' to 'double (*)[2]'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast"
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 //voila le code /* reIn : partie réel de l'image dans l'espace de Fourier * imIn : partie imaginaire de l'image dans l'espace de Fourier * out : image de sortie * largeur : largeur des images d'entrée et de sortie */ void fourierBackward(const float* reIn, const float* imIn, float* out, unsigned int largeur, unsigned int hauteur) { fftw_complex* spatial_repr; fftw_complex* frequency_repr; unsigned int i; unsigned int j; int x,y; fftw_plan plan; //le faute est a ce niveau: spatial_repr= fftw_malloc(sizeof(fftw_complex)*largeur*hauteur); frequency_repr= fftw_malloc(sizeof(fftw_complex)*largeur*hauteur); for(j=0;j<hauteur;j++) for(i=0;i<largeur;i++) { /*on décentre*/ x=i; y=j; if (i<largeur/2 && j<hauteur/2){ x=i+largeur/2; y=j+hauteur/2; } if (i>=largeur/2 && j<hauteur/2){ x=i-largeur/2; y=j+hauteur/2; } if (i<largeur/2 && j>=hauteur/2){ x=i+largeur/2; y=j-hauteur/2; } if (i>=largeur/2 && j>=hauteur/2){ x=i-largeur/2; y=j-hauteur/2; } frequency_repr[j*largeur+i][0]=reIn[y*largeur+x]; frequency_repr[j*largeur+i][1]=imIn[y*largeur+x]; } plan=fftw_plan_dft_2d(hauteur, largeur, frequency_repr, spatial_repr, FFTW_BACKWARD, FFTW_ESTIMATE); fftw_execute(plan); /*on retranscrit l'image complexe en image réelle, sans oublier de diviser par largeur*hauteur*/ for(i=0;i<largeur*hauteur;i++) { out[i]=spatial_repr[i][0]/(largeur*hauteur); } fftw_destroy_plan(plan); fftw_free(spatial_repr); fftw_free(frequency_repr); }
Merci d'avance pour votre aide![]()
C'est certainement parce que tu compiles ça avec un compilateur C++ alors que le code est écrit pour un compilateur C.
fftw_malloc retourne un void* qui doit être casté en C++ via :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 machin = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex)*largeur*hauteur));





Merci,
Pour votre aide c a marcher.
Mais, j'ai un autre problème
je veux convertir une image ppm en bmp et vice versa.
Est que quelqu'un peut m'aider ?
Merci d'avance
Partager