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 :

Interpolation d'une image


Sujet :

Calcul scientifique Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut Interpolation d'une image
    Bonjour à tous !

    Alors la question que j'aimerai vous poser est la suivante :

    J'ai une image représentant une perturbation. Certains des pixels de mon images sont à NaN, j'aimerai pourvoir interpoler la perturbation au niveau de ces pixels.

    J'ai vu qu'il existe plusieurs fonction comme interp2d ou griddata, ou encore map_coordinates qui permette de faire des interpolations. Venant de matlab, j'utilisais la fonction griddata puis interp2d avec une triangulation de delaunay pour pouvoir interpoler la perturbation dans mes zones vides.

    Je n'ai pas l'impression que cela marche de la mm manière en python (on peut directement faire une interpolation avec griddata si j'ai bien compris ?)

    Donc ma question est de savoir qu'elle est l'interpolation la plus robuste à utiliser en python (ou celle que vous me conseillez) pour modeliser ma perturbation.

    Merci d'avance

    Romain

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    Voici le code que j'ai tenté :

    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
     
    vel_azim =pl.imread('image.tif')
    mask = pl.imread('mask.tif')
    vel_azim = np.where(mask>0,np.nan,vel_azim)
    vel_azim = np.where(vel_azim==0,np.nan,vel_azim)
     
    vel_syd = vel_azim[4000:5000,2700:3600]
     
    mean = np.mean(vel_syd[~np.isnan(vel_syd)])
    med = np.median(vel_syd[~np.isnan(vel_syd)])
    std = np.std(vel_syd[~np.isnan(vel_syd)])
     
    x = np.arange(0,8502,1)
    y = np.arange(0,7914,1)
     
    xmat = repmat(x,7914,1)
    xmat = xmat.transpose()
    xmat = xmat[4000:5000,2700:3600]
    ymat = repmat(y,8502,1)
    ymat = ymat[4000:5000,2700:3600]
     
     
    vel_new = interp2d(xmat,ymat,vel_syd,kind='cubic')
    Je veux donc interpoler pour combler 'les trous' dans vel_syd.

    Mais je recoit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OverflowError: Too many data points to interpolate
    Ce n'est peut etre pas la bonne approche ?

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    ce forum cerne bien le probleme ca a l'air de bien marcher pour moi, meme si cest tres lent je trouve.

    http://stackoverflow.com/questions/2...grid-in-python

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 656
    Points : 1 153
    Points
    1 153
    Par défaut
    Salut Romainmill.

    Je trouve le sujet intéressant. Est-ce que tu as une image, meme partielle, à presenter pour se figurer à quel point il faut interpoler? Je ne m'y connais pas du tout, mais le choix de la methode peut se faire sur la finalité de l'image: à quoi va-t-elle servir? Si c'est un "meshgrid" montrant différents niveaux de quelque chose (contraintes, profondeur d'eau, population... valeurs numériques), est-ce qu'il est envisageable que les valeurs des parties interpolées soient inférieures et/ou supérieures à celles non interpolées?

    J

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    Voici une image, je dois interpoler dans les trous en blanc. Les zones en blanc correspondent a un signal de vitesse qui m'interesse. Je veux corriger ce signal de vitesse des bruits (sous forme de stries) present sur les zones stables non masquees. Du coup, je masques mon signal de vitesse interessant, j'interpole le bruit partout et je retire ce signal de bruit.

    Je vous les images avant et apres correction aussi. J'ai utilise la mm technique que dans le lien que je vous ais copiés plus haut.
    Images attachées Images attachées    

  6. #6
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour,

    une simple remarque, avec ma casquette ingénieur et pas informaticien.

    Je ne traite pas les mêmes données (phénomènes) que toi mais, à la vue de la première image, les trous m'ont l'air bien "gros" et très étendus. J'aurais même envie de dire que ce ne sont plus des trous mais carrément des déserts !

    En codant correctement, on trouvera toujours une solution mathématique pour boucher tout ça, mais, in fine, est-ce que les valeurs trouvées auront vraiment un sens ? Les "vraies" valeurs (valeurs réellement observées) sur lesquelles on va s'appuyer sont bien loin des valeurs "déduites", calculées.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

Discussions similaires

  1. interpolation bilinéaire d'une image
    Par afef_master dans le forum Images
    Réponses: 1
    Dernier message: 18/10/2008, 13h00
  2. Interpolation en 2D d'une image
    Par Jonkile dans le forum Images
    Réponses: 14
    Dernier message: 20/05/2008, 00h04
  3. Interpolation 2D d'une image
    Par Emilie[2009] dans le forum Images
    Réponses: 5
    Dernier message: 31/03/2008, 13h51
  4. Réponses: 3
    Dernier message: 17/03/2007, 00h47
  5. Interpoler une courbe à partir d'une image
    Par killerfrog dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/03/2007, 22h44

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