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

MATLAB Discussion :

format tif avec des data en double


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut format tif avec des data en double
    Bonjour,

    J'essaye depuis un moment de générer des fichiers tif à partir de matrices de data en format double.
    Le but du tif est principalement d'accepter les "double" contrairement à beaucoup d'autre format qui ne gère que des entiers.

    donc j'imagine que c'est forcément possible de le faire sous matlab.
    mais je trouve pas comment ...

    j'ai essayé avec imwrite.
    t = tiff('nom','w')
    tagstruct = etc ...

    je n'y arrive pas.

    Si quelqu'un a une idée je suis preneur.

    Cordialement,
    PS: j'utilise matlab 2009b ou 2010b suivant la station que j'utilise.

  2. #2
    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,

    a priori il faut régler les champs BitsPerSample et SampleFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tagstruct.BitsPerSample = 64
    tagstruct.SampleFormat = 3
    pour que le fichier tiff accepte les double.
    A vérifier si cela suffit.
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    bonjour,

    j'ai essayé ça mais sans résultat.

  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
    Peux-tu préciser? Quel est le code que tu as utilisé? Quel résultat obtiens-tu? Comment as-tu vérifier que ça ne marchait pas?
    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
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    Alors pour donner un peu plus de détails,

    mon image est une image 353*353*15 (c'est un volume quoi)
    elle est en niveau de gris (un seul canal à coder, pas en RGB ou autre truc du genre).
    Les valeurs sont comprises entre -1 et 1000 en réel.

    le code que j'utilise est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        t = Tiff(filename2,'w');
        tagstruct.ImageLength = size(data,1);
        tagstruct.ImageWidth = size(data,2);
        tagstruct.Photometric = Tiff.Photometric.MinIsBlack;
        tagstruct.BitsPerSample = 64;
        tagstruct.SamplesPerPixel = zsize;
        tagstruct.SampleFormat = 3;
        tagstruct.PlanarConfiguration = 2;
        tagstruct.Software = 'MATLAB';
        t.setTag(tagstruct);
        t.write(data);
    j'ai essayé quelques variantes; sampleformat =1 et planarconfiguration = 1.
    j'ai essayé d'enregistrer 1 coupe seulement au lieu des 15, quitte à changer le nom pour chaque coupe et avoir 15 fichiers.

    j'obtiens soit une image qui est codée en entier et nom pas en réel.
    avec une relation entre les entiers et les réels que je ne trouve pas.
    je veux dire par là que l'image qui s'ouvre est bien la même visuellement.
    mais dans les différentes infos du tiff, je ne trouve pas d'information qui me permettrait de relier les valeurs entières qu'il me retourne aux valeurs réelles que je voulais.

    Et des fois je n'obtiens pas d'image dans le sens où j'obtiens un fichier dont je suis incapable d'extraire des informations. Je ne sais pas comment l'ouvrir.

    Pierre

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    si j'ai bien compris le sampleperpixel est soit 1 soit 3 (niveau de gris ou rgb).
    donc dans le code d'avant j'ai essayé sampleperpixel = 1 et enregistrer une coupe du volume à la fois.
    avec en resultat une image codée en entier.
    dans le code d'avant avec sampleperpixel = 15, je n'arrive pas à ouvrir l'image.
    (le but est à terme d'ouvrir le tif avec imagej par exemple avec des données quantitative.)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    Ah au fait, en forçant mes datas en single (au lieu de double), et en mettant bitpersample = 32 ça a marché. (et pour une image 2D, je n'arrive toujours pas à faire les stacks)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    t = Tiff('data_export-matlab-via-windows4.tif','w');
    tagstruct.ImageLength = size(data,1);
    tagstruct.ImageWidth = size(data,2);
    tagstruct.Photometric = Tiff.Photometric.MinIsBlack;
    tagstruct.BitsPerSample = 32; % cas du single (64 pour du double)
    tagstruct.SamplesPerPixel = 1;
    tagstruct.SampleFormat = 3;
    tagstruct.PlanarConfiguration = 1;
    tagstruct.Software = 'MATLAB';
    t.setTag(tagstruct);
    t.write(data);
    t.close();
    Je sais pas pourquoi il veut pas le double.

Discussions similaires

  1. Alimenter un tableau avec des data
    Par caramel1 dans le forum Langage
    Réponses: 8
    Dernier message: 27/08/2013, 07h32
  2. [PIL] Sauvegarge au format TIF avec compression LZW --> Syntaxe?
    Par nihilulter dans le forum Général Python
    Réponses: 2
    Dernier message: 28/01/2010, 08h20
  3. [SP-2007] Colonne au format "nombre" avec des espaces ?
    Par Faro dans le forum SharePoint
    Réponses: 2
    Dernier message: 15/05/2009, 08h48
  4. Réponses: 2
    Dernier message: 14/03/2008, 09h57
  5. [Format]nombres avec des 0
    Par zozolh2 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 01/06/2004, 08h43

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