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 :

Pondération des pixels de 2 images pour en créer une 3ème


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Pondération des pixels de 2 images pour en créer une 3ème
    Bonjour à tous !

    Je suis inscrit depuis quelques mois sur le site et le forum, et le parcourir m'a permis d'apprendre pas mal de choses notamment sur les filtres usuels pour la détection de contours (Cours de Xavier Philippeau).

    Il s'agit de mon premier poste ici.

    J'utilises Python 3.7 à l'aide du Navigateur Anaconda (Jupyter et Spyder).

    Je développe actuellement un script permettant de détecter automatiques des bancs de galets dans des images aériennes et des MNT. Le script est déjà bien avancé et donnes des résultats pas trop mauvais.
    Cependant, pour l'instant nous n'avons traités les images Ortho et les MNT que séparément !

    Le prétraitement avant la détection des bancs est un gradient de Gauss inversé (La fonction " gimage = inverse_gaussian_gradient(gray, alpha=xxx, sigma=xxx)" de la bibliothèque scikit-image), l'image en sortie est donc en float 64

    Aussi nous avons pour idée d'essayer de fusionner les gradients de Gauss générés avec l'image Ortho et avec l'image MNT afin de voir si cela augmente notre précision/rappel/Fscore !

    Voici donc un exemple de gradient obtenu avec l'image Ortho :
    Nom : Capture1.PNG
Affichages : 209
Taille : 117,0 Ko

    Et un exemple obtenu avec l'image de pente du MNT :
    Nom : Capture2.PNG
Affichages : 177
Taille : 107,1 Ko

    Les 2 images possèdent exactement la même emprise et le même nombre de pixels

    L'idée serait de comparer les pixels des 2 images un à un et de mettre une "pondération".
    Par exemple si le pixel du gradient Ortho indique qu'il y a un contour tandis que le gradient du MNT dis que non, on ne conservait que la valeur du pixel du gradient Ortho et inversement. Dans le but de créer une 3ème image "composite" des 2 autres.

    Je pensais essayer la fonction np.ravel pour passer les images en tableau 1D et comparer les pixels un à un, puis faire en sorte de conserver une des 2 valeurs à insérer dans un tableau vide qui me servirait à créer l'image "composite"

    Cependant je ne vois pas trop comment coder ça ...
    En effet je ne pratique pas la programmation depuis très longtemps et je n'arrive pas à trouver de solution pouvant convenir à ma situation sur internet.

    Est ce que quelqu'un aurait une idée de si cela est possible, facilement faisable ou même aurait une meilleur idée ???

    Vous remerciant par avance de votre aide !

    Cordialement,

    Maxime.C

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Si tu veux faire des combinaisons assez simple, tu devrait pouvoir t'en tirer avec les opérations de base proposées par numpy :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import numpy as np
    a1 =np.array( [0, 1, 0] )
    a2 =np.array( [1, 0, 1] )
     
    combi1 = np.maximum(a1, a2)   ### Le max
    combi2 = 0.5*(a1+a2)   ### La moyenne
    et tu peux les composer à souhait. Et si vraiment le truc est plus compliqué, alors oui, tu créés une matrice de résultats (que tu inities à zeros par exemple), et tu la remplis pixel par pixel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    combi3 = np.zeros_like(a1)
    for i,j in np.ndindex(a1.shape):
         combi3[i,j]  =   qqch en fonction de a1[i,j] et de a2[i,j] ### et tu peux meme envisager de mettre des if et tout

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour !

    Tout d'abord, merci pour votre réponse !

    Je vais tester cela, merci beaucoup.

    Cordialement

    Maxime.C

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2017, 09h32
  2. laisser trainer des pixels entre deux images
    Par Garra dans le forum OpenCV
    Réponses: 9
    Dernier message: 11/10/2013, 14h42
  3. [Débutant] coordonnées spatiales des pixels de l'image
    Par imagiste dans le forum Images
    Réponses: 4
    Dernier message: 23/01/2010, 12h43
  4. Des pixels au fichier image .ppm
    Par Pepson dans le forum C++
    Réponses: 3
    Dernier message: 04/05/2009, 00h13
  5. [HTML 4.0] regrouper des image pour quelle soit une seule
    Par nostalamigo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/04/2009, 15h47

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