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 :

Calcul de variance sur un histogramme


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Par défaut Calcul de variance sur un histogramme
    Bonjour,

    J'ai besoin d'un petit coup de main s'il vous plaît...
    Je travail sur OpenCV depuis peu, et en me fixant sur une image, j'arrive à obtenir l'histogramme correspondant.
    A partir de là je désire connaître la valeur moyenne et l'écart-type des pixels de l'image. (J'ai également un logiciel qui le fait automatiquement, ce qui me permet de f=vérifier mes résultats).

    La boucle que j'utilise est la suivante.


    for( int i = 0; i < hist_size; i++ )
    {
    mean += *cvGetHistValue_1D(hist,i) * i;
    }
    mean /= nb_lignes*nb_colonnes;

    for( int i = 0; i < hist_size; i++ )
    {
    variance += pow((*cvGetHistValue_1D(hist,i) *i - mean),2);
    }
    variance /= (nb_lignes*nb_colonnes);


    Si le résultat pour la moyenne est exact, ce n'est pas le cas pour la variance...
    Est-ce que quelqu'un peut m'aider sur le je ne sais quoi que je ne vois pas...

    D'avance merci,

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    variance += pow((*cvGetHistValue_1D(hist,i) *i - mean),2);
    à quoi te serve les deux parties en gras ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Par défaut
    Citation Envoyé par snowpy Voir le message
    à quoi te serve les deux parties en gras ?
    Je cherche à calculer la variance :
    - x(i) - moy(x) : (valeur de l'histogramme pour l'indice i) - (valeur du pixel moyen de l'image)
    - je met cela au carré
    - je fait cela pour i variant de 0 à 255 et je somme le tout
    - je divise le résultat par le nombre d'éléments pris en considération, soit le nombre de pixels de mon image.

    De la variance je déduis l'écart-type en calculant sa racine carrée.


    Le "i" est donc l'indice de l'histogramme.
    Je pondère la valeur de l'histogramme (*cvGetHistValue_1D(hist,i) = nombre de pixel à "i") par i.
    D'où le " (*cvGetHistValue_1D(hist,i) "multiplié par" i.

    Merci pour le temps consacré au passage.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Par défaut Mais c'est bien sûr...
    Coucou, j'ai compris...
    ... et poste et clos le sujet au cas où quelqu'un passe et effectue la même erreur.


    variance += *cvGetHistValue_1D(hist,i) * (pow( (i-mean),2) );

    est à utiliser au lieu de

    variance += pow( (*cvGetHistValue_1D(hist,i)*i - mean),2) ;


    Ben, oui, ça paraît évident après coup...
    Pour un nombre de pixels *cvGetHistValue_1D(hist,i) à la valeur i, il fallait faire *cvGetHistValue_1D(hist,i) fois (i - moy)^2 (pour accumuler les différences au carré),
    et non ce que j'ai fait.

    En espérant que ce soit assez clair... Merci pour la réponse en tout cas, ça m'a fait réfléchir sur la bonne piste.

  5. #5
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    j'étais pas sur mais c'est ce que j'avais remarqué d'ou ma première question =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcul de moyenne sur les bins d'un histogramme
    Par berlilou dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/03/2008, 16h03
  2. Réponses: 10
    Dernier message: 21/11/2005, 23h05
  3. [Dates] Calcul tout bête sur une date...
    Par poah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 15h02
  4. Calcul des stats sur SYS et SYSTEM
    Par orafrance dans le forum Oracle
    Réponses: 8
    Dernier message: 05/10/2005, 16h25
  5. Questions sur chartfx (histogramme)
    Par lejert dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/01/2004, 13h54

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