Bonjour,
je souhaite extraire les valeurs des pixels d'une image satellite sous matlab. Est ce qu'une personne peut m'aider?
merci
Bonjour,
je souhaite extraire les valeurs des pixels d'une image satellite sous matlab. Est ce qu'une personne peut m'aider?
merci
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 ?
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.
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
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 :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.
et nous dire ce que ça renvoie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part whos im
Dernière remarque : En quelque sorte, ton code devrait se limiter à :
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.
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);
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]
Ok ton image semble être importée sous la forme d'une structure. Si tu faisça te renvoie quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part im{1}
Genre fais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part size(im{1})
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.
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager