Corrélation de 2 images
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Corrélation de 2 images



  1. #1
    louisrr

    Corrélation de 2 images


    ------

    Bonjour,

    Je suis en train de faire un code python où j'aimerai pouvoir être capable à partir de 2 images (dont l'une est une partie de l'autre, un coin par ex) et pouvoir situer sur l'image de départ d'où vient l'autre morceau.

    Est-ce que la méthode de "cross-correlation" convient pour faire cela ? Ou plutôt méthode Sift ?

    Merci

    -----

  2. #2
    GBo

    Re : Corrélation de 2 images

    Bonjour, l'embarras du choix, par exemple avec la cross-correlation ça se fait en effet :
    https://en.wikipedia.org/wiki/Templa...te_differences
    Mais il faut savoir si l'objet dans ton morceau à situer présente un facteur d'échelle ou pas par rapport au même objet dans l'image de départ, et autres déformations.
    Le mélange de vrai et de faux est énormément plus toxique que le faux pur - Paul Valéry

  3. #3
    louisrr

    Re : Corrélation de 2 images

    Bonjour, merci tout d'abord!
    Ok il vaut mieux donc que les 2 images aient la même taille ? en nombre de pixels de veux dire ?

  4. #4
    GBo

    Re : Corrélation de 2 images

    Si le détail dans l'imagette (par exemple un visage) a la même taille en pixel que dans la grande image où il faut le situer, c'est sera facile de trouver une méthode et à prototyper, mais ce sera moins universel, ça dépend du cas d'usage pratique donc.
    Dernière modification par GBo ; 13/05/2021 à 15h34.

  5. A voir en vidéo sur Futura
  6. #5
    louisrr

    Re : Corrélation de 2 images

    Ok très bien. Je voulais aussi savoir le résultat obtenu, le "peak" ou maximum d'intensité sur la figure de cross-correlation correspond à quoi ? Au point de ressemblance maximal ?

  7. #6
    GBo

    Re : Corrélation de 2 images

    Le peak c'est là ou le crop se superpose le mieux dans l'image dont il est tiré.
    Sur Matlab il y a un exemple détaillé:
    https://nl.mathworks.com/help/images...ormxcorr2.html
    La fonction normxcorr2 utilise en fait la formule détaillée sur ce papier en (2):
    http://scribblethink.org/Work/nvisionInterface/nip.pdf
    Il n'y a plus qu'à transposer tout ça en Python.
    Dernière modification par GBo ; 13/05/2021 à 16h10.

  8. #7
    louisrr

    Re : Corrélation de 2 images

    Ok d'accord et le peak se place sur une image de quelle dimension si jamais l'image et l'imagette n'ont pas la même?

    Merci pour les liens!

  9. #8
    GBo

    Re : Corrélation de 2 images

    L'imagette (onion) et l'image (peppers) n'ont pas la même dimension dans le cas de l'exemple Matlab puisque l'imagette est un crop (découpe d'un rectangle sans resampling) de l'image globale.
    Je te les envoie pour que tu joues avec, ne pas oublier de les transformer en noir et blanc avant tout.
    Le but du jeu est de situer l'imagette de l'oignon parmi l'image globale des poivrons
    peppers.png
    onion.png
    Dans le cas ou l'image de l'oignon est grossie, rapetissée, de travers, juste ressemblante, partiellement cachée etc... ce n'est pas la bonne méthode à mon avis, l'article wikipédia au-dessus évoque d'autres méthodes.
    Dernière modification par GBo ; 13/05/2021 à 16h34.

  10. #9
    louisrr

    Re : Corrélation de 2 images

    Ok oui car sinon en couleur c'est 3 dimension.
    J'avais fait ce code en python et voila ce que j'avais obtenu avec notre dame, la cross-correlation (correlate2d) ne me semble pas bonne, qu'en pensez vous ? Nom : Cross-Correlation.png
Affichages : 293
Taille : 227,9 Ko

  11. #10
    GBo

    Re : Corrélation de 2 images

    Tu peux partager tes png ?

  12. #11
    louisrr

    Re : Corrélation de 2 images

    Comment je fais ? Vous n'arrivez pas à voir ?

  13. #12
    GBo

    Re : Corrélation de 2 images

    J'aimerais essayer sur Matlab, mais il me faut les fichiers image exacts, celui de l'image de Notre Dame et celle de ton "crop" (en png ou jpg, il faut envoyé ce que tu as utilisé dans ton programme sans rien modifier).
    En mode avancé de réponse, c'est le bouton image -> choisir un fichier from computer etc...

    Alternativement, tu peux essayer ton programme sur onion.png / peppers.png que j'ai partagés ci-dessus, là au moins je suis sûr que le crop a la bonne dimension.
    Dernière modification par GBo ; 13/05/2021 à 16h59.

  14. #13
    louisrr

    Re : Corrélation de 2 images

    Voilà ce que j'ai obtenu!Nom : Cross-Correlation_pepper.png
