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

Calcul scientifique Python Discussion :

PIL Présence d'une image dans une autre


Sujet :

Calcul scientifique Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut [PIL SCIPY] Présence d'une image dans une autre
    bonjour,

    Je débute avec PIL et en traitement d'image en général.

    Je souhaiterais savoir, si il existe une méthode pour tester si un fragment d'image est présent dans une autre image.
    Si cette méthode n'existe pas sous PIL, je suis quand même intéressé pour connaître une bibliothèque qui implémenterait cette fonction.

    Merci

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Un fragment ou une image ? Si c'est une image, tu passes par la cross-corrélation et voilà.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    non, ce serait plutôt un fragment d'image. C'est à dire que je cherche à tester si un morceau d'une image est bien dans cette même image, donc les deux images ne font pas la même taille.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par polo42 Voir le message
    non, ce serait plutôt un fragment d'image. C'est à dire que je cherche à tester si un morceau d'une image est bien dans cette même image, donc les deux images ne font pas la même taille.
    Ca commence à être compliqué, là... Il n'y a rien dans la plupart des outils scientifiques, il me semble. Ca devient un problème très complexe, là.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    En réfléchissant à une manière de résoudre le problème, je me demande si transformer les deux images en chaines de caractères puis de faire une recherche d'une chaine dans une autre ne simplifierait pas les choses.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, puisque c'est du 2D. Une recherche de chaîne fera du 1D, et tu seras toujours embêté par la taille de la chaîne à choisir.
    La corrélation croisée est la solution, mais tu dois en faire une pour tout fragment de l'image 1. Un problème assez coûteux.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    Je ne connais pas la corrélation croisée, et d'après Wikipédia, je crois que je ne vais rien y comprendre...
    Je pensais quand même à quelque chose :
    Faire un algo, qui balaye toute l'image et qui découpe un morceau de la taille du fragment à chaque déplacement. Les morceaux sont ensuite soustrais au fragment, si un des résultat de cette opération n'a que des valeurs Null alors nous avons localisé l'image.
    Quand pensez vous mathieu ? Je pense que ça doit être assez coûteux...

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est coûteux, oui.
    Ce que tu cherches à faire, c'est une cross corrélation à bas prix. Ca ne marchera pas. Tu dois passer par là. Si tu ne sais pas comment l'implémenter, essaie tout de même. C'est un algorithme basique.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    Ok merci, je vais essayer

    Avant de mettre le sujet en résolu, est il possible d'avoir des liens vers un site qui expliquerait un peu tout ça ?

    merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    Avant de mettre le sujet en résolu, est il possible d'avoir des liens vers un site qui expliquerait un peu tout ça ?
    Existe t'il des bibliothèques python qui implémentent la cross corrélation?

    Merci pour les compléments de réponses

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Oui, scipy te le propose, dans ndimage il me semble.
    Mais tu devrais réussir à faire un essai sans, la cross-corrélation, c'est juste une somme de multiplications.

  12. #12
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Un exemple ici serait aussi une bonne idée...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    Merci matthieu,

    comme le fait remarquer rambc, un exemple sommaire serait apprécié.

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    En fait, il te demandait à toi, je crois...
    Je en vois pas ce que je peux te donner comme exemple, puisque c'est une bête formule mathématique à utiliser. Commence par la tester sur un exemple simple (recherche d'une image dans une autre), puis utilise la fonction de scipy pour aller plus vite et finis par faire la grosse boucle for qui teste toutes les solutions.

  15. #15
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    En fait, il te demandait à toi, je crois...
    Oui, histoire que tu nous fasses partager ton expérience polo42.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut


    Pour l'instant je n'ai pas d'expérience. Je cherche.....

  17. #17
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Tu vas y arriver quitte à te casser un peu la tête. Un peu d'effort... .

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    bonjour,

    Je fait donc le suivi de ce topic. Voici mon code

    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
    class cherche_image():
        def __init__(self, image1, image2):
            self.image1 = image1
            self.image2 = image2
            self.objetim1 = Image.open(self.image1)
            self.objetim2 = Image.open(self.image2).convert("L")
        def get_contenu_image(self):
            self.listepix1 = list(self.objetim1.getdata())
            return self.listepix1
        def comparaison_images(self):
            self.objetim3 = self.objetim2.crop((291, 378, 335, 403))
            self.resultat = ndimage.correlate(self.objetim3, self.objetim1)
            print self.resultat
    
    cherche_image("E:\\perso\\siege_vide.png", "E:\\perso\\image2.png").comparaison_images()
    Le but de mon bout de code est de tester la fameuse fonction correlate de Ndimage (scipy).
    Le fonction correlate marche comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    correlate(input, weights, output=None, mode='reflect', cval=0.0, origin=0)
    	source code 
     
    Multi-dimensional correlation.
     
    The array is correlated with the given kernel.
     
    The mode parameter determines how the array borders are handled, where cval is the value when mode is equal to 'constant'. Other modes are 'nearest', 'mirror', 'reflect' and 'wrap'.
     
    The origin parameter controls the placement of the filter.
    Je passe en argument à ndimage.correlate mes deux images qui sont converties en noir et blanc pour raccourcir les temps de calculs.
    Au final j'obtient un tableau :

    [[0 0 0 ..., 0 0 0]
    [0 0 0 ..., 0 0 0]
    [0 0 0 ..., 0 0 0]
    ...,
    [0 0 0 ..., 0 0 0]
    [0 0 0 ..., 0 0 0]
    [0 0 0 ..., 0 0 0]]

    Mais je ne sais pas trop quoi en faire et surtout ce qu'il signifie (enfin je crois savoir mais je ne suis pas sur)

    Est ce que quelqu'un a une idée?

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    En faisant la même chose sur deux listes plus simples.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.resultat = ndimage.correlate([1,2,3,4,5,6], [1,2,3])
    J'obtiens le résultat suivant mais je ne sais pas comment l'interpréter:
    [ 9 14 20 26 32 35]

    merci d'avance

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu te demandes où la corrélation (affine) entre tes signaux est la plus importante, en considérant que les bords réfléchissent ton signal (ce qui est faux, tu veux plutôt le mode "constant", ce qui me fait dire que tu n'as pas cherché à programmer la corrélation à la main et ce qui implique que tu ne peux pas comprendre ce que tu fais).
    Le maximum indique là où les signaux sont les plus semblables. Mais attention, comme tu ne divises pas par l'amplitude de ton signal, tu peux avoir des surprises (1, 2, 3 plus corrélé avec 5, 4, 3 qu'avec 1, 2, 3)..

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  3. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  4. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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