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 :

Détection de pic (encore)


Sujet :

Traitement du signal

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut Détection de pic (encore)
    Re-bonjour.

    J'en suis maintenant à un problème de détection de pics. J'ai cherché un moment parmi les différents topics qui existaient à ce sujet, je n'ai pas trouvé mon bonheur, d'où ce post.

    En PJ, différents types de données que j'ai à traiter. J'ai un peu moins de 2000 fichiers à faire, je cherche donc à faire un système automatisé.

    Tout d'abord comme vous pouvez le voir, certains ont énormément de pics, d'autres très peu, et beaucoup moins marqués.
    Ensuite, je ne peux pas utiliser de valeur seuil au dessus de laquelle je chercherai des pics. Je cherche à trouver tout ce qui ressemble de près ou de loin à un pic (maximum local). Le but étant derrière (entre autre) de mesurer le décalage temporel entre la courbe de température et la courbe de déformation.

    J'ai donc envisagé la méthode suivante, que je peux pour l'instant effectuer au cas par cas avec des résultats satisfaisants, mais que je n'arrive pas à automatiser :
    1 - Détermination d'une fréquence de coupure Fc1 permettant lors d'un filtrage de supprimer au maximum le bruit tout en gardant les pics. Appelons f1 les données résultantes.

    2 - Détermination d'une fréquence de coupure Fc2 permettant d'avoir l'allure générale de la courbe, sans les pics. Appelons f2 les données résultantes.

    3 - calcul de f= f1 - f2 : j'obtiens alors une courbe centrée sur zéro, avec des pics là où sont les pics de mes données brutes.

    4 - détection des pics de f à partir d'une valeur seuil, et affichage de ces pics sur les donnés brutes.


    Donc ça, ça marche bien. Mais je n'ai pas du tout envie de répéter cette méthode pour 2000 courbes. Je l'ai fait pour 10 courbes, ça m'a déjà pris 3 heures...

    J'ai réussi à obtenir une règle du pouce entre les fréquences de coupure Fc1 et Fc2, on peut considérer grossièrement que Fc2 = Fc1/30. Le problème réside dans la détermination de Fc1. A l'œil nu, en regardant la courbe et en faisant varier Fc1 jusqu'à une valeur qui me plait, ça marche bien mais c'est long, très long. J'ai donc essayé différentes méthodes pour déterminer cette fréquence, aucune n'était satisfaisante :

    - Faire évoluer Fc jusqu'à ce que la différence signal_brut-signal_filtré soit en dessous d'une valeur seuil fixée arbitrairement. Pas de bol, ce seuil varie d'une courbe à l'autre.
    Code : 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
    Fc=0.5;
    inter=0.5;
    last_c=[0 0];
    c=[inf inf];
    i=0;
     
    d=1e-6;
    T=0.6e-3;
     
    while abs(last_c(1)-c(1))>d || abs(last_c(2)-c(2))>d
    <div style="margin-left:40px">i=i+1;
    inter=inter/2;
    filtered_sensor=lfilter(sensor,idx,Fc);
    last_c=c;
    c=sum(abs(sensor-filtered_sensor))/L;
    if c(1)>T || c(2)>T
    <div style="margin-left:40px">Fc=Fc+inter;</div>else
    <div style="margin-left:40px">Fc=Fc-inter;</div>end</div>end
    - Tenter de trouver une relation entre std et Fc : ça marche pas non plus, il faudrait pour ça que toutes mes courbes aient la même allure générale. Là je compare un peu des carottes et des courgettes.

    - Choisir une valeur arbitraire de fréquence de coupure très faible(Fc=0.01), calculer std(sensor_brut - sensor_Fc) et essayer de trouver une corrélation avec Fc : Marche pas non plus, ce calcul s'apparente plus à une mesure de bruit : plus mon signal est bruité, plus le résultat est élevé.


    Conclusion:
    - Si vous vous y connaissez un peu en détection de pics, suis-je dans la bonne direction en cherchant à supprimer l'allure générale de ma courbe pour pouvoir utiliser une valeur seuil, ou y aurait-il une méthode plus adaptée ?
    - A supposer que ladite méthode soit la seule viable, auriez vous des idées pour trouver la fréquence de coupure optimale ?

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Myrne Voir le message
    Je cherche à trouver tout ce qui ressemble de près ou de loin à un pic (maximum local)
    Tu veux dire la plus grande valeur dans une fenêtre mobile de taille N ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Le problème de la plus grand valeur dans une fenêtre, c'est que dans la première courbe par exemple (sensor 10), les pics détectés de cette manière seront principalement dus au bruit, et - à moins que la fenêtre ne soit très mince - il est même probable que ce que j'appellerai pic (un truc qui se répercute sur la courbe de température ET de déformation) ne soit simplement pas détecté. Et si la fenêtre est suffisamment petite pour les détecter, c'est qu'elle détectera aussi le bruit alentour.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Peut-être en lissant les courbes, et en détectant les inversions de dérivées ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Justement Graffito, comment ferais-tu pour lisser les courbes ?

    La méthode la plus efficace m'a semblé être de les faire passer par un filtre passe-bas. Mais comment choisir la fréquence de coupure ? Rien qu'à l'allure des courbes, on peut se dire que ce ne sera pas la même à chaque fois. La première est très "smooth", et une fréquence de coupure basse sera utilisée. La seconde est bien plus "agitée", et ils faudra une fréquence de coupure plus haute. Sachant que j'ai 2000 courbes à traiter, je ne peux pas toutes les regarder et choisir la fréquence à chaque fois.

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Dans chaque série, on peut faire des itérations en diminuant (ou augmentant la fréquence de coupure de façon à ce que le nombre de pics soit "raisonnable".

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Detection de pic
    Ce problème revient régulièrement sur nos forums, alors je te pose deux questions qui peuvent sembler stupides, mais qui, en fait sont essentielles:
    1. C'est quoi, un "pic"?
    2. Tu cherches les "pics" de quoi?

    Sans réponse à ces deux questions, ton problème n'a pas de solution.
    Jean-Marc Blanc

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Une bonne semaine à tous.

    La définition de pic dans mon cas:

    Si mon signal avait une valeur moyenne autour de laquelle il graviterait, ce serait le maximum d'un 'truc' dépassant une valeur seuil et ayant une largeur minimale et maximale. Ça je sais faire.

    Le problème, c'est que mon signal n'a pas de valeur moyenne autour de laquelle il gravite. J'essaye donc de me ramener à un tel cas par des techniques de filtrage. Pour l'instant, j'arrive au cas par cas à obtenir des trucs comme sur la PJ. J'essaye de le faire de façon automatique. Ce que vous voyez sur la PJ, c'est la figure 2 une fois que j'ai fait la différence entre mon signal filtré avec une Fc haute et le même signal filtré avec une Fc basse.


    Et je n'ai pas compris la question "Tu cherches les pics de quoi". Qu'entends-tu par là ? Quelle est la nature des données que j'essaye de traiter ?

    Si c'est ça, ce sont les variations de la longueur d'onde d'un signal par rapport à une valeur de référence. Ces longueurs d'ondes proviennent de la réflexion d'un laser sur un réseau de Bragg, la fréquence d'acquisition de ces données (en fonction des fichiers) est d'un point toutes les secondes ou toutes les 20 secondes.

  9. #9
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    "Tu cherches les pics de quoi"
    C'est un problème récurrent chez les gens qui essaient de faire du traitement de signal: dans l'immense majorité des cas, les grandeurs physiques sont, par nature, des fonctions continues du temps; mais souvent, on les échantillonne, c'est-à-dire qu'on les remplace par une suite de valeurs discrètes. Alors, ma question peut se reformuler comme ceci: "est-ce que tu cherches les extréma d'une grandeur physique (donc continue) ou est-ce que tes données sont une suite de valeurs discrètes?"
    Jean-Marc Blanc

  10. #10
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    C'est en effet une grandeur physique continue (la longueur d'onde du pic de réflexion d'un laser sur un réseau de fibre optique).

  11. #11
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    C'est en effet une grandeur physique continue
    Alors, comment l'introduis-tu dans ton ordinateur?
    Jean-Marc Blanc

  12. #12
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Les données que je possèdes sont celles d'une surveillance 24/24 d'un pont, le taux d'acquisition de ces données est de 5Hz, sachant que pour une question de mémoire seul un point sur 5 (ou sur 20, fonction de la date du fichier) est réellement enregistré.
    Peut-être pourrais-tu me dire où tu veux en venir, la conclusion que tu aimerais me voir tirer, parce que pour le moment je ne vois pas bien où cela peut me mener. Non pas que je n'apprécie pas ton aide, mais j'aime bien savoir où je vais :/

  13. #13
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Citation Envoyé par Myrne Voir le message
    Si mon signal avait une valeur moyenne autour de laquelle il graviterait, ce serait le maximum d'un 'truc' dépassant une valeur seuil et ayant une largeur minimale et maximale.
    Je pense que tout ton problème vient que tu ne sais pas définir précisément un pic. Personne ne peut le faire à ta place.
    Si tu arrives à une définition mathématique, le reste viendra tout seul.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    En effet, je ne sais pas définir précisément mes pics.

    Je vais détailler un peu ce que je cherche à faire exactement, et le pourquoi de la détection de pics que je cherche à obtenir.

    Vous avez pu le voir sur les courbes que j'ai montré, il y a deux signaux par courbe. L'un de température, l'autre de déformation. Ces signaux proviennent de deux capteurs, l'un sensible à la température, l'autre à la déformation et à al température.
    Je suis intéressé uniquement par la déformation de mon milieux, le but serait donc à partir du capteur de température, d'effectuer une compensation en température sur le second capteur pour ne récupérer que la déformation.
    Le problème étant que le design des capteurs n'est pas optimal, et que souvent l'un des capteurs est à l'ombre et l'autre au soleil, faussant ainsi la compensation.

    L'idée est donc de trouver un moyen de vérifier si les deux courbes concordent, si elles varient au même moment lors de changements de température, et de défausser tous les points où elles ne le font pas. Je me suis dit que la meilleure façon de vérifier cela était de chercher les pics - les maximums locaux pour être précis puisqu'il peut s'agir d'un pic (variation brusque, largeur du pic faible) comme dans la figure deux comme d'un simple sommet après une variation lente (figure 3) - et de vérifier si ceux-ci concordaient. Cela me semble la méthode la plus simple.

    Voila pour la petite histoire, la détection des maximums est là pour vérifier la "concordance" entre les courbes, mais si vous avez une autre proposition à faire pour comparer les variations entre les courbes, je suis preneur aussi.

  15. #15
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Bref on a "instrumenté" le système n'importe comment en proclamant que par logiciel on arriverait à tout corriger
    Je crains que tu n'aies à reprendre le problème physique à zéro, et sans garantie de résultat.
    Bon courage
    Essaie toujours de tracer la sortie d'un capteur en fonction de l'autre

  16. #16
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Peut-être pourrais-tu me dire où tu veux en venir, la conclusion que tu aimerais me voir tirer
    Maintenant, je suis arrivé là où je voulais en venir et la conclusion que j'aimerais te voir en tirer est que, formulé comme il est, ton problème est insoluble. En effet, même si la grandeur physique que tu veux étudier est une fonction continue du temps, ce que tu introduits dans ton ordinateur est échantillonnée, donc que une suite de valeurs discrètes; or, par l'échantillonnage, tu perds une partie de l'information, partie qui est indispensable pour la détection des pics.
    Alors, que faire? Je vois deux approches envisageables, mais qui, l'une et l'autre, t'obligeront à recommencer tes mesures:
    1. Tu places tes deux capteurs à proximité immédiate l'un de l'autre, de manière telle que les deux subissent les mêmes variations de température; il faudra aussi veiller à ce que les deux aient aussi la même constante de temps thermique.
    2. Tu diminues beaucoup ta période d'échantillonnage, de manière à ce qu'elle soit très courte par rapport aux constantes de temps thermiques de tes capteurs. L'augmentation du volume de données ne devrait pas être un problème si tu les traites au fur et à mesure de leur lecture au lieu de tout mémoriser.

    Jean-Marc Blanc

  17. #17
    Membre éprouvé
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Ça, ça ne dépend pas de moi malheureusement. Je ne dispose que du résultat de mesures effectuées depuis 2 ans, à moi d'en faire quelque chose. Apparemment je ne suis pas le premier à râler sur la façon dont le système a été mis en place, il y a déjà eu un rapport comme quoi on ne pourrait pas tirer grand chose de ces données...

    M'enfin bon, je vous remercie tout de même pour votre aide et je vais tâcher de faire ce que je peux avec ce que j'ai =)

Discussions similaires

  1. Détection de pics
    Par fatenov dans le forum Signal
    Réponses: 17
    Dernier message: 15/05/2013, 20h16
  2. Détection de pics
    Par cedric06000 dans le forum Scilab
    Réponses: 20
    Dernier message: 03/08/2009, 18h41
  3. Réponses: 14
    Dernier message: 23/01/2009, 17h07
  4. Détection de visages (encore ?)
    Par progfou dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 11/06/2008, 14h59
  5. [LabView 8.2] Détection de pic
    Par tacoumi dans le forum LabVIEW
    Réponses: 5
    Dernier message: 06/06/2008, 09h20

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