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

OpenCV Discussion :

Élimination du bruit de mesure avec un filtre de Kalman


Sujet :

OpenCV

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Élimination du bruit de mesure avec un filtre de Kalman
    Bonjour,

    Je fais des mesures de données en environnement interne (propagation milieu interne) et mon but c'est d'éliminer le bruit accompagnant chaque mesure. j'ai décider de procéder comme suit. Considérons des éléments A, B, C,D etc. communiquant dans un réseau sans fil.

    Pour chaque message envoyé par ses voisins, l'élément A mesure l'atténuation du signal et l'enregistre pour ensuite estimer une moyenne et un écart type des différents mesures d'atténuation réalisé sur chacun de ses voisins éléments.

    J'aimerai appliquer un filtre sur le calcul de la moyenne. Car A chaque étape ou message reçu d'un de ses voisins, A estime la moyenne et l'écart type.

    Du coup, en respectant au mieux les conditions variables de propagation en milieu interne, il me semble plus judicieux d’utiliser un filtre de Kalman ou EWMA, et de l'appliquer sur la moyenne des atténuations qu’on calcul sur chaque voisin, au lieu de le faire directement sur la valeur mesurée de l'atténuation. Mais je ne m'y connais pas trop et peut être quelqu'un parmi vous saura me conseiller sur le filtre le mieux adapté. Aussi, j'ai fais des recherches à propos du filtre de kalman dans ce site, mais j'ai pas vu ce qui me convenait, peut être que j'ai pas bien cherché.

    PS: Le langage que j'utilise est le C.

    Je vous remercie de vos conseils et aides.

    Cordialement.

    kim.

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    J'ai un peu de mal à comprendre ton problème.
    Tu mesures l'atténuation d'un signal, ce que tu affiches est une courbe bruité correspondant à l'intensité du signal en fonction du temps ? ou peut être en fonction du nombre de messages reçus ?
    Et tu cherches à éliminer le bruit, c'est à dire à lisser la courbe ?

    Si c'est le cas je ne suis pas sur que tu trouves ton bonheur dans OpenCV.
    Regarde du coté des régressions linéaires par contre ça pourrait t'aider, je peux éventuellement retrouver un projet qui les utilises mais je sais pas ou je l'ai enterré.

    Si j'ai rien compris au problème merci de donner plus de détails voir une image^^

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour Jérôme,

    Tout d'abord je te remercie de votre réponse. En fait je mesure sur des elements sans fil (plus précisèment des capteurs), le niveau de signal reçu. On peut le voir aussi comme une atténuation si on prend en plus d'autres paramètres. Ce niveau de signal, vu les conditions défavorables de propagation du milieu internes est très bruité, ce qui fait qu'on peut mesurer (depuis un message envoyé par un voisin element sans fil) une valeur très eloignée par rapport a celle qu'on pouvait s'attendre. la pluspart du temps, je mesure ce niveau de signal pour une distance donnée. Du coup je dirait plustôt que je peux tracer la courbe du niveau de signal reçu en fonction de la distance, ou du nombre de messages reçues pour une distance donnée. ET donc je cherche à éffectivement éliminer le bruit de mesure en utilisant un filtre approprié genre Kalman, EWMA. Mais comme je l'ai mentionné dans mon précedent message, je my connais pas trop. AU début je voulais me lancer directement sur kalman, mais j'ai vu qu'il fallait un certaint nombre de paramètres qu'il fallait interpreter et qui sont sous forme matricielle.

    Merci pour l'information. Oui si c'est possible s'il te palit de retrouver ton projet, je suis preneur.

    Merci.

    Cordialement.

    Kim.

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    C'est pas mon projet, c'est pour ca qu'il est dur à retrouver.
    Y'a cet exemple sur internet : Exemple Je pense qu'il pourrait t'aider.

    Effectivement ton sujet est peut être plus adapté au forum Mathématiques que OpenCV.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    C'est noté, j'irai consulter le forum mathématique. Par contre je pense que mon problème est beaucoup plus proche du lissage de données. Merci encore.

    Cordialement.
    Kim.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 58
    Points
    58
    Par défaut
    En traitement d'image, pour éliminer un pixel bruité, on utilise un filtre médian en général.

    C'est à dire récupérer les valeurs des intensités des pixels avoisinant (8 pixels entour le pixel courant), les trier par ordre croissant pour affecter la valeur du 4ème au pixel courant.

    Tu peux peut être essayer un peu la même chose mais pour ta courbe :
    pour ton point de courbe actuel, tu stock la valeur précédente et la valeur suivante, tu trie ces 3 valeurs par ordre croissant et tu affecte au point de courbe courant la valeur n°2 de tes 3 valeurs triés. Fait attention à bien prendre les valeurs bruités et non valeurs bruité + corrigé (il te faut une courbe "temporaire" qui stockera le résultat).

    ex :

    donnera

    (peut être pas le meilleur exemple mais ta courbe devrait être sensiblement améliorée)

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour supernovagm,

    Je te remercie, je ne connaissais pas ce type de filtre.

    Par contre, dans ton exemple appliqué à ma courbe, tu a mentionné:

    "Tu peux peut être essayer un peu la même chose mais pour ta courbe :
    pour ton point de courbe actuel, tu stock la valeur précédente et la valeur suivante, tu trie ces 3 valeurs par ordre croissant et tu affecte au point de courbe courant la valeur n°2 de tes 3 valeurs triés. Fait attention à bien prendre les valeurs bruités et non valeurs bruité + corrigé (il te faut une courbe "temporaire" qui stockera le résultat)."

    Moi je n'ai que deux valeurs par étape: la valeur de la moyenne précedente, la nouvelle mesure de l'indicateur du niveaud e signal reçu. cette dernière va servir pour le calcul du la nouvelle moyenne. Je veux aussi éviter à supprimer, mais plsutôt un lissage des valeurs bruité.

    Merci.

    kim.

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Je ne pense pas que le filtre median soit adapté au traitement du signal, je pense que c'est plus adapté pour les bruits visuel type poivre et sel sur une image.
    Lorsque je disais :
    Effectivement ton sujet est peut être plus adapté au forum Mathématiques que OpenCV.
    C'est que j'avais déjà vu ton sujet re posté rubrique mathématique...
    Et effectivement ce que tu cherches à faire ici ce n'est pas appliquer un filtre sur un image mais traiter les données dont tu sers avant de générer ta courbe afin que celles-ci soient lissées.

    Moi je n'ai que deux valeurs par étape: la valeur de la moyenne précedente, la nouvelle mesure de l'indicateur du niveau de signal reçu.
    Ça me parait peu pour appliquer un algorithme mais tu dois avoir moyen de stocker les données pour appliquer ton algorithme plus tard ?
    J'ai pas vraiment d'idée sur un truc qui marcherais bien... hormis les régressions linéaire qui me semblent être la solution mais apparemment ça n'a pas fonctionné.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour Jérôme,

    Effectivement j'ai posté le sujet au forum mathématique suite à ta suggestion comme je suis nouvelle sur ce forum. Concernant le filtre median, effectivement, je pense pas que ce soit adapté dans mon cas. SI si, je stocke mes données pour ensuite y appliquer l'algorithme.

    Merci encore. Je suis toujours preneurs et en recherche de suggestions si vous en avez ou d'autres menmbres du site.

    Cordialement.

    Kim.

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    Je ne suis pas non plus un expert en réduction de bruit dans un signal, mais effectivement le filtre median peut être une approche. Au cours de mes lectures, j'ai pu constater que la transformée de Fourier est un outil très pratique pour filtrer les fréquences d'un signal. Dans ton cas, un filtre passe-bas pourrait être une approche. Renseigne-toi sur ce sujet, on ne sait jamais!


    My 2 cents.

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Euh effectuer des médianes locale comme supernovagm permettrait de lisser un peu la courbe, par contre le filtre passe-bas je comprend pas l’intérêt.
    Le problème que je vois avec la médiane c'est que selon le bruit, il pourrait rester une part d'erreur, mais ta courbe sera quand même amélioré au moins un peu.
    Exemple d'un cas ou la médiane fonctionne mal : s'il y'a de l'erreur sur toutes les valeurs [10,12,12,15,18, 27,27,29,30,31,33], dans ce cas une moyenne fonctionne mieux.
    Ou si l'erreur surestime uniquement les valeurs (la on pourrait utiliser le filtre passe-bas mais je pense pas que ce soit le cas ici).
    Enfin bref, tu peux poster une image de ta courbe, ou image du nuage de points, ou un tableau de tes valeurs ?
    Quelque chose qui permette de comprendre mieux ton problème.

    Ps : Je m'étais trompé en lisant le post de supernovagm j'ai pensé au filtre de median de openCV qui n'est fait que pour les images.

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par Jérôme.L Voir le message
    par contre le filtre passe-bas je comprend pas l’intérêt.
    Tout dépend du bruit. Un filtre passe-bas va supprimer les variations rapides d'un signal, mais voici un petit exemple:

    (source)
    Donc ça peut être tout à fait indiqué.

  13. #13
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Ben ça réalise une sorte d'écart type mais ça lisse pas vraiment la courbe, c'est écrit d'ailleurs.
    a low pass filter to a climate time series removes high frequency fluctuations
    Dans ton exemple il se sert de la moyenne des données récoltées sur 20 ans, je t'avouerais que j'ai pas cherché à creuser la formule.

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    C'est en réponse au problème exposé par kim, qui est justement de supprimer le bruit, pas forcément de lisser la courbe.

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je vous remercie pour vos réponse. Le filtre passe bas, je ne pourrai pas l'utiliser car je travaille avec des capteurs, et donc des éléments sans fil qui n'ont pas beaucoup d'énergie. Aussi l'OS utilisée ne pend pas compte le calcul de tous ce qui est cosinus, sinus, tangente etc. Et le cahier des charges me demande de l'éviter.

    Je veux éliminer le bruit sur les mesures temps réelles que réalisent les capteurs et que je stocke ensuite comme je l'ai expliqué dans mon premier post pour calculer la moyenne et l'écart type. donc je ne peux pas vous montrer une courbe pour l'instant. mais si on représente les mesures sur une courbe, le but est de lisser la courbe, en éliminant les valeurs qui débordent.


    Aussi je le rappelle, j'ai deux valeurs par étape sur un capteur: la valeur de la moyenne précédente, la nouvelle mesure de l'indicateur du niveau de signal reçu.


    Merci encore de votre précieuse aide.

    Cordialement.

    Kim.

Discussions similaires

  1. Mesurer taille d'une table avec un filtre
    Par Saduina dans le forum Administration
    Réponses: 3
    Dernier message: 15/10/2013, 10h28
  2. Mesure de bruit de phase avec scilab
    Par nurgle123 dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 10/06/2013, 13h19
  3. Eliminer les bruit de mesures avec le filtre de kalman en C
    Par kim567 dans le forum Mathématiques
    Réponses: 0
    Dernier message: 24/07/2012, 16h30
  4. Incertitudes avec le filtre de Kalman
    Par Redak2010 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 03/07/2012, 14h51
  5. Réponses: 0
    Dernier message: 12/09/2011, 10h08

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