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

Images Discussion :

Extraction des valeurs des pixels d'une image


Sujet :

Images

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Extraction des valeurs des pixels d'une image
    Bonjour,
    je souhaite extraire les valeurs des pixels d'une image satellite sous matlab. Est ce qu'une personne peut m'aider?
    merci

  2. #2
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Salut,

    Il va falloir plus d'informations sur la dite image.
    Sous quel format est ton image satellite ?
    Est-ce que Matlab parvient à l'ouvrir lorsque tu utilises la fonction imread ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par eskapp Voir le message
    Salut,

    Il va falloir plus d'informations sur la dite image.
    Sous quel format est ton image satellite ?
    Est-ce que Matlab parvient à l'ouvrir lorsque tu utilises la fonction imread ?
    J'ai pu lire l'image qui est au format geotiff avec geotiffread. l'image à 4 bandes et je souhaite récupérer les coordonnées de chaque pixel avec les 4 valeurs dans un tableau.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,
    Citation Envoyé par Zouhaib Voir le message
    je souhaite récupérer les coordonnées de chaque pixel avec les 4 valeurs dans un tableau.
    normalement c'est ce que fourni geotiffread. Peux-tu nous montrer le code que tu as utilisé?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    normalement c'est ce que fourni geotiffread. Peux-tu nous montrer le code que tu as utilisé?
    bonjour,
    voici le 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
     
    im=geotiffread('image')
    nb_ligne = 16384
    nb_col=16384
    nb_k=4
    compteur = 1
    for i=1:nb_ligne
        for j=1:nb_col
            for k=1:nb_k
                coord = readXYZ(im);
                compteur=compteur+1;
            end
        end
    end

  6. #6
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Normalement, suivant la doc de Matlab, ta variable im devrait contenir les valeurs des pixels (si 4 bandes, ça devrait être une "matrice" NxMx4, avec NxM la taille de l'image) :

    Two-dimensional array, if the file contains a grayscale image or data grid. An M-by-N-by-P array, if the file contains a color image, multispectral image, hyperspectral image, or data grid. The class of A depends on the storage class of the pixel data in the file, which is related to the BitsPerSample property as returned by the imfinfo function.
    Si ça ne répond pas à ta question, peux-tu faire la commande :

    et nous dire ce que ça renvoie.

    Dernière remarque : En quelque sorte, ton code devrait se limiter à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    im=geotiffread('image');
    nb_ligne = size(im,1);
    nb_col= size(im,2);
    nb_k= size(im,3);
    Ton code actuel comporte une boucle qui ne sert pas à grand chose, puisque tu effaces la valeur dans coord à chaque itération. Si tu souhaite malgré tout garder ta variable coord, tu devrais utiliser coord(compteur) = .... Mais encore une fois, à mon sens, tu devrais avoir tout ce donc tu as besoin avec la variable im.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par eskapp Voir le message
    Normalement, suivant la doc de Matlab, ta variable im devrait contenir les valeurs des pixels (si 4 bandes, ça devrait être une "matrice" NxMx4, avec NxM la taille de l'image) :



    Si ça ne répond pas à ta question, peux-tu faire la commande :

    et nous dire ce que ça renvoie.

    Dernière remarque : En quelque sorte, ton code devrait se limiter à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    im=geotiffread('image');
    nb_ligne = size(im,1);
    nb_col= size(im,2);
    nb_k= size(im,3);
    Ton code actuel comporte une boucle qui ne sert pas à grand chose, puisque tu effaces la valeur dans coord à chaque itération. Si tu souhaite malgré tout garder ta variable coord, tu devrais utiliser coord(compteur) = .... Mais encore une fois, à mon sens, tu devrais avoir tout ce donc tu as besoin avec la variable im.
    voici la commande whos
    >> whos im
    Name Size Bytes Class Attributes

    im 1x1 15564 struct

    je n'arrive pas à avoir l'attribut qui contient les coordonnées.

    avec geotiffinfo on a :

    FileSize: 2359911
    Format: 'tif'
    FormatVersion: []
    Height: 315
    Width: 264
    BitDepth: 16
    ColorType: 'grayscale'
    ModelType: 'ModelTypeProjected'
    PCS: 'WGS 84 / UTM zone 30N'
    Projection: 'UTM zone 30N'
    MapSys: 'UTM_NORTH'
    Zone: 30
    CTProjection: 'CT_TransverseMercator'
    ProjParm: [7x1 double]
    ProjParmId: {7x1 cell}
    GCS: 'WGS 84'
    Datum: 'World Geodetic System 1984'
    Ellipsoid: 'WGS 84'
    SemiMajor: 6378137
    SemiMinor: 6.3568e+06
    PM: 'Greenwich'
    PMLongToGreenwich: 0
    UOMLength: 'metre'
    UOMLengthInMeters: 1
    UOMAngle: 'degree'
    UOMAngleInDegrees: 1
    TiePoints: [1x1 struct]
    PixelScale: [3x1 double]
    SpatialRef: [1x1 map.rasterref.MapCellsReference]
    RefMatrix: [3x2 double]
    BoundingBox: [2x2 double]
    CornerCoords: [1x1 struct]
    GeoTIFFCodes: [1x1 struct]
    GeoTIFFTags: [1x1 struct]

  8. #8
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Ok ton image semble être importée sous la forme d'une structure. Si tu fais ça te renvoie quoi ?
    Genre fais .

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par eskapp Voir le message
    Ok ton image semble être importée sous la forme d'une structure. Si tu fais ça te renvoie quoi ?
    Genre fais .
    j'ai pris une image de dimension suivante:
    >> size(im)

    ans =

    315 264 8

    c'est une image à 8 bandes.
    je peux extraire les valeurs des pixels bande par bande mais j'ai juste une matrice ou tu as les valeurs numériques des pixels de la bande. Mon objectif c'est d'avoir un tableau qui contient en ligne les coordonnées géographiques x et y du pixel et ses huit valeurs dans les 8 bandes.

  10. #10
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Je ne suis pas sûre de bien saisir ce que tu cherches.
    Actuellement dans ta variable im (ou im{1} si c'est une structure) tu as:
    im({1})(x,y, = les valeurs de tes 8 bandes.

    C'est un tableau à 3 dimensions si tu préfères où dans chaque case (x,y) tu as la liste des valeurs des pixels des 8 bandes.

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/02/2008, 10h44
  2. Comment ajouter des champs a partir des valeurs d'un autre champ ?
    Par zerkz dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/05/2007, 12h05
  3. Réponses: 5
    Dernier message: 29/03/2007, 16h52
  4. Réponses: 1
    Dernier message: 19/08/2006, 02h02
  5. [VBA-E] incrémenter des valeurs excel grâce à des boutons
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2006, 11h32

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