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 :

.txt en image


Sujet :

Images

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut .txt en image
    Bonjour,

    Je suis débutante en Matlab et j'ai besoin de votre aide :

    J'ai un fichier .txt sous la forme :
    (37,62,25.7690) (37,63,28.6688) (37,64,22.4624) (37,65,17.9067) ...
    représentant des pixels
    (PositionX, PositionY, ValeurIntensitéZ)

    Ce que je veux c'est afficher une image (ou une map) avec ces valeurs mais je n'y arrive pas. Quelqu'un pourrait m'aider ? je ne sais pas comment faire ni quelle fonction utiliser...

    et vice versa (passer d'une image en .txt avec les coordonnée (X,Y,Z) dans un fichier .txt)

    Merci !!

    (en pièce jointe le .txt en question)
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu peux commencer par lire ton fichier avec les fonctions fopen/fscanf/fclose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid = fopen('slopeX.txt', 'rt');
    data = fscanf(fid, '(%f,%f,%f) ', [3 Inf]);
    fclose(fid);
    Repérer les indices (X,Y) maximum déterminant la taille de l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = max( data(1,:) );
    m = max( data(2,:) );
    im = zeros(m,n);
    Enfin, utiliser la fonction sub2ind permettant de passer en indices linéaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    im( sub2ind([m n], data(2,:), data(1,:)) ) = data(3,:);

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok merci c'est super mais j'ai donc une sorte de matrice comme ca maintenant :

    0 0 0 0 0 0 0 valeur valeur valeur 0 0 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur valeur valeur 0 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur valeur valeur 0 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur 0 valeur valeur 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur 0 valeur valeur 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur valeur valeur 0 0 0 0 0 0 0
    0 0 0 0 0 valeur valeur valeur valeur 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 valeur valeur valeur 0 0 0 0 0 0 0 0

    et j'aimerais qu'elle s'affiche sous forme de vraie image (pas sous forme de matrice)

    Mais c'est deja bien je suis contente !


    et aussi comment je peux faire l'inverse maintenant ? (Passer d'une image à un fichier .txt en ayant des valeurs (X1,Y1,Z1) (X2,Y2,Z2) ...)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pour cela tu as les fonctions image, imagesc ou imshow à utiliser dessus

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Pour cela tu as les fonctions image, imagesc ou imshow à utiliser dessus
    Merci ça marche très bien !

    Et maintenant comment je peux faire l'inverse, passer de cette image (en PJ) à un .txt avec (X1,Y1,Z1) (X2,Y2,Z2)....
    image :
    Nom : image.png
Affichages : 74
Taille : 45,3 Ko

    J'ai essayé ça mais ça ne marche pas (ça écris bien des coordonnées mais Y et Z sont toujours égal à 1 je ne sais pas pourquoi. Du coup lorsque je reconstitue l'image ça ne me redonne pas mon image de départ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    splz=imread('pyr4_obj2-5_paint_240x240.png');
    s=[240,240,3];
    [X,Y,Z]=ind2sub(s,splz);
     
    %----Pixels Value----%
    V=fopen('PixelValue.txt','w');
    fprintf(V,'(%.0f,%.0f,%.0f)\t',X,Y,Z);
    fclose(V);
    Merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Auras-tu des images couleur à traiter aussi ? (Celle en PJ bien qu'étant en couleurs a ses trois canaux R,G,B de la même intensité, donc en niveaux de gris au final...) Car si tel est le cas, il y aura une nouvelle composante à prendre en compte.

    Dans ton code, tu n'as pas compris l'utilité de la fonction ind2sub : elle travaille sur des indices. splz contient les intensités des pixel de l'image, en aucune façon ses indices ou un mélange des deux.
    Étant en niveaux de gris ici, on ne va prendre que le premier canal rouge splz(:,:,1) de taille 240 x 240. En indices linéaires, on ira donc de 1 à 240*240.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    indices_lineaires = 1:240*240;
    [X,Y] = ind2sub([240 240], indices_lineaires);
    Et on prendra les valeurs correspondantes avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Z = splz(indices_lineaires);
    Autre problème : l'écriture de ton fichier que tu n'effectues pas dans le bon ordre. Ceci fprintf(V,'(%.0f,%.0f,%.0f)\t',X,Y,Z); va écrire toutes les valeurs de X, puis toutes les valeurs de Y, et enfin les valeurs de Z.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    X = [1 4];
    Y = [2 5];
    Z = [3 6];
    fprintf('(%.0f,%.0f,%.0f)\t',X,Y,Z);
     
    % Va écrire : 
    (1,4,2)	(5,3,6)
    % au lieu de 
    (1,2,3)	(4,5,6)
    On va donc fournir un unique tableau de taille 3 x (240*240) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(V, '(%.0f,%.0f,%.0f)\t', [X;Y;Z]);
    qui sera parcouru dans l'ordre suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    X  1  4  7  ...  
    Y  2  5  8  ...
    Z  3  6  9  ...

Discussions similaires

  1. Ecriture d'images dans fichier txt
    Par The Niceman dans le forum Images
    Réponses: 2
    Dernier message: 22/01/2008, 22h13
  2. Réponses: 6
    Dernier message: 26/12/2007, 11h03
  3. [Newsgroup]Convertir image .txt en jpeg
    Par goldkey dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 05/06/2007, 08h46
  4. prechargement d'un .txt avec images
    Par eric2107 dans le forum Flash
    Réponses: 7
    Dernier message: 05/05/2007, 05h52

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