IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

Implémenter un fft 2d


Sujet :

Traitement du signal

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 84
    Points : 75
    Points
    75
    Par défaut Implémenter un fft 2d
    Bonjour tout le monde,

    Je suis actuellement étudiant, dans le cadre d'un projet (reconnaissance de forme) je dois implémenter une fft 2d pour traiter mes images. J'ai très vite trouvé un algorithme en C pour la fft. Le problème c'est que je n'en n'ai pas trouvé pour la ifft 2d.

    Quelque pourrait - il m'aider ? On quelqu'un connait - il une adresse ou je pourrait trouver une librairie intégrant le type de fonction que je recherche ?

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 67
    Points : 108
    Points
    108

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    J'ai mes vieux sources C de maîtrise info (TP FFT 1D/2D) qui traînent, si ça t'intéresse.

    Sinon, le principe d'une FFT2D consiste, si ma mémoire est bonne, à faire des FFT1D sur chaque ligne, puis sur chaque colonne. Ca s'apparente à une convolution. Mais bon, j'ai pas touché à ça depuis 5 ans ! ;-)

  4. #4
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Salut,
    en effet comme la transformée de fourier est séparable tu peux la calculer comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    FFT2D(I(x,y)) = FFT1D((FFT1D(I(x,y)) pour tout x)) pour tout y)
    le tout en n²*log2(n), par contre si je mesouviens bien la FFT n'accepte qu'un signal du support égale à une puissance de deux, tu devras surement faire du pasting avant de transformer ton image.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par ronan99999
    par contre si je mesouviens bien la FFT n'accepte qu'un signal du support égale à une puissance de deux
    Il me semble que cette contrainte n'est vraie que pour l'algo dit "Papillon", non ?

  6. #6
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut

    Citation Envoyé par Mac LAK
    Citation Envoyé par ronan99999
    par contre si je mesouviens bien la FFT n'accepte qu'un signal du support égale à une puissance de deux
    Il me semble que cette contrainte n'est vraie que pour l'algo dit "Papillon", non ?
    il me semble que la FFT=papillon, sinon on fait une integration numerique classique et ca s'appelle DFT (Discrete Fourier Transform) tout simplement.

    A+

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Kangourou
    il me semble que la FFT=papillon, sinon on fait une integration numerique classique et ca s'appelle DFT (Discrete Fourier Transform) tout simplement.
    Arf, oui, ça me rappelle quelque chose, cette distinction... Juste une lettre de différence, ça frise le mesquin... ;-)

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 142
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Mac LAK
    Citation Envoyé par Kangourou
    il me semble que la FFT=papillon, sinon on fait une integration numerique classique et ca s'appelle DFT (Discrete Fourier Transform) tout simplement.
    Arf, oui, ça me rappelle quelque chose, cette distinction... Juste une lettre de différence, ça frise le mesquin... ;-)
    Pour ma part, je pense que le premier "F" de FFT (Fast Fourier Transform) fait référence à l'algorithme de factorisation. Supposons que l'on doive faire une Transformée de Fourier (forcément discrète) sur n éléments. L'application brute de la formule demande n*n multiplications et additions complexes.

    Le génie de Cooley et Tuckey (je ne me souviens pas de l'orthographe exacte de leurs noms) a consisté à manipuler les calculs bruts lorsque n est factorisable : n = p * q

    Ils ont montré que l'on pouvait s'en tirer en faisant p transformées de Fourier de longueur q, au prix de O(n) opérations. Et évidemment, ils ne se sont pas arrêtés en si bon chemin, en observant que si à son tour q était factorisable (q = r * s), ils ont vu que faire une transformée de Fourier de longueur q pouvait se faire en faisant r transformées de longueur s.... D'où l'approche générale : si n est une puissance de 2 (n=2**k), on évite k fois de faire des transformées de Fourier, jusqu'à devoir transformer des suites de longueur 1, c'est-à-dire qu'il n'y a plus rien à faire. Mais si n est un produit d'une puissance de 2 par une puissance de 3 (n=2**K * 3**L), on peut quand même mériter le "F" (fast) en appliquant K fois la séquence de calcul spécifique du facteur 2 et L fois la séquence spécifique du facteur 3.

    Le terme "papillon" désigne l'opération élémentaire à faire lorsque l'on a un facteur 2. Je suppose que l'on utilise d'autres expressions lorsque le facteur est 3 ou 5. Mais ce n'est pas le "papillon" qui fait qu'une "FT" devient une FFT. La FFT, c'est la factorisation (par 2, par 3, par 5...). Comme la FFT est d'autant plus rapide que le facteur est petit, on est bien content lorsque n est une puissance de 2. Mais il y a des FFT qui traitent tous les produits de puissances de 2, 3 et 5 par exemple : tout dépend de l'ardeur au travail du programmeur, parce que "Ya du boulot ".

    J'ignorais que DFT faisait référence à une intégration numérique complète sans la factorisation de Cooley Tuckey. Moi, j'aurais appelé ça "SFT" comme Slow Fourier Transform. Mais Bon !

    En tous cas, rien n'empêche^de faire une FT pour n'iimporte quelle valeur de n, même si n est premier ; simplement, ça va plus vite si n se factorise et si l'algorithme choisi en profite.

Discussions similaires

  1. Implémentation d'un algorithme de FFT.
    Par Mp-X. dans le forum Caml
    Réponses: 28
    Dernier message: 02/08/2009, 16h55
  2. probleme implémentation algorithme FFT
    Par philo69 dans le forum C
    Réponses: 15
    Dernier message: 08/05/2007, 18h33
  3. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 18h45
  4. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 17h19
  5. FFT(Fast Fourier Transform)
    Par IngBen dans le forum Traitement du signal
    Réponses: 6
    Dernier message: 23/05/2002, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo