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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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".

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