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 :

Image de données codé en 16 bit


Sujet :

Images

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Image de données codé en 16 bit
    Bonjour,
    Je possède une matrice de données provenant d’un fichier codé en 16 bit (nombre compris entre 0 et 65535). Je voudrais créer une image avec. J’ai essayé avec imagesc mais les résultats que j’obtiens sont aberrants. J’aimerais donc savoir s’il y a une manière particulière sous Matlab de représenté des données qui ont été codés en 16bit.
    Merci


    Matlab 7.2.0.232 (R2006a)

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par kevinl
    Bonjour,
    Je possède une matrice de données provenant d’un fichier codé en 16 bit (nombre compris entre 0 et 65535). Je voudrais créer une image avec. J’ai essayé avec imagesc mais les résultats que j’obtiens sont aberrants. J’aimerais donc savoir s’il y a une manière particulière sous Matlab de représenté des données qui ont été codés en 16bit.
    Merci


    Matlab 7.2.0.232 (R2006a)
    Bonjour,
    essaie imshow(Mat,[])
    les crochets permettent l'adaptation de dynamique

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par kevinl
    les résultats que j’obtiens sont aberrants.
    Qu'est-ce que tu entends par "aberrants" ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bonjour,

    Essaie de faire un cast avec uint16.
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Bonjour à tous et merci pour vos pistes,

    Malheureusement la fonction imshow n’est pas une commande/fonction reconnue chez moi.

    Je parle de valeur aberrante parce que l’image que je devrais obtenir est une carte du monde et j’obtient une image ne représentant pas du tout une carte.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par kevinl
    Je parle de valeur aberrante parce que l’image que je devrais obtenir est une carte du monde et j’obtient une image ne représentant pas du tout une carte.
    OK donc le problème ne vient pas de toi alors

    Quel est le format de l'image... on parle toujours du même : Fichier binaire représentant un tableau à trois dimensions
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Oui on parle toujours de cette image qui provient d'un fichier binaire.
    La dernière explication était intéressante mais malheureusement si je considère que chaque pixel est codé avec le triplet de couleur (24bits) mon fichier devrait faire 700Mo or il en fait 445Mo ce qui correspond exactement à un codage de 16 bit par pixel.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Peux-tu me donner le lien exacte vers l'image sur le site de la NASA ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Il s'agit de la carte :
    gebco_bathy.21601x10801.bin.gz.torren

    au lien suivant:
    http://visibleearth.nasa.gov/view_detail.php?id=8392

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Bittorrent a un peu de mal ce matin avec le serveur de la NASA...

    Sinon ton code doit ressembler à ceci ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fid=fopen('gebco_bathy.21601x10801.bin','r');
    X=fread(fid,[21601,10801],'*uint16');
    fclose(fid);
     
    figure
    colormap(gray)
    imagesc(X);
    Par contre, vu la taille de l'image... tu dois frôler le OUT OF MEMORY non ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Oui, j'avais essayé plus ou moins comme ça et je suis bien OUT OF MEMORY.
    Donc ce que j'ai essayé de faire c'est prendre seulement une partie de l'image, puisqu'il y a seulement la région proche de la France qui m'intéresse.
    Voila le code que j’utilise pour prendre seulement une partie de l’image (je ne suis pas sure que ce soit correcte).

    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
    fid=fopen('D:\Mes documents\bathymetrie\gebco_bathy.21601x10801.bin','r'); 
    IMImage=fread(fid,100000000,'uint16=>uint16');
    fclose(fid);
     
    iIM=1;
    xloc=0;
    yloc=0;
    colorImage = zeros(300,21601);
     
    for a = 83595870:89428140
        if xloc == 21601 || xloc == 0
            xloc=0;
            yloc= yloc+1;
        end
     
        xloc= xloc+1;
        colorImage(yloc,xloc) = IMImage(a);
     
    end

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    De quelle quantité de mémoire disposes-tu ?
    As-tu lu ceci : Gestion de la mémoire
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  13. #13
    Membre habitué Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Points : 161
    Points
    161
    Par défaut
    Est-ce que par hasard le problème ne viendrait-pas du fait que la lecture de l'image se ferai sur 8 bit, mais sur les 8 bits de points faibles (très peu représentatifs pour une image),
    alors que les 8 bits de points forts afficheraient une représentation (certes moins précise que du 16 bit) mais cohérente...
    (Ce n'est qu'une piste de réflexion... Peut-être totalement erronnée..)
    Matlab R2009b
    Forget the accents... sorry but qwerty ...

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Pour la mémoire j'ai 512Mo de RAM ce qui ne vas pas être suffisant, c'est pour cela que je voulais prendre seulement une partie de la carte.

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Essaie ceci :
    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
    W=21601
    H=10801
     
    r=4000;
    c=8000;
     
    w=6000;
    h=6000;
     
    fid=fopen('gebco_bathy.21601x10801.bin','r');
        fseek(fid,(W*r+c)*2,'bof');
        X=fread(fid,[h,w],sprintf('%d*uint16=>uint16',w),2*(W-w));
    fclose(fid);
     
    figure
    imagesc(X.');axis equal
    r et c correspondent à la position du pixel en haut à gauche de la partie de l'image que tu veux lire. w et h sont respectivement, le nombre de colonnes (largeur) et le nombre de ligne (hauteur) de cette même partie.

    Tout ça bien sur... si je ne me suis pas trompé
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Format ecw
    Je viens d'essayer le bout de code que tu viens de me donner et ça ne donne toujours rien (voir image en pièce jointe).

    D'un autre côté je commence à me demander si je fichier que je possède est bien complet. Puisque d'après les explications du site le la NASA il devrait être codé en 3*8bits et le fichier complet devrait donc être plus important.

    En me baladant sur internet j'ai trouvé une autre carte qui ressemble à celle qu'on est en train d'essayer de visualiser mais elle est en format ecw et je n'ai rien trouvé sur ce type de format dans l'aide de Matlab. Est ce que ce format est supporté par Matlab
    Fichiers attachés Fichiers attachés

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Revoici le code un peu modifié :
    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
    W=21601
    H=10801
     
    r=1000;
    c=10000;
     
    w=4000;
    h=3000;
     
    fid=fopen('gebco_bathy.21601x10801.bin','r');
        fseek(fid,(W*r+c)*2,'bof');
        X=fread(fid,[w,h],sprintf('%d*uint16=>uint16',w),2*(W-w));
    fclose(fid);
     
    figure
    colormap(gray)
    imagesc(X.');axis equal
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Je viens d'essayé ce code. La carte est bien en noire et blanc maintenant mais par contre j'ai beau me déplacé sur la carte il n'y a rien qui ressemble a des continents.

  19. #19
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    sango85 avait presque raison... il faut lire le fichier en big-endian :
    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
     W=21601
    H=10801
    
    r=1000;
    c=10000;
    
    w=4000;
    h=3000;
    
    fid=fopen('gebco_bathy.21601x10801.bin','r','b');
        fseek(fid,(W*r+c)*2,'bof');
        X=fread(fid,[w,h],sprintf('%d*uint16=>uint16',w),2*(W-w));
    fclose(fid);
    
    figure
    colormap(gray)
    imagesc(X.');axis image
    Je l'ai testé avec l'image, ça fonctionne parfaitement pour moi
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup pour ton aide.

    Ca marche aussi très bien chez moi. Je vais enfin pouvoir commencer à utiliser les données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visionneuse d'image depuis données dynamiques
    Par n1n0x dans le forum Général JavaScript
    Réponses: 36
    Dernier message: 25/09/2012, 18h58
  2. [MySQL] associer une image à des données envoyées via un formulaire
    Par ironman06 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/03/2012, 15h15
  3. Matching entre 2 "images de données".
    Par Seb.26 dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 30/04/2009, 20h45
  4. creer une image de type gray sur 16 bits
    Par seb_DEV dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 15/01/2009, 17h12
  5. image en niveau de gris 16 bits
    Par kekeauboulot dans le forum Delphi
    Réponses: 2
    Dernier message: 16/06/2006, 19h25

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