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 :

Comment détecter une variation d'échelle avec FFT


Sujet :

Traitement du signal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Comment détecter une variation d'échelle avec FFT
    Bonjour,
    je travaille sur un algorithme de traitement d'image KCF qui permet de faire du tracking d'objet sur une image dans le domaine fréquentielle.
    Pour aller vite l'algo à son patch de référence et fait au cours du temps de l'autocorrélation au cours du temps pour savoir ou se situe un pic et en déduit le déplacement (x,y).

    Le problème c'est que l'algorithme ne détecte pas les changements d'échelle (si l'objer s'éloigne ou se rapproche de la caméra). Est-il possible avec la FFT d'analyser cette variation d'échelle de la donnée d'entré?

    Si on prend un signal 1D et qu'on change son échelle (en "écrase" ou "etire" le signal), est-il possible de le détecter?

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Citation Envoyé par black_hole
    Si on prend un signal 1D et qu'on change son échelle (en "écrase" ou "etire" le signal), est-il possible de le détecter?
    Ton autocorrelation devrait avoir une intensité proportionnelle à l'échelle du motif ?

    Sinon il n'est pas simple ton problème. En théorie, le contenu fréquentiel sera le même mais la puissance (hauteur) des harmoniques va augmenter ou diminuer selon l'échelle. Mais tout le contenu fréquentiel va augmenter, le motif recherché et le reste. Il n'est pas sur que tu arrives à trouver un signature fréquentielle de l'objet recherché.

    En 1D, comme dans les signaux électriques, la FFT ne donne pas d'indication temporelle. C'est à dire, pour faire simple, que la représentation fréquentielle des notes de musique do, ré, mi aura la même représentation fréquentielle mi, ré, do alors qu'à l'oreille les deux sont très différentes et ça sera pareil pour une image. C'est pour ça que je disais qu'une signature fréquentielle n'était pas forcément évident. La transformée en ondelette permet de voir mieux ce genre de changements. Exemple d'un changement de fréquence à la 30ème seconde

    Nom : Sans titre.png
Affichages : 249
Taille : 61,7 Ko

    Avec une FFT, peux être que si tu isolais l'objet recherché dans l'image, puisque tu arrives à savoir où il est, (par soustraction ?) alors peut être que de faire une FFT juste sur l'objet tu pourrais avoir une idée de la distance de celui-ci au travers de la puissance des raies fréquentielles.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut
    Merci pour la réponse. Les explications étaient très clair.

    Alors j'ai pu avancer un peu de mon coté. D'après les articles que j'ai lu, il y a une méthode pour estimer une variation d'échelle.
    Imaginons que l'on a une imagette a un endroit connus de notre image, et que l' on agrandi cette imagnette ( au centre de l'image), on a donc une imagette de départ I[x0:x1,y0:y1]. et l'imagnette agrandi If[x0:x1,y0:y1].
    Si on analyse cette imagette a des échelles différentes s = [-2, 2] avec des steps de 0.2 par exemple, on a Is[x0:sx:x1,y0:sy:y1]. Si on fait l'autocorrelation de Is par If on devrait avoir un maximum sur un des steps.

    Et donc l'échelle recherché s = argmax(argmax(cross_correlation(Is,If)).

    Il ne faut pas de grosse variation mais ça a l'air de fonctionner.

  4. #4
    Membre émérite

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Billets dans le blog
    2
    Par défaut
    Bonjour à tous les deux,

    J'ajouterai qu'il existe des algorithmes pour déterminer les changements d'intensité. Pour cela on pouvait regarder sur Google avec les termes suivants : change point detection

    Si cela peut vous aider,
    bien cordialement.

Discussions similaires

  1. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 10h40
  2. Réponses: 0
    Dernier message: 17/10/2005, 08h05
  3. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46
  4. [VCL] Comment détecter une combinaison de touches ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2005, 14h19
  5. Comment faire une division par 5 avec les decalages
    Par Zaion dans le forum Assembleur
    Réponses: 7
    Dernier message: 05/11/2004, 17h33

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