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 d'images Discussion :

Coefficient de corrélation


Sujet :

Traitement d'images

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut Coefficient de corrélation
    Bonjour

    j'aimerai calculer la similarité entre deux images, la solution la plus évidente est de calculer la distance euclidienne entre les prixels des 2 images, ce que j'ai fais lors de ma premiere éxecution, maintenant voulant aller plus loin de mon travail je cherche une méthode de similarité plus fiable, pour cela j'ai trouvé sur internet la corrélation! et y'a meme la fonction toute préte qui march bien sur matlab d'apres des testes que j'ai effectuer, mon probleme c'est comment est calculé cet indice concretement?

    merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Bonjour Eviasra, et ceux qui suivent

    je ne t'apporte pas de réponse, mais je me joins à toi dans ta recherche.
    Je cherche à quantifier la ressemblance entre une image "0" et une série d'image pour trouver la plus ressemblante.
    J'ai donc pensé corrélation.
    Je suis allé voir du côté de la bibliothèque pandora, super biblio, mais leur corrélation renvoi une matrice, et non un coefficient.
    Donc soit j'arrive à tirer un coefficient de cette matrice, soit je trouve une fonction de corrélation qui sort directement un coefficient.
    Il y a bien corr2 de mathworks, mais je ne vois pas comment l'utiliser. Je dois implémenter cette fonction dans une appli (en Golang ou c++, à voir) ou encore à lancer depuis un shell sous linux.

    As-tu avancé dans ta recherche ou qq peut-il nous y aider?

    Pour ma part, j'ai pas suivi la piste de la distance Euclidienne car la caméra de prise d'image est susceptible de bouger un peu pendant les prises d'image.

    Merci, à+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    j'allais me décider à implémenter des calculs de corrélation de spearman, pearson et/ou khendal.
    ce n'est pas si violent finalement, et puis je tombe sur Octave.
    J'ai installé Octave, un clone de matlab version open source et gratis.
    C'est un super outils, après qq tâtonnements, j'en suis arrivé à ce bout de code, qui transforme des .png (de 100pix par 100pix) en matrice RVB d'entier 16bits, isole le R, le V, le B dans des matrice distinctes, calcule et affiche les coefficient de corrélation pour chacune des couleurs. On peut voir le pb sur la composante verte car pas un seul pixel ne contient de vert. Sinon, c sympa j'ai testé avec des images +/- similaires.

    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
    19
    20
    21
    22
    23
    >> rgb0 = imread('img0.png');
    >> rgb2 = imread('img2.png');
    >> a0 = int16(256*im2double(rgb0));
    >> a2 = int16(256*im2double(rgb2));
    >> r0 = a0(:,:,1);
    >> v0 = a0(:,:,2);
    >> b0 = a0(:,:,3);
    >> r2 = a2(:,:,1);
    >> v2 = a2(:,:,2);
    >> b2 = a2(:,:,3);
    >> corrR = corr2(r0,r2);
    >> corrV = corr2(v0,v2);
    warning: division by zero
    warning: called from
        corr at line 72 column 12
        corr2 at line 34 column 5
    >> corrB = corr2(b0,b2);
    >> disp(corrR);
     0.59370
    >> disp(corrV);
    NaN
    >> disp(corrB);
     0.33834
    Je testerai dans qq jours ou semaines si cette fonction correspond bien à ce que je cherche (avec les vrais photos)

    commentaires bienvenus

    à+

  4. #4
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    bonjour nico

    je te remercie pour la solution sur Octave.

    pour ma part je me suis plus dérigée vers le calcul de l'erreur d'histogramme entre deux images, j'ai fais quelques tests, entre deux images similaires (qui contiennent les mêmes régions, batiments, routes, ..etc) et deux autres différentes, les résultats m'ont lair assez logiques , quand c'est similaire l'erreur d'histogramme s'approche du 1 et quand ça ne l'est pas ça s'approche du 0.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    PhD Student
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : PhD Student
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par eviasra Voir le message
    mon probleme c'est comment est calculé cet indice concretement?
    Si tu es toujours sur le sujet, la corrélation est souvent appelée cross-correlation et est notamment utilisé pour le template matching (dans ce cas on cherche une imagette, l'objet, dans une image, la scène).
    Tu as les formules des différentes variantes ici : http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html , avec "CCORR" pour la cross correlation, normalisée ou non. Le max ou min du résultat te donne la position (0,0) de l'imagette où l'image lui correspond le plus.

Discussions similaires

  1. Coefficient de corrélation intra classe
    Par elvolcano dans le forum SAS STAT
    Réponses: 7
    Dernier message: 25/04/2019, 17h35
  2. Interprétation coefficient de corrélation
    Par Liun971 dans le forum Signal
    Réponses: 2
    Dernier message: 01/07/2008, 08h20
  3. Réponses: 2
    Dernier message: 13/07/2007, 14h59
  4. Coefficient de corrélation exponentielle
    Par Giansolo dans le forum Statistiques, Data Mining et Data Science
    Réponses: 6
    Dernier message: 23/03/2007, 10h58
  5. Coefficient de corrélation
    Par oceanediana dans le forum Access
    Réponses: 7
    Dernier message: 26/07/2006, 07h03

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