Affichages : 276
Taille : 233,9 Ko

  15. #14
    louisrr

    Re : Corrélation de 2 images

    c'est vrai qu'en regardant mieux on voit un point blanc très clair au niveau du crop!

  16. #15
    louisrr

    Re : Corrélation de 2 images

    Je voulais aussi savoir si vous connaissiez d'autres méthodes comme celle de cross-correlation qui sont plus efficaces ?

  17. #16
    GBo

    Re : Corrélation de 2 images

    Ce n'est pas bon du tout, on doit avoir un pic, que dis-je un pic ? ...c'est une méthode on ne peut plus fiable pour un simple crop. D'ailleurs dans le cas de Notre Dame on devrait avoir deux pics puisque les 2 tours se ressemblent.

  18. #17
    louisrr

    Re : Corrélation de 2 images

    On voit tout de même un pic même si il est très faible.
    Pour notre dame je suis d'accord que cela n'a pas du tout marché et c'est d'ailleurs pour ça que j'avais posé cette question!
    Voici le lien de la fonction que j'utilise : https://docs.scipy.org/doc/scipy/ref...rrelate2d.html

  19. #18
    GBo

    Re : Corrélation de 2 images

    Voilà ce que ça donne en Matlab avec Notre Dame, on a bien 2 pics de corrélation (cf. figure2 ci-dessous) puisque le crop de la tour gauche ressemble aussi à la tour de droite - mais un pic est plus haut que l'autre : c'est lui qui donne la bonne position bien sûr).
    Code:
    crop = rgb2gray(imread('Notre-Dame_crop.jpg'));
    ND = rgb2gray(imread('Notre-Dame.jpg'));
    imshowpair(ND,crop,'montage')
    
    c = normxcorr2(crop,ND);
    figure, surf(c), shading flat
    
    [ypeak, xpeak] = find(c==max(c(:)));
    
    yoffSet = ypeak-size(crop,1);
    xoffSet = xpeak-size(crop,2);
    
    figure
    imshow(ND);
    imrect(gca, [xoffSet+1, yoffSet+1, size(crop,2), size(crop,1)]);
    Avec les résultats suivants:
    figure1.jpg
    figure2.jpg
    figure3.jpg

    La figure3 représente le rectangle localisant automatiquement le crop dans l'image grâce aux opérations précédentes.
    Dernière modification par GBo ; 13/05/2021 à 18h16.

  20. #19
    GBo

    Re : Corrélation de 2 images

    C'est juste pour dire que c'est la bonne méthode, inutile d'en chercher une autre, c'est ton programme qui doit avoir un souci
    Dernière modification par GBo ; 13/05/2021 à 18h33.

  21. #20
    louisrr

    Re : Corrélation de 2 images

    OK d'accord merci, peut être qu'en prenant comme 2ème imagette comme vous la partie cropée+le noir autour ?
    Est-ce difficile de faire apparaître le rectangle? j'essaierai d'implémenter ça car ça en jette

  22. #21
    louisrr

    Re : Corrélation de 2 images

    Avez vous une image de la cross corrélation "pure" comme j'avais en noir et blanc ?

  23. #22
    GBo

    Re : Corrélation de 2 images

    Non le noir c'est juste à l'affichage du "montage", il n'y a pas de noir, voici l'image suivie de l'imagette:
    Notre-Dame.jpg
    Notre-Dame_crop.jpg

  24. #23
    louisrr

    Re : Corrélation de 2 images

    Vous connaissez bien python ? Savoir si je vous envoie le code car pourtant je ne fais qu'utiliser "correlate2d" comme vous "xcorr2d" sur Matlab

  25. #24
    GBo

    Re : Corrélation de 2 images

    Moi non pas trop, mais il y a d'autres forumeurs qui connaissent sûrement.
    Par contre, si c'est un exercice scolaire, un programme ça se met au point en pas en pas en regardant bien l'évolution des variables, tu l'as fait ?
    Dernière modification par GBo ; 13/05/2021 à 18h50.

  26. #25
    louisrr

    Re : Corrélation de 2 images

    que pensez vous de ce test? avec vos images! je trouve que c'est déjà mieux (rien changé au code pourtant)
    Nom : newtest.png
Affichages : 304
Taille : 238,3 Ko

  27. #26
    louisrr

    Re : Corrélation de 2 images

    là on vient bien que c'est celle de gauche qui est au dessus!
    Nom : newtest1.png
Affichages : 271
Taille : 237,4 Ko

Discussions similaires

  1. corrélation
    Par kamel27000 dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 09/05/2019, 19h32
  2. Corrélation d'images
    Par ons_mat dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/12/2014, 10h28
  3. TIPE Corrélation d'images
    Par invitecaa2f02d dans le forum TPE / TIPE et autres travaux
    Réponses: 5
    Dernier message: 18/11/2012, 21h35
  4. Images directes, images réciproques
    Par Formule1 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 07/08/2011, 04h57
  5. correlation!!!
    Par invite81809804 dans le forum Physique
    Réponses: 5
    Dernier message: 28/02/2009, 09h55